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

上传人:公**** 文档编号:511009070 上传时间:2023-02-05 格式:DOC 页数:7 大小:35.50KB
返回 下载 相关 举报
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写_第1页
第1页 / 共7页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写_第2页
第2页 / 共7页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写_第3页
第3页 / 共7页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写_第4页
第4页 / 共7页
基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写》由会员分享,可在线阅读,更多相关《基于STC51单片机的以及DS18B20-恒温控制系统设计程序编写(7页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上基于STC51单片机的以及DS18B20 恒温控制系统设计软件设计:(C语言)#include#include#include 库函数#include #define uint unsigned int#define uchar unsigned charuint LED_Data1,LED_Data2,LED_Data3,LED_Data4,LED_Data5,LED_Data6,LED_Data7,LED_Data8;#define CH451_DIG0 0x0800 /数码管位0显示#define CH451_DIG1 0x0900 /#define CH451

2、_DIG2 0x0a00 /#define CH451_DIG3 0x0b00 /CH451宏定义#define CH451_DIG4 0x0c00 / #define CH451_DIG5 0x0d00 /#define CH451_DIG6 0x0e00 /#define CH451_DIG7 0x0f00 /数码管位7显示sbit DOUT=P22; /接ch451数据输出sbit LOAD=P23; /串行命令加载,上升延激活sbit DIN =P33; /串行数据输出,接CH451的数据输人位寻址寄存器定义sbit DCLK=P34; /串行数据时钟上升延激活sbit te=P16;

3、 /sbit sp=P26;/控制蜂鸣器引脚位定义sbit up=P24;sbit down=P25;int temp;int tt,tl=100,tm=300;uint f;uchar key=0; / 存放键盘中断中读取的键值uint display8=0x0a00,0x0900,0x0b00,0x0800,0x0c00,0x0d00,0x0e00,0x0f00;uchar BCD10=0xbe,0x24,0xea,0xe6,0x74,0xd6,0xde,0xa4,0xfe,0xf6; void delay(uint i) 延时程序while(-i);void speaker(void)u

4、int i,j;for(j=0;j250;j+)for(i=0;i2000;i+) sp=0;蜂鸣器发生程序for(i=0;i0;i-) te=0; _nop_(); _nop_(); 读取字节程序 dat=1; te=1; delay(1); if(te) dat|=0x80; delay(60); return (dat);void Write_One_Byte(uchar dat) uchar i=0;for(i=8;i0;i-)te=0; _nop_(); _nop_(); 写字节程序 te=dat&0x01; delay(60); te=1; dat=1; delay(1);uint

5、 Get_Tmp() /获取温度float t;uchar a=11,b=0;Init_Ds18b20(); /初始化Write_One_Byte(0xcc); /忽略ROM指令Write_One_Byte(0x44); /温度转换指令Init_Ds18b20(); /初始化Write_One_Byte(0xcc); /忽略ROM指令Write_One_Byte(0xbe); /读读RAM的存储器指令a=Read_One_Byte(); /读取到的第一个字节为温度LSB b=Read_One_Byte(); /读取到的第二个字节为温度MSBtemp=b; /先把高八位有效数据赋于temptem

6、p0x800)f=1;temp=(temp)+1;t=temp*0.0625;temp=t*10-0.5;得到真实十进制温度值elsef=0;t=temp*0.0625; temp=t*10+0.5;return(temp);void CH451_Init() / 初始化 DIN=0; DIN=1;void CH451_Write(uint dat) uint i;TR1=0; LOAD=1; for(i=12;i0;i-) 向CH451写命令(送数据) DCLK=0; if(dat&0x01)=0x01) DIN=1; else DIN=0; DCLK=1; dat=dat1; LOAD=0

7、; LOAD=1;TR1=1;void getkey() uchar i; uchar command,keycode; command=0x07; LOAD=0; for(i=0;i=1; DCLK=1; LOAD=1; keycode=0; for(i=0;i7;i+) keycodetm|tttm|tttm)down=0;else if(tttl)up=0; 温度低于规定温度启动加热装置,温度达标后关闭加热装置else up=1;down=1;tempdis(tt);getkey();switch(key)case 0x40:while(key!=0x43&key!=0x48&key!=0x4b&key!=0x4a&key!=0x49)getkey();tempdis(tl);if(key=0x41)delay();if(key=0x41)tl=tl-10;delay(); 键盘扫描判断,上下限温度调节e

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号