📄 mimasuo.lst
字号:
C51 COMPILER V8.02 MIMASUO 07/14/2010 14:24:02 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MIMASUO
OBJECT MODULE PLACED IN mimasuo.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE mimasuo.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 “天祥电子” 倾情奉献
3 www.txmcu.cn
4 www.txmcu.com
5 ********************************************************************************
6 功能键
7 S6---S15 数字键0-9
8 S16---更改密码 S17---更改密码完毕后确认
9 S18---重试密码、重新设定 S19---关闭密码锁
10 初始密码:000000 密码位数:6位
11 注意:掉电后,所设密码会丢失,重新上点时,密码恢复为原始的000000
12 与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上
13
14 程序功能:
15 1、开锁:
16 下载程序后,直接按六次S7(即代表数字1),8位LED亮,锁被打开,输入密码时,
17 六位数码管依次显示小横杠。
18 2、更改密码:
19 只有当开锁(LED亮)后,该功能方可使用。
20 首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应
21 的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。
22 3、重试密码:
23 当输入密码时,密码输错后按下键S18,可重新输入六位密码。
24 当设置密码时,设置中途想更改密码,也可按下此键重新设置。
25 4、关闭密码锁:
26 按下S19即可将打开的密码锁关闭。
27 推荐初级演示步骤:输入原始密码111111---按下更改密码按键S16---按0到9设置密码---按S17
28 确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁
29 *******************************************************************************/
30 #include<reg52.h>
31
32 #define uchar unsigned char
33 #define uint unsigned int
34
35 uchar old1,old2,old3,old4,old5,old6; //原始密码
36 uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密码输入
37 uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
38 uchar wei,key,temp;
39
40 bit allow,genggai,ok,wanbi,retry,close; //各个状态位
41
42 sbit dula=P2^6;
43 sbit wela=P2^7;
44 sbit beep=P2^3;
45
46 unsigned char code table[]=
47 {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
48 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
49
50 void delay(unsigned char i)
51 {
52 1 uchar j,k;
53 1 for(j=i;j>0;j--)
54 1 for(k=125;k>0;k--);
55 1 }
C51 COMPILER V8.02 MIMASUO 07/14/2010 14:24:02 PAGE 2
56
57 void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
58 {
59 1 dula=0;
60 1 P0=table[a];
61 1 dula=1;
62 1 dula=0;
63 1
64 1 wela=0;
65 1 P0=0xfe;
66 1 wela=1;
67 1 wela=0;
68 1 delay(5);
69 1
70 1 P0=table[b];
71 1 dula=1;
72 1 dula=0;
73 1
74 1 P0=0xfd;
75 1 wela=1;
76 1 wela=0;
77 1 delay(5);
78 1
79 1 P0=table[c];
80 1 dula=1;
81 1 dula=0;
82 1
83 1 P0=0xfb;
84 1 wela=1;
85 1 wela=0;
86 1 delay(5);
87 1
88 1 P0=table[d];
89 1 dula=1;
90 1 dula=0;
91 1
92 1 P0=0xf7;
93 1 wela=1;
94 1 wela=0;
95 1 delay(5);
96 1
97 1 P0=table[e];
98 1 dula=1;
99 1 dula=0;
100 1
101 1 P0=0xef;
102 1 wela=1;
103 1 wela=0;
104 1 delay(5);
105 1
106 1 P0=table[f];
107 1 dula=1;
108 1 dula=0;
109 1
110 1 P0=0xdf;
111 1 wela=1;
112 1 wela=0;
113 1 delay(5);
114 1 }
115
116
117 void keyscan()
C51 COMPILER V8.02 MIMASUO 07/14/2010 14:24:02 PAGE 3
118 {
119 1 {
120 2 P3=0xfe;
121 2 temp=P3;
122 2 temp=temp&0xf0;
123 2 if(temp!=0xf0)
124 2 {
125 3 delay(10);
126 3 if(temp!=0xf0)
127 3 {
128 4 temp=P3;
129 4 switch(temp)
130 4 {
131 5 case 0xee:
132 5 key=0;
133 5 wei++;
134 5 break;
135 5
136 5 case 0xde:
137 5 key=1;
138 5 wei++;
139 5 break;
140 5
141 5 case 0xbe:
142 5 key=2;
143 5 wei++;
144 5 break;
145 5
146 5 case 0x7e:
147 5 key=3;
148 5 wei++;
149 5 break;
150 5 }
151 4 while(temp!=0xf0)
152 4 {
153 5 temp=P3;
154 5 temp=temp&0xf0;
155 5 beep=0;
156 5 }
157 4 beep=1;
158 4 }
159 3 }
160 2 P3=0xfd;
161 2 temp=P3;
162 2 temp=temp&0xf0;
163 2 if(temp!=0xf0)
164 2 {
165 3 delay(10);
166 3 if(temp!=0xf0)
167 3 {
168 4 temp=P3;
169 4 switch(temp)
170 4 {
171 5 case 0xed:
172 5 key=4;
173 5 wei++;
174 5 break;
175 5
176 5 case 0xdd:
177 5 key=5;
178 5 wei++;
179 5 break;
C51 COMPILER V8.02 MIMASUO 07/14/2010 14:24:02 PAGE 4
180 5
181 5 case 0xbd:
182 5 key=6;
183 5 wei++;
184 5 break;
185 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -