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