📄 led.lst
字号:
C51 COMPILER V8.08 LED 04/20/2009 16:06:21 PAGE 1
C51 COMPILER V8.08, 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 #include <reg51.h>
2 #include <init.h>
3
4 void LCDInit(void);
5 void LCD_Write(unsigned char cmd);
6
7 void LCD_Write_Com(unsigned char com) ;
8 void LCD_Write_Dat(unsigned char dat) ;
9 unsigned char LCD_Read_Dat(unsigned char com);
10 extern void Delay(unsigned char i);
11 extern unsigned char Key_Scan(void);
12
13 extern unsigned char wc,wd2,wd1,wd0;
14
15
16 /************LCD初始化***********************/
17 void LCDInit(void)
18 {
19 1 E=1;
20 1 LCD_Write_Com(0x38);//8位数据总线,2行,5*7点阵
21 1 LCD_Write_Com(0x08);//关显示
22 1 Delay(2000);
23 1 LCD_Write_Com(0x0c);//开显示,关光标,不闪烁
24 1 LCD_Write_Com(0x01);//清屏
25 1 Delay(2000);
26 1 LCD_Write_Com(0x80);//
27 1 }
28
29 /*****************写的操作**************************/
30 void LCD_Write(unsigned char cmd)
31 {
32 1 unsigned char i;
33 1 for(i=0;i<13;i++); //>40us
34 1 LCD=cmd;
35 1 E=1;
36 1 for(i=0;i<3;i++);
37 1 E=0;
38 1 for(i=0;i<20;i++); //>40us
39 1 }
40
41 /********************读数据的操作****************************/
42 unsigned char LCD_Read_Dat(unsigned char com)
43 {
44 1 unsigned char i,j;
45 1 LCD_Write_Com(com);
46 1 RS=1;
47 1 RW=1;
48 1 for(i=0;i<13;i++);
49 1 E=1;
50 1 LCD=0xff; ////////////////////////////////读前先置1
51 1 j=LCD;
52 1 for(i=0;i<13;i++);
53 1 return j;
54 1 }
55 /***************读地址的操作************************/
C51 COMPILER V8.08 LED 04/20/2009 16:06:21 PAGE 2
56 unsigned char LCD_Read_Com(void)
57 {
58 1 unsigned char i,j;
59 1 RW=1;
60 1 RS=0;
61 1 for(i=0;i<13;i++);
62 1 E=1;
63 1 LCD=0xff;
64 1 j=LCD;
65 1 j=j|0x80;
66 1 for(i=0;i<13;i++);
67 1 return j;
68 1 }
69
70 /********************写指令****************************/
71 void LCD_Write_Com(unsigned char com)
72 {
73 1 RS=0;
74 1 RW=0;
75 1 LCD_Write(com);
76 1 }
77 /**********************写数据****************************/
78 void LCD_Write_Dat(unsigned char dat)
79 {
80 1 RS=1;
81 1 RW=0;
82 1 LCD_Write(dat);
83 1 }
84 void LCD_Write_Dat_Nmov(unsigned char dat)
85 {
86 1 unsigned char j;
87 1 LCD_Write_Dat(dat);
88 1 j=LCD_Read_Com();
89 1 LCD_Write_Com(--j);
90 1 }
91
92 /*********************开机显示****************************/
93 void LCD_Show1(void)
94 {
95 1 unsigned char i;
96 1 unsigned char ch1[]="****welcome!****";
97 1 unsigned char ch2[]="2000-01-01";
98 1 unsigned char ch3[]="00:00:00";
99 1 for(i=0;i<16;i++)
100 1 {
101 2 LCD_Write_Dat(ch1[i]);
102 2 }
103 1 Delay(250);
104 1 Delay(250);
105 1 Delay(250);
106 1 Delay(250);
107 1 Delay(250);
108 1 Delay(250);
109 1 LCDInit();
110 1 LCD_Write_Com(0x83);//DDRAM地址0x03
111 1 for(i=0;i<10;i++)
112 1 {
113 2 LCD_Write_Dat(ch2[i]); //LCD显示
114 2 }
115 1 LCD_Write_Com(0xc4);//DDRAM地址0x44
116 1 for(i=0;i<8;i++)
117 1 {
C51 COMPILER V8.08 LED 04/20/2009 16:06:21 PAGE 3
118 2 LCD_Write_Dat(ch3[i]); //LCD显示
119 2 }
120 1 LCD_Write_Com(0x83);//DDRAM地址0x03
121 1 LCD_Write_Com(0x0f);//开显示,开光标,闪烁
122 1
123 1 }
124
125 /*******************秒表函数****************************/
126 void Watch(void)
127 {
128 1 unsigned char i,j,m,n,a;
129 1 unsigned char ch3[]="00:00:00.00";
130 1 j=0xff;
131 1 a=0xff;
132 1 LCDInit();
133 1 LCD_Write_Com(0x80);
134 1 LCD_Write_Dat('W');
135 1 LCD_Write_Com(0xc4);
136 1 for(i=0;i<11;i++)
137 1 LCD_Write_Dat(ch3[i]);
138 1 while(1)
139 1 {
140 2 wc=0;wd2=0;wd1=0;wd0=0;
141 2 j=Key_Scan();
142 2 if(j=='7') //开始
143 2 {
144 3 TR1=1;
145 3 ET1=1; //打开定时器0中断
146 3 EA=1; //开总中断
147 3 m=wc;
148 3 while(1)
149 3 {
150 4 n=wc;
151 4 if(m!=n)
152 4 {
153 5 LCD_Write_Com(0xc4);
154 5 LCD_Write_Dat(wd0/10+'0');
155 5 LCD_Write_Com(0xc5);
156 5 LCD_Write_Dat(wd0%10+'0');
157 5 LCD_Write_Com(0xc7);
158 5 LCD_Write_Dat(wd1/10+'0');
159 5 LCD_Write_Com(0xc8);
160 5 LCD_Write_Dat(wd1%10+'0');
161 5 LCD_Write_Com(0xca);
162 5 LCD_Write_Dat(wd2/10+'0');
163 5 LCD_Write_Com(0xcb);
164 5 LCD_Write_Dat(wd2%10+'0');
165 5 LCD_Write_Com(0xcd);
166 5 LCD_Write_Dat(wc*5/10+'0');
167 5 LCD_Write_Com(0xce);
168 5 LCD_Write_Dat(wc*5%10+'0');
169 5 m=n;
170 5 }
171 4
172 4 a=Key_Scan();
173 4 if(a=='8') //暂停
174 4 {
175 5 TR1=0;
176 5 ET1=0;
177 5 }
178 4 if(a=='7')
179 4 {
C51 COMPILER V8.08 LED 04/20/2009 16:06:21 PAGE 4
180 5 TR1=1;
181 5 ET1=1;
182 5 }
183 4 if(a=='9')
184 4 {
185 5 TR1=0;
186 5 ET1=0;
187 5 wc=0;wd2=0;wd1=0;wd0=0;
188 5 }
189 4 if(a=='B')
190 4 {
191 5 TR1=0;
192 5 ET1=0;
193 5 LCDInit();
194 5 break;
195 5 }
196 4 }
197 3 if(a=='B')
198 3 {
199 4 break;
200 4 }
201 3 }
202 2 if(j=='B')
203 2 {
204 3 LCDInit();
205 3 break;
206 3 }
207 2 }
208 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 623 ----
CONSTANT SIZE = 49 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 52
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 + -