用LED数码管和DS18B20设计的温度显示器.doc

上传人:doc321 文档编号:13169751 上传时间:2021-12-17 格式:DOC 页数:24 大小:13.37MB
返回 下载 相关 举报
用LED数码管和DS18B20设计的温度显示器.doc_第1页
第1页 / 共24页
用LED数码管和DS18B20设计的温度显示器.doc_第2页
第2页 / 共24页
用LED数码管和DS18B20设计的温度显示器.doc_第3页
第3页 / 共24页
用LED数码管和DS18B20设计的温度显示器.doc_第4页
第4页 / 共24页
用LED数码管和DS18B20设计的温度显示器.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《用LED数码管和DS18B20设计的温度显示器.doc》由会员分享,可在线阅读,更多相关《用LED数码管和DS18B20设计的温度显示器.doc(24页珍藏版)》请在三一文库上搜索。

1、单片机课程设计说明书用LED数码管和DS18B20设计的温度显示器目 录1.概述11.1课题研究背景和意义11.2课题设计内容12.课程方案设计22.1系统总体设计要求22.2系统模块结构论证22.2.1方案一22.2.2方案二23.系统硬件设计53.1总体设计53.2单片机最小运行系统53.3温度传感器(DS18B20)电路63.3.1 DS18B20基本介绍63.3.2 DS18B20控制方法73.3.3 DS18B20供电方式73.4七段数码管显示电路73.5驱动电路84.系统软件设计94.1程序结构分析94.2系统程序流图95.软硬件联调135.1软硬件调试中出现的问题及解决措施135

2、.2实物图135.3调试结果13结束语14参考文献15附 录16附录1:基于单片机的温度显示系统设计原理图17附录2:基于单片机的温度显示系统设计PCB图18附录3:proteus仿真图19附录4:基于单片机的温度显示系统设计C语言程序清单20附录5: 基于单片机的温度显示系统设计元器件目录表241.概述1.1课题研究背景和意义温度控制是工业自动控制的重要组成部分,在工业、电子、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。因此温度控制系统在工业控制领域中十分重要。由于现代工艺越来越多的需要对实时温度进

3、行监测和控制,而且需要的精度越来越高。所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。温度控制系统发展迅速,而且成果显著。由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。“用LED数码管和DS18B20设计的温度显示器”课程设计,主要设计以一个单片机为控制核心的温度自动测量系统, 本课题的研究意义如下:(1)它是一个单片机系统,对它的设计和制作可以灵活运用在单片机课程中所学的知识,并使之得到巩固和提高。 (2)它的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器,DS18B20是最新一代的测温器件,具有许多优点,它正在

4、逐步取代传统的测温元件热敏电阻和热电偶。它的最主要的优点是把温度转换、A/D转换和数据的串行通讯集成为一体,而且它的体积很小,非常便于构成多点测温系统。 1.2课题设计内容本课题的主要任务是设计并制作用LED数码管和DS18B20设计的温度显示器,即根据温度传感器感受室温,通过数码管显示出来。它能感受微小的温度误差,灵敏度为0.1摄氏度。灵活方便,用途广泛。设计温度显示器的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。2.课程方案设计2.1系统总体设计要求 该系统组要有STC89C51为核心的主控电路测温电路(DS18B20)、LED显示电

5、路。2.2系统模块结构论证2.2.1方案一用铂电阻测温的非线性校正方法,采用桥式电路将热敏电阻的感温效应,在将随被测温度变化的电压或电流采集过来,再加上放大器将信号放大,并经AD转换器,在通过显示电路,就可以将被测温度显示出来。图2-1铂电阻桥式测温电路2.2.2方案二考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。图2-2 DS18B20测温系统框图2.2.3方案比较 方案一采用模拟温度传感器,数据处理麻烦,且容易产生信号失真. DS18B20可以直接温度转换为串行数字信号,供单片机进行处理,具有低功耗、高性能

6、、抗干扰能力强等优点。比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。在本系统的电路设计方框图如图2-3所示。STC89C52CPUDS18B20温度芯片LED显示报警电路电源图2-3 温度计电路总体设计方案 DS18B20是Dallas公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围55125,可编程为912位A/

7、D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。图2-4 温度芯片DS18B203.系统硬件设计3.1总体设计根据第2节设计方案,设计的系统总体电路如附录1所示,下面具体介绍每一部分的设计。3.2单片机最小运行系统a)晶振晶振为单片机提供时钟信号。单片机XIAL1和XIAL2分别接30PF的

8、电容,中间再并个12MHZ的晶振,形成单片机的晶振电路。图3-1 晶振电路b)复位电路单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。 图3-2 复位电路 ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源3.3温度传感器(DS18B20)电路3.3.1 DS18B20基本介

9、绍DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能

10、够汲取的能量也降低,会使温度误差变大。图3-3温度传感器电路引脚图如图3-2,P3.6引脚接继电器电路的4.7K的限流电阻上。3.3.2 DS18B20控制方法DS18B20有六条控制命令:温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU 3.3.3 DS18B20供电方式DS18B20

11、可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。本设计采用电源供电方式, P2.2口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个上拉电阻和STC89C52的P2.2来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10 s。采用寄生电源供电方式是VDD和GND端均接地。由于单线制只有一根线,因此发送

12、接收口必须是三状态的。主机控制DS18B20完成温度转换必须经过3个步骤:l 初始化。l ROM操作指令。l 存储器操作指令。3.4七段数码管显示电路 当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。图3-4 数码管引脚图考虑到实际室温的温度范围,显示需用五位,硬件中用了2个四位数码管,共8个位选,接到P2口。3.5驱动电路一般也可以用三极管9012来驱动4位数码管,不仅增加了成本也增加了布线难度,功耗大。这里用锁存器74LS245

13、来驱动数码管显示。图3-574LS245引脚图74LS245是常用的芯片,用来驱动LED或者其他的设备,它是8路双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当AT89C51单片机的P0口总线负载达到或超过P0口最大负载能力时,必须接入74LS245等总线驱动器。 DIR为方向控制端。当端为低电平时,DIR=“0”,信号由B向A传输(接收); 当DIR=“1”时,信号由A向B传输(发送);当为高电平时,A、B均为高组态。A总线端接8位P0口,B总线端接数码管的a、b、c、d、e、f、g、dp引脚。4.系统软件设计4.1程序结构分析主程序调用了2个

14、子程序,分别是数码管显示程序、温度信号处理程序。温度信号处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。数码管显示程序:向数码的显示送数,控制系统的显示部分。4.2系统程序流图系统程序主要包括主程序,读出温度子程序,写入子程序等,按键子程序,串口通信程序,显示子程序。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4.2所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分开分存放在不的的两个单元中,然后通过调用显示子程序显示出来。图4-1 DS18B20温度流程图uch

15、ar 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<8;i+) DQ=0;dat >>=1;DQ=1;_nop_();_nop_(); if (DQ) dat |=0x80; Delay(30); DQ=1; return dat;void WriteOneByte(uch

16、ar dat) uchar i; for(i=0;i<8;i+) DQ=0;DQ=dat & 0x01;Delay(5); DQ=1; dat>>=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=ReadOneB

17、yte(); DS18B20_IS_OK=1; 5.软硬件联调5.1软硬件调试中出现的问题及解决措施问题1:温度传感器1、3引脚接线错误,导致数码管无显示解决措施:将温度传感器1脚接地,3脚接Vcc。问题2:数码管显示乱码,甚至无显示解决措施:检验出数码管为共阴极数码管,上网查找共阴极数码管的引脚图,认真连线,将位选和段选连接正确。问题3:程序、引脚间的连接都没问题,数码管还没有显示解决措施:用万用表检查各个引脚之间是否导通,是否出现空焊现象。5.2实物图 5.3调试结果 24 / 24文档可自由编辑打印结束语课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重

18、要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。通过这次单片机课程设计,第一,我加深了对单片机理论的理解,将理论很好地应用到实际当中去,我花了近三天的时间做实物,焊板子是一项很考验技术的活,我们组焊好后有人成功有人失败。接下来我们面对的是查错,先看看是不是电路原理图接错了,然后再看是不是虚焊,我拿着万用表一个一个焊点检查,着实不易。最苦恼的是发现不存在虚焊、短路时,可能是有元器件烧掉了,我们又去网上买。在做实物的过程中,提高了分析

19、和解决实际问题的综合能力。另外,也培养了自己严肃认真的科学态度和严谨求实的作风。在此期间,张兰红老师对我的设计进行了耐心的修改和指导,我十分感激。参考文献1曹巧媛主编. 单片机原理及应用(第二版). 北京:电子工业出版社,20022全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编(2001), 北京:北京理工大学出版社,20033何力民编. 单片机高级教程. 北京:北京航空大学出版社,20004金发庆等编. 传感器技术与应用.北京机械工业出版社,20025刘坤、宋戈、赵洪波、张宪栋编51单片机C语言应用开发技术大全,北京:人民邮电出版社,20086谭浩强著C程序设计北京

20、:清华大学出版社,2007;7王忠飞,胥芳MCS-51 单片机原理及嵌入式系统应用M西安:西安电子科技大学出版社,2007P268-2738 Peter Van Der Linden著,徐波译.C专家编程,人民邮电出版社,2003附 录附录1:基于单片机的温度显示系统设计原理图附录2:基于单片机的温度显示系统设计PCB图附录3:proteus仿真图附录4:基于单片机的温度显示系统设计C语言程序清单附录5:基于单片机的温度显示系统设计元器件目录表附录1:基于单片机的温度显示系统设计原理图附录2:基于单片机的温度显示系统设计PCB图附录3:proteus仿真图附录4:基于单片机的温度显示系统设计C

21、语言程序清单#include <reg51.h>#include <intrins.h>#define uchar 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 Di

22、splay_Digit=0,0,0,0;bit DS18B20_IS_OK=1;void Delay(uint x) while (-x);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<8;i+) DQ=0;dat >>=1;DQ=1;_nop_();_nop

23、_(); if (DQ) dat |=0x80; Delay(30); DQ=1; return dat;void WriteOneByte(uchar dat) uchar i; for(i=0;i<8;i+) DQ=0;DQ=dat & 0x01;Delay(5); DQ=1; dat>>=1; void Read_Temperature() if( Init_DS18B20()=1) DS18B20_IS_OK=0;else WriteOneByte(0xCC); WriteOneByte(0x44); Init_DS18B20(); WriteOneByte(

24、0xCC); WriteOneByte(0xBE); Temp_Value0=ReadOneByte(); Temp_Value1=ReadOneByte(); DS18B20_IS_OK=1; void Display_Temperature() uchar i; uchar t=150; uchar ng=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)

25、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; Display_Digit2=CurrentT %100/10; Display_Digit1=CurrentT %10; if(Display_Digit3=0) Display_Digit3=10; np=0xFB; if(Dis

26、play_Digit2=0) Display_Digit2=10; np=0xF7; for (i=0;i<30;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_CODEDisplay_Digit1)|0x80; P2=0xEF;Delay(t);P2=0xFF; P0=DSY_CODEDisplay_Digit2; P2=0xF7;Delay(t);P2=0xFF; P0

27、=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个

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1