单片机课程设计—数字温度计.doc

上传人:文库蛋蛋多 文档编号:4147588 上传时间:2023-04-07 格式:DOC 页数:27 大小:203.50KB
返回 下载 相关 举报
单片机课程设计—数字温度计.doc_第1页
第1页 / 共27页
单片机课程设计—数字温度计.doc_第2页
第2页 / 共27页
单片机课程设计—数字温度计.doc_第3页
第3页 / 共27页
单片机课程设计—数字温度计.doc_第4页
第4页 / 共27页
单片机课程设计—数字温度计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

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

1、第1章 概述1.1 数字温度计简介随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。此次课程设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以

2、上要求。1.2 设计内容及要求本次单片机课程设计将以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。测温范围为0100,精度误差在0.5以内。 第2章 系统总体方案设计2.1数字温度计设计的方案 在做数字温度计的单片机电路中,对信号的采集电路大多都是使用传感器,这是非常容易实现的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显

3、示电路对其数据进行显示。2.2系统设计框图温度计电路设计总体设计方框图如图2.1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用6位LED数码管以串口传送数据实现温度显示。此外,还添加了报警系统,对温度实施监控。 图2.1 数字温度计框图第3章 硬件设计3.1主控器8051 芯片 对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89C51 以低价位单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89C51具有低电压供电和体积小等特点,四个端口

4、只需要两个口就能满足电路系统的设计需要该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS51的CMOS产品。其主要特征有如下几个: 与MCS-51 兼容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路AT8951的管脚如下图所示:图3.1 AT89C51芯片管脚图 各管脚功能:VCC:

5、供电电压。 GND:接地。 P0P3:为输入/输出口线,其各有的功能,而P3口每一位还有特殊功能。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。 XTAL

6、1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.1.1 时钟电路80C51时钟有两种方式产生,即内部方式和外部方式。80C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。本次采用内部震荡电路,瓷片电容采用22PF,晶振为12MHZ。图3.1.1 震荡电路图3.1.2 复位电路单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10K的阻值 ,电容采用10F的电容值。图3.1.2 复位电路3.2 温度传感器DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”

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

8、多这样的数字温度计,十分方便。 表3.1 DS18B20分辩率的定义规定R1R0分辩率/位温度最大转换时间/ms00993.750 110187.510113751112750由表3.1可见,DS18B20温度转换的时间比较长,而且设定的分辩率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辩率和转换时间权衡考虑。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD

9、为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地,如下图所示。 图3.2 DS18B20管脚图DS18B20的初始化: (1) 先将数据线置高电平“1”。 (2) 延时(该时间要求的不是很严格,但是尽可能的短一点) (3) 数据线拉到低电平“0”。 (4) 延时750微秒(该时间的时间范围可以从480到960微秒)。 (5) 数据线拉到高电平“1”。 (6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 (7) 若CPU读到了数据线上

10、的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。 (8) 将数据线再次拉高到高电平“1”后结束。 DS18B20的写操作: (1) 数据线先置低电平“0”。 (2) 延时确定的时间为15微秒。 (3) 按从低位到高位的顺序发送字节(一次只发送一位)。 (4) 延时时间为45微秒。 (5) 将数据线拉到高电平。 (6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。 (7) 最后将数据线拉高。 3.3 显示电路对于数字温度的显示,我们采用6位LED数码管。足够显示0100中各位数,并且还能显示一位小数部分。图3.3 6位LED数码显

11、示管3.4 温度报警电路 对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,如果我们所设计的系统用来监控某一设备,当设备的温度超过我们所设定的温度值时,系统会产生报警。我们便能很好的对设备进行处理,就不会应温度的变化而造成不必要的损失。当温度高于100度时,报警时由单片机产生一定频率的脉冲,由P3.7引脚输出,P3.7外接一只NPN的三极管来驱动杨声器发出声音,以便操作员来维护,从而达到报警的目的。其电路图如下所示。 图3.4(a) 扬声器报警系统电路图当温度低于0度时,亮红灯报警,以便操作员来维护,从而达到报警的目的。其电路图如下所示。图3.4(b) 红灯报警系统电路图 第4章

12、 软件设计及调试4.1 概述 本次课程设计采用的是proteus软件仿真,用Keil软件进行编译。Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具,也是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。由单片机AT89C51为核心而设计的数字温度计,对其进行软件程序的仿真时,我们采用单片机汇编语言来编写。系统程序主要包括主程序、读出温度子程序、显示数据子程序、报警子程序等等。然而整个系统的功能是由硬件电路配合软件来实现的

13、,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。4.2 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当

14、前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度。图4.1 主程序流程4.3读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,检验有错时不进行温度数据的改写。其程序流程图如图4.2所示。发DS18B20复位命令发跳过ROM命令发读取温度命令 移入温度暂存器结束 图4.2 读出温度子程序流程图4.4 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。4.5计算温度子程序计算温度子程序将RAM值进行BCD码的转换运算,并进行温度值正负

15、的判定,其程序流程图如图4.3所示。开始温度零下?置“+”标志NY温度值取补码置“”标志计算小数位温度BCD计算整数位温度BCD结束图4.3 计算温度子程序流程图第5章 系统联调及操作说明对于此次的数字温度计设计,我们采用汇编语言来实现51单片机的运行,首先,根据设计所需,可以用伟福软件来编写汇编程序。编写完毕检查无误后,接下来便是原理图的绘制。首先运行Proteus ISIS软件,新建一个模板后,就可以开始绘制原理图工作。原理图的绘制过程如下:1将所需元器件加入到对象选择器窗口。单击选择菜单栏“库”选项下的“拾取元件/符号选项”,然后在弹出的“Pick device”对话框的“关键字”栏输入

16、要找的器件英文名称,如“AT89C51”,系统就会自动将搜索结果显示在“结果”栏中,如图1所示,单击选择“AT89C51”,再点“确定”即可。用类似的方法可将将电阻“RES” 、电容“CAP”、发光二极管“LED”、温度传感器“DS18B20”、晶振“CRYSTAL”和数码管组“7SEG-MPX4-CC”( 因为任务中要求显示两位温度值,故选用四个数码管的数码管组,其中两个用来显示摄氏度符号“”)添加到对象选择器窗口中。2放置元器件至图形编辑窗口。在对象选择器窗口中,选中AT89C51,在图形编辑窗口合适位置处点击鼠标左键,该对象被完成放置。用类似的方法可将将电阻RES 、排阻RESPACK-

17、8、电容CAP、发光二极管LED、温度传感器DS18B20、晶振CRYSTAL和数码管组7SEG-MPX4-CC。 电源和地可以在工作界面点击鼠标右键,选择“放置”选项下的“POWER”和“GROUND”。3元器件之间的连线Proteus具有线路自动路径功能(简称WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下到这个图标。由于本次设计所用到的器件较少,所有连线均采用手工连线方法。4导线标签的使用单击绘图工具栏中的导线标签“LBL”按钮,将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的

18、指针就会出现一个“”号,表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,在“标号”栏中,输入标签名称(如ds1),单击“确定”按钮,结束对该导线的标签标定。同理,可以标注其他导线的标签。由于本次设计所用到的器件和所需连线较少,因此未采用标签标注的方法。电路的核心是单片机AT89C51,单片机的P1口八个引脚分别对应接七段数码组的八个引脚,排阻RESPACK-8和电源完成P1口输出的上拉作用,P3口的P3.0P3.3分别控制对应的数码管,P3.4用来输入温度传感器DS18DS20的转化数据,P3.5口用来控制温度报警指示灯D1。该单片机系统采用12MHZ石英晶振和30pF的微调电容

19、构成的自激振荡器作为时钟电路,并采用简单的上电复位电路。 最后便可以实现联调,在protues软件里的源代码选项中点击添加源文件,把已编好的汇编语言添加进去。确定后就可以执行模拟的软硬件仿真。若仿真结果符合所需要求,那么就可以根据此原理图以及结合实际所需来制作数字温度计实物。 第6章 总结本次课程设计我们进行了两个课程设计:一是单片机的学习与应用;二是新器件的学习。这里主要叙述和第一个课设题目单片机的学习与应用相关的总结与体会。在课设过程中,我们不仅巩固了平时所学习的单片机知识,而且通过不断查阅相关资料,学习新的知识,可以说,通过这次单片机的实践学习,我们学到了很多,而且对单片机的有关知识以及

20、其在现实生活中的多方面应用有了更深层次的认识,这对于我们以后的学习和步入社会后参加工作都有很大的帮助。在此次课程设计的进程中,我们遇到了很多问题,例如,一开始我们在确定课设题目后,在编写程序时,由于思路不太清晰,而且设计要求中需要使用新器件DS18B20智能测温,而其相关知识我们很模糊甚至可以说一无所知,不过后来,我们通过查找一些相关的资料书以及寻求辅导老师的帮助,又经过我们的主动思考,理清思路,终于将程序修改正确。在仿真时,由于我们有了之前的数模电课设仿真经验,所以此时我们课设进行的很顺利,并没有受到什么大的阻碍。通过此次单片机课程设计,我们明白了很多,理论指导实践,但是理论也需要实践给予证

21、明,不能盲目的相信书本,凡事都要通过自己的思考推敲,否则自己不会取的大的进步。而且在平时的学习生活中应该多和周围的同学相互学习,交流经验,遇到不会的东西时,切忌焦躁,首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论,如果实在解释不了,再去找辅导老师,在这个遇到问题解决问题的过程中,不断加强自我的动脑能力,进而去指导动手能力,也只有这样,在思路清晰,条理顺畅的时候,再去进行软件编写和硬件操作工作,才有可能起到事半功倍的效果。参考文献1、王迎旭编.单片机原理与应用M.机械工业出版社.2004.2、楼然苗编.51系列单片机设计实例M.北京航空航天大学出版社.3、黄勤编

22、.计算机硬件技术基础实验教程M.重庆大学出版社.4、刘乐善编.微型计算机接口技术及应用M.华中科技大学出版社.5、陈光东编.单片微型计算机原理及接口技术M.华中科技大学出版社.附录A 系统硬件原理图附录B 程序清单DQ BITP3.0 ;从DS18B20向8051传送的数据端口FLAG BIT00HFLAG_NEGBIT01H ;温度正负值标志位TEMP_LEQU 30H ;所设报警最低值温度值TEMP_HEQU31H ;所设报警最高值温度值TEMP_INTEQU 32HTEMP_DPEQU 33HTEMP_100EQU34H ;TEMP_10EQU35HTEMP_1EQU36HC0BIT P

23、3.1 ;负温度标志位C1BIT P3.2 ;超过100 标志位C2BIT P3.3 ;超过10 标志位C3BIT P3.4 ;超过1 标志位C4BIT P3.5 ;超过0 标志位;*;*主函数*ORG 0000HLJMP STARTORG 1000HSTART:MOV SP,#60HMAIN: LCALL READ_TEMP ;调用函数读DS18B20所示温度 LCALL PROC_TEMP ;调用函数对温度进行处理 LJMP MAIN;*;*READ_TEMP:LCALL INI_DQJB FLAG,RE_0 RETRE_0:MOV A,#0CCHLCALL WRITE_DQ ;读出传感器

24、所示温度MOV A,#44HLCALL WRITE_DQLCALL DISP_LED;调用LED显示程序LCALL INI_DQMOV A,#0CCHLCALL WRITE_DQMOV A,#0BEHLCALL WRITE_DQLCALL READ_DQRET;*DS18B20初始化程序*INI_DQ:SETBDQNOP ;NOP ;空操作 PC值加2CLRDQMOV R1,#3INI_0: MOV R0,#80 DJNZ R0,$ DJNZ R1,INI_0SETB DQNOP ;NOP ;NOP ;空操作 PC值加3MOVR7,#25INI_1: JNB DQ,INI_2 ;DQ为0则转

25、DJNZ R7,INI_1 ;延时 LJMP INI_3INI_2: SETB FLAG ;标志位 LJMP INI_4INI_3: CLR FLAG LJMP INI_5INI_4: MOV R0,#80 DJNZ R0,$ ;时序要求延时一段时间INI_5: SETB DQ RET;*DS18B20写命令*WRITE_DQ:MOVR6,#8 CLR CTloop:CLRDQMOV R2,#6DJNZ R2,$RRCA;最低位移到C中MOV DQ,CMOV R2,#23DJNZ R2,$SETB DQNOPDJNZ R6,TloopSETB DQRET;*读DS18B20数据函数*READ_

26、DQ:MOV R5,#2MOV R0,#30HREAD_0:MOV R6,#8READ_1:CLRCSETB DQNOPNOPCLRDQNOPNOPNOPNOPSETBDQMOV R2,#9DJNZ R2,$MOV C,DQMOV R3,#23DJNZ R3,$RRCADJNZR6,READ_1MOV R0,AINC R0DJNZ R5,READ_0SETB DQRET;*温度数据处理程序*PROC_TEMP:CLR FLAG_NEGMOV A,TEMP_LSWAP A ; A中高低四位互换ORL A,#0F0HMOV TEMP_INT,AMOV A,TEMP_HSWAP AORL A,#0F

27、HANL TEMP_INT,AMOV A,TEMP_H CLR P3.6 CLR P3.7 JB ACC.7,BAOJING1 ;低于零度亮红灯报警;JBACC.7,NEGTIVEMOV A,TEMP_LANL A,#0FHMOV DPTR,#TAB3MOVC A,A+DPTRMOV TEMP_DP,ALJMP PRO_0;*报警函数*BAOJING1: SETB P3.6 RET;NEGTIVE: ;温度值为负时处理程序,按实际情况,处理过程比较复杂;SETB FLAG_NEG;MOV A,TEMP_L;CPL A;ANL A,#0FH;MOV R1,A;CJNE R1,#0FH,PRO_1

28、 ; ;低于0则调用报警函数;PUSH ACC;MOV A,TEMP_INT;SUBB A,#1;MOV TEMP_INT,A;POP ACC;MOV TEMP_DP,#00H ; LJMP PRO_2PRO_1: ADD A,#1MOV DPTR,#TAB3MOVC A,A+DPTRMOV TEMP_DP,APRO_2:MOV A,TEMP_INTCPL AMOV TEMP_INT,APRO_0:MOV A,TEMP_INT MOV B,#100DIV ABMOV TEMP_100,AMOV A,BMOV B,#10DIV ABMOV TEMP_10,AMOV TEMP_1,B RET;*L

29、ED初始化*CLR_LED:CLR C0CLR C1CLR C2CLR C3CLR C4RET;*LED显示*DISP_LED:LCALL CLR_LEDSETB C0JNB FLAG_NEG,DL_0MOV P1,#0BFH LCALL DELAY_10MSLJMP DL_1DL_0: MOV P1,#0FFHLCALL DELAY_10MSDL_1:LCALL CLR_LEDSETB C1 ;显示百位 MOV A,TEMP_100 MOV DPTR,#TAB4MOVC A,A+DPTRMOV P1,A CJNE A,#0F9H,CESHI LCALL BAOJING2 ;超过一百启动扬声器

30、报警 CESHI:LCALL DELAY_10MSLCALL CLR_LEDSETB C2 ;显示十位MOV A,TEMP_10MOV DPTR,#TAB4MOVC A,A+DPTRMOV P1,ALCALL DELAY_10MSLCALL CLR_LEDSETB C3MOV A,TEMP_1 ;显示 个位MOV DPTR,#TAB5MOVC A,A+DPTRMOV P1,ALCALL DELAY_10MSLCALL CLR_LEDSETB C4 ;显示小数点后的数MOV A,TEMP_DPMOV DPTR,#TAB4MOVC A,A+DPTRMOV P1,A RET;*BAOJING2: SETB P3.7 RET ;*延时函数*DELAY_10MS:MOV R3,#20DEL_1:MOV R4,#248DJNZ R4,$DJNZ R3,DEL_1RET;*小数位转换*TAB3:DB00H,01H,01H,02HDB02H,03H,04H,04HDB05H,06H,06H,07HDB07H,08H,09H,09H;*无小数点位的段码*TAB4:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;*有小数点*TAB5:DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10HEND

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号