用LED数码管和DS18B20设计的温度显示器(共27页).doc

上传人:飞****2 文档编号:13919649 上传时间:2022-05-01 格式:DOC 页数:27 大小:14.07MB
返回 下载 相关 举报
用LED数码管和DS18B20设计的温度显示器(共27页).doc_第1页
第1页 / 共27页
用LED数码管和DS18B20设计的温度显示器(共27页).doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《用LED数码管和DS18B20设计的温度显示器(共27页).doc》由会员分享,可在线阅读,更多相关《用LED数码管和DS18B20设计的温度显示器(共27页).doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上单片机课程设计说明书用LED数码管和DS18B20设计的温度显示器专业电气工程及其自动化学生姓名管通班级B电气081学号指导教师张兰红完成日期2011年 6 月 23 日专心-专注-专业目 录1.概述1.1课题设计背景和意义由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。温度控制系统发展迅速,而且成果显著。由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。“用LED数码管和DS18B20设计的温度显示器”课程设计,主要设计以一个单片机为控制核心的温度

2、自动测量系统, 一方面,本次设计是一个单片机系统,对它的设计和制作可以灵活运用在单片机课程中所学的知识,并使之得到巩固和提高。 另一方面,它的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器,DS18B20是最新一代的测温器件,具有许多优点,它正在逐步取代传统的测温元件热敏电阻和热电偶。 1.2课题设计内容本课题的主要任务是设计并制作用LED数码管和DS18B20设计的温度显示器,即根据温度传感器感受室温,通过数码管显示出来。它能感受微小的温度误差,灵敏度为0.1摄氏度。灵活方便,用途广泛。设计温度显示器的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,

3、并进行软硬件联调,要求获得调试成功的实物。2.课程方案设计2.1系统总体设计要求 该系统组要有STC89C51为核心的主控电路测温电路(DS18B20)、LED显示电路。2.2系统模块结构论证2.2.1方案一针对铂热电阻传感器测量温度,采用普通稳压源桥式电路而产生非线性误差的问题,运用集成运算放大器工作在线性区域的特性,将恒流源原理应用到测温桥式电路中,并采用集成A/D转换技术的单片机Mega16,通过运算消除了非线性误差,实现了对温度的精确测量。试验结果表明,应用此种测温电路,缩短了单片机计算时间,一定程度上缓解了变送滞后对测量精度的影响,同时降低了误差。图2-1铂电阻桥式测温电路2.2.2

4、方案二考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。图2-2 DS18B20测温系统框图2.2.3方案比较 方案一采用模拟温度传感器,数据处理麻烦,且容易产生信号失真. DS18B20可以直接温度转换为串行数字信号,供单片机进行处理,具有低功耗、高性能、抗干扰能力强等优点。比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。在本系统的电路设计方框图如图2-3所示。STC89C52CPUDS18B20温度芯片LED显示报警电路电源图2-3 温度计电路总体设计方案 D

5、S18B20是Dallas公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围55125,可编程为912位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省

6、大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。3.系统硬件设计3.1总体设计根据第2节设计方案,设计的系统总体电路如附录1所示,下面具体介绍每一部分的设计。3.2单片机最小运行系统a)晶振晶振为单片机提供时钟信号。单片机XIAL1和XIAL2分别接30PF的电容,中间再并个12MHZ的晶振,形成单片机的晶振电路。图3-1 晶振电路b)复位电路单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引

7、脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。 图3-2 复位电路 ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源3.3温度传感器(DS18B20)电路DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA

8、,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。图3-3温度传感器电路引脚图如图3-2,P3.6引脚接继电器电路的4.7K的限流电阻上。DS18B20有六条控制命令:温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复制暂存器 48H 把暂存器的T

9、H、TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。本设计采用电源供电方式, P2.2口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个上拉电阻和STC89C52的P2.2

10、来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10 s。采用寄生电源供电方式是VDD和GND端均接地。由于单线制只有一根线,因此发送接收口必须是三状态的。主机控制DS18B20完成温度转换必须经过3个步骤:l 初始化。l ROM操作指令。l 存储器操作指令。3.4七段数码管显示电路 当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。图3-4 数码管引脚图考虑到实际室

11、温的温度范围,显示需用五位,硬件中用了2个四位数码管,共8个位选,接到P2口。3.5驱动电路一般也可以用三极管9012来驱动4位数码管,不仅增加了成本也增加了布线难度,功耗大。这里用锁存器74LS245来驱动数码管显示。图3-574LS245引脚图74LS245是常用的芯片,用来驱动LED或者其他的设备,它是8路双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当AT89C51单片机的P0口总线负载达到或超过P0口最大负载能力时,必须接入74LS245等总线驱动器。 DIR为方向控制端。当端为低电平时,DIR=“0”,信号由B向A传输(接收); 当D

12、IR=“1”时,信号由A向B传输(发送);当为高电平时,A、B均为高组态。A总线端接8位P0口,B总线端接数码管的a、b、c、d、e、f、g、dp引脚。4.系统软件设计4.1程序结构分析主程序调用了2个子程序,分别是数码管显示程序、温度信号处理程序。温度信号处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。数码管显示程序:向数码的显示送数,控制系统的显示部分。4.2系统程序流图系统程序主要包括主程序,读出温度子程序,写入子程序等,按键子程序,串口通信程序,显示子程序。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒

13、之内测量一次被测温度,其程序流程见图4.2所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分开分存放在不的的两个单元中,然后通过调用显示子程序显示出来。图4-1 DS18B20温度流程图uchar Init_DS18B20() uchar status; DQ=1;Delay(8); DQ=0;Delay(90); DQ=1;Delay(8); status=DQ; Delay(100); DQ=1; return status;uchar ReadOneByte() uchar i,dat=0; DQ=1;_nop_(); for(i=0;i=1;DQ=1;_nop_();_nop

14、_(); if (DQ) dat |=0x80; Delay(30); DQ=1; return dat;void WriteOneByte(uchar dat) uchar i; for(i=0;i=1; void Read_Temperature() if( Init_DS18B20()=1) DS18B20_IS_OK=0;else WriteOneByte(0xCC); WriteOneByte(0x44); Init_DS18B20(); WriteOneByte(0xCC); WriteOneByte(0xBE); Temp_Value0=ReadOneByte(); Temp_V

15、alue1=ReadOneByte(); DS18B20_IS_OK=1; 5.软硬件联调5.1软硬件调试中出现的问题及解决措施第一次上电调试,设置温度上限为35摄氏度,温度下限为28摄氏度。但温度却不显示出来,后经检查发现原来是DS18B20初始化时间设置不对,导致没法读到DS18B20的温度值,延时时间重设后才显示出温度值来。再经实际接电调试,一切运行正常。 按键调试时,刚开始由于没有设置按键松手检测程序,按键一直失灵,后将按键松手检测程序(while(P2=0Xxx)后,按键运转正常。串口调试时,刚开始是发送一个数据便显示一个数据便打开一次中断,这样导致数据更换太慢,没法同时显示几个数据

16、,后将所有要显示的数据一个一个储存起来后再打开中断,一起送出去,这样问题解决了,发送和接收都没有错误了。5.2实物图 5.3调试结果结束语本次课程设计,回顾起此次单片机课程设计,我仍感慨颇多,的确,从理论到实践,在接近三个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困

17、难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,以及焊电路板时出现的各种错误,怎样万用表检查电路,用对单片机C语言掌握得不好,怎样修改程序通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在张兰红老师的辛勤指导下,终于迎逆而解。同时,在张兰红老师那里我学得到很多实用的知识以及她的认真严谨的科学态度,让我终生受益!同时,对给过我帮助的同学再次表示忠心的感谢!参考文献1 张毅刚. 单片机原理及应用M.北京:高

18、等教育出版社,2008 2 郭天祥 新概念51单片机C语言教程入门、提高、开发拓展全攻略M 北京:电子工业出版社 20103 彭伟 单片机C语言程序设计实训100例基于8051+Proteus仿真M 北京:电子工业出版社 2010.64 张大明. 单片机控制实训指导及综合应用实例M.北京:清华大学出版社, 20045 张齐,朱宁西. 单片机应用系统设计技术基于C51的Proteus仿真 M.北京:化学工业出版社,2004.6 沈光斌,刘冬,姚志成.单片机系统实用抗干扰设计.M.北京:人民邮电出版社,20047 冯育长 .单片机系统设计与实例分析.M.西安:西安电子科技大学出版社,2007 8

19、晁阳. 单片机MCS-51原理及应用开发教程M.北京:清华大学出版社,2009.9 黄惟公, 邓成中, 王燕. M. 西安:西安电子科技大学出版社,2009附 录附录1:基于单片机的温度显示系统设计原理图附录2:基于单片机的温度显示系统设计PCB图附录3:proteus仿真图附录4:基于单片机的温度显示系统设计C语言程序清单附录5:基于单片机的温度显示系统设计元器件目录表附录1:基于单片机的温度显示系统设计原理图附录2:基于单片机的温度显示系统设计PCB图附录3:proteus仿真图附录4:基于单片机的温度显示系统设计C语言程序清单#include #include #define uchar

20、 unsigned char#define uint unsigned intsbit DQ=P36; uchar code DSY_CODE=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00;uchar code df_Table=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;uchar CurrentT=0;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0,0;bit DS18B20_IS_OK=1;void Delay(uint x) while (-x)

21、;uchar Init_DS18B20() uchar status; DQ=1;Delay(8); DQ=0;Delay(90); DQ=1;Delay(8); status=DQ; Delay(100); DQ=1; return status; uchar ReadOneByte() uchar i,dat=0; DQ=1;_nop_(); for(i=0;i=1;DQ=1;_nop_();_nop_(); if (DQ) dat |=0x80; Delay(30); DQ=1; return dat;void WriteOneByte(uchar dat) uchar i; for(i

22、=0;i=1; void Read_Temperature() if( Init_DS18B20()=1) DS18B20_IS_OK=0;else WriteOneByte(0xCC); WriteOneByte(0x44); Init_DS18B20(); WriteOneByte(0xCC); WriteOneByte(0xBE); Temp_Value0=ReadOneByte(); Temp_Value1=ReadOneByte(); DS18B20_IS_OK=1; void Display_Temperature() uchar i; uchar t=150; uchar ng=

23、0, np=0; char Signed_Current_Temp; if(Temp_Value1 & 0xF8)=0xF8) Temp_Value1=Temp_Value1; Temp_Value0=Temp_Value0+1; if (Temp_Value0 = 0x01) Temp_Value1+; ng=1;np=0xFD; Display_Digit0=df_TableTemp_Value0&0x0F; CurrentT=(Temp_Value0 & 0xF0)4)|(Temp_Value1 & 0x07)4); Display_Digit3=CurrentT /100; Displ

24、ay_Digit2=CurrentT %100/10; Display_Digit1=CurrentT %10; if(Display_Digit3=0) Display_Digit3=10; np=0xFB; if(Display_Digit2=0) Display_Digit2=10; np=0xF7; for (i=0;i30;i+) P0=0x39;P2=0x7F;Delay(t);P2=0xFF; P0=0x63;P2=0xBF;Delay(t);P2=0xFF; P0=DSY_CODEDisplay_Digit0; P2=0xDF;Delay(t);P2=0xFF; P0=(DSY

25、_CODEDisplay_Digit1)|0x80; P2=0xEF;Delay(t);P2=0xFF; P0=DSY_CODEDisplay_Digit2; P2=0xF7;Delay(t);P2=0xFF; P0=DSY_CODEDisplay_Digit3; P2=0xFB;Delay(t);P2=0xFF; if(ng) P0=0x40;P2=np;Delay(t);P2=0xFF; void main(void) Read_Temperature(); Delay(50000); Delay(50000); while(1) Read_Temperature(); if(DS18B20_IS_OK) Display_Temperature(); else P0=P2=0x00; 附录5: 基于单片机的温度显示系统设计元器件目录表编号元件名称元件数量(1)STC89C52 单片机1个(2)1k电阻1个(3)10K电阻1个(4)330电阻8个(5)30uF电容2个(6)11.0592MHz晶振1个(7)发光二极管8个(8)七段共阴极数码管8个(9)10uf电容1个(10)排阻1个(11)DS18B20温度传感器1个(12)74LS2451个(13)复位按钮1个(14)4.7k电阻1个

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁