?? 1602+24c08+4x4+
字號:
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE PASSWORD
OBJECT MODULE PLACED IN PASSWORD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PASSWORD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 void key_scan();
5 uchar count0,count1,count3,num,n=0,temp,a,j,count4;
6 uchar mima[8]; //初始密碼存儲區
7 uchar tab_key[50]; //輸入密碼存儲區
8 uchar code table[]={0x3f,0x06,0x5b,0x4f,
9 0x66,0x6d,0x7d,0x07,
10 0x7f,0x6f,0x77,0x7c,
11 0x39,0x5e,0x79,0x71};
12 bit enterflag; //確認鍵按下與否的標志
13 bit mimaflag; //密碼正確與否的標志
14 bit xiugaiflag; //修改密碼標志
15 bit enter1flag; //修改密碼確認鍵標志
16 sbit red=P3^7;
17 sbit bell=P3^6;
18 sbit rs=P1^2;
19 sbit rw=P1^1;
20 sbit lcden=P1^0;
21 sbit scl=P1^3;
22 sbit sda=P1^4;
23 uchar code table1[]="input the passco";
24 uchar code table2[]="de: --------";
25 uchar code table3[]="*";
26 uchar code table4[]="right (^_^) ";
27 uchar code table5[]="first error!!!!";
28 uchar code table6[]="second error!!!!";
29 uchar code table7[]="third error see ";
30 uchar code table8[]="u tomorrow (^_^)";
31 uchar code table9[]="define the passc";
32 uchar code table10[]="ode: --------";
33 uchar code table11[]="code is new";
34 //******************************鍵盤消抖函數*******************************
35 void delay1()
36 { ;; }
37 void delay2(uchar x)
38 { uchar a,b;
39 1 for(a=x;a>0;a--)
40 1 for(b=100;b>0;b--);
41 1 }
42 //***************************延時********
43 void delay(uint z)
44 { uint x,y;
45 1 for(x=z;x>0;x--)
46 1 for(y=110;y>0;y--);
47 1 }
48 //****************************e^2room的初始化*******************************
49 void start() //開始信號
50 { sda=1;
51 1 delay1();
52 1 scl=1;
53 1 delay1();
54 1 sda=0;
55 1 delay1();
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 2
56 1 }
57
58 void stop() //停止
59 {
60 1 sda=0;
61 1 delay1();
62 1 scl=1;
63 1 delay1();
64 1 sda=1;
65 1 delay1();
66 1 }
67 //****************************應答信號*************************************
68 void respond()
69 {
70 1 uchar i;
71 1 scl=1;
72 1 delay1();
73 1 while((sda==1)&&(i<250))i++;
74 1 scl=0;
75 1 delay1();
76 1 }
77 //*****************************寫字節操作函數**********************************
78 void write_byte(uchar date)
79 { uchar i,temp;
80 1 temp=date;
81 1 for(i=0;i<8;i++)
82 1 {
83 2 temp=temp<<1; //保持最高位,左移到進位CY
84 2 scl=0;
85 2 delay1();
86 2 sda=CY;
87 2 delay1();
88 2 scl=1;
89 2 delay1();
90 2 }
91 1 scl=0;
92 1 delay1();
93 1 sda=1;//總線釋放
94 1 delay1();
95 1 }
96 //*******************************讀字節操作函數*****************************
97 uchar read_byte()
98 {
99 1 uchar i,k;
100 1 scl=0;
101 1 delay1();
102 1 sda=1;
103 1 delay1();
104 1 for(i=0;i<8;i++)
105 1 {
106 2 scl=1;
107 2 delay1();
108 2 k=(k<<1)|sda; //或運算,放到最低位
109 2 scl=0;
110 2 delay1();
111 2 }
112 1 return k;
113 1 }
114 //**********************************寫地址函數******************************
115 void write_add(uchar address,uchar date)
116 { start();
117 1 write_byte(0xa0);
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 3
118 1 respond();
119 1 write_byte(address);
120 1 respond();
121 1 write_byte(date);
122 1 respond();
123 1 stop();
124 1 }
125 //*******************************讀地址函數*************************************
126 uchar read_add(uchar address)
127 { uchar date;
128 1 start();
129 1 write_byte(0xa0);
130 1 respond();
131 1 write_byte(address);
132 1 respond();
133 1 start();
134 1 write_byte(0xa1);
135 1 respond();
136 1 date=read_byte();
137 1 stop();
138 1 return date;
139 1 }
140 //****************************LCD1602的初始化*******************************
141 void write_com(uchar com)
142 { rs=0;
143 1 lcden=0;
144 1 P0=com;
145 1 delay(5);
146 1 lcden=1;
147 1 delay(5);
148 1 lcden=0;
149 1 }
150
151 void write_date(uchar date)
152 { rs=1;
153 1 lcden=0;
154 1 P0=date;
155 1 delay(5);
156 1 lcden=1;
157 1 delay(5);
158 1 lcden=0;
159 1 }
160 //***************************************密碼比較函數********************************
161 bit mimacmp()
162 { bit flag;
163 1 uchar i;
164 1 for(i=0;i<8;i++)
165 1 { if(mima[i]==tab_key[i])
166 2 flag=1;
167 2 else
168 2 { flag=0;
169 3 i=8;
170 3 }
171 2 }
172 1 return(flag); //返回flag
173 1 }
174
175 ////**********************************LCD顯示函數開始**************************************
176 void lcd_display()
177 { uchar i=0;
178 1 write_com(0x80+0x40+8);
179 1 for(i=0;i<n;i++)
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 4
180 1 { write_date(table3[0]);
181 2 }
182 1 }
183 //****************************************鍵盤功能分配函數群開始****************************
184 //** 0 ** 1 **2 ** 3**
185 //** 4** 5** 6 **7 **
186 //**8** 9** 確認(A) **無效(B)
187 //**取消(C)**修改密碼鍵(D)**確認修改鍵(E)**無效(F)
188 void key_manage1()
189 { tab_key[n]=0;
190 1 n++;
191 1 if(xiugaiflag==1)
192 1 { mima[count4]=0;
193 2 count4++;
194 2 }
195 1 }
196 /**************/
197 void key_manage2()
198 { tab_key[n]=1;
199 1 n++;
200 1 if(xiugaiflag==1)
201 1 { mima[count4]=1;
202 2 count4++;
203 2 }
204 1 }
205
206 void key_manage3()
207 { tab_key[n]=2;
208 1 n++;
209 1 if(xiugaiflag==1)
210 1 { mima[count4]=2;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -