📄 lcd.lst
字号:
218 1 {
219 2 x=0x88;
220 2 Line=31-Line;
221 2 }
222 1 if((y_loc>=32)&&(y_loc<48))
223 1 {
224 2 x=0x90;
225 2 Line=63-Line;
226 2 }
227 1 if(y_loc>=48)
228 1 {
229 2 x=0x80;
230 2 Line=63-Line;
231 2 }
232 1
233 1 wr_lcd (comm,0x34);
234 1 wr_lcd (comm,y+Line);
235 1 wr_lcd (comm,x+Column);
236 1 wr_lcd (comm,0x30);
237 1 wr_lcd (dat,0xaa);
238 1 wr_lcd (dat,0xbb);
239 1 wr_lcd (comm,0x36);
240 1 wr_lcd (comm,0x34);
C51 COMPILER V8.02 LCD 05/16/2009 13:41:49 PAGE 5
241 1 wr_lcd (comm,y+Line);
242 1 wr_lcd (comm,x+Column);
243 1 delay(200);
244 1 s=Read_Data(); //虚读
245 1 delay(500);
246 1 temp1=Read_Data(); //实读
247 1 delay(500);
248 1 temp2=Read_Data();
249 1 delay(500);
250 1
251 1 ori_data=(temp1<<8)|temp2;
252 1 delay(200);
253 1 ori_data=0x0000;
254 1 move = x_loc%16;
255 1 dot_data = 0x8000>>move;
256 1 delay(500);
257 1 dot_data = dot_data | ori_data;
258 1 delay(200);
259 1 value1 = dot_data/256;
260 1 value2 = dot_data%256;
261 1 delay(200);
262 1
263 1 wr_lcd (comm,0x34);
264 1 wr_lcd (comm,n+Line);
265 1 wr_lcd (comm,x+Column);
266 1 wr_lcd (comm,0x30);
267 1 wr_lcd (dat,value1);
268 1 wr_lcd (dat,value2);
269 1 wr_lcd (comm,0x36);
270 1 delay(200);
271 1
272 1 }
273
274
275
276 /*--------------清DDRAM------------------*/
277 void clrram (void)
278 {
279 1 wr_lcd (comm,0x30);
280 1 wr_lcd (comm,0x01);
281 1 delay (180);
282 1 }
283
284
285 /*---------------------------------------*/
286 void wr_lcd (uchar dat_comm,uchar content)
287 {
288 1 uchar a,i,j;
289 1 delay (50); //延时,等待内部动作完成
290 1 a=content;
291 1 cs=1;
292 1 sclk=0;
293 1 std=1;
294 1 for(i=0;i<5;i++) //写入5个1,作为启动位
295 1 {
296 2 sclk=1;
297 2 sclk=0;
298 2 }
299 1 std=0;
300 1 sclk=1;
301 1 sclk=0;
302 1 if(dat_comm) //判断写数据还是写命令
C51 COMPILER V8.02 LCD 05/16/2009 13:41:49 PAGE 6
303 1 std=1; //data
304 1 else
305 1 std=0; //command
306 1 sclk=1;
307 1 sclk=0;
308 1 std=0; //写入1个0
309 1 sclk=1;
310 1 sclk=0;
311 1 for(j=0;j<2;j++) //分别写入高四位和低四位
312 1 {
313 2 for(i=0;i<4;i++)
314 2 {
315 3 a=a<<1;
316 3 std=CY;
317 3 sclk=1;
318 3 sclk=0;
319 3 }
320 2 std=0; //写入4个0
321 2 for(i=0;i<4;i++)
322 2 {
323 3 sclk=1;
324 3 sclk=0;
325 3 }
326 2 }
327 1 }
328
329 /*-----------------读出值--------------------*/
330 Read_Data()
331 {
332 1 uchar b1=0,b2=0;
333 1 uchar result,i,j;
334 1 cs=1;
335 1 sclk=0;
336 1 std=1;
337 1 for(i=0;i<5;i++) //写入5个1,作为启动位
338 1 {
339 2 sclk=1;
340 2 sclk=0;
341 2 }
342 1 std=1;
343 1 sclk=1;
344 1 sclk=0;
345 1
346 1 std=1;
347 1 sclk=1;
348 1 sclk=0;
349 1
350 1 std=0; //写入1个0
351 1 sclk=1;
352 1 sclk=0;
353 1
354 1 P0MDOUT=0xfd;
355 1
356 1 for(j=0;j<8;j++) //分别读出高四位和低四位
357 1 {
358 2 b1=b1<<1;
359 2 sclk=1;
360 2 sclk=0;
361 2 if(std)
362 2 b1++;
363 2 }
364 1 for(i=0;i<8;i++)
C51 COMPILER V8.02 LCD 05/16/2009 13:41:49 PAGE 7
365 1 {
366 2 b2=b2<<1;
367 2 sclk=1;
368 2 sclk=0;
369 2 if(std)
370 2 b2++;
371 2 }
372 1 b2=b2>>4;
373 1 result=(0xf0&&b1)|(0x0f&&b2);
374 1 P0MDOUT=0xff;
375 1 return(result);
376 1
377 1 /* for(j=0;j<2;j++)
378 1 {
379 1 for(i=0;i<4;i++)
380 1 {
381 1 b=b|(uchar)std;//b:读回的状态值
382 1 if(j==1&&i==3);
383 1 else b=b<<1;
384 1
385 1 sclk=1; //sclk=1;
386 1 sclk=0; //sclk=0;
387 1 }
388 1 for(i=0;i<4;i++)
389 1 {
390 1 sclk=1; //sclk=1;
391 1 sclk=0; //sclk=0;
392 1 }
393 1 }
394 1 return(b); */
395 1
396 1
397 1 cs=0;
398 1 }
399 /*-----------------------------------*/
400 void delay (uint us) //delay time
401 {
402 1 while(us--);
403 1 }
404
405
406 /*------------------主程序--------------------*/
407 void main ()
408 {
409 1 SP=0x5f;
410 1 SysInitial();
411 1 init_lcd ();
412 1 while (1)
413 1 {
414 2 clrram();
415 2 delay(8000);
416 2 lat_disp (0x00,0x00);
417 2 delay(8000);
418 2 img_disp (tab6);
419 2 delay(8000);
420 2 Locat_Dot(6,36);
421 2 delay(8000);
422 2 Locat_Dot(6,34);
423 2 delay(8000);
424 2 Locat_Dot(6,32);
425 2 delay(8000);
426 2 }
C51 COMPILER V8.02 LCD 05/16/2009 13:41:49 PAGE 8
427 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1183 ----
CONSTANT SIZE = 1024 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 31
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 + -