📄 lcd128x64.lst
字号:
186 1 }
187 /*----------------显示图形-----------------*/
188 void img_disp (uchar code *img)
189 {
190 1 uchar i,j;
191 1 for(j=0;j<32;j++)
192 1 {
193 2 for(i=0;i<8;i++)
194 2 {
195 3 wr_lcd (comm,0x34);
196 3 wr_lcd (comm,y+j);
197 3 wr_lcd (comm,x1+i);
198 3 wr_lcd (comm,0x30);
199 3 wr_lcd (dat,img[j*16+i*2]);
200 3 wr_lcd (dat,img[j*16+i*2+1]);
201 3 }
202 2 }
203 1 for(j=32;j<64;j++)
204 1 {
205 2 for(i=0;i<8;i++)
206 2 {
207 3 wr_lcd (comm,0x34);
208 3 wr_lcd (comm,y+j-32);
209 3 wr_lcd (comm,x2+i);
210 3 wr_lcd (comm,0x30);
211 3 wr_lcd (dat,img[j*16+i*2]);
212 3 wr_lcd (dat,img[j*16+i*2+1]);
213 3 }
214 2 }
215 1 wr_lcd (comm,0x36);
216 1 }
217 /*-------------下半屏显示图形--------------*/
218 void img_disp1 (uchar code *img)
219 {
220 1 uchar i,j;
221 1 for(j=0;j<32;j++)
222 1 {
223 2 for(i=0;i<8;i++)
224 2 {
225 3 wr_lcd (comm,0x34);
226 3 wr_lcd (comm,y+j);
227 3 wr_lcd (comm,x2+i);
228 3 wr_lcd (comm,0x30);
229 3 wr_lcd (dat,img[j*16+i*2]);
230 3 wr_lcd (dat,img[j*16+i*2+1]);
231 3 }
232 2 }
233 1 wr_lcd (comm,0x36);
234 1 }
235 /*--------------显示点阵----------------*/
236 void lat_disp (uchar data1,uchar data2)
237 {
238 1 uchar i,j,k,x;
239 1 x=x1;
240 1 for(k=0;k<2;k++)
241 1 {
C51 COMPILER V7.50 LCD128X64 06/29/2008 09:39:47 PAGE 5
242 2 for(j=0;j<16;j++)
243 2 {
244 3 for(i=0;i<8;i++)
245 3 {
246 4 wr_lcd (comm,0x34);
247 4 wr_lcd (comm,y+j*2);
248 4 wr_lcd (comm,x+i);
249 4 wr_lcd (comm,0x30);
250 4 wr_lcd (dat,data1);
251 4 wr_lcd (dat,data1);
252 4 }
253 3 for(i=0;i<8;i++)
254 3 {
255 4 wr_lcd (comm,0x34);
256 4 wr_lcd (comm,y+j*2+1);
257 4 wr_lcd (comm,x+i);
258 4 wr_lcd (comm,0x30);
259 4 wr_lcd (dat,data2);
260 4 wr_lcd (dat,data2);
261 4 }
262 3 }
263 2 x=x2;
264 2 }
265 1 wr_lcd (comm,0x36);
266 1 }
267 /*-----------------------------------------------*/
268 //当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.
269 void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
270 {
271 1 uchar i,j;
272 1 for(j=0;j<yl;j++)
273 1 {
274 2 for(i=0;i<xl;i++)
275 2 {
276 3 wr_lcd (comm,0x34);
277 3 wr_lcd (comm,y0+j);
278 3 wr_lcd (comm,x0+i);
279 3 wr_lcd (comm,0x30);
280 3 wr_lcd (dat,data1);
281 3 wr_lcd (dat,data2);
282 3 }
283 2 }
284 1 wr_lcd (comm,0x36);
285 1 }
286 /*--------------清DDRAM------------------*/
287 void clrram (void)
288 {
289 1 wr_lcd (comm,0x30);
290 1 wr_lcd (comm,0x01);
291 1 }
292 /*---------------------------------------*/
293 void wr_lcd (uchar dat_comm,uchar content)
294 {
295 1 chk_busy ();
296 1 if(dat_comm)
297 1 {
298 2 rs=1; //data
299 2 rw=0; //write
300 2 }
301 1 else
302 1 {
303 2 rs=0; //command
C51 COMPILER V7.50 LCD128X64 06/29/2008 09:39:47 PAGE 6
304 2 rw=0; //write
305 2 }
306 1 P0=content; //output data or comm
307 1 e=1;
308 1 Delay(10);
309 1 e=0;
310 1 }
311
312 void chk_busy (void)
313 {
314 1 P0=0xff;
315 1 rs=0;
316 1 rw=1;
317 1 e =1;
318 1 while(busy==1);
319 1 e =0;
320 1 }
321
322 void Delay1 (uint ms)
323 {
324 1 uint i,j;
325 1 for(i=0;i<ms;i++)
326 1 for(j=0;j<15;j++)
327 1 Delay(1);
328 1 }
329
330 /*------------------LCD初始化-----------------*/
331 void init_lcd (void)
332 {
333 1 rst=1;
334 1 psb=1;
335 1 wr_lcd (comm,0x30); /*30---基本指令动作,8位数据显示*/
336 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
337 1 wr_lcd (comm,0x06); /*光标的移动方向,AC自动加一*/
338 1 wr_lcd (comm,0x0c); /*开显示,关游标*/
339 1 }
340 /*------------------主程序--------------------*/
341 void main ()
342 {
343 1
344 1 init_lcd ();
345 1
346 1 while (1)
347 1 {
348 2 lat_disp (0x00,0x00);//清屏
349 2 chn_disp (tab1);//显示介绍文字
350 2 Delay1 (8000);
351 2
352 2
353 2 con_disp (0xff,0xff,0x80,0x90,8,16);//反白显示某几个字
354 2 Delay1 (8000);
355 2 con_disp (0xff,0xff,0x9C,0x90,2,16);//反白显示某几个字
356 2 Delay1 (8000);
357 2
358 2 clrram();//清存储单元
359 2 img_disp(tab5);//点阵显示
360 2 Delay1 (8000);
361 2
362 2 }
363 1 }
C51 COMPILER V7.50 LCD128X64 06/29/2008 09:39:47 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1127 ----
CONSTANT SIZE = 1601 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 38
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 + -