📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 03/22/2008 17:36:51 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /***** LCD 12864 with KS0108B controller display driver *****/
2
3 #define uchar unsigned char
4 #include<drive_functions.h>
5 #include<get_keys.h>
6 bit verify=0;
7 bit cursor=1;
8 bit modify_flag=0,modify=0;
9 uint time_counter=0;
10 uchar counter=0,j=0,i,k;
11 uchar PASS[8]={1,2,3,4,5,6,7,8};
12 uchar PW[8]={0,0,0,0,0,0,0,0};
13 uchar PW_NULL[8]={0,0,0,0,0,0,0,0};
14 uchar MODIFY_BUF[8]={0,0,0,0,0,0,0,0};
15
16
17 /****************************verify pw ************************/
18 bit VerifyAray(void)
19 {
20 1 uchar i;
21 1 bit temp=FAULSE;
22 1 for(i=0;i<8;i++)
23 1 {
24 2 if(PW[i]==PASS[i])temp=TRUE;
25 2
26 2 else
27 2 {
28 3 temp=FAULSE;
29 3 i=8; //end for loop
30 3 }
31 2 }
32 1 return(temp);
33 1 }
34
35
36 /*********************** main ************************/
37
38 void main(void)
39 {
40 1 E=1;
41 1 DspOn();
42 1 ClearLCD();
43 1
44 1 // IT0=1;
45 1 // IT1=1;
46 1 // EX0=1;
47 1 // EX1=1;
48 1
49 1 TMOD=0x10;
50 1 ET1=1;
51 1 EA=1;
52 1 TH1=0x00;
53 1 TL1=0x00;
54 1 TR1=1;
55 1
C51 COMPILER V7.06 LCD 03/22/2008 17:36:51 PAGE 2
56 1 while(1)
57 1 {
58 2 /******************fist line****************************/
59 2 uchar i;
60 2 SetStartLine(0);
61 2 re_input:
62 2 for(i=0;i<4;i++)
63 2 {
64 3 SetPage(0);
65 3 SetColumn(i<<4); // i*16
66 3 DspUp(&QING_SHU[i-1][32],1);
67 3 DspUp(&QING_SHU[i-1+4][32],2);
68 3
69 3 SetPage(1);
70 3 SetColumn(i<<4); // i*16
71 3 DspDown(&QING_SHU[i-1][32],1);
72 3 DspDown(&QING_SHU[i-1+4][32],2);
73 3 }
74 2
75 2 /**************second line***************************/
76 2
77 2 for(i=0;i<4;i++)
78 2 {
79 3 SetPage(6);
80 3 SetColumn(i<<4); // i*16
81 3 DspUp(&QING_CHU[i-1][32],1);
82 3 DspUp(&QING_CHU[i+4-1][32],2);
83 3
84 3 SetPage(7);
85 3 SetColumn(i<<4); // i*16
86 3 DspDown(&QING_CHU[i-1][32],1);
87 3 DspDown(&QING_CHU[i+4-1][32],2);
88 3 }
89 2
90 2 /***************************光标显示***********************************/
91 2 if(counter<8) //如果输入到第8位,光标不再显示
92 2 {
93 3 if(cursor)
94 3 {
95 4 i=counter;
96 4 SetPage(2);
97 4 SetColumn((i<4)?(i*16):((i-4)*16));
98 4 DspUp(&GUANG_BIAO_KONG[-1][32],(i<4)?1:2);
99 4
100 4 SetPage(3);
101 4 SetColumn((i<4)?(i*16):((i-4)*16));
102 4 DspDown(&GUANG_BIAO_KONG[-1][32],(i<4)?1:2);
103 4 }
104 3
105 3 else
106 3 {
107 4 i=counter;
108 4 SetPage(2);
109 4 SetColumn((i<4)?(i*16):((i-4)*16));
110 4 DspUp(&GUANG_BIAO_KONG[0][32],(i<4)?1:2);
111 4
112 4 SetPage(3);
113 4 SetColumn((i<4)?(i*16):((i-4)*16));
114 4 DspDown(&GUANG_BIAO_KONG[0][32],(i<4)?1:2);
115 4 }
116 3
117 3 }
C51 COMPILER V7.06 LCD 03/22/2008 17:36:51 PAGE 3
118 2
119 2 /***********************get key's value**************************/
120 2
121 2 if(CheckState())
122 2 {
123 3 delay();
124 3
125 3 if(CheckState())
126 3 {
127 4 key=GetKeys();
128 4
129 4 if(key==0x82) //clear input
130 4 {
131 5 if(modify_flag){counter=0;MODIFY_BUF[8]=PW_NULL[8];}
132 5 else {counter=0;PW[8]=PW_NULL[8];}
133 5
134 5 for(i=0;i<8;i++)
135 5 {
136 6 SetPage(2);
137 6 SetColumn(i<<4);
138 6 DspUp(&GUANG_BIAO_KONG[0][32],1);
139 6 DspUp(&GUANG_BIAO_KONG[0][32],2);
140 6
141 6 SetPage(3);
142 6 SetColumn(i<<4);
143 6 DspDown(&GUANG_BIAO_KONG[0][32],1);
144 6 DspDown(&GUANG_BIAO_KONG[0][32],2);
145 6
146 6 }
147 5 }
148 4
149 4 else if(key==0x88) //verify password
150 4 {
151 5 if(modify_flag){modify=1;goto modify_operation;}
152 5 else {verify=1;goto verify_password;}
153 5
154 5 }
155 4
156 4 else if(counter<8) //get keys
157 4 {
158 5 switch(key)
159 5 {
160 6 case 0x84:
161 6 if(modify_flag)MODIFY_BUF[counter]=0;
162 6 else PW[counter]=0;
163 6 break;
164 6 case 0x42:
165 6 if(modify_flag)MODIFY_BUF[counter]=1;
166 6 else PW[counter]=1;
167 6 break;
168 6 case 0x44:
169 6 if(modify_flag)MODIFY_BUF[counter]=2;
170 6 else PW[counter]=2;
171 6 break;
172 6 case 0x48:
173 6 if(modify_flag)MODIFY_BUF[counter]=3;
174 6 else PW[counter]=3;
175 6 break;
176 6 case 0x22:
177 6 if(modify_flag)MODIFY_BUF[counter]=4;
178 6 else PW[counter]=4;
179 6 break;
C51 COMPILER V7.06 LCD 03/22/2008 17:36:51 PAGE 4
180 6 case 0x24:
181 6 if(modify_flag)MODIFY_BUF[counter]=5;
182 6 else PW[counter]=5;
183 6 break;
184 6 case 0x28:
185 6 if(modify_flag)MODIFY_BUF[counter]=6;
186 6 else PW[counter]=6;
187 6 break;
188 6 case 0x12:
189 6 if(modify_flag)MODIFY_BUF[counter]=7;
190 6 else PW[counter]=7;
191 6 break;
192 6 case 0x14:
193 6 if(modify_flag)MODIFY_BUF[counter]=8;
194 6 else PW[counter]=8;
195 6 break;
196 6 case 0x18:
197 6 if(modify_flag)MODIFY_BUF[counter]=9;
198 6 else PW[counter]=9;
199 6 break;
200 6 default:
201 6 break;
202 6 }
203 5 counter++;
204 5 }
205 4
206 4
207 4 }
208 3 }
209 2
210 2 /************************display password input **************************/
211 2
212 2 for(i=0;i<counter;i++)
213 2 {
214 3 if(modify_flag==1)j=MODIFY_BUF[i];
215 3 else j=PW[i];
216 3 SetPage(2);
217 3 SetColumn((i<4)?(i*16):((i-4)*16));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -