7段LED显示器驱动

 原理图:

7段LED显示器驱动_第1张图片

源程序:

  1. #include <stdio.h>
  2. #include <asm/param.h>
  3. #include <asm/delay.h>
  4. #include <asm/io.h>
  5. #include <linux/timer.h>
  6. #include <signal.h>
  7. // Timer struct
  8. /*
  9. struct timer_list 
  10.     struct list_head list;              // It is independent of timer's function, be used when implement.
  11.     unsigned long expires;              // Expire time, current time is jiffies. If Hz = 100, 10ms will pass every increase of jiffies.
  12.     unsigned long data;                 // Helpful when many timers call the same function
  13.     void (*function)(unsigned long);    // Timer processing function
  14. }; 
  15. functions:
  16. void add_timer(struct timer_list *timer)// Add timer to queue of timer 
  17. int mod_timer(struct timer_list *timer, unsigned long expires)// modify the expire time of timer 
  18. int del_timer(struct timer_list * timer)// Delete timer
  19. */
  20. struct time_list ledtimer;
  21. ledtimer.expires = 2;
  22. ledtimer.function = data_display;
  23. // Display 2008.09.09
  24. void data_display ( unsigned long dat )
  25. {
  26.     // 0 00 0010 1 001 000
  27.     outw ( 0x01, 0x148 );
  28.     udelay ( 1000 );
  29.     // 0 10 0000 1 001 001
  30.     outw ( 0x01, 0x1049 );
  31.     udelay ( 1000 );
  32.     // 0 10 0000 1 001 010
  33.     outw ( 0x01, 0x104a );
  34.     udelay ( 1000 );
  35.     // 1 00 1000 1 001 011
  36.     outw ( 0x01, 0x244b );
  37.     udelay ( 1000 );
  38.     // 0 10 0000 1 001 100
  39.     outw ( 0x01, 0x104c );
  40.     udelay ( 1000 );
  41.     // 1 00 1001 1 001 101
  42.     outw ( 0x01, 0x24cd );
  43.     udelay ( 1000 );
  44.     // 0 10 0000 1 001 110
  45.     outw ( 0x01, 0x104e );
  46.     udelay ( 1000 );
  47.     // 0 00 1001 1 001 111
  48.     outw ( 0x01, 0x4cf );
  49.     udelay ( 1000 );
  50.     // Clear
  51.     outw ( 0x01, 0x50 );
  52.     // Reset timer
  53.     add_timer ( &timer_list );
  54. }
  55. void init_led()
  56. {
  57.     // Clear
  58.     outw ( 0x01, 0x50 );
  59.     // Set timer
  60.     add_timer ( $ledtimer );
  61. }

 

你可能感兴趣的:(c,timer,list,function)