led_num.lst
来自「51单片机实验例程」· LST 代码 · 共 147 行
LST
147 行
C51 COMPILER V7.10 LED_NUM 03/14/2010 12:15:49 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE LED_NUM
OBJECT MODULE PLACED IN LED_Num.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED_Num.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************************************************************
2 * *
3 * LED点阵实验(流动显示1 2 3 4 5 6 7 8 9) *
4 * 说明 通过P0 和 P2 作为点阵接口 *
5 *要求学员掌握 LED点阵的工作原理和 各点阵脚的定义及接法,具体接线请参考接线说明 *
6 *我们采用的LED点阵式是低功耗,在做实验时可以用单片机脚直接驱动 *
7 ******************************************************************************************/
8
9
10 #include<reg51.h>
11
12 unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
13
14
15 unsigned char code digittab[18][8]={
16
17 {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
18
19 {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
20
21 {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
22
23 {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
24
25 {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
26
27 {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
28
29 {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
30
31 {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
32
33 {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
34
35 {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9
36
37 {0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P
38
39 {0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R
40
41 {0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E
42
43 {0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C
44
45 {0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H
46
47 {0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I
48
49 {0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N
50
51 {0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00} //中
52
53 };
54
55 unsigned int timecount;
C51 COMPILER V7.10 LED_NUM 03/14/2010 12:15:49 PAGE 2
56
57 unsigned char cnta;
58
59 unsigned char cntb;
60
61 void main(void)
62
63 {
64 1
65 1 TMOD=0x01;
66 1
67 1 TH0=(65536-3000)/256;
68 1
69 1 TL0=(65536-3000)%256;
70 1
71 1 TR0=1; //开启定时0
72 1 ET0=1;
73 1
74 1 EA=1; //开启中断
75 1
76 1 cntb=0;
77 1
78 1 while(1)
79 1
80 1 { ;
81 2
82 2 }
83 1
84 1 }
85
86
87 /*************************************************
88 *
89 * 定时中断
90 ********************************************************/
91 void t0(void) interrupt 1 using 0
92 {
93 1
94 1 TH0=(65536-3000)/256; //定时器高位装载数据
95 1 TL0=(65536-3000)%256; //定时器低位装载数据
96 1
97 1 if(cntb<18) //红色
98 1 {
99 2 P1=0xFF;
100 2 P2=tab[cnta];
101 2 P0=digittab[cntb][cnta];
102 2 }
103 1 else //绿色
104 1 {
105 2 P2=0xFF;
106 2 P1=tab[cnta];
107 2 P0=digittab[cntb-18][cnta];
108 2 }
109 1
110 1
111 1 if(++cnta>=8) cnta=0;
112 1 if(++timecount>=333)
113 1 {
114 2 timecount=0;
115 2 if(++cntb>=36)cntb=0;
116 2 }
117 1
C51 COMPILER V7.10 LED_NUM 03/14/2010 12:15:49 PAGE 3
118 1 }
119
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 168 ----
CONSTANT SIZE = 152 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?