📄 keyb.lst
字号:
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEYB
OBJECT MODULE PLACED IN keyB.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE keyB.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* 其中键盘扫描程序返回的n数值分别代表 1:P1.0
2 2:P1.1
3 3:P1.2
4 4:P1.3
5 89S51实验板 5:P1.4 */
6
7 #include "reg51.h"
8 #include "stdio.h"
9
10 //外部变量函数
11 sbit BLACK_LIGHT=P2^4; //背光控制
12 //------------------LPH7366.C------------------
13 extern void LPH7366_write_str(unsigned char line,unsigned char row,unsigned char str); //LPH7366任意写入字
-符函数
14 extern void data_tick(unsigned char i_data); //数据拆分函数
15 extern unsigned char ge,shi; //数据拆分
16 //-----------------time.C----------------------
17 extern struct time
18 {
19 unsigned char hour;
20 unsigned char minute;
21 unsigned char second;
22 }local_time,alarm_time,temp_time;
23 extern bit second_flag; //秒信号标志
24 //------------------温度计.C-------------------
25 extern void temp_display(); //温度显示
26 //------------------DS18B20.C------------------
27 extern void temp_data_turn(float in_data); //DS18B20读取温度转换
28 extern signed char temp_TL,temp_TH; //温度上下限
29 extern bit T_sign; //温度正负符号
30 //------------------------------------------
31 //内部变量函数
32 unsigned char keyB(); //键盘扫描
33 void time_switch(); //时间功能切换
34 void temp_switch(); //温度功能切换
35 void temp_set_display(unsigned char option_i); //温度切换显示
36 void temp_set_option_display(signed char temp); //温度切换显示子函数
37 void time_set_display(unsigned char option_i); //时间切换显示
38 void time_set_option_display(struct time i); //时间切换显示子函数
39 void key_time_setdone(struct time *i); //时间调整
40 void key_temp_setdone(unsigned char *i); //温度调整
41 void flash_co(unsigned char set_i); //闪烁控制函数
42
43 bit key_flag=1; //键盘标志位
44 bit flash=0; //闪烁总开关
45 bit flash1; //闪烁控制位
46 bit flash2; //闪烁控制位
47 bit flash3; //闪烁控制位
48 extern bit ring_flag; //闹铃
49 unsigned char data key;
50 unsigned char key_option_i; //具体哪位调整 共有3位可调
51 unsigned char temp_TLTH_dis; //显示用TH_dis,TL_dis
52
53
54 /******************************键盘函数********************************/
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 2
55 /*函数原型:unsigned char keyB()
56 /*函数功能:键盘扫描
57 /*输入参数:无
58 /*输出参数:key (根据该数值进行判断是哪个键被按下)
59 /*调用模块:无
60 /*建立时间:2005/10/21
61 /*作者:丁霄
62 /**********************************************************************/
63 unsigned char keyB() //键盘扫描子程序
64 { unsigned char data i;
65 1 i=P1; //读P1口
66 1 i=i|0xe0; //屏蔽高3位 为1
67 1 switch(i)
68 1 {case 0xfe: key=1;
69 2 break;
70 2 case 0xfd: key=2;
71 2 break;
72 2 case 0xfb: key=3;
73 2 break;
74 2 case 0xf7: key=4;
75 2 break;
76 2 case 0xef: key=5;
77 2 break;
78 2 case 0xff: key=6;
79 2 default: key=0;
80 2 break;
81 2 }
82 1 return(key);
83 1 }
84
85 /****************************键盘主函数********************************/
86 /*函数原型:void key_mian()
87 /*函数功能:最上级键盘操作
88 /*输入参数:无
89 /*输出参数:无
90 /*调用模块:keyB(),time_set(),temp_set()
91 /*建立时间:2005/11/17
92 /*作者:丁霄
93 /**********************************************************************/
94 void key_main()
95 {
96 1 keyB();
97 1
98 1 if(key==1&&key_flag) //时间
99 1 {
100 2 key_flag=0;
101 2 time_switch(); //时间功能切换
102 2 }
103 1 if(key==2&&key_flag) //温度
104 1 {
105 2 key_flag=0;
106 2 temp_switch(); //温度功能切换
107 2 }
108 1
109 1 if(key==4&&key_flag) //背光控制
110 1 {
111 2 key_flag=0;
112 2 BLACK_LIGHT=~BLACK_LIGHT;
113 2 }
114 1
115 1 if(key==5&&key_flag) //闹铃控制
116 1 {
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 3
117 2 key_flag=0;
118 2 ring_flag=~ring_flag;
119 2 }
120 1
121 1 if(key==3||key==0) //键盘标志位复位
122 1 {
123 2 key_flag=1;
124 2 }
125 1 flash=0;
126 1 flash_co(0);
127 1 }
128
129 /***************************时间功能切换函数***************************/
130 /*函数原型:void time_switch()
131 /*函数功能:时间功能切换
132 /*输入参数:无
133 /*输出参数:无
134 /*调用模块:keyB(),key_time_setdone(),LPH7366_write_str(),time_set_display()
135 /*建立时间:2005/11/17
136 /*作者:丁霄
137 /**********************************************************************/
138 void time_switch()
139 {
140 1 key_option_i=1; //键盘按键计数器
141 1 while(1)
142 1 {keyB();
143 2 //------------3号键---------------------
144 2 if(key==3&&key_flag) //功能切换
145 2 {
146 3 key_flag=0;
147 3 key_option_i++;
148 3 if(key_option_i==4)
149 3 key_option_i=1;
150 3 }
151 2 //-----------4号键-------------------
152 2 if(key==4&&key_flag) //背光控制
153 2 {
154 3 key_flag=0;
155 3 BLACK_LIGHT=~BLACK_LIGHT;
156 3 }
157 2 //-----------5号键-------------------
158 2 if(key==5&&key_flag) //确定
159 2 {
160 3 key_flag=0;
161 3 if(key_option_i==1)
162 3 key_time_setdone(&local_time); //时间功能的具体那项功能设置 1:local_time 2:alarm_time 3:temp_time
163 3 if(key_option_i==2)
164 3 key_time_setdone(&alarm_time);
165 3 if(key_option_i==3)
166 3 key_time_setdone(&temp_time);
167 3 LPH7366_write_str(6,9,0x00); //显示空格
168 3 LPH7366_write_str(6,10,0x00); //显示空格
169 3 break;
170 3 }
171 2 //---------其余键--------------------
172 2 if(key==1||key==2||key==0)
173 2 {
174 3 key_flag=1;
175 3 }
176 2 //-----------------------------------
177 2 time_set_display(key_option_i); //功能切换时显示
178 2 }
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 4
179 1 }
180
181 /***************************温度功能切换函数***************************/
182 /*函数原型:void temp_switch()
183 /*函数功能:温度功能切换
184 /*输入参数:无
185 /*输出参数:无
186 /*调用模块:keyB(),key_temp_setdone(),temp_set_display()
187 /*建立时间:2005/11/17
188 /*作者:丁霄
189 /**********************************************************************/
190 void temp_switch()
191 {
192 1 key_option_i=1; //键盘按键计数器
193 1 while(1)
194 1 {keyB();
195 2 //------------3号键---------------------
196 2 if(key==3&&key_flag) //功能切换
197 2 {
198 3 key_flag=0;
199 3 key_option_i++;
200 3 if(key_option_i==3)
201 3 key_option_i=1;
202 3 }
203 2 //-----------4号键-------------------
204 2 if(key==4&&key_flag) //背光控制
205 2 {
206 3 key_flag=0;
207 3 BLACK_LIGHT=~BLACK_LIGHT;
208 3 }
209 2 //-----------5号键-------------------
210 2 if(key==5&&key_flag) //确定
211 2 {
212 3 key_flag=0;
213 3 if(key_option_i==1)
214 3 key_temp_setdone(&temp_TH); //时间功能的具体那项功能设置 1:TH 2:TL
215 3 if(key_option_i==2)
216 3 key_temp_setdone(&temp_TL);
217 3 LPH7366_write_str(3,6,0); //显示空格
218 3 LPH7366_write_str(3,7,0); //显示空格
219 3 break;
220 3 }
221 2 //----------其余键--------------------
222 2 if(key==1||key==2||key==0)
223 2 {
224 3 key_flag=1;
225 3 }
226 2 //-----------------------------------
227 2 temp_set_display(key_option_i); //功能切换时显示
228 2 }
229 1 }
230
231 /**************************时间切换显示函数****************************/
232 /*函数原型:void time_set_display(unsigned char option_i)
233 /*函数功能:时间切换显示
234 /*输入参数:无
235 /*输出参数:无
236 /*调用模块:time_set_option_display(),LPH7366_write_str(),
237 /*建立时间:2005/11/18
238 /*作者:丁霄
239 /**********************************************************************/
240 void time_set_display(unsigned char option_i)
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 5
241 {
242 1 if(option_i==1) //local_time
243 1 {
244 2 time_set_option_display(local_time);
245 2 LPH7366_write_str(6,9,0x00); //显示空格
246 2 LPH7366_write_str(6,10,35); //显示C
247 2 }
248 1
249 1 if(option_i==2) //alarm_time
250 1 {
251 2 time_set_option_display(alarm_time);
252 2 LPH7366_write_str(6,9,0x00); //显示空格
253 2 LPH7366_write_str(6,10,33); //显示A
254 2 }
255 1
256 1 if(option_i==3) //temp_time
257 1 {
258 2 time_set_option_display(temp_time);
259 2 LPH7366_write_str(6,9,0x00); //显示空格
260 2 LPH7366_write_str(6,10,52); //显示T
261 2 }
262 1 }
263
264 /***************************时间切换显示子函数************************/
265 /*函数原型:void time_set_option_display(struct time i)
266 /*函数功能:时间切换显示子函数
267 /*输入参数:无
268 /*输出参数:无
269 /*调用模块:data_tick(),LPH7366_write_str()
270 /*建立时间:2005/11/21
271 /*作者:丁霄
272 /**********************************************************************/
273 void time_set_option_display(struct time i)
274 {
275 1 data_tick(i.hour); //hour
276 1 if(flash1==1)
277 1 {
278 2 if(second_flag==1)
279 2 {
280 3 LPH7366_write_str(6,1,(shi+16));
281 3 LPH7366_write_str(6,2,(ge+16));
282 3 }
283 2 else
284 2 {
285 3 LPH7366_write_str(6,1,60); //55
286 3 LPH7366_write_str(6,2,60);
287 3 }
288 2 }
289 1 else
290 1 {
291 2 LPH7366_write_str(6,1,(shi+16));
292 2 LPH7366_write_str(6,2,(ge+16));
293 2 }
294 1
295 1 if(second_flag==1)
296 1 LPH7366_write_str(6,3,26); //:
297 1 else
298 1 LPH7366_write_str(6,3,0); //
299 1
300 1 data_tick(i.minute); //minute
301 1 if(flash2==1)
302 1 {
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 6
303 2 if(second_flag==1)
304 2 {
305 3 LPH7366_write_str(6,4,(shi+16));
306 3 LPH7366_write_str(6,5,(ge+16));
307 3 }
308 2 else
309 2 {
310 3 LPH7366_write_str(6,4,60); //55
311 3 LPH7366_write_str(6,5,60);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -