基于AT89C51单片机的数字温度计毕业设计.doc

上传人:文库蛋蛋多 文档编号:4148031 上传时间:2023-04-07 格式:DOC 页数:30 大小:1.09MB
返回 下载 相关 举报
基于AT89C51单片机的数字温度计毕业设计.doc_第1页
第1页 / 共30页
基于AT89C51单片机的数字温度计毕业设计.doc_第2页
第2页 / 共30页
基于AT89C51单片机的数字温度计毕业设计.doc_第3页
第3页 / 共30页
基于AT89C51单片机的数字温度计毕业设计.doc_第4页
第4页 / 共30页
基于AT89C51单片机的数字温度计毕业设计.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于AT89C51单片机的数字温度计毕业设计.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的数字温度计毕业设计.doc(30页珍藏版)》请在三一办公上搜索。

1、CHANGZHOU INSTITUTE OF TECHNOLOGY科研实践题目:基于单片机的数字温度计的设计 目录目录21.绪论31.1课题研究背景及意义31.2课题研究的内容32.数字温度计的系统概论52.1系统的功能52.2温度计的分析53.设计方案和要求63.1设计任务和要求63.2元器件的选取63.3系统最终设计方案74.硬件设计84.1总体设计结构图84.2硬件电路概述84.2.1最小系统84.2.2输入电路设计114.2.3输出电路设计125.硬件仿真156.实物制作186.1电路板焊接186.2电路板调试197.小结20附录211.参考文献212.原理图223.元器件清单234.

2、软件程序245.实物图301.绪论1.1课题研究背景及意义 单片机技术作为计算机技术的一个分支,广泛地应用于工业控制,智能仪器仪表,机电一体化产品,家用电器等各个领域。“单片机原理与应用”在工科院校各专业中已作为一门重要的技术基础课而普遍开设。学生在课程设计,毕业设计,科研项目中会广泛应用到单片机知识,而且,进入社会后也会广泛接触到单片机的工程项目。鉴于此,提高“单片机原理及应用”课的教学效果,让学生参与课程设计实习甚为重要。单片机应用技术涉及的内容十分广泛,如何使学生在有限的时间内掌握单片机应用的基本原理及方法,是一个很有价值的教学项目。为此,我们进行了“单片机的学习与应用”方面的课程设计,

3、锻炼学生的动脑动手以及协作能力。 单片机课程设计是针对模拟电子技术,数字逻辑电路,电路,单片机的原理及应用课程的要求,对我们进行综合性实践训练的实践学习环节,它包括选择课设任务、软件设计,硬件设计,调试和编写课设报告等实践内容。通过此次课程设计实现以下三个目标:第一,让学生初步掌握单片机课程的试验、设计方法,即学生根据设计要求和性能约束,查阅文献资料,收集、分析类似的相关题目,并通过元器件的组装调试等实践环节,使最终硬件电路达到题目要求的性能指标;第二,课程设计为后续的毕业设计打好基础,毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定

4、性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。第三,培养学生勤于思考乐于动手的习惯,同时通过设计并制作单片机类产品,使学生能够自己不断地学习接受新知识(如在本课设题目中存在智能测温器件DS18B20,就是课堂环节中不曾提及的“新器件”),通过多人的合作解决现实中存在的问题,从而不断地增强学生在该方面的自信心及兴趣,也提高了学生的动手能力,对学生以后步入社会参加工作打下一定良好的实践基础。1.2课题研究的内容 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机喜爱的硬件连接

5、,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也进行一一介绍,该系统可以方便的是实现温度采集和显示,并可以根据需要任意设定上下限报警温度,它使用起来方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合我们日常生活和工农业生产中的温度测量,也可以当做温度处理模块嵌入其他系统中,作为其他主系统的辅助扩展。DS18B20和AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合与恶劣环境下进行现场温度测量,有广泛的应用前景。 本设计首先是确定目标,气候是各个功能模块的设计,再在Proteus软件上进行仿真,修改,仿真。本温度计属于多功能温度计,可以设置上下报警

6、温度,当温度不在设置范围内时,可以报警。 2.数字温度计的系统概论2.1系统的功能 此数字温度计是基于51单片机,18B20,四位数码管,led发光二级管,按键等阻容元件设计制作而成,系统工作稳定,能够很好的测量出温度值,并显示。此系统带有温度报警指示功能。2.2温度计的分析元件设计的意义: 关于按键:共设计了4个独立按键,一个为进入调整上下限的功能键,一个为加,一个为减,另一个为确定设置键,按下调整键进入上限设置,右边红色二极管亮,设置完上限按确定键,延时并且蜂鸣器响1下,绿二极管亮,自动进入下限设置。设置完下限按确定键蜂鸣器响2下,进入温度正常显示状态。 关于发光二极管:共设计了三个发光二

7、极管,一个为电源指示,另外两个分别为上下限指示或温度报警指示。当进入调整上限时红色的亮,进入下限时绿色的亮。当正常显示温度时,温度高于上限红色的亮,低于下限时绿色的亮。 关于蜂鸣器:作为报警或者调整上下限时提示用,当前温度高于上限或者低于下限蜂鸣器鸣响!从上限设置跳到下限设置时,蜂鸣器响一下,确定下限设置时蜂鸣器响两下。 关于数码管:当温度为正时,显示温度值,温度为负时,最高位显示“”,温度数据精确到小数点后一位。 系统采用5v直流供电,通电前注意电源正负极,以及电源接口是否匹配。 3.设计方案和要求3.1设计任务和要求1、基本范围15422、精度误差小于0.53、LED 数码直读显示4、可以

8、任意设定温度的上下限报警功能.3.2元器件的选取单片机芯片的选取:方案一:采用89C51芯片作为硬件核心,利用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用AT89C51单片机与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪存,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小,且管脚数目为20个,与MCS-

9、51相比减少一倍,使理解更容易。综上所述:本课设中单片机芯片采用AT89C51。 温度传感器的选取: 方案一:采用热敏电阻传感器。利用热敏电阻随温度变化而显著变化,能直接将温度的变化转换为能量的变化,进而制成温度计。但是其测温传感器比较复杂,而且不易通过编制程序来控制测温精度,增大系统设计的难度。 方案二: 采用DS18B20温度传感器。DS18B20的内部3脚(或8脚)封装;使用特有的温度测量技术,将被测温度转换成数值信号;3.05.5V的电源供电方式和寄生电源供电方式;ROM由64位二进制数字组成,共分为8个字节;RAM由9个字节的高速暂存器和非易失性电擦写ROM组成。综上所述:温度传感器

10、选取智能测温器件DS18B20。3.3系统最终设计方案综上各方案所述,对此次课设的方案选定: 采用AT89C51作为主控制系统; 1602液晶显示模块芯片作为温度数据显示装置;而智能温度传感器DS18B20器件作为测温电路主要组成部分。至此,系统最终方案确定。4.硬件设计4.1总体设计结构图图4-1 总体设计结构图4.2硬件电路概述4.2.1最小系统晶振电路 晶振采用12MHz,分别接入到X1与X2端中。同时在晶振两端各接一个22pF的电容,每个电容的另一端再接入到地。 图4-2 晶振电路复位电路 复位电路采用的是上电复位。如图所示,在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到底。

11、线路上接一按钮,通过按下按钮,复位电路通过电容给RST一个短暂的高电平信号。达到复位状态。 图4-3 复位电路单片机 本设计采用的单片机是AT89C51。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能

12、8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图4-4 AT89C51引脚图电源电路 78系列集成稳压器是常用的固定输出电压的集成稳压器。它的内部含有限流保护,采用了噪声低,温度漂移小的基准电压源,工作稳定可靠。78系列集成稳压器为三端器件:1脚为输入端,2脚为接地端,3脚为输出端,使用十分方便。78系列集成稳压器典型应用电路如下,这是一个输出5V直流电压的稳压电源电路。IC采用集成稳压器7805,C1,C2分别为输入端和输出端的滤波电容,RL为负

13、载输出电阻。当输出电流较大时,7805应配上散热板。 图4-5 电源电路 4.2.2输入电路设计按键电路 关于按键:共设计了4个独立按键,一个为进入调整上下限的功能键,一个为加,一个为减,另一个为确定设置键,按下调整键进入上限设置,右边红色二极管亮,设置完上限按确定键,延时并且蜂鸣器响1下,绿二极管亮,自动进入下限设置。设置完下限按确定键蜂鸣器响2下,进入温度正常显示状态。 图4-6 按键电路测温电路 测温电路方面,我们选择的温度传感器是DS18B20.这是美国DALLAS半导体公司最新推出的一种改进型只能温度传感器,不同于传统的热敏电阻,DS18B20能够直接读出被测温度,并且可根据实际要求

14、通过简单的编程实现912位的数字读书方式。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20 处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。这里我们把温度传感器的DQ端与P23相接,以P23作为温度输入口。温度传感器VCC端接电源,G

15、ND端接地端。如下图所示 图4-7 测温电路4.2.3输出电路设计显示电路 关于发光二极管:共设计了三个发光二极管,一个为电源指示,另外两个分别为上下限指示或温度报警指示。当进入调整上限时红色的亮,进入下限时绿色的亮。当正常显示温度时,温度高于上限红色的亮,低于下限时绿色的亮。LED发光二极管的压降一般为1.52.0 V,其工作电流一般取1020 mA为宜。电阻 R=U/I ,计算得出范围在250-500间,在这里取470。 图4-8 温度上下限报警灯 图4-9 电源指示灯 关于数码管:显示温度,温度数据精确到小数点后一位。数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜

16、色决定;小数点:根据发光颜色决定c、使用电流:静态:总电流80mA(每段10mA);动态:平均电流4-5mA峰值电流 100mA。静态电阻 R=U/I=5V/10mA=500 为了使数码管正常工作,所需电流应大于静态电流值,故电阻要小于静态电阻,故取470。 图4-10 数码管5.硬件仿真1.设置温度上限为42度,温度下限为15度。上限温度下限温度2.如图所示。此时温度为38度,温度在规定范围内,绿灯指示,不报警。3.如图所示。此时温度为45度,超过上限温度,红灯指示并报警。4如图所示。此时温度为10度,低于下限温度,红灯指示并报警。6.实物制作6.1电路板焊接一、 元器件在电路板插装的要求:

17、元器件在电路板插装的顺序是先低后高,先小后大,先轻后重,先易后难,先一般元器件后特殊元器件,且上道工序安装后不能影响下道工序的安装。元器件插装后,其标志应向着易于认读的方向,并尽可能从左到右的顺序读出。有极性的元器件极性应严格按照图纸上的要求安装,不能错装。元器件在电路板上的插装应分布均匀,排列整齐美观,不允许斜排、立体交叉和重叠排列;不允许一边高、一边低,也不允许引脚一边长、一边短。二、插装元器件焊接规范:1、电阻器的插装:、看电阻器上的色环(高精度金属膜电阻器)或电阻器上的标示字符排列顺序(高精度低温漂电阻器),确定电阻值是否正确,如有色环不全(字迹不清晰)或封装有破损的需更换器件;、弯脚

18、插装,根据插装孔的实际间距对比电阻器的引脚,用镊子夹住引脚平移到合适位臵后快速将引脚弯下,以两引脚插装后能自行稳固为宜,同时使电阻离印制板面高度为2mm左右;、插装时注意电阻器的正反方向,正向应为从左到右前四个色环之间间隙较小,与第五个色环间隙相对较大(高精度低温漂电阻器的正反判断和集成电路相同);反之则为反向。正确的插装方式应为正向插装;、若是纵向排列,则按色环排列,上面四个环间隙较小,第五个环与前四个色环间隙较大(高精度金属膜电阻器)或电阻器上的表示字符为从上到下排列(高精度低温漂电阻器)。2、电容的插装:、看电容上的文字标识,确定使用产品与器件表无误,如有封装损坏、字迹模糊或断腿则需更换

19、器件;、弯腿插装, 根据插装孔的实际间距对比电容的引脚,用镊子夹住引脚平移到合适位臵后快速将引脚弯下,以两引脚插装后能自行稳固为宜,同时使电容离印制板面高度为2mm左右; 、电容排列要保证其标识字方向一致,便于观测。焊盘左右排列的电容应使标识字面朝操作者,焊盘上下排列的电容应使标识字面向操作者左边方向。(电路板正面向上)3、二极管的焊接正确辨认正负极后按要求装入规定位臵,型号及标记要易看得见,焊接要求可参考电阻的要求。4、集成电路器件的插装:、如器件引脚弯曲,则用镊子夹住弯曲引脚所在面所有引脚轻轻捏合以矫正;、如有引脚端裂或断则视为器件损坏,不予使用需更换新器件;、在进行插装的时候要注意器件的

20、正反,面对器件时,器件上的标号字符应为由左到右排列。6.2电路板调试 最小系统的电路不工作,首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否符合电源电压,常用的是5V左右。接下来就是检测复位引脚的电压是否正常,EA引脚的电压要正常为5V左右。 如果补焊电源后最小系统还是不能工作,有可能是AT89C52单片机坏掉了,重新选择一个AT89C52单片机焊接。如果是工作但是不能按需要的功能执行,也可用更换AT89C52单片机方法调试,但在此之前可以选择检查对应的模块是否有焊接问题,若没有再进行更换。7.小结 这次设计,首次动手自己设计电路。把以往所学的理论知识投入到实际应

21、用当中,加强了对课本上面知识的了解。在设计过程中,针对测温电路这方面,研究了很长一段时间。一开始的选择是采用传统的热电阻,然后采集对应温度下的电流和电压,通过A/D电路进单片机处理来得出温度。这种方案的精度虽然高很多,测温范围也广,但是电路的设计复杂了很多,在编程方面也复杂了很多。后来参考相关资料,最终选定了以DS18B20作为温度传感器来设计测温电路,通过补偿提高精度。在设计过程中,遇到了最大的问题就是对单片机芯片不熟。各端口的作用搞不清,在设计过程中需要不断翻书查看。通过这样,加固了对以前所学知识的了解。经过两个星期的设计,通过不断翻查资料,不断学习,终于完成了这次的设计,并成功仿真。不仅

22、提高了我们的学习兴趣,也让我真正懂得,要理论联系实际,对于以前学习的东西,如果不真正自己动手做一回,是很难真正弄懂的,只有自己认认真真动手做一回,学以致用,才能算是真正搞懂。附录1.参考文献1 高伟.单片机原理及应用M.北京:国防工业出版社,2008年.2 蔡朝阳.单片机控制实习与专题制作M.北京:北航出版社,2006年. 3 范力旻.单片机原理及应用技术.电子工业出版社.4 胡文金 杨健.单片机应用技术实训教程.重庆大学出版社. 5 杨加国.单片机原理与应用及C51程序设计.清华大学出版社,2006年.6 胡汉才.单片机原理与接口技术M.北京:清华大学出版社,1998年.7 郭培源.电子电路

23、及电子器件.高等教育出版社,2003年.8 张齐 朱宁西.单片机应用系统设计实验(C51).电子工业出版社,2013年.2.原理图3.元器件清单序号名称数量规格型号1电阻104702电阻54.7k3电阻13k4电阻110k5电阻11k6电容1100uf7电容110uf8电容1104pf9电容122pf10三极管5855011按键412DC电源座子113晶振112M14LED发光二极管2红色15LED发光二极管1绿色16数码管117温度传感器1DS18B2018蜂鸣器119单片机1Stc89c5120芯片座子1Dip4021万能板14.软件程序Main.h#ifndef MAIN_H_#defi

24、ne MAIN_H_#include#define uchar unsigned char#define uint unsigned intvoid delay1m(uint x);/延时函数声明void smg_scan();/显示函数声明uint read_temperature();/读取温度数据函数声明void convert(uint dat);/转换函数声明void alarm_function();/报警函数声明#endif18B20.C#includemain.h#include#define nops(); _nop_(); _nop_(); _nop_(); _nop_()

25、; /定义空指令sbit DQ = P23;/18b20数据端sbit red=P21;bit flag;/温度正负标记,0正,1负/=时基为1ms的延时函数void delay1ms(uint a)while(a-);/=18b20复位函数=void rst_18b20()bit flag = 1;while(flag)while(flag)DQ = 1;delay1ms(1);DQ = 0;/拉低总线delay1ms(50);DQ = 1;delay1ms(6);flag = DQ;delay1ms(40);flag = DQ;DQ = 1;/=写一字节=void write_byte(u

26、char dat)uchar i; for(i = 0;i =1;DQ = 1;/=读一字节=uchar read_byte()uchar dat,i;for(i = 0;i = 1;DQ = 0;nops(); /4usDQ = 1;/释放总线准备读nops(); /4usif(DQ) dat |= 0x80; delay1m(6);DQ = 1;return(dat);/=读出温度高低八位=uint read_temperature()uchar a,b;uint temp;rst_18b20();/复位18B20write_byte(0xcc);/跳过ROMwrite_byte(0x44

27、);/启动温度转换delay1m(1);/延时等待rst_18b20();/复位18B20write_byte(0xcc);/跳过ROMwrite_byte(0xbe);/ 发读命令a = read_byte();/低字节b = read_byte();/高字节temp=(b1200)up=250;while(!s2);/等待按键弹起convert(up);else if(s3=0)/delay1m(3);if(s3=0) up-; if(up=up)down=50;while(!s2);/等待按键弹起convert(down);else if(s3=0)/delay1m(3);if(s3=0

28、) down-; if(down10)down=50;while(!s3);/等待按键弹起 convert(down);while(s4);for(i=0;i2;i+)alarm=0;delay1m(200);alarm=1;delay1m(200);green=1;/上下限确定后蜂鸣器响两下/=数码管扫描显示函数=void smg_scan()wei4=wei3=wei2=1;wei1=0;/最低位led=displaybuf3;delay1m(3);led=0xff;wei4=wei3=wei1=1;wei2=0;/低位led=displaybuf2&0x7f;/显示小数点delay1m(

29、3);led=0xff;wei4=wei1=wei2=1;wei3=0;/次高位led=displaybuf1;delay1m(3);led=0xff;wei2=wei3=wei1=1;wei4=0;/高位 led=displaybuf0; delay1m(2);led=0xff;/=ms级延时函数=void delay1m(uint x) uint i,j; for(i=0;ix;i+) /连数x次,约 x ms for(j=0;jup)alarm=0;red=0;green=1;/大于上限,蜂鸣器响,else if(datdown)alarm=0;green=0;red=1;/小于下限,蜂鸣器响elsealarm=1;red=green=1;/否则蜂鸣器不响,灯灭掉5.实物图

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号