基于STC89C52单片机的数字温度计单片机课程设计1.doc

上传人:仙人指路1688 文档编号:4148273 上传时间:2023-04-07 格式:DOC 页数:31 大小:1.01MB
返回 下载 相关 举报
基于STC89C52单片机的数字温度计单片机课程设计1.doc_第1页
第1页 / 共31页
基于STC89C52单片机的数字温度计单片机课程设计1.doc_第2页
第2页 / 共31页
基于STC89C52单片机的数字温度计单片机课程设计1.doc_第3页
第3页 / 共31页
基于STC89C52单片机的数字温度计单片机课程设计1.doc_第4页
第4页 / 共31页
基于STC89C52单片机的数字温度计单片机课程设计1.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

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

1、单片机课程设计报告项目名称 专业班级 学生姓名 指导教师 年 月 日摘 要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统

2、中,作为其他主系统的辅助扩展。实验结果表明,DS18B20与STC89C52结合可以实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:温度检测; 单片机; 数字温度传感器; 温度采集; Abstract With the progress and development of this epoch ,Single-chip Microcomputer (SCM ) technology has spread into various fields -our lives ,work ,scientific researches an

3、d so on ,becoming a comparatively mature technology .This article was mainly written to introduce a temperature measurement system(TMS ) based on STC89C52 SCM .Its with a detailed description of the development progress of TMS using digital temperature sensor ,putting emphasis on analyzing the hardw

4、are connection of the sensor under the SCM ,software programming and each module progress .This system can conveniently achieve the temperature data collection and display ,and can be arbitrarily set upper and lower alarm temperature .Its quite easy to use ,with high accuracy ,wide range ,high sensi

5、tivity ,small size ,low power dissipation ,etc .Thus ,its suitable for our daily life and industrial and agricultural productions temperature measurement ,and also can be used as temperature processing modules embedded in other systems ,as an auxiliary expansion of other main systems .Experimental r

6、esults show that ,the integration of DS18B20 and STC89C52 can achieve the simplest TMS ,which has simple structure ,strong anti-jamming capability ,suitable for conducting in-situ temperature measurement ,all above leading this to have broad prospects of applications .Keywords: Temperature measureme

7、nt ; Single-chip Microcomputer (SCM ) ; Digital Temperature sensor; Temperature data collection 目 录摘 要IAbstractII第1章 绪论11.1 背景11.2 数字温度计的设计目的11.3 本文研究的意义1第2章 系统硬件选择22.1 单片机的选择22.1.1 STC89C52单片机的性能介绍22.1.2 STC89C52单片机引脚图22.2. 温度传感器的选择42.2.1 DS18B20 介绍4第3章 原理分析63.1原理框图63.2原理分析6第4章 系统的硬件电路设计74.1 显示电路74

8、.2报警电路74.3 数字温度传感器74.4单片机最小系统电路84.5数字温度计的实物图84.6系统板上硬件连线9第5章 系统的软件设计105.1 程序流程图105.2元件清单及程序代码11第6章 实验数据分析146.1 proteus仿真图146.2系统调试与分析14结论15参考文献16附录117附录218致谢26项目创新及特色27第1章 绪论1.1 背景在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要较多的外部硬件支持, 其缺点如下:1 硬件电路复杂;2 软件调试复杂;3 制作成本高。为了提高

9、对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术开发设计,文中把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度的过程。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。1.2 数字温度计的设计目的1) 掌握温度计、报警系统的设计、组装与调试方法。2) 熟悉仿真软件(proteus)的使用。3) 重点掌握单片机的使用及其各引脚的功能。1.3 本文研究的意义 温度传感器技术,在我国各领域已经引用的非常广泛

10、,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。第2章 系统硬件选择2.1 单片机的选择由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中,STC89C52系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占据了工业测控和自动化工程应用的主要市场,成为国内单片机应用中的主流。2.1.1 STC89C52单片机的性能介绍 STC89C52是一种低功耗、高性能CMOS8位微控制器,

11、具有8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工

12、作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。2.1.2 STC89C52单片机引脚图 各引脚功能介绍如下:VCC:供电电压 GND:接地 P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉

13、为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时

14、接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外部中断0)P3.3 INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 WR (外部数据存储器写选通)P3.7 RD (外部数据存储器读选通)同时P3口同时为闪烁编程和编程

15、校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间。ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效

16、。PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2. 温度传感器的选择2.2.1 DS18B20 介绍DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用

17、于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,

18、具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20 的性能特点如下:独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电温范围55125,在-10+85时精度为0.5零待机功耗可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和

19、0.0625,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作以上特点使DS18B20非常适用与多点、远距离温度检测系统。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图2.1所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当

20、被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。其电路图2.2 所示。 图2.1 外部封装形式 图2.2 传感器电路图第3章 原理分析3.1原理框图根据设计要求分析,基于AT89S52单片机的数字温度计设计由AT89S52单片机控制器、电源、显示电路、温度传感器、复位电路和时钟电路组成,系统框图如图一所示。电源给整个电路供电,显示电路显示温度值,时钟电路为AT89S52提供时钟频率。传感器采用美国DALLAS半导体公司生产的一种智能温度传感器DS18B20,其测温范围为-55125,最高分辨率可达0.0625,完全符合设

21、计要求。报警电路电源复位电路时钟电路STC89C52控制器显示电路DS18B20 图3 基于STC89C52单片机的数字温度计系统框图 3.2原理分析整个系统由单片机控制,温度传感器采用DS18B20。DS18B20采用单总线方式与单片机相连.把采集到得温度信息传给单片机。单片机采集到的温度输出到八个个数码管上进行显示。当八位数码管显示的温度超过上限值时可以实现报警功能。第4章 系统的硬件电路设计 4.1 显示电路四位共阳数码管:用来显示温度的大小,可直接读取,温度精确到0.1。四位数码管如图所示,从左到右依次是百位,十位,个位,十分位。 图 4.1数码管 4.2报警电路 三极管8550驱动蜂

22、鸣器:如下图所示三极管Q6来驱动蜂鸣器BUZ1。图4.2 三极管8550、蜂鸣器BUZ14.3 数字温度传感器数字温度传感器DS18B20:如下图所示图 4.3 DS18B20 4.4单片机最小系统电路单片机最小化系统:如下图所示系统工作时,最小化系统运行。 图4. 4 最小化系统 4.5数字温度计的实物图数字温度计显示当前温度21.4图4.5 数字温度计实物图4.6系统板上硬件连线1) 把“单片机系统“区域中的P0.0P0.7端口用8芯排线依次连接到数码管A-DP端口上; 2) 把“单片机系统”区域中的P3.0-P3.2端口用线连接到按键K1-K3的一端上,如图表7所示,其他所有连线按图表7

23、连接即可;3) 把单片机的P2.0端口接数码管的位选3,P2.1端口接数码管的位选2,P2.2端口接数码管的位选1,P2.3端口接数码管的位选4;4) 电源可用外接电源(用手机充电器可做电源),但必须申明电源小于+5V,当然也不能太小。第5章 系统的软件设计5.1 程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测试每1S进行一次。这样可以在1S之内测量一次被测温度,其程序流程图如图3所示。读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,其程序流程图如图4所示。初始化调用显示子程序1S到?读

24、出温度值温度计算处理显示数据刷新发温度转换开始命令初次上电NYYN发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?移入温度暂存器结束图1主程序流程图图2读温度流程图温度转换命令子程序主要是发温度转换开始命令,采用12位分辨率转换时间约为750ms。程序设计中采用1s显示程序延时等待转换的完成。计算温度子程序将RAM中读取值进行BCD码地转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。5.2元件清单及程序代码 元件清单: 单片机STC89C52:1个 40引

25、脚底座:1个 DS18B20:1个 蜂鸣器:1个 电阻:10K 1个 排阻:102 1个 电容:极性电容10uf 1个;瓷片电容10pf 2个 按键:1个 晶振:1个 四位共阳数码管:2个 彩色LED:4个程序主函数代码:/*- 主函数-*/void main (void) unsigned int TempH,TempL,temp;Init_Timer0();while (1) /主循环if(ReadTempFlag=1) ReadTempFlag=0; temp=ReadTemperature(); if(temp&0x8000) TempData0=0x40;/负号标志 temp=tem

26、p; / 取反加1 temp+=1; TempH=temp4; /*if(TempH24)/中断触发语句! ZD=0; */ else TempData0=0; TempH=temp4;if(TempH25|TempH4; TempL=temp&0x0F; TempL=TempL*6/10;/小数近似处理 if(TempH/100=0) TempData1=0;else TempData1=dofly_DuanMaTempH/100; /百位温度 if(TempH/100=0)&(TempH%100)/10=0)/消隐 TempData2=0;else TempData2=dofly_Duan

27、Ma(TempH%100)/10; /十位温度 TempData3=dofly_DuanMa(TempH%100)%10|0x80; /个位温度,带小数点 TempData4=dofly_DuanMaTempL; TempData6=0x39; /显示C符号 第6章 实验数据分析6.1 proteus仿真图图6.1 Proteus仿真图显示当前温度246.2系统调试与分析在系统制作和调试过程中遇到了不少问题,下面是具体问题与解决方法。1) 数码管不亮 数码管段选信号通过P0传输,而P0口无上拉电阻,不能驱动数码管,所以在P0口接上102排阻后问题得以解决。2) 两个数码管显示一样检查之后发现原

28、来是两位数码管的位选端被不小心焊接在一起,改正之后该问题即解决了。3) 不能正常显示温度DS18B20有三个引脚分别是VCC、QD、GND,如果将VCC与GND接反很容易将DS18B20烧坏,以至于不能使其正常工作,将引脚正确连接后,排除故障。结论本文介绍了基于STC89C52单片机的数字温度计的设计,对整个硬件电路和软件程序设计做了分析。温度传感器DS18B20 转化温度的方法非常简洁且精度高、测试范围较广。单片机体积小重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。因此这种温度测量系统能应用于各种场合,具有很大的应用价值。数字式温度传感器DS18B20和处理芯片AT89

29、C52,具有良好的技术指标,组成的电路系统检测准确、稳定性好、调校方便! 该数字温度计完全适用于各种工作环境,达到了预期的研制目标与实用效果。参考文献1孙育才.单片微型计算机及其应用.东南大学出版社.20042沈德金 陈粤初.单片机接口电路与应用程序实例.北京航天航空大学出版社.1990. 3潘新民 王燕芳.微型计算机控制技术.电子工业出版社2003 4李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19985李广弟.单片机基础.北京:北京航空航天大学出版社,19946阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989附录1DS18B20温度与表值对应

30、表 附录2/*- 内容:18B20单线温度检测的应用样例程序-*/#includedelay.h#include18b20.h/*- 18b20初始化-*/bit Init_DS18B20(void) bit dat=0; DQ = 1; /DQ复位 DelayUs2x(5); /稍做延时 DQ = 0; /单片机将DQ拉低 DelayUs2x(200); /精确延时 大于 480us 小于960us DelayUs2x(200); DQ = 1; /拉高总线 DelayUs2x(50); /1560us 后 接收60-240us的存在脉冲 dat=DQ; /如果x=0则初始化成功, x=1则

31、初始化失败 DelayUs2x(25); /稍作延时返回 return dat;/*- 读取一个字节-*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; DelayUs2x(25); return(dat);/*- 写入一个字节-*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=

32、8; i0; i-) DQ = 0; DQ = dat&0x01; DelayUs2x(25); DQ = 1; dat=1; DelayUs2x(25);/*- 读取温度-*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换DelayMs(10);Init_DS18B20();WriteOneChar(0xCC); /跳过

33、读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b=8;t=a+b;return(t);#include delay.h/*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS

34、延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 内容:显示格式 符号 xxx.x C 可以显示负温度-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include 18b20.hvoid DelayUs2x(unsigned char t);void

35、DelayMs(unsigned char t);bit ReadTempFlag;/定义读时间标志sbit sounder=P10;#define DataPort P0 /定义段数据端口 程序中遇到DataPort 则用P0 替换#define SegPort P2 /定义位数据端口sbit ZD=P32;unsigned char code dofly_DuanMa=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值01234567unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0

36、xf7,0xef,0xdf,0xbf,0x7f;/分别对应相应的数码管点亮,即位码unsigned char TempData8; /存储显示值的全局变量void Display(unsigned char FirstBit,unsigned char Num);/数码管显示函数void Init_Timer0(void);/定时器初始化/*- 主函数-*/void main (void) unsigned int TempH,TempL,temp;Init_Timer0();while (1) /主循环if(ReadTempFlag=1) ReadTempFlag=0; temp=ReadT

37、emperature(); if(temp&0x8000) TempData0=0x40;/负号标志 temp=temp; / 取反加1 temp+=1; TempH=temp4; /*if(TempH24)/中断触发语句! ZD=0; */ else TempData0=0; TempH=temp4;if(TempH25|TempH4; TempL=temp&0x0F; TempL=TempL*6/10;/小数近似处理 if(TempH/100=0) TempData1=0;else TempData1=dofly_DuanMaTempH/100; /百位温度 if(TempH/100=0)

38、&(TempH%100)/10=0)/消隐 TempData2=0;else TempData2=dofly_DuanMa(TempH%100)/10; /十位温度 TempData3=dofly_DuanMa(TempH%100)%10|0x80; /个位温度,带小数点 TempData4=dofly_DuanMaTempL; TempData6=0x39; /显示C符号 /*- 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2-*/void Display(unsigned char FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0; /清空数据,防止有交替重影 SegPort=dofly_WeiMai+FirstBit; /取位码 DataPort=

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号