📄 led.lst
字号:
C51 COMPILER V7.10 LED 09/11/2010 22:21:04 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 标题: 试验数码管上显示数字(译码器位选 共阴极) *
3 * *
4 * 连接方法:P0与J12 用8PIN排线连接 *
5 ********************************************************************************
6 * *
7 * 请学员认真消化本例程,用573锁存器和译码器控制和数码管 *
8 ********************************************************************************/
9
10 #include <reg51.h>
11 #include <intrins.h>
12
13 sbit LS138A = P2^2; //定义138译码器的输入A脚由P2.2控制
14 sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制
15 sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制
16
17 void delay(unsigned int i); //函数声名
18
19 char DelayCNT;
20
21 //此表为 LED 的字模, 共阴数码管 0-9 -
22 unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
23
24 /************主函数**********************/
25 main()
26 {
27 1 unsigned int i,LedNumVal=1 ;
28 1 unsigned int LedOut[10];
29 1
30 1 DelayCNT=0;
31 1
32 1 while(1) //进入循环状态
33 1 {
34 2 if(++DelayCNT>=50)
35 2 {
36 3 DelayCNT=0; //延时计数 每扫描一次加一次
37 3 ++LedNumVal; //每隔50个扫描周期加一次
38 3 }
39 2
40 2 LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
41 2 LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
42 2 LedOut[2]=Disp_Tab[LedNumVal%100/10];
43 2 LedOut[3]=Disp_Tab[LedNumVal%10];
44 2
45 2 LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位
46 2 LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点
47 2 LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位
48 2 LedOut[7]=Disp_Tab[LedNumVal%10]; //个位
49 2
50 2
51 2 for( i=0; i<9; i++) //实现8位动态扫描循环
52 2 {
53 3 P0 = LedOut[i]; //将字模送到P0口显示
54 3
55 3 switch(i) //使用switch 语句控制位选 也可以是用查表的方式 学员可以试着自己修改
C51 COMPILER V7.10 LED 09/11/2010 22:21:04 PAGE 2
56 3 {
57 4 case 0:LS138A=0; LS138B=0; LS138C=0; break;
58 4 case 1:LS138A=1; LS138B=0; LS138C=0; break;
59 4 case 2:LS138A=0; LS138B=1; LS138C=0; break;
60 4 case 3:LS138A=1; LS138B=1; LS138C=0; break;
61 4 case 4:LS138A=0; LS138B=0; LS138C=1; break;
62 4 case 5:LS138A=1; LS138B=0; LS138C=1; break;
63 4 case 6:LS138A=0; LS138B=1; LS138C=1; break;
64 4 case 7:LS138A=1; LS138B=1; LS138C=1; break;
65 4
66 4 }
67 3
68 3 delay(150);
69 3 }
70 2
71 2 }
72 1 }
73
74 /***************************************************************************
75 * *
76 * 延时程序 *
77 ****************************************************************************/
78 void delay(unsigned int i)
79 {
80 1 char j;
81 1 for(i; i > 0; i--)
82 1 for(j = 200; j > 0; j--);
83 1 }
84
85
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 466 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 24
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -