基于单片机的数字温度计(共20页)

上传人:hknru****knru 文档编号:54653213 上传时间:2022-02-15 格式:DOC 页数:20 大小:164.50KB
收藏 版权申诉 举报 下载
基于单片机的数字温度计(共20页)_第1页
第1页 / 共20页
基于单片机的数字温度计(共20页)_第2页
第2页 / 共20页
基于单片机的数字温度计(共20页)_第3页
第3页 / 共20页
资源描述:

《基于单片机的数字温度计(共20页)》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计(共20页)(20页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上 单片机课程设计课设题目:数字显示温度计学 院:电气与控制工程学院专业班级:自动化1105班设 计 者:何瑢()、蔡驰()、刘阿敏()设计时间:17周18周指导老师:杨良煜 刘晓荣专心-专注-专业目录第一部分:整体方案1.1摘要11.2设计任务及要求1 1.2.1基本功能 1.2.2扩展功能1.3方案辩证1 1.3.1温度传感器的选取 1.3.2显示模块的选择第二部分:方案设计框图2.1硬件电路框图22.2主控电路32.3显示电路32.4报警温度调节电路42.5温度传感器及 DS18B20测温原理4第三部分:系统软件算法设计3.1主程序53.2读出温度子程序53.3温

2、度转换命令子程序 63.4 计算温度子程序6 3.5 显示数据刷新子程序63.6 1602的液晶显示 6第四部分:软件仿真图7第五部分:参考文献8第六部分:设计心得体会8第七部分:附录附录一:系统总体原理图9附录二:系统程序清单10附录三:元件清单18题目:数字显示温度计1、摘要: 本文介绍一种基STC89C52单片机的一种温度测量及报警电路,以DS18B20数字温度传感器为信号源来实现数字钟温度的显示,测量范围是:-20100,使用1602液晶显示屏显示,能设置温度报警上下限。一般而言数字温度计的设计与制作可以采用数字电路来完成,也可以采用单片机来完成,若采用数字电路来完成,则设计的电路图太

3、复杂,其功能也主要是依赖于数字电路的各功能模块的组合来实现,而且电路板的制作比较复杂,采用单片机来设计制作,由于其功能的实现主要是通过软件编程来完成,这样大大降低了电路的复杂性,而且成本也较便宜。关键字:温度测量 温度传感器DS18B20Abstract:This paper introduces a kind of a kind of base AT89S52 single chip microcomputer temperature measurement and alarm circuit, carrying out the manifestation of the digital th

4、ermometer,its Measuring range is: - 20 100 ,which use 1602 LCD screen display and can set the lower limit temperature alarm. Generally speaking the design and manufactures of the digital thermometer can adopt the numerical electric circuit to complete, can also adopt a machine to complete.If adopt t

5、he numerical electric circuit to complete, then the electric circuit diagram of design is too complicated, its function also mainly is depend on in the numerical electric circuit of the combination of each function mold piece to carry out, and the creation of the circuit board is more complicated.Ad

6、opt a machine to design the creation, because of the realization of its function mainly is to pass the software plait distance to complete, thus lowered the complexity of the electric circuit consumedly, and the cost also compares the cheapness.Keywords:STC89C52,,DS18B20,16022.1设计任务及要求: 基本功能: 1)温度测量

7、范围:-20100,测量误差小于0.5 2)1602LCD液晶显示屏直接显示 扩展功能: 1)可以任意设定上下限报警温度 2)温度显示有华氏度和摄氏度两种,由按键控制2.2方案辩证 2.2.1 温度传感器的选取: (1)方案一:采用热敏电阻传感器。利用热敏电阻随温度变化而显著变化,能直接将温度的变化转换为能量的变化,进而制成温度计。但是其测温传感器比较复杂,而且不易通过编制程序来控制测温精度,增大系统设计的难度。 (2)方案二:采用DS18B20温度传感器。DS18B20的内部3脚(或8脚)封装;使用特有的温度测量技术,将被测温度转换成数值信号;3.05.5V的电源供电方式和寄生电源供电方式;

8、ROM由64位二进制数字组成,共分为8个字节;RAM由9个字节的高速暂存器和非易失性电擦写ROM组成。综上所述:温度传感器选取智能测温器件DS18B20。2.2.2显示模块的选择 显示电路采用LCD液晶显示,从P3口RXD,TXD串口输出段码。显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少.本设计显示电路采用1602液晶显示模块芯片。 用LED数码管来显示。显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。 综上各方案所述,对此次课设的方案选定: 采用STC89C52作为主控制系统; 1602液晶显示模块芯片作为温度数据显示装置;而智能温度传感器DS18

9、B20器件作为测温电路主要组成部分。至此,系统最终方案确定。2、 设计方案的总体设计框图 温度计电路设计总体设计方框图如图所示,控制器采用单片机STC89C52,温度传感器采用DS18B20,用1602液晶显示屏以串口传送数据实现温度显示。2.1硬件电路框图: 单片机芯片STC89C52复位电路晶振控制1602 显示器温度检测电路报警温度调整蜂鸣器,指示灯 图1总体设计方框图 系统由单片机最小系统、显示电路、按键、温度传感器等组成。本电路是由STC89C52单片机为控制核心,具有与MCS-51系列单片机完全兼容,程序加密等功能,带2KB字节可编程闪存,工作电压范围为2.76V,全静态工作频率为

10、024MHZ;显示电路由1602液晶显示模块芯片,可以进行多行显示;温度报警按键设为五个,可以显示华氏温度,调节高低报警温度;温度传感器电路主要由DS18B20测温器件构成,该器件主要功能有:采用单总线技术;每只DS18B20具有一个独立的不可修改的64位序列号;低压供电,电源范围为35V;测温范围为-20+125,误差为0.5;复位电路是10K电阻构成的上电自动复位。2.2主控电路单片机AT89C51 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用12MHZ。复位电路采用上电加自动复位。图二主控芯片S

11、TC89C52 图三晶振电路 图四复位电路2.3显示电路 本设计显示电路采用1602液晶显示模块芯片,该芯片可现实16x2个字符,比以前的七段数码管LED显示器在显示字符的数量上要多得多。1602A芯片的接口信号说明如下表:图五液晶显示电路2.4报警温度调节电路本系统一共设置了五个按键,k1键只是显示华氏温度,k4键按下不松开显示高低报警温度,松开后恢复显示正常温度,k2键和k3键是分别用来调节高低报警温度,k键控制调节时的上调或下调。具体调节如将高温报警温度调高,第一步将k4键按下不松,k键升起位置,调节k2键,则高温报警温度向上增加,反之亦然。低温报警同理。K1显示华氏温度K加减控制开关K

12、4低温报警温度调节K3高温报警温度调节+=K2显示温度报警、返回 图六报警点调节电路2.5温度传感器及DS18B20测温原理 由于测温电路采用了单总线数字式可编程温度传感器,硬件实现十分简单,而且仅占用一个I/O口。节约了成本,大大简化了电路,从而使得调试容易。图七测温电路3、 系统软件算法设计 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.1主程序 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图所示。3.2读出温度子序读出温度子

13、程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图示 图八主程序流程图 图九读温度流程图 3.3温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示3.4 计算温度子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图所示。 图十温度转换流程图 图十一计算温度流程图3.5 显示数据刷新子程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据

14、进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图。3.6 1602的液晶显示 图十二显示数据刷新流程图 1602液晶显示流程图:4、软件仿真本设计是在Proteus环境下进行仿真的,仿真所用到的器件有:单片机AT89C51,DS1820温度传感器,蜂鸣器,液晶显示器,一些电阻,电容等。仿真结果如下: 显示器显示 传感器温度 高低报警温度参考文献1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982 李广弟.单片机基础M.北京:北京航空航天大学出版社,19943 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19894 廖常初.

15、现场总线概述J.电工技术,1999.5 刘军.单片机原理与接口技术M.华东理工大学出版社.2006.6 谢自美.电子线路设计、实验、测试M.武汉,华中理工大学出版社.2000.7 张元良.单片机综合设计实用教程M.北京,机械工业出版社.2013年8月.设计心得体会 经过将两周的单片机课程设计,在我们小组的共同努力下终于完成了液晶屏显示数字温度计的设计。经历了这次的课程设计,我深深地感到自己在程序应用方面的不足,程序只有在使用中才能得以练习和巩固,这一点是我在这两周里最大收获。我了解了设计电路的步骤,对于这些电路还是应该自己动手实际操作才会有深刻理解。我也了解了关于数字温度计的原理与设计理念还有

16、液晶屏的每一个接点的功能特性。 对于单片机这门课,我学的很吃力,总觉得上课讲解的相对简单,而其实课程的真正要求不仅仅是课本上的知识,在实验课编写程序的时候,就已经感到难度很大,还好和同学讨论才能够理解,汇编语言的掌握远远达不到自己编写的程度,仅仅是看懂语句的功能而已,对于语言的逻辑关系感到很吃力,不容易理解。 实践出真知,从这次的课程设计中,我真真正正的意识到,在以后的学习中,要多多练习和实践,才能把抽象的理论变为自己的知识,才能得以运用。 何瑢 在实训中,我们认识了很多器件,了解了它们的性能,使用方法及作用。它们为我们的生活带来了很多的便捷。通过实训,同学们的友谊也增进了不少,很多不太会做的

17、实验在同学们的帮助下完成了。我们通过相互学习,相互沟通,一起研究,让很多的实验都做得相当的成功,心中的成就感与自豪感油然而生。班级的那种团结氛围填满了整个实训间。我们的老师,他们也顶着酷热和我们一起忙活,看着围在他身边的那一圈圈的人,他也会耐心的为我们讲解,直到我们听懂为止。在实训中到了编程时就出现了很大的障碍,先开始的显示温度还算顺利,下面的报警部分就花费了相当长的时间,不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了。其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了,对于软件我们加入了报警系统,

18、可加了之后发现程序乱了,以前的时钟也不可以控制了,经过反复研究发现接地接错了位置,导致了用来报警的红灯跟绿灯根本不亮,然后就将接地线重新焊接了一下,功夫不负有心人,灯亮了。这是我们共同努力的结果,在享受我们成果之时,我们从中学到了很多知识也让我们对数字温度计的设计有了更深一步的了解,最后我希望我们班能在以后的生活、学习中表现得更出色,更团结。老师们能够笑脸常开,万事如意。 蔡驰这次课设是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,在软、硬件设计和调试中遇到了不少的困难,在同学的帮助以及经过自己在图书馆和网上查资料才逐一克服了难题,学习到

19、了不少的专业知识。在整个设计过程之前,我已经在网上找了相关方面的资料,在图书馆也借了许多书,万事开始难,在这次课设中,我掌握了很多单片机及其接口应用的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机的最新发展技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。 脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。在此我也要感谢老师和同学的帮助,以及同组同学的合作和协助,才能顺利

20、的完成这次课设。总之,这次的课设收获很大。刘阿敏附录:附录一:系统总体原理图附录二:系统程序清单/*#include#include /shiyongyanshi#include #define uchar unsigned char#define uint unsigned intsbit DQ=P33; sbit RS =P20;sbit RW =P21;sbit EN =P22;sbit k=P10;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit led_red=P25;sbit led_blue=P26;sbit BEEP=P3

21、7;uchar bz=1;/BEEP=0;uchar ng=0; /fuhaobiaoshiwei uchar TempBuffer =TEMP: ;int temp_value; /温度值 uchar code dis_title=-current temp-; void xianshi_huashi();uchar gw=40;char dw= 10;uchar xianshi_title= TEMP ALARM ;uchar xianshi_baojing=HI: LO: ; /345 10 12/-延时- void delayxus(uint x) uchar i; while(x-)

22、 for(i=0;i200;i+); /*LCD 控制*/读lcd 状态uchar read_lcd_state() uchar state ; RS=0;RW=1;EN=1;delayxus(1);state=P0;EN=0;delayxus(1); return state; / 忙等待void lcd_busy_wait() while(read_lcd_state()&0x80)=0x80);delayxus(5);/向LCD写数据 void write_lcd_data(uchar dat) lcd_busy_wait(); RS=1;RW=0;EN=0;P0=dat;EN=1;de

23、layxus(1);EN=0; /向LCD写指令 void write_lcd_cmd(uchar cmd) lcd_busy_wait(); RS=0;RW=0;EN=0;P0=cmd;EN=1;delayxus(1);EN=0; /-/LCD初始化void init_lcd() write_lcd_cmd(0x38); delayxus(1); write_lcd_cmd(0x01) ; delayxus(1); write_lcd_cmd(0x06); delayxus(1); write_lcd_cmd(0x0C) ; delayxus(1); /- /设置液晶显示位置 void se

24、t_lcd_pos(uchar p) write_lcd_cmd(p| 0x80); /- /在LCD上显示字符串 void dis_lcd_string(uchar p,uchar *s) /位置,字符指针 uchar i; set_lcd_pos(p);for(i=0;i16;i+) /16*2 write_lcd_data(si) ; delayxus(1); /- void delay_18B20(unsigned int i)while(i-);/-蜂鸣器- void beep() uchar i; for(i=0;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ =

25、 1; / 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat=1; /*读取ds18b20当前温度*/void ReadTemp(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;Init_DS18B20();

26、WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低位 aaaaaaaaaaaaaaaaaaaab=ReadOneChar(); /读取温度值高位 bbbbbbbb

27、bb b.a temp_value= b4; void temp_to_str() /温度数据转换成液晶字符显示 if(temp_value & 0xE0)=0xE0) temp_value =temp_value +1 ; ng=1;elseng=0; if(k1=0) /while(k1=0); bz=(bz+1) %2; if(bz=0) temp_value =(int)(temp_value )*(9.0/5.0)+32; if(ng=1) TempBuffer9=temp_value/100+0; if(TempBuffer9= ) TempBuffer9=-; TempBuffe

28、r10=temp_value%100/10+0; /十位 TempBuffer11=temp_value%10+0; /个位 TempBuffer12=0xdf; /温度符号 TempBuffer13=C; TempBuffer14=0; /TempBuffer1=ng %10+ 0; if(ng=0) TempBuffer9=temp_value/100+0; if(temp_value/100=0) TempBuffer9 = ; TempBuffer10=temp_value % 100/10+0; /十位 if(temp_value % 100/10=0) TempBuffer10 =

29、 ; TempBuffer11=temp_value%10+0; /个位 / if(temp_value%10=0) TempBuffer11 = ; TempBuffer13=C; /温度符号 if(bz=0) TempBuffer13=F; TempBuffer14=0; /TempBuffer1=ng%10+0; void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j0;delay-) for(i=0;i=0) xianshi_baojing3=gw/100+0; xianshi_baoj

30、ing4=gw%100/10+0; xianshi_baojing5=gw%10+0; xianshi_baojing10=dw/100+0; xianshi_baojing11=dw%100/10+0; xianshi_baojing12=dw%10+0;dis_lcd_string(0x00,xianshi_title);dis_lcd_string(0x40,xianshi_baojing);elseif(dw0) xianshi_baojing3=gw/100+0; xianshi_baojing4=gw%100/10+0; xianshi_baojing5=gw%10+0; xian

31、shi_baojing10= -; xianshi_baojing11=abs(dw)%100/10+0; xianshi_baojing12=abs(dw)%10+0;dis_lcd_string(0x00,xianshi_title);dis_lcd_string(0x40,xianshi_baojing); void main()led_red=0;led_blue=0; BEEP=0; delayxus(10); init_lcd();/init_DS();Init_DS18B20(); delay2(500); delay2(500); while(1) if( k2=1 &k3=1

32、 & k4=1)show_time(); if(k2=0) / while(k2=0); xianshi_dw(); if(k3=0 & k2=0 &k=1) while(k3=0); gw+; if(k4=0 & k2=0 &k=1) while(k4=0); dw+; if(k3=0 & k2=0 &k=0) while(k3=0); gw-; if(k4=0 & k2=0 &k=0) while(k4=0); dw-; if(dw0) dw=0; /*if(dwgw &bz=1) beep(); delayxus(50);led_red=1; else led_red=0; if( temp_value=abs(dw) & bz=1 ) beep(); delayxus(50); if( dw=abs(dw) &bz=1 ) beep(); delayxus(50); if(-abs(temp_value)=(-abs(dw) & dw=0 &bz=1) beep(); delayxus(50); /*附录三:元件清单器件名称数量STC89C521个1602液晶屏1个DS18B20温度传感器1个蜂鸣器1个按键5个排针1个排线1个发光二极管2个

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!