📄 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 + -