基于单片机的数字温度计设计

基于单片机的数字温度计设计

ID:14617216

大小:1.40 MB

页数:11页

时间:2018-07-29

基于单片机的数字温度计设计_第1页
基于单片机的数字温度计设计_第2页
基于单片机的数字温度计设计_第3页
基于单片机的数字温度计设计_第4页
基于单片机的数字温度计设计_第5页
资源描述:

《基于单片机的数字温度计设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机课程设计报告基于单片机的数字温度计设计学院:______________专业班级:______________姓名:______________学号:______________指导教师:______________2011年12月14日一、设计要求:基于51单片机的体温计内容:利用18B20测人体温度,显示在LED数码管3位,含小数点:例如37.1。当温度超过40度会自动报警提示注意。方法:18B20装在密封金属圆柱外壳内,里面填充导热硅胶。单片机测量温度连续3次不变,才显示温度。在升温过程中,显示走马灯,即第一秒十位显示“一”,第二秒各位显示“一”,第三秒小数点后一位

2、显示“一”,如此周而复始。二、方案设计1、硬件1)总体设计2)主要功能设计采用AT89C51单片机P2.0口控制温度传感器DS18B20的温度测量,以四位数码感形式输出测量温度,如图:温度传感器工作原理DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。16位数字摆放是从低位到高位,引脚图:3)主控制器设计AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgramma

3、bleandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。如图:4)显示电路数码管如图:温度读取如图:注:图中的

4、三极管,后来由于线路板空间有限改成了上拉电阻。5)报警电路如图:注:图中的二极管,后来由于线路板空间有限去掉了。2、软件编程程序:#include"reg52.h"#include"ds18b20.h"#defineC_Temp25//报警温度定义#defineD_PortP0sbitBUZZ=P1^0;sbitSeg1=P2^2;sbitSeg2=P2^3;sbitSeg3=P2^4;sbitSeg4=P2^5;uintT,Tem1,Tem2,temp;//用于计算的温度,前一次温度,当前温度ucharcount;//1秒计数标志ucharc1,c2;//扫描计数bitFla

5、g;//1秒标志ucharSheet[3]={0,0,0};//十位个位十分位显示的数字值,未解码ucharcodeDcode1[12]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x63,0xFD};//不带DP的段码0~9,c,-.ucharcodeDcode2[11]={0x02,0x9E,0x24,0x0C,0x99,0x48,0x40,0x1E,0x00,0x08,0xff};//带DP的段码0~9voidTimer0_Init()//定时器初始化{TMOD=0x01;//选择定时器0方式1TH0=(256*

6、256-10000)/256;//10msTL0=(256*256-10000)%256;EA=1;//开总中断ET0=1;//开定时器中断允许TR0=1;//启动定时器0}voidmain(){Timer0_Init();//定时器0初始化Tem1=Read_Temperature();//读温度Tem2=Tem1;while(1){temp=Tem2;Tem2=Read_Temperature();Tem1=temp;if((Tem2/10)>=C_Temp)//大于等于40度报警{BUZZ=~BUZZ;}else{BUZZ=1;}T=Tem2;EA=0;//关中断,防止重

7、入性发生,这会导致定时有点不准Sheet[0]=T/100;//10位温度T=T%100;Sheet[1]=T/10;//个位温度Sheet[2]=T%10;//十分位温度EA=1;//开中断}}voidTimer0()interrupt1//如果温度不相等,则以“-”秒移动{TH0=(256*256-5000)/256;TL0=(256*256-5000)%256;if(++count==200)//5ms中断计数,满1秒置标志位,计数清0{count=0;Flag=1;}if((Tem1

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

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

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