基于单片机控制的数字温度计的设计_第1页
基于单片机控制的数字温度计的设计_第2页
基于单片机控制的数字温度计的设计_第3页
基于单片机控制的数字温度计的设计_第4页
基于单片机控制的数字温度计的设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录1引言12总体设计方案1 2.1设计思路 1 2.2总体设计框图13硬件分析设计2 3.1温度采集及转换电路的设计2 3.2显示电路的设计3 4软件设计分析4 41主程序4 4.2读出温度子程序 5 4.3温度转换命令子程序 54.4计算温度子程序54.5显示数据刷新子程序75总结与体会 8参考文献 8附录 9数字温度计的设计摘要:该系统主电路采用89s51单片机实现温度控制,经温度传感器采集温度,电路可实现温度的显示,可实现基本温度计功能。另外可设置设置上下限温度,超出范围报警以及和pc机通信的功能。系统测量精度和控制精度良好。关键词:数字显示 温度计 1 引言随着科技的发展,单片机的

2、应用越来越广泛,基本已经深入到人民生活的各个领域。在生活中温度计也已成为生活必需品,鉴于此,特别介绍一种数字式温度计。众所周知,温度是一种模拟信号,要做到数字显示。自然要用到模数转换。该系统主电路采用89s51单片机实现温度控制,采用数字式温度传感器为检测器件,进行单点温度检测。通过模数转换功能,采用数码管直接显示温度值,方便快捷的实现温度显示。检测范围广,温度转换精度比较精确。为人们的生活提供方便。2 总体设计方案2.1 设计思路温度是一种典型的模拟信号,用数字电路来进行检测就必须将这一非电量先变成电(电压或电流),然后将模拟电信号经a/d电路变换成数字信号,经译码显示而得到对应的数字。要实

3、现数字温度计的基本功能,大致可分为四大基本模块。即单片机最小系统模块,温度采集模块,模数转换模块及数字显示模块。2.2 设计方框图单片机最小系统温度采集数字显示模数转换图1总体设计框图3 硬件设计分析3.1 温度采集及转换电路的设计考虑到数字温度计要用到温度采集及模数转换模块。而ds18b20芯片能够实现完整的温度采集及模数转换功能。在此特选用此芯片。由dallas半导体公司生产的ds18b20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。 ds18b20的性能

4、特点:采用单总线专用技术,既可通过串行口线,也可通过其它i/o口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),测温范围为-55-+125,测量分辨率为0.0625,内含64位经过激光修正的只读存储器rom,适配各种单片机或系统机,用户可分别设定各路温度的上、下限,内含寄生电源。 ds18b20内部结构主要由四部分组成:64位光刻rom,温度传感器,非挥发的温度报警触发器th和tl,高速暂存器。64位光刻rom是出厂前被光刻好的,它可以看作是该ds18b20的地址序列号。64位rom结构图如图3所示。不同的器件地址序列号不同。ds18b20的管脚排列如图2所示

5、。lsbmsb8位检验crc 48位序列号 8位工厂代码(10h)图2ds18b20引脚分布图 图3 64位rom结构图ds18b20高速暂存器共9个存储单元,如表1所示:以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18b20的两个高低两个8位的ram中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。ds18b20有六条控制命令,如表2所示:表1存储单元序号 寄存器名称 作 用 序号 寄存器名称 作 用

6、0 温度低字节 以16位补码形式存放 4 配置寄存器 1 温度高字节 5、6、7 保留 2 th/用户字节1 存放温度上限 8 crc 3 hl/用户字节2 存放温度下限 表2控制指令指 令 约定代码 操 作 说 明 温度转换 44h 启动ds18b20进行温度转换 读暂存器 beh 读暂存器9个字节内容 写暂存器 4eh 将数据写入暂存器的th、tl字节 复制暂存器 48h 把暂存器的th、tl字节写到e2ram中 重新调e2ram b8h 把e2ram中的th、tl字节写到暂存器th、tl字节 读电源供电方式 b4h 启动ds18b20发送电源供电方式的信号给主cpu 3.2 显示电路的设

7、计显示电路可以采用串行口通信也可以采用并行口通信,在此采用并行通信方式。选用驱动芯片74ls245来驱动四位led数码管显示温度。数码管采用共阳数码管。需要接上拉电阻。设计电路图见图4.图4显示电路设计图74ls245是我们常用的芯片,用来驱动led或者其他的设备,他是8路同相三态双向总线收发器,可双向传输数据。74ls245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的p0口总线负载达到或超过p0最大负载能力时,必须接入74ls245等总线驱动器。当片选端/ce低电平有效时,dir=“0”,信号由 b 向 a 传输;(接收)dir=“1”,信号由 a 向 b 传输;(发送

8、)当/ce为高电平时,a、b均为高阻态。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(com)的数码管。共阳数码管在应用时应将公共极com接到+5v,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(com)的数码管。共阴数码管在应用时应将公共极com接到地线gnd上

9、,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的i/o端口进行驱动,或者使用如bcd码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用i/o端口多,如驱动5个数码管静态显示则需要5840根i/o端口来驱动,要知道一个89s51单片机可用的i/o端口才32个呢:),实际应用时必须增加译码驱动器

10、进行驱动,增加了硬件电路的复杂性。动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数

11、码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。4 软件设计分析系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。4.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量温度值,温度测量每1s进行一次,其程序流程图如图5所示。初始化调用显示子程序1s到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令nyny图

12、5 主程序流程图4.2 读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需要进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图6所示。4.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图7所示。4.4 计算温度子程序计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其流程图如图8所示。y发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验9字节完?crc校验正?确?移入

13、温度暂存器结束nny图6 读出温度子程序流程图发ds18b20复位命令发跳过rom命令发温度转换开始命令 结束图7 温度转换命令子程序流程图4.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位为时将符号显示位移入下一位。程序流程图如图9所示。 开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny图8计算温度流程图温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束nnyy图9显示数据刷新流程图 5 总结与体会通过这次课程设计使我学到了更多的单片机

14、知识,了解到单片机应用领域的广泛。单片机的应用早已深入到人民的日常生活中。增强了对单片机的兴趣。同时,在课程设计环节中也面临的许多问题。硬件装焊方面要有足够的耐心和细心,就算电路设计的再好,在焊接时出一点小差错,也是不允许的,往往电路的错误都是由于一些小问题引起的,如短路等,将造成不可预测的后果。软件方面也是一样,做课程设计就要用足够的耐心和信心。参考文献1 张鑫、华臻、陈书谦_单片机原理及应用m电子工业出版社,20052 马家辰_mcs-51单片机原理及接口技术m哈尔滨工业大学出版社,19863 刘建清_从零开始学单片机技术m国防工业出版社,20064 马淑华_单片机原理与接口技术m北京邮电

15、大学出版社,20045康华光.模拟电子技术基础. 北京:高等教育出版社,20066康华光.数字电子技术基础.北京:高等教育出版社,2006附录13 附录temper_l equ 40h ;temper_h equ 41h ;flag1 equ 38h ;templ equ 30h ;temph equ 31h ;temphc equ 32h ;templc equ 33h ;buf1 equ 34h ;buf2 equ 35h ;buf3 equ 36h ;buf4 equ 37h ;tempdin bit p3.4 ;din bit p0.7 ; org 0000h ; ajmp main

16、; org 0003h ; db 00h,00h,00h,00h,00h,00h,00h; reti ; org 000bh ; db 00h,00h,00h,00h,00h,00h,00h ; reti ; org 0013h ; db 00h,00h,00h,00h,00h,00h,00h ; reti ; org 001bh ; db 00h,00h,00h,00h,00h,00h,00h ; reti ; org 0023h ; db 00h,00h,00h,00h,00h,00h,00h ; reti ;main: mov sp, #50h ; mov p0, #0ffh ;lpte

17、mp: lcall get_temper ; lcall convtemp ; lcall dispbcd ; cpl p3.5 ; ajmp lptemp ; lcall display ; cpl p3.5 ; ajmp lptemp ;init_1820: setb tempdin nop clr tempdin ; mov r1,#3h tsr1: mov r0,#107 djnz r0,$ djnz r1,tsr1 setb tempdin ; nop nop nop mov r0,#25h ;tsr2: jnb tempdin,tsr3 ; djnz r0,tsr2 ljmp ts

18、r4 ;tsr3: setb flag1 ; clr p3.7 ; ljmp tsr5tsr4: clr flag1 ; clr p3.2 ljmp tsr7tsr5: mov r0,#117tsr6: djnz r0,tsr6 ;tsr7: setb tempdin ; retget_temper: setb tempdin ; lcall init_1820 ; jb flag1,tss2 ret ;tss2: clr p3.0 ; mov a,#0cch ; lcall write_1820 mov a,#44h ; lcall write_1820 lcall display ; lc

19、all init_1820 ; mov a,#0cch ; lcall write_1820 mov a,#0beh ; lcall write_1820 lcall read_18200 ; retwrite_1820: mov r2,#8 ; clr c ; setb tempdin ; nop ; nop ;wr1: clr tempdin ; mov r3,#6 ; djnz r3,$ rrc a ; mov tempdin,c ; mov r3,#23 ; djnz r3,$ setb tempdin ; nop djnz r2,wr1 ; setb tempdin ; retcon

20、vtemp: mov a,temph ; anl a,#80h ; jz tempc1 ; clr c ; mov a,templ ; cpl a add a,#01h ; mov templ,a ; mov a, temph ; cpl a ; addc a,#00h ; mov temph,a ; mov temphc,#0bh ; sjmp tempc11 ;tempc1: mov temphc,#0ah ; tempc11: mov a,temphc ; swap a mov temphc,a ; mov a,templ ; anl a,#0fh ; mov dptr,#tempdot

21、tab ; movc a,a+dptr ; mov templc,a ; mov a,templ ; anl a,#0f0h ; swap a ; mov templ,a ; mov a,temph ; anl a,#0fh ; swap a ; orl a,templ ; mov temper_l ,a ; lcall hex2bcd1 ; mov templ,a ; anl a,#0f0h ; swap a ; orl a,temphc ; mov temphc,a ; mov a,templ ; anl a,#0fh ; swap a ; orl a,templc ; mov templ

22、c,a ; mov a,r7 ; jz tempout ; anl a,#0fh ; swap a ; mov r7,a ; mov a,temphc ; anl a,#0fh ; orl a,r7 ; mov temphc,a ;tempout: ret ;tempdottab: db 00h,01h,01h,02h,03h,03h,04h,04h,05h,06h db 06h,07h,08h,08h,09h,09h ;dispbcd: mov a,templc ; anl a,#0fh ; mov buf1,a ; mov a,templc ; swap a ; anl a,#0fh ;

23、mov buf2,a ; mov a,temphc ; anl a,#0fh ; mov buf3,a ; mov a,temphc ; swap a ; anl a,#0fh ; mov buf4,a ; mov a,temphc ; anl a,#0f0h ; cjne a,#10h,dispbcd0 ; sjmp dispout ;dispbcd0: mov a,temphc ; anl a,#0fh ; jnz dispout ; mov a,temphc ; swap a ; anl a,#0fh ; mov buf4,0ah ; mov buf3,a ; dispout: ret

24、;hex2bcd1:mov b,#64h ; div ab ; mov r7,a ; mov a,#0ah ; xch a,b ; div ab ; swap a ; orl a,b ; ret ;crc8cal: push acc ; mov r7,#08h ; crc8loop1: xrl a,b ; rrc a ; mov a,b ; jnc crc8loop2 ; xrl a,#18h ; crc8loop2: rrc a ; mov b,a ; pop acc ; rr a ; push acc ; djnz r7,crc8loop1 ; pop acc ; ret ;read_18200: mov r4,#9 ; mov r1,#temper_l ; mov b, #00h ;re00: mov r2,#8 ; re01: clr c setb tempdin ; nop nop clr tempdin ; nop nop nop setb tempdin ; m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论