?? lcm1602.lst
字號:
C51 COMPILER V8.02 LCM1602 05/12/2008 23:46:50 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCM1602
OBJECT MODULE PLACED IN LCM1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCM1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <intrins.h>
3
4 sbit RSPIN = P1^0; //數(shù)據(jù)/命令選擇端
5 sbit RWPIN = P1^1; //讀寫控制信號
6 sbit EPIN = P1^2; //使能信號
7
8 unsigned char XPOS,YPOS;
9
10 void delay1(unsigned int t) //延時(shí)
11 { unsigned int i,j;
12 1 for(i=0;i<t;i++)
13 1 for(j=0;j<10;j++)
14 1 ;
15 1 }
16
17 void lcdwaitidle(void) //讀寫檢測.對控制器每次進(jìn)行讀寫操作之前,都必須進(jìn)行,
18 { P0=0xff;
19 1 RSPIN=0;
20 1 RWPIN=1;
21 1 EPIN=1;
22 1 while((P0&0x80)==0x80); //確保STA7 為0
23 1 EPIN=0;
24 1 }
25
26 void lcdwcn(unsigned char c) //不判忙直接寫指令
27 { RSPIN=0;
28 1 RWPIN=0;
29 1 P0=c;
30 1 EPIN=1;
31 1 _nop_();
32 1 EPIN=0;
33 1 }
34
35 void lcdwc(unsigned char c) //判忙后寫指令
36 { lcdwaitidle();
37 1 lcdwcn(c);
38 1 }
39
40 void lcdwd(unsigned char d) //寫數(shù)據(jù)
41 { lcdwaitidle();
42 1 RSPIN=1;
43 1 RWPIN=0;
44 1 P0=d;
45 1 EPIN=1;
46 1 _nop_();
47 1 EPIN=0;
48 1 }
49
50 void lcdpos(void) //確定當(dāng)前光標(biāo)位置
51 { XPOS&=0x0f;
52 1 YPOS&=0x03;
53 1 if(YPOS==0x00)
54 1 lcdwc(XPOS|0x80);
55 1 else if(YPOS==0x01)
C51 COMPILER V8.02 LCM1602 05/12/2008 23:46:50 PAGE 2
56 1 lcdwc((XPOS+0x40)|0x80);
57 1 }
58
59 void lcdreset() //LCM初始化
60 { EPIN=0;
61 1 delay1(150); lcdwcn(0x38); //寫指令38H
62 1 delay1(50); lcdwcn(0x38); //寫指令38H
63 1 delay1(50); lcdwcn(0x38); //寫指令38H
64 1 lcdwc(0x38); //顯示模式設(shè)置,設(shè)置16X2 顯示,5X7 點(diǎn)陣,8 位數(shù)據(jù)接口
65 1 lcdwc(0x08); //顯示關(guān)閉
66 1 lcdwc(0x01); //顯示清屏
67 1 lcdwc(0x06); //顯示光標(biāo)移動(dòng)設(shè)置
68 1 lcdwc(0x0c); //顯示開及光標(biāo)設(shè)置
69 1 }
70
71 void lcdfill(unsigned char n) //向1602寫一滿屏字符
72 {
73 1 for(YPOS=0;YPOS<2;YPOS++)
74 1 for(XPOS=0;XPOS<16;XPOS++)
75 1 { lcdpos();
76 2 lcdwd(n); }
77 1 }
78
79 void lcdchar(unsigned char x,unsigned char y,unsigned char ch) //在1602指定位置寫一個(gè)字符
80 {
81 1 XPOS=x; YPOS=y;
82 1 lcdpos();
83 1 lcdwd(ch);
84 1 }
85
86 void lcdwda(unsigned char x,unsigned char y,unsigned char *s) //在1602指定位置寫一行字符串
87 { YPOS=y;
88 1 for(XPOS=x;XPOS<16;XPOS++)
89 1 { lcdpos();
90 2 if (*s=='\0') return;
91 2 lcdwd(*s);
92 2 s++;
93 2 //delay1(5000);//(400);
94 2 }
95 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 243 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -