教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

单片机的智能温控风扇的设计(6)

来源:网络收集 时间:2026-09-04
导读: } return value; } /*************读取温度的值 读出来的是小数***************/ uint read_temp() { uint value; uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给 //返回数据 关了,否则会影响

}

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机的智能温控风扇的设计(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/436025.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)