资源简介
基于c52单片机温度采集系统,使用传感器18b20,串口通信,点阵lcd等,内容为主从机程序和原理图。
代码片段和文件信息
/***********************************************************************
*文件名称:key.c
*说明:本文件为键盘扫描驱动函数文件
*功能:驱动函数实例化
*修改:无
*版本:V1.0.0
*作者:YuanDong
*时间:2009.07.03
*************************************************************************/
#define KEY_GLOBAL 1
#include “Key.h“
uchar keyValueBuff; // 读取键值的缓冲区
uchar keyValueOld; // 前一次的键值
uchar keyValueTemp;
uint stillTimes; // 键按下保持次数
uint stillTimesMax;
uchar get_data_1_count(uchar number);
void read_all_key(uchar *buff);
/*****************************************************************************************
* 函数名称:init_key(void)
* 功 能:键盘驱动初始化
* 入口参数:无
* 出口参数:无
*****************************************************************************************/
void init_key(void)
{
keyValueBuff = 0x00;
keyValueOld = 0x00;
keyValueTemp = 0x00;
stillTimes = 0;
stillTimesMax = FIRST_TIMES;
}
void read_all_key(uchar *buff)
{
if(IN_PRESS_UP == KEY_FORCE_VALUE)
READ_KEY(1KEY_UP*buff);
else
READ_KEY(0KEY_UP*buff);
if(IN_PRESS_DOWN == KEY_FORCE_VALUE)
READ_KEY(1KEY_DOWN *buff);
else
READ_KEY(0KEY_DOWN *buff);
if(IN_PRESS_START == KEY_FORCE_VALUE)
READ_KEY(1KEY_START*buff);
else
READ_KEY(0KEY_START*buff);
if(IN_PRESS_STOP == KEY_FORCE_VALUE)
READ_KEY(1KEY_STOP*buff);
else
READ_KEY(0KEY_STOP*buff);
}
/*****************************************************************************************
* 函数名称:uchar get_key_value(void)
* 功 能:获取键盘的键值
* 入口参数:无
* 出口参数:键盘的键值编码(keyValueTemp)
*****************************************************************************************/
uchar get_key_value(void)
{
keyValueBuff = 0x00;
read_all_key(&keyValueBuff);
keyValueTemp = keyValueBuff;
delay_us(KEY_DELAY_TIME);
read_all_key(&keyValueBuff);
/* 两次读到的键盘值相同 则为有效键盘值 */
if( keyValueTemp == keyValueBuff )
{
if(keyValueTemp == 0)
{
keyValueOld = 0;
stillTimes = 0;
stillTimesMax = FIRST_TIMES;
return 0;
}
else if(keyValueOld != keyValueTemp)
{
stillTimes = 0;
keyValueOld = keyValueTemp;
#if CAN_MORE_PRESS
return keyValueTemp;
#else
if( 1 == get_data_1_count(keyValueTemp) )
{
return keyValueTemp;
}
else
{
return 0;
}
#endif
}
else if(keyValueOld == keyValueTemp)
{
#if CAN_MORE_PRESS == 0
if( 1 != get_data_1_count(keyValueTemp) )
{
stillTimes = 0;
return 0;
}
#endif
#if CAN_REPEAT
stillTimes ++;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 556 2010-01-28 21:24 单片机无线多路温度采集系统设计\code\通信控制机代码\Include.h
文件 5109 2010-01-28 21:28 单片机无线多路温度采集系统设计\code\通信控制机代码\key.c
文件 2104 2010-01-28 21:27 单片机无线多路温度采集系统设计\code\通信控制机代码\key.h
文件 6243 2010-01-28 21:29 单片机无线多路温度采集系统设计\code\通信控制机代码\lcd.c
文件 1549 2010-01-28 21:28 单片机无线多路温度采集系统设计\code\通信控制机代码\lcd.h
文件 3629 2010-01-28 21:31 单片机无线多路温度采集系统设计\code\通信控制机代码\main.c
文件 7347 2010-01-28 21:26 单片机无线多路温度采集系统设计\code\通信控制机代码\nRF905.c
文件 1803 2010-01-28 21:25 单片机无线多路温度采集系统设计\code\通信控制机代码\nRF905.h
文件 2285 2010-01-28 21:29 单片机无线多路温度采集系统设计\code\通信控制机代码\serial.c
文件 802 2010-01-28 21:29 单片机无线多路温度采集系统设计\code\通信控制机代码\serial.h
文件 589 2010-01-28 21:30 单片机无线多路温度采集系统设计\code\通信控制机代码\target.c
文件 845 2010-01-28 21:30 单片机无线多路温度采集系统设计\code\通信控制机代码\target.h
文件 5975 2010-01-28 21:35 单片机无线多路温度采集系统设计\code\采集节点代码\ds18b20.c
文件 857 2010-01-28 21:34 单片机无线多路温度采集系统设计\code\采集节点代码\ds18B20.h
文件 591 2010-01-28 21:32 单片机无线多路温度采集系统设计\code\采集节点代码\include.h
文件 3345 2010-01-28 21:36 单片机无线多路温度采集系统设计\code\采集节点代码\main.c
文件 8011 2010-01-28 21:33 单片机无线多路温度采集系统设计\code\采集节点代码\nRF905.c
文件 1804 2010-01-28 21:33 单片机无线多路温度采集系统设计\code\采集节点代码\nrf905.h
文件 2384 2010-01-28 21:36 单片机无线多路温度采集系统设计\code\采集节点代码\serial.c
文件 835 2010-01-28 21:35 单片机无线多路温度采集系统设计\code\采集节点代码\serial.h
文件 34335 2010-05-19 19:28 单片机无线多路温度采集系统设计\sch\主机.Sch
文件 23023 2010-05-19 19:28 单片机无线多路温度采集系统设计\sch\节点.Sch
目录 0 2012-02-11 12:16 单片机无线多路温度采集系统设计\code\通信控制机代码
目录 0 2012-02-11 12:16 单片机无线多路温度采集系统设计\code\采集节点代码
目录 0 2012-02-11 12:16 单片机无线多路温度采集系统设计\code
目录 0 2012-02-11 12:16 单片机无线多路温度采集系统设计\sch
目录 0 2012-02-11 12:16 单片机无线多路温度采集系统设计
----------- --------- ---------- ----- ----
114021 27
............此处省略0个文件信息
- 上一篇:Bird Flock Bundle 2.4.2
- 下一篇:莱卡全站仪通讯指令.pdf
评论
共有 条评论