KeilC实现-Protues-基于51单片机的恒温管理器系统

恒温管理

基于51单片机的恒温管理器系统protues+keilc

导读 :目前正在解读《基于51单片机的恒温管理器系统protues+keilc》的关系消息,《基于51单片机的恒温管理器系统protues+keilc》是由用户自行颁布的常识型内容!上方请观看由(电工学习网-www.9pbb.com)用户颁布《基于51单片机的恒温管理器系统protues+keilc》的详细说明。

文章目录

恒温管理器系统概述

该恒温管理器系统蕴含以下几个配置:

仿真软件

系统设计

电路设计

恒温管理系对抗共有6个模块,区分是主控芯片模块、按键输入模块、设定温度显示模块、以后温度显示模块、温度采集模块和升温、降温模块。

软件代码编写

程序的详细流程如下:

while(ok)//用户设定温度{while(key1==15){key1=keyscan();delay(50);}while(key2==15){key2=keyscan();delay(50);}delay(100);//期待确认键}//键盘扫描ucharkeyscan(){uchartemp,key;key=15;//自动值,假设没有按键按下key就为该自动值P1=0xfe;//扫描第一行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(10);//延时消抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp)//扫描列{case0xee:key=1;break;case0xde:key=2;break;case0xbe:key=3;break;}while(temp!=0xf0)//期待按键监禁{temp=P1;temp=temp&0xf0;}}}P1=0xfd;//扫描第二行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(10);//延时消抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp)//扫描列{case0xed:key=4;break;case0xdd:key=5;break;case0xbd:key=6;break;}while(temp!=0xf0)//期待按键监禁{temp=P1;temp=temp&0xf0;}}}P1=0xfb;//扫描第三行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(10);//延时消抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp)//扫描列{case0xeb:key=7;break;case0xdb:key=8;break;case0xbb:key=9;break;}while(temp!=0xf0)//期待按键监禁{temp=P1;temp=temp&0xf0;}}}P1=0xf7;//扫描第四行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(10);//延时消抖temp=P1;temp=temp&0xf0;if(temp!=0xf0){temp=P1;switch(temp)//扫描列{case0xe7:key=0;break;case0xd7:key=0;break;case0xb7:key=0;break;}while(temp!=0xf0)//期待按键监禁{temp=P1;temp=temp&0xf0;}}}returnkey;}
for(i=20;i>0;i--)dis_set(key1,key2);//显示用户设定的温度//显示设定温度函数voiddis_set(uchark1,uchark2){display2(1,k1);display2(2,k2);display2(0,k1);}//设定温度数据显示函数voiddisplay2(ucharnum,uchartem_data){if(num==0){S1=1;S2=1;delay(5);}if(num==1){S1=0;S2=1;P3=table[tem_data];//table为0-9的16进制编码表delay(5);}elseif(num==2){S1=1;S2=0;P3=table[tem_data];delay(5);}}

而后再从温度传感器失掉以后温度,失掉以后温度的流程如下图所示,先调用DSreset()函数启动温度传感器的初始化,再调用temwrite()函数,对传感器写入温度转换的指令,启动温度失掉和转换,而后调用get_tem()函数对传感器写入读取寄存器指令,从寄存器中读取存储的温度数据,并对该数据启动精度转换解决,最后取得一个保管了1位小数的以后温度数据;

temchange();//失掉以后温度//温度失掉和转换函数voidtemchange(void){DSreset();delay(1);temwrite(0xcc);//写跳过ROM指令temwrite(0x44);//写温度转换指令}//读取寄存器中存储的温度数据uintget_tem(void){ucharl8,h8;DSreset();delay(1);temwrite(0xcc);//写跳过ROM指令temwrite(0xbe);//写读寄存器指令l8=temread();//读低8位数据h8=temread();//读高8位数据tem=h8;tem=tem<<8;tem=tem|l8;//分解一个16位数据f_tem=tem*0.0625;tem=f_tem*10+0.5;//*10用于保管1位小数点,+0.5用于四舍五入return(tem);}

初始化

//温度传感器初始化uintDSreset(void){uinti;DS=0;i=73;while(i>0)i--;DS=1;i=0;while(DS){//期待DS18B20拉低总线delay(1);i++;if(i>10){return0;//初始化失败}}DS=1;return1;//初始化完成}

读1位数据

//读1位数据bittemreadbit(void){uinti;bittem_bitdata;DS=0;i++;//延时DS=1;i++;i++;tem_bitdata=DS;i=10;while(i>0)i--;return(tem_bitdata);}

读1字节数据

//读1字节数据uchartemread(void){uinti;ucharj,tem_data;for(i=1;i<=8;i++){j=temreadbit();tem_data=(j<<7)|(tem_data>>1);//移位,让最低位在最前面}return(tem_data);}

写1字节数据

//写1字节数据voidtemwrite(uchartem_data){uinti;ucharj;bitsend_bitdata;for(j=1;j<=8;j++){send_bitdata=tem_data&0x01;//取要发送数据的最低位tem_data=tem_data>>1;//右移一位if(send_bitdata)//写1{DS=0;i++;i++;DS=1;i=10;while(i>0)i--;}else//写0{DS=0;i=10;while(i>0)i--;DS=1;i++;i++;}}}
for(i=20;i>0;i--)//显示以后温度dis_tem(get_tem());//显示以后温度函数voiddis_tem(uintt){uchari;i=t/100;//取温度的十位display1(1,i);i=t%100/10;//取温度的个位display1(2,i+10);i=t%10;//取温度的小数点后一位display1(3,i);}//以后温度数据显示函数voiddisplay1(ucharnum,uchartem_data){WE=1;//选位,低电平有效P0=~((0x01)<<(num));WE=0;DU=1;//选段,高电平有效P0=table[tem_data];DU=0;delay(10);}
voiddeal(uintt,uintt_set){uchari;if(tt_set){work(15,0x40);//降温}else{i=15;while(i--){dis_tem(tem_set);dis_set(key1,key2);}}}//升温、降温模块voidwork(uints,ucharled){uchari;if(led==0x20){i=s;led0=~(led0);//灯亮tem=tem+5;while(i--){dis_tem(tem);dis_set(key1,key2);}led0=~(led0);//灯灭i=s;while(i--){dis_tem(tem);dis_set(key1,key2);}}else{i=s;led1=~(led1);//灯亮tem=tem-5;while(i--){dis_tem(tem);dis_set(key1,key2);}led1=~(led1);//灯灭i=s;while(i--){dis_tem(tem);dis_set(key1,key2);}}}

代码下载 51单片机恒温管理系统C言语程序代码

提示:《基于51单片机的恒温管理器系统protues+keilc》最后刷新期间2023-07-1003:57:37,本站为公益型团体网站,仅供团体学习和记载消息,不启动任何商业性质的盈利。假设内容、图片资源失效或内容触及侵权,请反应至,咱们会及时解决。本站只保障内容的可读性,不可保障实在性,《基于51单片机的恒温管理器系统protues+keilc》该内容的实在性请自行甄别。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论