单片机的智能温控风扇的设计(6)
}
return value; }
/*************读取温度的值 读出来的是小数***************/ uint read_temp() {
uint value; uchar low;
//在读取温度的时候如果中断的太频繁了,就应该把中断给 //返回数据
关了,否则会影响到18b20的时序 init_18b20(); EA = 0;
write_18b20(0xcc); write_18b20(0x44); EA = 1;
delay_uint(50);
init_18b20(); EA = 0;
write_18b20(0xcc); write_18b20(0xbe);
low = read_18b20(); //读温度低字节 value = read_18b20(); //读温度高字节 EA = 1; value <<= 8;
//把温度的高位左移8位
//跳过64位ROM //发出读取暂存器命令 //初始化18b20
//500us //跳过64位ROM //启动一次温度转换命令 //初始化18b20
26
value |= low;
//把读出的温度低位放到value的低八位中
value *= 0.625; //转换到温度值 小数 return value; }
/*************定时器0初始化程序***************/ void time_init() {
EA = 1; //开总中断
TMOD = 0X11; //定时器0、定时器1工作方式1 ET0 = 1; TR0 = 1;
ET1 = 1; TR1 = 0; }
/********************独立按键程序*****************/ uchar key_can; //按键值
void key() //独立按键程序 {
static uchar key_new;
key_can = 20; //按键值还原 P2 |= 0x07;
if((P2 & 0x07) != 0x07) {
//按键按下
//开定时器0中断 //允许定时器0定时 //开定时器0中断 //允许定时器0定时
//返回读出的温度 带小数
27
} else {
if(key_new == 0) {
key_new = 1; write_eeprom(); flag_lj_en = 0;
//保存数据 //关闭连加使能
if(key_500ms == 1) { }
delay_1ms(1); //按键消抖动
if(((P2 & 0x07) != 0x07) && (key_new == 1)) {
//确认是按键按下
key_500ms = 0; key_new = 1;
//连加
key_new = 0; switch(P2 & 0x07) { }
flag_lj_en = 1; //连加使能
case 0x06: key_can = 3; break; //得到k2键值 case 0x05: key_can = 2; break; //得到k3键值 case 0x03: key_can = 1; break; //得到k4键值
}
flag_lj_3_en = 0; //关闭3秒后使能 key_value = 0;
//清零
28
}
key_time = 0; key_500ms = 0;
} }
/****************按键处理数码管显示函数***************/ void key_with() {
if(key_can == 1) //设置键 { }
if(menu_1 == 1) {
smg_i = 4;
//数码管显示4位
//设置高温报警
f_pwm_l = 30; menu_1 ++; if(menu_1 >= 3) { }
menu_1 = 0; smg_i = 3;
//数码管显示3位
if(key_can == 2) {
if(flag_lj_3_en == 0)
t_high ++ ;
//按键按下未松开自动加三次
else
29
}
if(key_can == 3) { }
dis_smg[0] = smg_du[t_high % 10]; //取小数显示 dis_smg[1] = smg_du[t_high / 10 % 10] & 0xdf; //取个位显示 dis_smg[2] = smg_du[t_high / 100 % 10] ; //取十位显示 dis_smg[3] = 0x64;
//H
if(flag_lj_3_en == 0)
t_high -- ;
//按键按下未松开自动减三次
t_high += 10; //按键按下未松开自动加三次之后每次自动加10
if(t_high > 990)
t_high = 990;
else
t_high -= 10; //按键按下未松开自动减三次之后每次自动减10
if(t_high <= t_low)
t_high = t_low + 1;
}
if(menu_1 == 2) {
smg_i = 4;
//数码管显示4位
//设置低温报警
if(key_can == 2) {
if(flag_lj_3_en == 0)
t_low ++ ;
//按键按下未松开自动加三次
else
t_low += 10;
//按键按下未松开自动加三次之后每次自动加10
30
…… 此处隐藏:108字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




