📄 16x2_lcd.lst
字号:
C51 COMPILER V7.09 16X2_LCD 12/21/2007 09:06:41 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE 16X2_LCD
OBJECT MODULE PLACED IN 16x2_lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 16x2_lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "16x2_main.h"
2
3 /*
4 unsigned char year_q=2;
5 unsigned char year_b=0;
6 unsigned char year_s=0;
7 unsigned char year_g=7;
8 unsigned char month_s=1;
9 unsigned char month_g=2;
10 unsigned char day_s=2;
11 unsigned char day_g=0;
12
13 unsigned char hour_s=0;
14 unsigned char hour_g=0;
15 unsigned char min_s=0;
16 unsigned char min_g=0;
17 unsigned char sec_s=0;
18 unsigned char sec_g=0;
19 */
20
21 unsigned char datatime[14]={2,0,0,7,1,2,2,0,0,0,0,0,0,0,};
22
23
24 void Delay(unsigned char time)
25 {
26 1 unsigned char i=1000;
27 1 while(time--)
28 1 {
29 2 while(i--);
30 2 }
31 1
32 1 }
33
34 void Lcd_CodeWrite(char c)
35 {
36 1 RS=0;
37 1 W_R=0;
38 1 E =1;
39 1 COM=c;
40 1 E =0;
41 1 }
42
43 void Lcd_DataWrite(char c)
44 {
45 1 RS=1;
46 1 W_R=0;
47 1 E =1;
48 1 COM=c;
49 1 E =0;
50 1 }
51
52 bit Lcd_StateRead()
53 {
54 1 char c;
55 1 bit busy;
C51 COMPILER V7.09 16X2_LCD 12/21/2007 09:06:41 PAGE 2
56 1 RS=0;
57 1 W_R=1;
58 1 E =1;
59 1 c=COM;
60 1 E =0;
61 1 busy=(c>>7);
62 1 return busy;
63 1 }
64
65 void Lcd_Initial()
66 {
67 1 Lcd_CodeWrite(0x01); //清屏
68 1 Delay(1000);
69 1 Lcd_CodeWrite(0x06); //输入方式设定,ac++,画面不动
70 1 Delay(1000);
71 1 Lcd_CodeWrite(0x38); //二行显示,一个字符为5x7
72 1 Delay(1000);
73 1 // Lcd_CodeWrite(0x02); //光标回home位
74 1 // Delay(100);
75 1 Lcd_CodeWrite(0x14); //光标右移,画面不动
76 1 Delay(100);
77 1 // Lcd_CodeWrite(0x0f); //显示开,光标开,闪
78 1 Lcd_CodeWrite(0x0c); //显示开, 光标关c,闪
79 1 Delay(100);
80 1 }
81
82 //turn data to char data
83
84 void Turn_DataChar(char *Data_String)
85 {
86 1
87 1 Data_String[0]='d';Data_String[1]='a';Data_String[2]='t';
88 1 Data_String[3]='a';Data_String[4]=':';
89 1
90 1 Data_String[5]=datatime[0]+0x30; //千
91 1 Data_String[6]=datatime[1]+0x30; //百
92 1 Data_String[7]=datatime[2]+0x30; //十
93 1 Data_String[8]=datatime[3]+0x30; //个
94 1 Data_String[9]='-';
95 1 Data_String[10]=datatime[4]+0x30;
96 1 Data_String[11]=datatime[5]+0x30;
97 1 Data_String[12]='-';
98 1 Data_String[13]=datatime[6]+0x30;
99 1 Data_String[14]=datatime[7]+0x30;
100 1
101 1 }
102
103
104 //turn time to char time
105
106 void Turn_TimeChar(char *Time_String)
107 {
108 1
109 1 Time_String[0]='t';Time_String[1]='i';Time_String[2]='m';
110 1 Time_String[3]='e';Time_String[4]=':';
111 1
112 1 Time_String[5]=datatime[8]+0x30; //十
113 1 Time_String[6]=datatime[9]+0x30; //个
114 1 Time_String[7]=':';
115 1 Time_String[8]=datatime[10]+0x30;
116 1 Time_String[9]=datatime[11]+0x30;
117 1 Time_String[10]=':';
C51 COMPILER V7.09 16X2_LCD 12/21/2007 09:06:41 PAGE 3
118 1 Time_String[11]=datatime[12]+0x30;
119 1 Time_String[12]=datatime[13]+0x30;
120 1
121 1 }
122
123 //显示框架
124 //gloable
125
126
127
128 void Lcd_FramDisplay()
129 {
130 1 unsigned char Data[15];//2007-12-20
131 1 unsigned char Time[13];//00:00:00
132 1 unsigned i;
133 1
134 1
135 1 Turn_DataChar(Data);
136 1 Turn_TimeChar(Time);
137 1
138 1 for(i=0;i<15;i++)
139 1 {
140 2 while(Lcd_StateRead());
141 2 Lcd_CodeWrite(0x80|i); //address
142 2 while(Lcd_StateRead());
143 2 Lcd_DataWrite(Data[i]); //data
144 2 }
145 1
146 1 for(i=0;i<13;i++)
147 1 {
148 2 while(Lcd_StateRead());
149 2 Lcd_CodeWrite(0x80|0x40|i);
150 2 while(Lcd_StateRead());
151 2 Lcd_DataWrite(Time[i]);
152 2 }
153 1
154 1 }
155
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 447 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 28
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -