基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc

基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc

ID:54914942

大小:36.00 KB

页数:7页

时间:2020-04-23

基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc_第1页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc_第2页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc_第3页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc_第4页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc_第5页
资源描述:

《基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于STC51单片机的以及DS18B20恒温控制系统设计软件设计:(C语言)#include#include#include库函数#include#defineuintunsignedint#defineucharunsignedcharuintLED_Data1,LED_Data2,LED_Data3,LED_Data4,LED_Data5,LED_Data6,LED_Data7,LED_Data8;#defineCH451_DIG00x0800//数码管位0显示#defineCH451_DIG10x090

2、0//#defineCH451_DIG20x0a00//#defineCH451_DIG30x0b00//CH451宏定义#defineCH451_DIG40x0c00//#defineCH451_DIG50x0d00//#defineCH451_DIG60x0e00//#defineCH451_DIG70x0f00//数码管位7显示sbitDOUT=P2^2;//接ch451数据输出sbitLOAD=P2^3;//串行命令加载,上升延激活sbitDIN=P3^3;//串行数据输出,接CH451的数据输人位寻址寄存器定义sbitDCLK=P3^4;//串行数据时钟上升延激活sbit

3、te=P1^6;//sbitsp=P2^6;//控制蜂鸣器引脚位定义sbitup=P2^4;sbitdown=P2^5;inttemp;inttt,tl=100,tm=300;uintf;ucharkey=0;//存放键盘中断中读取的键值uintdisplay[8]={0x0a00,0x0900,0x0b00,0x0800,0x0c00,0x0d00,0x0e00,0x0f00};ucharBCD[10]={0xbe,0x24,0xea,0xe6,0x74,0xd6,0xde,0xa4,0xfe,0xf6};voiddelay(uinti){延时程序7while(--i);}voi

4、dspeaker(void){uinti,j;for(j=0;j<250;j++)for(i=0;i<2000;i++){sp=0;}蜂鸣器发生程序for(i=0;i<3000;i++){sp=1;}sp=1;//防止结束时候是低电平}voidInit_Ds18b20(void)//DS18B20初始化{te=0;//单片机拉低总线delay(500);te=1;//释放总线,即拉高了总线delay(200);}ucharRead_One_Byte(){uchari=0;uchardat=0;for(i=8;i>0;i--){te=0;_nop_();_nop_();读取字节程序d

5、at>>=1;te=1;delay(1);if(te){dat

6、=0x80;}delay(60);}return(dat);}7voidWrite_One_Byte(uchardat){uchari=0;for(i=8;i>0;i--){te=0;_nop_();_nop_();写字节程序te=dat&0x01;delay(60);te=1;dat>>=1;delay(1);}}uintGet_Tmp()//获取温度{floatt;uchara=11,b=0;Init_Ds18b20();//初始化Write_One_Byte(0xcc);//忽略ROM指令Write_One_By

7、te(0x44);//温度转换指令Init_Ds18b20();//初始化Write_One_Byte(0xcc);//忽略ROM指令Write_One_Byte(0xbe);//读读RAM的存储器指令a=Read_One_Byte();//读取到的第一个字节为温度LSBb=Read_One_Byte();//读取到的第二个字节为温度MSBtemp=b;//先把高八位有效数据赋于temptemp<<=8;//把以上8位数据从temp低八位移到高八位temp=temp

8、a;//两字节合成一个整型变量if(temp>0x800){f=1;temp=~(temp)+1;t=temp*0.

9、0625;temp=t*10-0.5;}得到真实十进制温度值else{f=0;t=temp*0.0625;temp=t*10+0.5;}return(temp);}7voidCH451_Init()//初始化{DIN=0;DIN=1;}voidCH451_Write(uintdat){uinti;TR1=0;LOAD=1;for(i=12;i>0;i--)向CH451写命令(送数据){DCLK=0;if((dat&0x01)==0x01)DIN=1;elseDIN=0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。