📄 text1.lst
字号:
C51 COMPILER V8.08 TEXT1 08/23/2009 14:14:16 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include"zifuku.h"
3 #define uchar unsigned char
4 #define uint unsigned int
5 sbit CS1=P2^0; //LCD右屏幕
6 sbit CS2=P2^1; //LCD左屏幕
7 sbit RS=P2^2; //LCD数据、指令寄存器
8 sbit RW=P2^3; //LCD读、写操作
9 sbit E=P2^4; //LCD使能信号,下降沿有效
10
11
12 /*
13 自定义延时子函数
14 */
15 void delayms(uchar z)
16 {
17 1 int x,y;
18 1 for(x=z;x>0;x--)
19 1 for(y=110;y>0;y--);
20 1 }
21
22 /*
23 判断LCD忙信号状态
24 */
25 void buys()
26 {
27 1 int dat;
28 1 RW=1;
29 1 RS=0;
30 1 do
31 1 {
32 2 P0=0x00;
33 2 E=1;
34 2 dat=P0;
35 2 E=0;
36 2 dat=0x80 & dat;
37 2 } while(!(dat==0x00));
38 1 }
39
40 /*
41 LCD写指令函数
42 */
43 void w_com(uchar com)
44 {
45 1 //buys();
46 1 RW=0;
47 1 RS=0;
48 1 E=1;
49 1 P0=com;
50 1 E=0;
51 1 }
52
53 /*
54 LCD写数据函数
55 */
C51 COMPILER V8.08 TEXT1 08/23/2009 14:14:16 PAGE 2
56 void w_date(uchar date)
57 {
58 1 //buys();
59 1 RW=0;
60 1 RS=1;
61 1 E=1;
62 1 P0=date;
63 1 E=0;
64 1 }
65
66
67 /*
68 LCD选屏函数
69 */
70 void select_screen(uchar screen)
71 {
72 1 switch(screen)
73 1 {
74 2 case 0: //选择全屏
75 2 CS1=0;
76 2 CS2=0;
77 2 break;
78 2 case 1: //选择左屏
79 2 CS1=0;
80 2 CS2=1;
81 2 break;
82 2
83 2 case 2: //选择右屏
84 2 CS1=1;
85 2 CS2=0;
86 2 break;
87 2 /* case 3: //选择右屏
88 2 CS1=1;
89 2 CS2=1;
90 2 break;
91 2 */
92 2 }
93 1
94 1 }
95
96 /*
97 LCDx向上滚屏显示
98 */
99 void lcd_rol()
100 {
101 1 int x;
102 1 for(x=0;x<64;x++)
103 1 {
104 2 select_screen(0);
105 2 w_com(0xc0+x);
106 2 delayms(500);
107 2 }
108 1
109 1
110 1 }
111
112 /*
113 LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列
114 */
115 void clear_screen(screen)
116 {
117 1 int x,y;
C51 COMPILER V8.08 TEXT1 08/23/2009 14:14:16 PAGE 3
118 1 select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏
119 1 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页
120 1 {
121 2 w_com(x);
122 2 w_com(0x40); //列的初始地址是0x40
123 2 for(y=0;y<64;y++)
124 2 {
125 3 w_date(0x00);
126 3
127 3 }
128 2 }
129 1 }
130
131 /*
132 LCD显示汉字字库函数
133 */
134 void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun)
135 { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数
136 1 int a;
137 1 mun=mun*32;
138 1 select_screen(screen);
139 1 w_com(0xb8+(page*2));
140 1 w_com(0x40+(col*16));
141 1 for ( a=0;a<16;a++)
142 1 {
143 2 w_date(hanzi[mun++]);
144 2
145 2 }
146 1 w_com(0xb8+(page*2)+1);
147 1 w_com(0x40+(col*16));
148 1 for ( a=0;a<16;a++)
149 1 {
150 2 w_date(hanzi[mun++]);
151 2
152 2 }
153 1 }
154
155 /*
156 LCD显示字符字库函数
157 */
158 void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun)
159 { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数
160 1 int a;
161 1 mun=mun*16;
162 1 select_screen(screen);
163 1 w_com(0xb8+(page*2));
164 1 w_com(0x40+(col*8));
165 1 for ( a=0;a<8;a++)
166 1 {
167 2 w_date(zifu[mun++]);
168 2
169 2 }
170 1 w_com(0xb8+(page*2)+1);
171 1 w_com(0x40+(col*8));
172 1 for ( a=0;a<8;a++)
173 1 {
174 2 w_date(zifu[mun++]);
175 2
176 2 }
177 1 }
178
179 /*
C51 COMPILER V8.08 TEXT1 08/23/2009 14:14:16 PAGE 4
180 LCD显示数字字库函数
181 */
182 void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun)
183 { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数
184 1 int a;
185 1 mun=mun*16;
186 1 select_screen(screen);
187 1 w_com(0xb8+(page*2));
188 1 w_com(0x40+(col*8));
189 1 for ( a=0;a<8;a++)
190 1 {
191 2 w_date(shuzi[mun++]);
192 2
193 2 }
194 1 w_com(0xb8+(page*2)+1);
195 1 w_com(0x40+(col*8));
196 1 for ( a=0;a<8;a++)
197 1 {
198 2 w_date(shuzi[mun++]);
199 2
200 2 }
201 1 }
202
203 /*
204 LCD初始化函数
205 */
206 void lcd_init()
207 {
208 1 w_com(0x3f); //LCD开显示
209 1 w_com(0xc0); //LCD行初始地址,共64行
210 1 w_com(0xb8); //LCD页初始地址,共8页
211 1 w_com(0x40); //LCD列初始地址,共64列
212 1
213 1 }
214
215 /*
216 LCD显示主函数
217 */
218 void main()
219 {
220 1 //第一行
221 1 int x;
222 1 lcd_init(); //LCD初始化
223 1 clear_screen(0); //LCD清屏幕
224 1 lcd_display_shuzi(1,0,4,5); //LCD显示数字
225 1 lcd_display_shuzi(1,0,5,1); //LCD显示数字
226 1 lcd_display_hanzi(1,0,3,0); //LCD显示汉字
227 1 lcd_display_hanzi(2,0,0,1); //LCD显示汉字 //LCD字符汉字
228 1 lcd_display_hanzi(2,0,1,2); //LCD显示汉字
229 1 //第二行
230 1 lcd_display_zifuk(1,1,2,0); //LCD显示字符
231 1 lcd_display_zifuk(1,1,3,0); //LCD显示字符
232 1 lcd_display_zifuk(1,1,4,0); //LCD显示字符
233 1 lcd_display_zifuk(1,1,5,4); //LCD显示字符
234 1 lcd_display_shuzi(1,1,6,8); //LCD显示字符
235 1 lcd_display_shuzi(1,1,7,9); //LCD显示字符
236 1 lcd_display_shuzi(2,1,0,5); //LCD显示字符
237 1 lcd_display_shuzi(2,1,1,1); //LCD显示字符
238 1 lcd_display_zifuk(2,1,2,4);
239 1 lcd_display_zifuk(2,1,3,1);
240 1 lcd_display_zifuk(2,1,4,2);
241 1 lcd_display_zifuk(2,1,5,3);
C51 COMPILER V8.08 TEXT1 08/23/2009 14:14:16 PAGE 5
242 1 //第三行
243 1 for(x=0;x<4;x++)
244 1 {
245 2 lcd_display_hanzi(1,2,x,3+x); //LCD显示汉字
246 2 }
247 1
248 1 for(x=0;x<4;x++)
249 1 {
250 2 lcd_display_hanzi(2,2,x,7+x); //LCD显示汉字
251 2 }
252 1 //第四行
253 1
254 1 for(x=0;x<4;x++)
255 1 {
256 2 lcd_display_zifuk(1,3,x,5+x); //LCD显示汉字
257 2 }
258 1 lcd_display_shuzi(1,3,4,7);
259 1 lcd_display_shuzi(1,3,5,5);
260 1 lcd_display_shuzi(1,3,6,5);
261 1 lcd_display_zifuk(1,3,7,9);
262 1 lcd_display_shuzi(2,3,0,8);
263 1 lcd_display_shuzi(2,3,1,9);
264 1 lcd_display_shuzi(2,3,2,9);
265 1 lcd_display_shuzi(2,3,3,5);
266 1 lcd_display_shuzi(2,3,4,6);
267 1 lcd_display_shuzi(2,3,5,8);
268 1 lcd_display_shuzi(2,3,6,9);
269 1 lcd_display_shuzi(2,3,7,2);
270 1 while(1);
271 1 /* while(1)
272 1 { // LCD向上滚屏显示
273 1 lcd_rol();
274 1 }
275 1 */
276 1 }
277
278
279
280
281
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 953 ----
CONSTANT SIZE = 672 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 15
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 + -