#include"config.h"
/*
在配置选项中要修改PA0~PA3 PB6~PB7 PC4 PD0 为上拉
键盘编码如下:
1 2
3
4 5 6
7
键盘编码为1-开关机 2-自动模式 3-增加数据(增加温度 得减小数据--温度为特殊情况) 4-向左切换 5-模式选择确定键 6-向右切换
7-向下减小数据(减小温度,得增大数据--温度为特殊情况)
*/
extern long BtaCount;
char Runflag;
int keydata,vskeyflag,vskeydata;
//keydata:键码数据vskeyflag是否为红外接收到的数据0不是 1是 vskeydata红外接收到的键码值
char MyStartflag;//开关机状态标志 1开机 0关机
char AutoFlag;//是否为自动控制运行 1是。0否
unsigned char MenuFlag;//当前模式选项 0没有选择这个选项,为自主控制模式 1自动控制模式
//2设置定时运行时间以分钟为单位
//3
unsigned long UserSetTime;//用户设定的使用时间
extern int UserTemp;//用户设定温度
//显示切换标志 2显示状态 1为设置状态
extern int SetTimeflag;//时间设置标志,0没有设置时间 1设置了运行时间
extern unsigned char ShowFlag; //显示切换标志 1显示状态 2为设置状态
extern unsigned char Intflag;//是否发生过中断、1发生了中断,0没有发生中断
void main()
{
MainInit();
InitLed(); //74HC595相关初始化
Sys_Init(); //变量初始化,定时器初始化
Uart_init(); //串口初始化
Bta41Init(); //可控硅初始化
ShutdownSys(); //首先处于关闭状态
AutoInit();//自动运行初始化
SetTimeInit();//设置时间
while(1)
{
Mainkey();
if(MyStartflag)//是否为开机状态
{
MainTime();//显示切换
Mainfun();
AutomaticMain();//自动控制运行
SetTimeFunc();//运行时间函数
}
else
{
PowerDown();
}
}
}
void Mainfun()
{
int MyTemp=0,HumiData[5]={0,0,0,0,0};
if(TempCal(&MyTemp)==1&&MyTemp!=0)
{
if(MyTemp<=100) //实际温度在-10~40之间
{
SetTemp(&MyTemp);
//Uart_send(MyTemp);
}
else
{
MyTemp=100;
}
}
if(vskeydata!=0)
Mainkey();
if(ReadDht11(&HumiData)==1)
{
//ShowDht11(&HumiData);
SetShowHum(HumiData);
}
}
int ShowTrFa(int *MyTemp)//判断数据是否是有效数据 真--1 假--0
{
return 1;
}
int Getkey(void)//为0时没有按键
{
KEYIOINPUT();
if(vskeydata!=0)
{
if(vskeydata>=1&&vskeydata<=7)
{
vskeyflag=1;
return vskeydata;//为红外摇控的数据时
}
else
return 0;
}
if(!(_pa0&&_pa1&&_pa2&&_pa3))
{
_delay(5000);//消抖时间
_delay(5000);
if(!(_pa0&&_pa1&&_pa2&&_pa3))
{
if(_pa0==0)
return 1; //开关机
else if(_pa1==0)
return 7; //减小温度
else if(_pa2==0)
return 3; //增大温度
else
return 2; //模式切换
}
else
{
return 0;//没有按键
}
}
return 0;
}
void Mainkey(void)
{
keydata=Getkey();
if(keydata!=0|vskeydata!=0)
//if(keydata!=0)
{
if(vskeydata>=1&&vskeydata<=7)//红外收到的数据处理
{
keydata=vskeydata;
vskeydata=0;
vskeyflag=1;
}
BeepSound(1);
if(keydata==1)//开关机
{
MyStartflag=1-MyStartflag;
if(MyStartflag==1)//开机
{
StartSys();
}
else//关机
{
ShutdownSys();//关闭系统
}
}
if(keydata==2)
{
KeyDatafun_2();
//AutoFlag=1-AutoFlag;//为自动运行控制系统
}
if(keydata==3)
{
AddData_3();
}
if(keydata==4)
{
KeyDatafun_4();
}
if(keydata==5)
{
KeyDatafun_5();
}
if(keydata==6)
{
KeyDatafun_6();
}
if(keydata==7)
{
SubData_7();
}
if(vskeyflag==0)
{
Uart_send(keydata);
DhtDelay(100);
}
}
keydata=0;
vskeyflag=0;
}
void VSMAINNUMKEY(void)//当前键值时的响应函数
{
BeepSound(1);
if(vskeydata==1)//开关机
{
MyStartflag=1-MyStartflag;
if(MyStartflag==1)//开机
{
StartSys();
}
else//关机
{
ShutdownSys();//关闭系统
}
}
if(vskeydata==2)
{
KeyDatafun_2();
//AutoFlag=1-AutoFlag;//为自动运行控制系统
}
if(vskeydata==3)
{
AddData_3();
}
if(vskeydata==4)
{
KeyDatafun_4();
}
if(vskeydata==5)
{
KeyDatafun_5();
}
if(vskeydata==6)
{
KeyDatafun_6();
}
if(vskeydata==7)
{
SubData_7();
}
}
void MainInit(void)
{
UserSetTime=3;//用户设定的使用时间
Runflag=0;
MyStartflag=0;
AutoFlag=0;//不是自动运行
MenuFlag=0;//当前模式为自主模式
vskeydata=0;//红外接收的数据 没有
vskeyflag=0;//是否为红外接收到的数据 不是0
}
void AddData_3(void)//键码为3的响应函数
{
if(MenuFlag==0)
{
if(BtaCount>=10&&BtaCount<=200)
BtaCount-=5;//减小数据 增大温度 减小过0后触发时间
}
if(MenuFlag==1)
{
if(UserTemp<=100)
UserTemp++; //增加用户设定的温度
}
if(MenuFlag==2)
{
if(UserSetTime<=240)
UserSetTime++; //增加用户设定的使用时间
}
}
void SubData_7(void)//键码为7的响应函数
{
if(MenuFlag==0)
{
if(BtaCount>=1&&BtaCount<=190)
BtaCount+=5;//增加数据 减小温度 增大过0后触发时间
}
if(MenuFlag==1)
{
if(UserTemp>=5)
UserTemp--; // 减小用户设定的温度
}
if(MenuFlag==2)
{
if(UserSetTime>=1)
UserSetTime--; //减小用户设定的用时时间
}
}
void KeyDatafun_5(void)
{
ShowFlag=1;
if(MenuFlag==1)
{
AutoFlag=1;//为自动运行控制系统
}
if(MenuFlag==2)
{
SetTimeflag=1-SetTimeflag;//设置运行时间0不启动运行时间 1启动运行时间设置
}
}
void KeyDatafun_4(void)//键码为4的响应函数
{
if(MenuFlag<=0)
{
MenuFlag=3;
}
MenuFlag--;
if(MenuFlag==0)
{
ShowFlag=1; //当为第一种自主模式时进行一般显示
}
if(MenuFlag==1)
{
ShowFlag=2;
}
if(MenuFlag==2)
{
ShowFlag=2;
}
}
void KeyDatafun_6(void)//键码为6的响应函数
{
MenuFlag++;
if(MenuFlag>=3)
{
MenuFlag=0;
}
if(MenuFlag==0)
{
ShowFlag=1; //当为第一种自主模式时进行一般显示
}
if(MenuFlag==1)
{
ShowFlag=2;
}
if(MenuFlag==2)
{
ShowFlag=2;
}
}
void KeyDatafun_2(void)//键码为8的响应函数
{
AutoFlag=1-AutoFlag;//为自动运行控制系统 1为启动自动控制 0为不启动自动控制
if(AutoFlag==1)
{
}
else
{
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
ht46ru232 程序源码
共37个文件
obj:7个
asm:7个
c:7个
5星 · 超过95%的资源 需积分: 3 21 下载量 82 浏览量
2011-07-03
13:46:53
上传
评论 1
收藏 65KB RAR 举报
温馨提示
ht46ru232 工程 C程序 有串口 Ds18b20 dht11 外部中断 定时器红外接收
资源推荐
资源详情
资源评论
收起资源包目录
Xzw_Ht232.rar (37个子文件)
Xzw_Ht232
Xzw_Ht232.CV 9KB
Main.ASM 26KB
Xzw_Ht232.pjtx 6KB
AutoTemp.ASM 7KB
Xzw_Ht232.opt 488B
ds18b20.h 2KB
AutoTemp.OBJ 2KB
UART.ASM 2KB
bta41.h 302B
ds18b20.c 6KB
Xzw_Ht232.OTP 8KB
Main.c 6KB
MainSys.ASM 21KB
uart.h 110B
Xzw_Ht232.pjt 2KB
Xzw_Ht232.bin 8KB
dht11.h 479B
UART.OBJ 688B
MainSys.h 1KB
config.h 882B
dht11.c 2KB
MainSys.OBJ 7KB
AutoTemp.h 234B
MainSys.c 5KB
Xzw_Ht232.TSK 8KB
ds18b20.ASM 16KB
Xzw_Ht232.DBG 14KB
ds18b20.OBJ 6KB
dht11.ASM 12KB
bta41.OBJ 3KB
UART.C 469B
AutoTemp.c 2KB
bta41.c 2KB
bta41.ASM 10KB
dht11.OBJ 4KB
Xzw_Ht232.DWS 8KB
Main.OBJ 8KB
共 37 条
- 1
资源评论
- liyangsheng10012014-02-22资源很丰富,程序是成功的程序,大家可以放心下载,本人已经测试过,确实可以使用,谢谢贡献!
- lianliangechen2012-05-05嗯,很不错的资源,包括很多内容,可谓是资源丰富啊~~~~~~~~~~~~~·
丁香竹叶
- 粉丝: 34
- 资源: 128
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功