📄 key_disp.lst
字号:
186 1 }
187
188 unsigned char key_read() //读键码子程序
189 {
190 1
191 1 if (!key) // 如果有健按下,则为"0"
192 1 {
193 2 key_number=read7279(CMD_READ); // 读键码
194 2 while (!key); // 等待按键松开
195 2 }
196 1 return(key_number); //返回键码值
197 1 }
198
199 void key_serve(void) //键盘服务子程序
200 {
201 1
202 1 switch (key_number)
203 1 {
204 2 uchar Temp;
205 2 case 6:
206 2 // 第一个通道输入
207 2 key_6 = 1;
208 2 key_14 = 0;
209 2 key_5 = 0;
210 2 while(key_6)
211 2 {
212 3 if(ReadRom1() == 0x28) // 检测DS18B20存在
213 3 {
214 4 UartSent(0x28); // 发送DS18B20家族码
215 4 tmp1change(); // 开始温度转换
216 4 delay1ms(250); // 读取延时
217 4 tmp1(); // 读取温度
218 4 Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
219 4
220 4 UartSent(Temp/10); // 把接收到的十位上的数据发送到串口
221 4 UartSent(Temp%10); // 把接收到的个位上的数据发送到串口
222 4 UartSent(Offset); // 把接收到的数据发送到串口
223 4
224 4 write7279(DECODE1+1,Temp/10);// 在第2位显示键码高8位
225 4 write7279(DECODE1,Temp%10); // 在第1位显示键码低8位
226 4 }
227 3 else
228 3 {
229 4 write7279(DECODE1+1,0x0F); // 在第2位显示键码高8位
230 4 write7279(DECODE1,0x0F); // 在第1位显示键码低8位
231 4 }
232 3 if (!key) break;
233 3 }
234 2
235 2 break;
236 2
237 2 case 14:
238 2 // 第二个通道输入
239 2 key_6 = 0;
240 2 key_14 = 1;
C51 COMPILER V7.50 KEY_DISP 12/06/2006 14:10:24 PAGE 5
241 2 key_5 = 0;
242 2 while(key_14)
243 2 {
244 3 if(ReadRom2() == 0x28) // 检测DS18B20存在
245 3 {
246 4 UartSent(0x29); // 发送DS18B20家族码
247 4 tmp2change(); // 开始温度转换
248 4 delay1ms(250); // 读取延时
249 4 tmp2(); // 读取温度
250 4 Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
251 4
252 4 UartSent(Temp/10); // 把接收到的十位上的数据发送到串口
253 4 UartSent(Temp%10); // 把接收到的个位上的数据发送到串口
254 4 UartSent(Offset); // 把接收到的数据发送到串口
255 4
256 4 write7279(DECODE1+1,Temp/10); // 在第2位显示键码高8位
257 4 write7279(DECODE1,Temp%10); // 在第1位显示键码低8位
258 4 }
259 3 else // 检测DS18B20不存在,显示0xFF
260 3 {
261 4 write7279(DECODE1+1,0x0F); // 在第2位显示键码高8位
262 4 write7279(DECODE1,0x0F); // 在第1位显示键码低8位
263 4 }
264 3 if (!key) break;
265 3 }
266 2
267 2 break;
268 2
269 2 case 5:
270 2 key_6 = 0;
271 2 key_14 = 0;
272 2 key_5 = 1;
273 2 while(key_5)
274 2 {
275 3 // 第一个通道输入
276 3 if(ReadRom1() == 0x28) // 检测DS18B20存在
277 3 {
278 4 UartSent(0x28); // 发送DS18B20家族码
279 4 tmp1change(); // 开始温度转换
280 4 delay1ms(250); // 读取延时
281 4 tmp1(); // 读取温度
282 4 Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
283 4
284 4 UartSent(Temp/10); // 把接收到的十位上的数据发送到串口
285 4 UartSent(Temp%10); // 把接收到的个位上的数据发送到串口
286 4 UartSent(Offset); // 把接收到的数据发送到串口
287 4
288 4 write7279(DECODE1+1,Temp/10);// 在第2位显示键码高8位
289 4 write7279(DECODE1,Temp%10); // 在第1位显示键码低8位
290 4 }
291 3 else
292 3 {
293 4 write7279(DECODE1+1,0x0F); // 在第2位显示键码高8位
294 4 write7279(DECODE1,0x0F); // 在第1位显示键码低8位
295 4 }
296 3 // 第二个通道输入
297 3 if(ReadRom2() == 0x28) // 检测DS18B20存在
298 3 {
299 4 UartSent(0x29); // 发送DS18B20家族码
300 4 tmp2change(); // 开始温度转换
301 4 delay1ms(250); // 读取延时
302 4 tmp2(); // 读取温度
C51 COMPILER V7.50 KEY_DISP 12/06/2006 14:10:24 PAGE 6
303 4 Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
304 4
305 4 UartSent(Temp/10); // 把接收到的十位上的数据发送到串口
306 4 UartSent(Temp%10); // 把接收到的个位上的数据发送到串口
307 4 UartSent(Offset); // 把接收到的数据发送到串口
308 4
309 4 write7279(DECODE1+1,Temp/10); // 在第2位显示键码高8位
310 4 write7279(DECODE1,Temp%10); // 在第1位显示键码低8位
311 4 }
312 3 else // 检测DS18B20不存在,显示0xFF
313 3 {
314 4 write7279(DECODE1+1,0x0F); // 在第2位显示键码高8位
315 4 write7279(DECODE1,0x0F); // 在第1位显示键码低8位
316 4 }
317 3 if (!key) break;
318 3
319 3 }
320 2
321 2 break;
322 2
323 2 case 13:
324 2 send_byte(CMD_RESET); //清除显示
325 2 break;
326 2
327 2 default :
328 2 //若出错,则显示"FF"
329 2 write7279(DECODE1+1,0x0F); // 在第2位显示键码高8位
330 2 write7279(DECODE1,0x0F); // 在第1位显示键码低8位
331 2
332 2 break;
333 2
334 2 }
335 1
336 1 }
337 void ini_uart(void)
338 {
339 1 SCON = 0x50; //串口方式1,允许接受
340 1 TMOD = 0x20; //定时器1,定时方式2
341 1 TH1 = 0xfd; //11.0592Hz,Baud Rate 9600
342 1 TL1 = 0xfd;
343 1 TI = 0;
344 1 RI = 0;
345 1 TR1 = 1; //启动定时器
346 1 }
347
348 //查询方式,向串口发送一个字符
349 void UartSent(uchar byte)
350 {
351 1 SBUF=byte;
352 1 while(TI==0);
353 1 TI=0;
354 1 }
355
356 void tm1reset (void) // 发送复位和初始化
357 {
358 1 unsigned int i;
359 1 DQ1 = 0;
360 1 i = 103;
361 1 while (i>0) i--; // 延时
362 1 DQ1 = 1;
363 1 i = 4;
364 1 while (i>0) i--;
C51 COMPILER V7.50 KEY_DISP 12/06/2006 14:10:24 PAGE 7
365 1 }
366 void tm2reset (void) // 发送复位和初始化
367 {
368 1 unsigned int i;
369 1 DQ2 = 0;
370 1 i = 103;
371 1 while (i>0) i--; // 延时
372 1 DQ2 = 1;
373 1 i = 4;
374 1 while (i>0) i--;
375 1 }
376 bit tmp1read (void) // 读取数据的一位
377 {
378 1 unsigned int i;
379 1 bit dat;
380 1 DQ1 = 0; i++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -