📄 多功能密码锁.lst
字号:
C51 COMPILER V8.02 禵功能密码薩 03/05/2009 19:15:02 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 禵功能密码薩
OBJECT MODULE PLACED IN 多功能密码锁.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 多功能密码锁.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"REGX51.h"
2 /************************************************ 宏定义 ***********************************
-***********************/
3
4 /* LCD commend */
5
6 #define TwoLine_8bit 56
7 #define CLEAR 1
8 #define CURSOR_HOME 2
9 #define CURSOR_LEFT 4
10 #define CURSOR_RIGHT 6
11 #define CURSOR_OFF 12
12 #define CURSOR_ON 14
13 #define CURSOR_BLINK 15
14 #define GOTO_LINE_2 192
15 #define GOTO_LINE_1 128
16
17 /* LCD control lines */
18
19 #define ENABLE 1
20 #define DISABLE 0
21 #define RADE 1
22 #define WRITE 0
23 #define COMMAND 0
24 #define DATA 1
25 #define rs P1_0
26 #define rw P1_1
27 #define enable P1_2
28 sbit DQ= P1^3;
29 sbit LOCKOUT= P1^4;
30 sbit TEMPOUT= P1^5;
31 sbit LOCK= P1^6;
32 sbit BELL= P1^7;
33 sbit LEFT= P3^5;
34 sbit ENTER= P3^6;
35 sbit RIGHT= P3^7;
36 /************************************************ END **********************************
-************************/
37
38
39
40
41 /************************************************ 键盘扫描 **********************************
-************************/
42 code char key_code[]={0xDD,0x7E,0x7D,0x7B,0x77,0xBE,0xBD,0xBB,0xB7,0xDE,0xDB,0xD7,0xEE,0xED,0xEB,0xE7};
43 code ksp[4]={0x7F,0xBF,0xDF,0xEF};
44
45
46 void delay( void )
47 {
48 1 unsigned char i,j;
49 1 for(i=0;i<5;i++)
50 1 for(j=0;j<255;j++)
51 1 ;
52 1 }
C51 COMPILER V8.02 禵功能密码薩 03/05/2009 19:15:02 PAGE 2
53
54
55 char keypad_scan( void )
56 {
57 1 char key,i;
58 1 P2=0xF0;
59 1 while(P2!=0xF0)
60 1 ;
61 1 do{
62 2 for(i=0;i<=3;i++)
63 2 {
64 3 P2=ksp[i];
65 3 if(P2!=ksp[i])
66 3 {
67 4 delay();
68 4 key=P2;
69 4 if(key!=ksp[i])
70 4 {
71 5 return(key);
72 5 }
73 4 }
74 3 }
75 2 }while(ENTER);
76 1 }
77
78
79 char gotkey( void )
80 {
81 1 char temp,i;
82 1 temp=keypad_scan();
83 1 for(i=0;i<=15;i++)
84 1 {
85 2 if(temp==key_code[i])
86 2 return(i);
87 2 }
88 1 }
89 /************************************************ END **********************************
-************************/
90
91
92
93
94 /************************************************ 1602液晶控制 **********************************
-**************************/
95 char code int2charLCD[]="0123456789";
96
97
98 void delay100us( unsigned char j )
99 {
100 1 unsigned char i;
101 1 i=10*j;
102 1 while(i--);
103 1 }
104
105
106 void write_LCD_command( unsigned command )
107 {
108 1 rw=WRITE;
109 1 rs=COMMAND;
110 1 enable=ENABLE;
111 1 P0=command;
112 1 delay100us(20);
C51 COMPILER V8.02 禵功能密码薩 03/05/2009 19:15:02 PAGE 3
113 1 enable=DISABLE;
114 1 rw=1;
115 1 }
116
117
118 void write_LCD_data( unsigned LCDdata )
119 {
120 1 rw=WRITE;
121 1 rs=DATA;
122 1 enable=ENABLE;
123 1 P0=LCDdata;
124 1 delay100us(20);
125 1 enable=DISABLE;
126 1 rw=1;
127 1 }
128
129
130 void init_LCD( void )
131 {
132 1 write_LCD_command(TwoLine_8bit);
133 1 write_LCD_command(CURSOR_OFF);
134 1 write_LCD_command(CURSOR_RIGHT);
135 1 }
136
137
138 void clear_LCD( void )
139 {
140 1 write_LCD_command(CLEAR);
141 1 write_LCD_command(CURSOR_HOME);
142 1 }
143
144
145 void display_LCD_string( char *p )
146 {
147 1 while(*p)
148 1 {
149 2 write_LCD_data(*p);
150 2 p++;
151 2 }
152 1 }
153
154 void display_LCD_int( char number )
155 {
156 1 unsigned char x;
157 1 x=number;
158 1 write_LCD_data(int2charLCD[x]);
159 1 }
160
161
162 void gotoxy( unsigned x , unsigned y )
163 {
164 1 if(x==1)
165 1 write_LCD_command(GOTO_LINE_1+y);
166 1 else
167 1 write_LCD_command(GOTO_LINE_2+y);
168 1 }
169 /************************************************ END **********************************
-************************/
170
171
172
173 /************************************************ 计算器 **********************************
C51 COMPILER V8.02 禵功能密码薩 03/05/2009 19:15:02 PAGE 4
-************************/
174 unsigned long dat1=0,dat2=0,dat3=0;
175
176
177 void print_num( unsigned long dat )
178 {
179 1 unsigned char x;
180 1 if(dat<10)
181 1 x=1;
182 1 if(dat>=10&&dat<100)
183 1 x=2;
184 1 if(dat>=100&&dat<1000)
185 1 x=3;
186 1 if(dat>=1000&&dat<10000)
187 1 x=4;
188 1 if(dat>=10000&&dat<100000)
189 1 x=5;
190 1 if(dat>=100000&&dat<1000000)
191 1 x=6;
192 1 if(dat>=1000000&&dat<10000000)
193 1 x=7;
194 1 if(dat>=10000000&&dat<100000000)
195 1 x=8;
196 1 if(dat>=100000000&&dat<1000000000)
197 1 x=9;
198 1 if(dat>=1000000000&&dat<10000000000)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -