📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 04/16/2008 22:21:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //bear zhou 编辑
2 #include <at89x51.h>
3 #include <lcd.h>
4 char code int2charLCD[]="0123456789";//感觉code不用的
5 void write_LCD_command(unsigned char command)
6 {
7 1 rw=WRITE;
8 1 rs=COMMAND;
9 1 enable=ENABLE;
10 1 P1=command;
11 1 delay100us(20);
12 1 enable=DISABLE;
13 1 rw=1;
14 1 }
15 void write_LCD_data(unsigned char LCDdata)
16 {
17 1 rw=WRITE;
18 1 rs=DATA;
19 1 enable=ENABLE;
20 1 P1=LCDdata;//不管输入什么,他直接编译成二进制
21 1 delay100us(20);
22 1 enable=DISABLE;
23 1 rw=1;
24 1 }
25 void init_LCD(void)
26 {
27 1 write_LCD_command(TwoLine_8bit); //0x38
28 1 write_LCD_command(CURSOR_ON); //0x0C
29 1 write_LCD_command(CURSOR_RIGHT); //0x06
30 1 }
31 void clear_LCD(void)
32 {
33 1 write_LCD_command(CLEAR);
34 1 write_LCD_command(CURSOR_HOME);
35 1 }
36
37 void display_LCD_string(char *p)
38 {
39 1 while(*p!='\0')
40 1 {
41 2 write_LCD_data(*p);
42 2 p++;
43 2
44 2 }
45 1 }
46 void display_LCD_number(unsigned char number)
47 {
48 1 unsigned char x;
49 1 x=number/100;
50 1 write_LCD_data(int2charLCD[x]);
51 1 x=(number/10)%10;
52 1 write_LCD_data(int2charLCD[x]);
53 1 x=number%10;
54 1 write_LCD_data(int2charLCD[x]);
55 1 }
C51 COMPILER V7.06 LCD 04/16/2008 22:21:21 PAGE 2
56 void gotoxy(unsigned char x,unsigned char y)
57 {
58 1 if(x==1)
59 1 write_LCD_command(GOTO_LINE_1+y);
60 1 else
61 1 write_LCD_command(GOTO_LINE_2+y);
62 1 }
63 void delay100us(unsigned char i)
64 {
65 1 unsigned char a,j;
66 1 for(a=0;a<i;a++)
67 1 for(j=0;j<34;j++);
68 1 }
69 unsigned char scan(unsigned char* key_v)//51>1,61>4.71>7,81>0,54>A,64>a,74>up,84>down,72>left,73>right
70 {
71 1 unsigned char i1,i2,j,a,b,c,i=0;
72 1 P0=0x0f;
73 1 b=P0;
74 1 if(b==0x0f)
75 1 {
76 2 *key_v='\0';
77 2 return 0;
78 2 }
79 1 // gotoxy(2,0);
80 1 for(i1=1;i1<=4;i1++)
81 1 {
82 2
83 2 switch(i1){
84 3 case 1:a=0xfe;break;
85 3 case 2:a=0xfd;break;
86 3 case 3:a=0xfb;break;
87 3 case 4:a=0xf7;break;
88 3 default: break;
89 3 }
90 2 P0=a;
91 2 delay100us(10);
92 2 b=P0;
93 2 c=b;
94 2 delay100us(10);
95 2 b=P0;
96 2 //display_LCD_number(b);
97 2 if(b!=c) return i1;
98 2 b=b>>4;
99 2 for(i2=0;i2<=3;i2++)
100 2 {
101 3 switch(i2){
102 4 case 0:a=b|14;break;
103 4 case 1:a=b|13;break;
104 4 case 2:a=b|11;break;
105 4 case 3:a=b|7;break;
106 4 default: break;
107 4 }
108 3 switch(a){
109 4 default: j=0;break;
110 4 case 0x0e:j=50+i1;
111 4 break;
112 4 case 13:j=60+i1;
113 4 break;
114 4 case 11:j=70+i1;
115 4 break;
116 4 case 7:j=80+i1;
117 4 break;
C51 COMPILER V7.06 LCD 04/16/2008 22:21:21 PAGE 3
118 4 }
119 3 if(j!=0)
120 3 {
121 4 key_v[i]=value(j);
122 4 key_v[i+1]='\0';
123 4 i++;
124 4 }
125 3 }
126 2 }
127 1 return 100;
128 1 }
129 unsigned char value(unsigned char i)
130 {
131 1 switch(i){
132 2 case 51: return '1';break;
133 2 case 52: return '4';break;
134 2 case 53: return '7';break;
135 2 case 54: return '0';break;
136 2 case 61: return '2';break;
137 2 case 62: return '5';break;
138 2 case 63: return '8';break;
139 2 case 64: return 'l';break;
140 2 case 71: return '3';break;
141 2 case 72: return '6';break;
142 2 case 73: return '9';break;
143 2 case 74: return 'u';break;
144 2 case 81: return 'A';break;
145 2 case 82: return 'a';break;
146 2 case 83: return 'r';break;
147 2 case 84: return 'd';break;
148 2 default: return 0;
149 2 }
150 1 }unsigned char VS_key_V(unsigned char* key_v1,unsigned char* key_v2)
151 {
152 1 unsigned char i=0;
153 1 while(i!=17)
154 1 {
155 2 if(key_v1[i]!=key_v2[i]) return 0;
156 2 if((key_v1[i]=='\0')&&(key_v2[i]=='\0')) break;
157 2 i++;
158 2 //key_v2++;
159 2 }
160 1
161 1 if(i!=17)
162 1 return 1;
163 1 return 0;
164 1 }
165 void StrToStr(unsigned char* key_v1,unsigned char* key_v2)
166 {
167 1
168 1 do
169 1 {
170 2 *key_v2=*key_v1;
171 2 key_v1++;
172 2 key_v2++;
173 2 }while(*key_v1!='\0');
174 1 *key_v2='\0';
175 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 686 ----
C51 COMPILER V7.06 LCD 04/16/2008 22:21:21 PAGE 4
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 26
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 + -