📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 04/25/2007 10:47:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include<ziku.h>
3 #define uint unsigned int
4 #define DISP_ON 0x3f
5 #define DISP_OFF 0x3e
6 #define COL 0x40 //列地址
7 #define PAGE 0xb8 //行地址
8 #define START_LINE 0xc0
9 #define LCD_BUS P1
10 sbit CS2=P3^3; // CS2
11 sbit CS1=P3^4; // CS1
12 sbit E=P3^0; //Enable
13 sbit DI=P3^5; //Data or Instrument Select
14 sbit RW=P3^6; //Write or Read
15 sbit s0=P2^0;
16 sbit s1=P2^1;
17 uchar state=0;
18 uchar cnt0,move=0,m=0,n=32,d=0,ii=0;
19 //******************************子函数*****************************************
20
21 //void cpl_disp_str(uchar page,uchar col,uchar code *str,uchar n); //反显
22 //void cpl_disp_ascII(uchar page,uchar col,uchar code *english,uchar n);//反显
23 void disp_str(uchar page,uchar col,uchar code *str,uchar n);
24 //void disp_ascII(uchar page,uchar col,uchar code *english,uchar n);
25 void display(uchar page,uchar col,uchar code *str,uchar n);
26 void displaye(uchar page,uchar col,uchar code *english,uchar n);
27 void delay(uint); //延时程序
28 void write_cmd(uchar); //写命令操作字
29 void write_data(uchar); //写数据
30 void cls(); //清屏程序
31 void init(); //初始化程序
32 uchar read_data(); //读数据
33 uchar key();
34 void point(uchar x,uchar y);
35 void screen0();
36 void screen1();
37 void screen2();
38 void screen3();
39 void screen4();
40 void screen5();
41 void screen6();
42 void screen7();
43 void screen71();
44 void screen72();
45 void screen73();
46 void screen74();
47 void rectangle(x,y);
48 void rectangleb(x,y);
49 void pointb(uchar x,uchar y);
50 /*
51 void sceen8();
52 void sceen9();
53
54 */
55
C51 COMPILER V7.50 LCD 04/25/2007 10:47:47 PAGE 2
56 //********************************主程序*******************************************
57
58 main()
59 {
60 1 uchar i=0;
61 1 init();
62 1 cls();
63 1 for(i=0;i<6;i++)
64 1 {
65 2
66 2 display(0,16*(i+1),str1,i);
67 2 }
68 1
69 1 for(i=0;i<3;i++)
70 1 {
71 2
72 2 display(6,16*i,str2,i);
73 2 display(6,(80+16*i),str2,i+3);
74 2 }
75 1
76 1
77 1 while(1)
78 1 {
79 2 switch(state)
80 2 {
81 3 case 0: screen0();break; //中国移动通信
82 3 case 1: screen1();break; //通话记录
83 3 case 2: screen2();break; //文本信息
84 3 case 3: screen3();break; //语音功能
85 3 case 4: screen4();break; //铃声设定
86 3 case 5: screen5();break; //设置
87 3 case 6: screen6();break; //管理目录
88 3 //////////////////////////////////////////////////
89 3 case 7: screen7();break; //游戏
90 3 case 71:screen71();break;
91 3 case 72:screen72();break;
92 3 case 73:screen73();break;
93 3 case 74:screen74();break;
94 3 //////////////////////////////////////////////////
95 3
96 3 default:screen0();break;
97 3 }
98 2 }
99 1
100 1 }
101
102
103
104 //********************************** 延时子程序***************************
105
106 void delay(uint t)
107 {
108 1 uint i,j;
109 1 for(i=0;i<t;i++)
110 1 for(j=0;j<10;j++);
111 1 }
112
113 //*******************************写命令到LCD***************************
114
115 void write_cmd(uchar cmd)
116 {
117 1
C51 COMPILER V7.50 LCD 04/25/2007 10:47:47 PAGE 3
118 1 DI=0; RW=0;
119 1 LCD_BUS=cmd;
120 1 E=1;
121 1 E=0;
122 1 }
123
124
125 //************************写数据到LCD******************************
126
127
128 void point(uchar x,uchar y)
129 {
130 1 uchar y1,y2,pp;
131 1 uchar datain;
132 1
133 1 pp=1;
134 1 y1=y>>3;
135 1 y2=y%8;
136 1 pp=pp<<y2;
137 1
138 1 if (x<64)
139 1 {
140 2 CS2=1;
141 2 CS1=0;
142 2 write_cmd(PAGE+y1);
143 2 write_cmd(COL+x);
144 2 datain=read_data();
145 2 write_cmd(PAGE+y1);
146 2 write_cmd(COL+x);
147 2 delay(10);
148 2 datain=read_data();
149 2
150 2 write_cmd(PAGE+y1);
151 2 write_cmd(COL+x);
152 2 datain=datain|pp;
153 2 write_data(datain);
154 2 }
155 1 else
156 1 {
157 2
158 2 CS2=0;
159 2 CS1=1;
160 2 write_cmd(PAGE+y1);
161 2 write_cmd(COL+x-64);
162 2 datain=read_data();
163 2 write_cmd(PAGE+y1);
164 2 write_cmd(COL+x-64);
165 2 delay(10);
166 2 datain=read_data();
167 2
168 2 write_cmd(PAGE+y1);
169 2 write_cmd(COL+x-64);
170 2 datain=datain|pp;
171 2 write_data(datain);
172 2 }
173 1
174 1
175 1
176 1 }
177
178
179
C51 COMPILER V7.50 LCD 04/25/2007 10:47:47 PAGE 4
180 void pointb(uchar x,uchar y)
181 {
182 1 uchar y1,y2,pp;
183 1 uchar datain;
184 1
185 1 pp=1;
186 1 y1=y>>3;
187 1 y2=y%8;
188 1
189 1 pp=~(pp<<y2);
190 1
191 1 if (x<64)
192 1 {
193 2 CS2=1;
194 2 CS1=0;
195 2 write_cmd(PAGE+y1);
196 2 write_cmd(COL+x);
197 2 datain=read_data();
198 2 write_cmd(PAGE+y1);
199 2 write_cmd(COL+x);
200 2 delay(10);
201 2 datain=read_data();
202 2
203 2 write_cmd(PAGE+y1);
204 2 write_cmd(COL+x);
205 2 datain=datain&pp;
206 2 write_data(datain);
207 2 }
208 1 else
209 1 {
210 2
211 2 CS2=0;
212 2 CS1=1;
213 2 write_cmd(PAGE+y1);
214 2 write_cmd(COL+x-64);
215 2 datain=read_data();
216 2 write_cmd(PAGE+y1);
217 2 write_cmd(COL+x-64);
218 2 delay(10);
219 2 datain=read_data();
220 2
221 2 write_cmd(PAGE+y1);
222 2 write_cmd(COL+x-64);
223 2 datain=datain&pp;
224 2 write_data(datain);
225 2 }
226 1
227 1
228 1
229 1 }
230 void write_data(uchar dout)
231 {
232 1
233 1 DI=1; RW=0;
234 1 LCD_BUS=dout;
235 1 E=1;
236 1 E=0;
237 1 }
238
239
240
241
C51 COMPILER V7.50 LCD 04/25/2007 10:47:47 PAGE 5
242
243
244 //***************************读LCD数据**********************************
245
246 uchar read_data()
247 {
248 1 uchar din;
249 1 LCD_BUS=0xff;
250 1 DI=1; RW=1;
251 1 E=0;
252 1 E=0;
253 1 E=1;
254 1 E=1;
255 1 E=1;
256 1 din=LCD_BUS;
257 1 return din;
258 1 }
259
260
261
262
263 //****************************清除内存******************************************
264
265 void cls()
266 {
267 1 uchar j,k;
268 1 CS2=1;CS1=0;
269 1 for(k=0;k<8;k++)
270 1 {
271 2 write_cmd(PAGE+k);
272 2 write_cmd(COL); //列地址0
273 2 for(j=0;j<64;j++) //列地址自动加一
274 2 write_data(0x00);
275 2 }
276 1 CS2=0;CS1=1;
277 1 for(k=0;k<8;k++)
278 1 {
279 2 write_cmd(PAGE+k);
280 2 write_cmd(COL); //列地址0
281 2 for(j=0;j<64;j++) //列地址自动加一
282 2 write_data(0x00);
283 2 }
284 1 }
285
286
287
288
289
290
291
292
293
294 void display(uchar page,uchar col,uchar code *str,uchar n)
295 {
296 1
297 1 uchar j=0,i=0;
298 1 if(col<64)
299 1 {
300 2 CS2=1;CS1=0;
301 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -