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

上传人:b****5 文档编号:7121251 上传时间:2023-01-20 格式:DOCX 页数:16 大小:1.23MB
下载 相关 举报
基于单片机的数字温度计设计.docx_第1页
第1页 / 共16页
基于单片机的数字温度计设计.docx_第2页
第2页 / 共16页
基于单片机的数字温度计设计.docx_第3页
第3页 / 共16页
基于单片机的数字温度计设计.docx_第4页
第4页 / 共16页
基于单片机的数字温度计设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

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

《基于单片机的数字温度计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计设计.docx(16页珍藏版)》请在冰豆网上搜索。

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

基于单片机的数字温度计设计基于单片机的数字温度计设计河南机电高等专科学校单片机原理及应用课题名称:

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

班级:

学号:

姓名:

成绩:

年月日设计任务书一、设计任务随着现代信息技术的飞速发展和传统工业改造的逐步实现能够独立工作的温度检测和显示系统应用于诸多领域。

传统的温度检测仪器性能差,已难以满足人们的需求。

这里设计一款读数方便,测温范围广,测温精确,数字显示,适用范围宽的数字温度计。

使温度计的物理化学性能稳定,线性度较好,能直接采用测温器件测量温度,从而简化数据传输与处理过程。

二、设计方案及工作原理选用AT89S52型单片机作为主控制器件,DSl8B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。

通过DSl8B20直接读取被测温度值,进行数据转换。

设计原理框图如,图1。

图1目录第一章系统设计要求和解决方案第二章硬件系统第三章软件系统第四章实现的功能第五章心得体会附录一参考文献附录二程序源代码附录三系统原理图第一章系统设计要求和解决方案设计的数字温度计要求如下1)基本范围-501102)精度误差小于0.53)LED数码直读显示4)可以设定温度的上下限报警功能5操作简单性能可靠用AT89S52型单片机,DSl8B20测温传感器和4位共阳极LED数码管串口,并通过DSl8B20直接读取被测温度值组成一个智能测温系统实现以上功能!

第二章硬件系统设计1.单片机的选择AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

AT89S52主要性能:

1、与MCS-51单片机产品兼容;2、8K字节在系统可编程Flash存储器;3、1000次擦写周期;4、全静态操作:

0Hz-33MHz;5、三级加密程序存储器;6、32个可编程I/O口线;7、三个16位定时器/计数器;8、六个中断源;9、全双工UART串行通道;10、低功耗空闲和掉电模式;11、掉电后中断可唤醒;12、看门狗定时器;13、双数据指针;14、掉电标识符。

2.温度传感器介绍DS18B20可以程序设定912位的分辨率,精度为0.5C。

可选更小的封装方式,更宽的电压适用范围。

分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。

图3温度传感器引脚功能说明:

NC:

空引脚,悬空不使用;VDD:

可选电源脚,电源电压范围35.5V。

当工作于寄生电源时,此引脚必须接地。

DQ:

数据输入/输出脚。

漏极开路,常态下高电平。

GND:

为电源地DS18B20内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。

64位光刻ROM的排列是:

开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:

用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。

第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。

第六、七、八个字节用于内部计算。

第九个字节是冗余检验字节。

该字节各位的意义如下:

TMR1R011111低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如表1所示:

(DS18B20出厂时被设置为12位)根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

3.温度传感器与单片机的连接DS18B20采用外部电源供电方式,在外部电源供电方式下,DS18B20工作电源由VCC引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。

注意:

在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。

图4DS18B20接线4.复位信号及外部复位电路该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。

若使用频率为12MHz的晶体振荡器,则复位信号持续时间应超过2s才完成复位操作。

图5复位电路5.单片机与报警电路报警电路分为两部分,一部分是蜂鸣器声音报警,另一部分是发光二极管放光报警。

具体情况如下:

接通电源,两个(红色,黄色)发光二极管都不亮,当温度超过上线设定值(如38摄氏度)时,红色二极管亮,同时蜂鸣器也报警;当温度低于下限设定值时(如5摄氏度)时,黄色二极管亮,同时蜂鸣器也开始报警。

6.显示电路采用技术成熟的5461AS共阴4位数码管0.56英寸红色。

LED显示分为静态显示和动态显示。

这里采用静态显示,系统通过单片机的串行口来实现静态显示。

串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。

当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。

在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。

图8为显示电路的连接图。

图8数码显示连接图第三章软件系统设计DSl8820的主要数据元件有:

64位激光LaseredROM,温度灵敏元件和非易失性温度告警触发器TH和TL。

DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。

此外,还可外接5V电源,给DSl8820供电。

DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。

图9为读取数据流程图。

图9读取数据的流程图读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。

所以先将数据提取出来,分为三个部分:

小数部分、整数部分和符号部分。

小数部分进行四舍五入处理:

大于0.5的话,向个位进1;小于0.5的时候,舍去不要。

当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。

还因为DS18B20最低温度只能为-55,所以可开始DS18B20的初始化启动温度转换读取温度寄存器跳过读序列号的操作跳过读序列号的操作DS18B20的初始化RETLOW低八位HIGH高八位以将整数部分的最高位换成一个“-”,表示为负数。

图10为温度数据处理程序的流程图。

图10度数据处理流程图第四章实现的功能可以让人们直观的了解自己想知道的温度到底是多少度,准确、快捷。

数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。

这样就完成了数字温度计的基本测温功能。

数字温度计根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,人们可以根据实际情况选择符合规格的数字温度计。

第五章心得体会作为一名机电工程专业的学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。

在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:

proteus仿真、C语言、模拟和数字电路知识等。

虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。

在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。

附录1参考文献1单片机原理及应用技术.余发山,王福忠徐州中国矿业大学出版社2微型计算机控制技术王新中国电力出版社3模拟电子技术艾永乐中国电力出版社附录2程序源代码程序名称:

DS18B20温度测量、报警系统简要说明:

DS18B20温度计,温度测量范围099.9摄氏度可设置上限报警温度、下限报警温度即高于上限值或者低于下限值时蜂鸣器报警默认上限报警温度为38、默认下限报警温度为5报警值可设置范围:

最低上限报警值等于当前下限报警值最高下限报警值等于当前上限报警值将下限报警值调为0时为关闭下限报警功能*/#include#includeDS18B20.h#defineuintunsignedint#defineucharunsignedchar/宏定义#defineSETP3_1/定义调整键#defineDECP3_2/定义减少键#defineADDP3_3/定义增加键#defineBEEPP3_7/定义蜂鸣器bitshanshuo_st;/闪烁间隔标志bitbeep_st;/蜂鸣器间隔标志sbitDIAN=P07;/小数点ucharx=0;/计数器signedcharm;/温度值全局变量ucharn;/温度值全局变量ucharset_st=0;/状态标志signedcharshangxian=38;/上限报警温度,默认值为38signedcharxiaxian=5;/下限报警温度,默认值为5ucharcodeLEDData=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00;unsignedintReadTemperature(void);/*延时子程序*/voidDelay(uintnum)while(-num);/*初始化定时器0*/voidInitTimer(void)TMOD=0x1;TH0=0x3c;TL0=0xb0;/50ms(晶振12M)/*定时器0中断服务程序*/voidtimer0(void)interrupt1using0TH0=0x3c;TL0=0xb0;x+;/*外部中断0服务程序*/voidint0(void)interrupt0using1EX0=0;/关外部中断0if(DEC=0&set_st=1)shangxian-;if(shangxianxiaxian)shangxian=xiaxian;elseif(DEC=0&set_st=2)xiaxian-;if(xiaxian99)shangxian=99;elseif(ADD=0&set_st=2)xiaxian+;if(xiaxianshangxian)xiaxian=shangxian;/*读取温度*/voidcheck_wendu(void)uinta,b,c;c=ReadTemperature()-5;/获取温度值并减去DS18B20的温漂误差a=c/100;/计算得到十位数字b=c/10-a*10;/计算得到个位数字m=c/10;/计算得到整数位n=c-a*100-b*10;/计算得到小数位if(m99)m=99;n=9;/设置温度显示上限/*显示开机初始化等待画面*/Disp_init()P0=0x40;/显示P2=0xf7;Delay(200);P2=0xfb;Delay(200);P2=0xfd;Delay(200);P2=0xfe;Delay(200);P2=0xff;/关闭显示/*显示温度子程序*/Disp_Temperature()/显示温度P2=0xf7;P0=0x39;/显示CDelay(300);P2=0xfb;P0=LEDDatan;/显示个位Delay(300);P2=0xfd;P0=LEDDatam%10;/显示十位DIAN=1;/显示小数点Delay(300);P2=0xfe;P0=LEDDatam/10;/显示百位Delay(300);P2=0xff;/关闭显示/*显示报警温度子程序*/Disp_alarm(ucharbaojing)P2=0xf7;P0=0x39;/显示CDelay(200);P2=0xfb;P0=LEDDatabaojing%10;/显示十位Delay(200);P2=0xfd;P0=LEDDatabaojing/10;/显示百位Delay(200);P2=0xfe;if(set_st=1)P0=0x76;elseif(set_st=2)P0=0x38;/上限H、下限L标示Delay(200);P2=0xff;/关闭显示/*报警子程序*/voidAlarm()unsignedinti;for(i=0;i200;i+)/喇叭发声的时间循环,改变大小可以改变发声时间长短Delay(80);/参数决定发声的频率,估算值BEEP=!

BEEP;BEEP=1;/喇叭停止工作,间歇的时间,可更改Delay(20000);/*主函数*/voidmain(void)-uintz;InitTimer();/初始化定时器EA=1;/全局中断开关TR0=1;ET0=1;/开启定时器0IT0=1;IT1=1;check_wendu();check_wendu();for(z=0;z2)set_st=0;if(set_st=0)EX0=0;/关闭外部中断0EX1=0;/关闭外部中断1check_wendu();Disp_Temperature();if(m=shangxian)-P1_0=0;elseP1_0=1;if(m=shangxian)|(m=10)shanshuo_st=shanshuo_st;x=0;if(shanshuo_st)Disp_alarm(shangxian);elseif(set_st=2)BEEP=1;/关闭蜂鸣器EX0=1;/开启外部中断0EX1=1;/开启外部中断1if(x=10)shanshuo_st=shanshuo_st;x=0;if(shanshuo_st)Disp_alarm(xiaxian);/*END*附录3系统原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1