1、 2008 届毕业设计(说明书)题目: 数字温度计的设计 班 级:08高职机电二班 学 号:012243552274 姓 名: 1235 指导教师: 55464 2011年4月39数字温度计的设计学生姓名: 4 学 号:4 专 业:机电一体化技术 班 级:4 指导教师: 4 完成日期: 4 摘 要在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成AD转换器能接收的模拟量,再经过采样保持电路进行AD转换,最终送入单片机及其相应的外围电路,完成监控。但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。本文介绍单片机结合DS18B20温度
2、控制系统设计,因此,本系统用一种新型的可编程温度传感器(DS18B20),不需复杂的信号调理电路和AD转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。关键词:单片机,AT89S51,MAX232,传感器DS18B20目 录摘 要I第一章 绪论1 1.1 单片机概述1 1.2 选题背景及设计意义2 1.3设计方案论证3第二章 硬件设计5 2.1硬件电路的设计5 2.2各元器件介绍12第三章 系统软件设计17 3.1设计流程图17 3.2汇编语言程序21第四章 调 试34 4.1终合调试34致 谢36参考文献37附录38第一章 绪论1.1 单片机概述单片机的
3、结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的单片微型计算机。一台典型的单片机的基本组成结构包括中央处理器(CPU),存储器(ROM和RAM),并行I/O口,串行I/O口,定时器/计数器,定时电路及元件。由此可见,单片机在结构上突破了常规的按逻辑功能划分芯片。由多片构成了微型计算机的设计思想,将构成计算机的许多功能集成在一块晶体芯片上。单片机的特点:1 单片机中的存储器ROM和RAM是严格分工的。ROM为程序存储器,只存放程序、常数及数据表格。而RAM则为数据存储器,用作工作区及存放变量。这样的结构主要是考虑到单片机用于控制系统中,有较大的程序存储空间,把已调试好的程
4、序固化在ROM中,而把少量的随机数据存放在RAM中,这样,小容量数据存储器能以高速RAM形式集成在单片机内,以加快单片机的执行速度。但单片机上RAM是作为数据存储器用,而不是当作高速数据缓冲存储器(Cache)用。可靠性良好:单片机是按照工业控制要求设计的,其抗工业噪声干扰优于一般的 CPU,程序指令及常数数据都烧在ROM内,其许多信号通道均在同一芯片内,因此可靠性较高。2 采用面向控制的指令系统。为满足控制的需要,单片机的逻辑控制能力要优于同等级的CPU,持别是单片机具有很强的位处理能力。单片机的运行速度也较高。3 单片机的I/O引脚通常是多功能的。由于单片机芯片上引脚数有限,了解决实际引脚
5、数和需要的信号线数的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。4 系列齐全,功能扩展性强。单片机有内部掩膜ROM、内部EPROM和外接ROM等形式,并可方便地扩展外部的ROM、RAM及I/O接口,与许多通用的微机接口芯片兼容,对应用系统的设计和生产带来极大的方便。5 单片机的功能是通用的。单片机虽然主要作控制器用,但是功能上还是通用的,可 以象一般微处理器那样广泛应用在各个方面。单片机的应用领域如下:1 家用电器领域:目前国内各种家用电器已普遍采用单片机控制取代传统的控制电路,做成单片机控制系统。2 办公自动化领域:现代办公室所使用的大量通信,信息产品
6、多数采用了单片机。3 在商业营销系统已广泛使用的电子秤,收款机,条形码阅读器,仓库安全监控系统,商场保安系统,空气调节系统等,目前已纷纷采用单片机构成专用系统。4 工业自动化:如工业过程控制,过程监测,工业控制器及机电一体化系统等,这些系统除一些小型工控机之外,许多都是以单片机为核心的单机或多机网络系统。5 智能仪表与集成智能传感器传统的控制电路:目前各种变送器,电气测量仪表普遍采用单片机应用系统替代传统的测量系统,使测量系统具有各种智能化功能。将单片机和传感器相结合可以构成新一代的智能传感器。他将传感器初级变换后的电量做进一步的变换,处理,输出能满足远距离传送,能与微机接口的数字信号。6 汽
7、车电子与航空航天电子系统:通常在这些电子系统中的集中显示系统,动力监测控制系统,自动驾驭系统,通信系统,以及运行监视器(黑匣子)等,都要都成冗余的网络系统。1.2 选题背景及设计意义一、选题背景最早的温度计是在1593年由意大利科学家伽利略发明的。他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。使用时先给玻璃泡加热,然后把玻璃管插入水中。随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。荷兰人华伦海特在1709年利用酒精,在1714年又利用水银作为测量物质,制造了更精确的
8、温度计。把一定浓度的盐水凝固时的温度定为0,把纯水凝固时的温度定为32,把标准大气压下水沸腾的温度定为212,用代表华氏温度,这就是华氏温度计。 二、设计意义本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。它具有结构简单,不需外接元件,采用一根I/ O 数据线既可供电又可传输数据、并可由用户设置温度报警界限等特点,可广泛用于食品库、冷库、粮库等需要控制温度的地方。该设计控制器使用单片机AT 89S51,测温传感器使用DS18B20,,实现温度显示,能准确达到以下要求:测温范围-55125 精
9、度误差小于0.5。LED数码管直读显示 可以任意设置温度的上下限报警功能。1.3设计方案论证方案一:本电路是温度计的设计,在测温电路中利用热敏电阻器件的感温效应,将随被测温变化的电压或电流采集过来,进行A/D转换后,用单片机进行数据处理,经显示电路就可以显示出来。方案二:在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。方案三:基于单片机的温度传感器设计的数字温度计已经很成熟,各种精度很高的温度计不断推出。数字温度计要求检测的精度必须高于控
10、制的精确度,否则无从实现控制的精度要求。所以精度已经成为数字温度计的一项重要的性能参数。因此追求高精度是数字温度计的一个目标。不仅如此,检测还涉及国计民生各个部门,可以说在所以科学技术领域无时不在进行检测。科学技术的发展和检测技术的发展是密切相关的。现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。目前市场上出现了很多传感器,很多精度高的传感器已经出现,而且精度越来越高。数字温度计未来将会更精确、更人性化,为我们做出更多贡献。为此我们选择方案三的设计,框图如下:图1-1 时钟结
11、构图LED显示主控制器温 度传感单片机复位报警点按键时钟振荡 温度计电路设计总体设计方框图如图所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用四位LED数码管以串行口传送数据实现温度显示。第二章 硬件设计2.1硬件电路的设计图2-1 硬件电路设计图本设计系统共由四部分组成: AT89S51为控制装置,负责各部分的控制和数据采集。 DB9和MAX232组成了通讯系统,负责和上位机通讯的TTL/RS232电平转换。 DS18B20为温度测量装置,负责对温度进行采集并转换为数字信号送AT89S51进行处理。 共阳极数码管为显示装置,负责显示工作状态和DS18B20 采集到的数据
12、。注:LED数码管驱动电路中采用P0 口加上拉电阻的形式,为方便焊接,本设计中电阻使用了排阻的方式,三极管使用的是S9012.1、时钟电路时钟电路可以简单定义如下:1.就是产生象时钟一样准确的振荡电路。 2.任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在AT89S51单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一
13、个稳定的自激振荡器。在AT89s51芯片内部有一个高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。在单片机的XTAL1脚和XTAL2脚之间并接一个晶体振荡器就构成了内部振荡方式。AT89S51单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。在实际应用中通常还需要在晶振的两端和地之间各并上一个小电容。AT89S51的时钟电路如图2.2所示:图中,电容器C1、C2常称为微调电容,其作用有三个:图2
14、-2 AT89S51的时钟电路快速起振、稳定振荡频率、微调振荡频率。AT89S51单片机允许外接033M Hz的晶振,电容器C1、C2可取5pF33pF。一般情况下,使用频率较低的晶振时,C1、C2的容量可选大一点。为了更好地保证振荡器稳定可靠地工作,在实际装配电路时,晶振X和电容C1、C2应尽可能地安装在XTAL1、XTAL2引脚附近。内部振荡方式所得到时钟信号比较稳定,在实际电路中,一般是选用内部振荡方式。用晶振和电容构成谐振电路。电容大小与晶振频率和工作电压有关。但电容的大小影响振荡器的稳定性和起振的快速性,为了提高精度,本实验板采用30pF的电容作为微调电容。在设计电路板时,晶振、电容
15、等均应尽可能靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。2、复位电路复位的功能:复位是单片机的初始化操作,其目的是使CPU和系统中各部分处于一个确定的状态,并从这一状态开始工作。系统上电路或死机后都要进行复位操作。单片机复位时,将程序计数器PC初始化为0000H,表明复位后程序从0000H地址单元开始执行,同时复位时输出控制信号ALE,PSEN均为高电平。复位后,P0P3口输出高电平,且使准双向口均处于输入状态。复位不改变片内RAM单元的内容,但使各特殊功能寄存器SFR回复到初始状态,复位后各特殊功能寄存器值如表26所示:表26 主要特殊功能寄存器复位初始值特殊功能寄存器 初始值特殊功能
16、寄存器初始值ACC00HTCON00HB00HTMOD00HPSW00HTL000HSP07HTH000HDPTR0000HTL100HP0P3FFHTH100HPCON0XXX 0000BT2CON00HAUXRXXX0 0XX0BT2MODXXXX XX00BAUXR1XXXX XXX0BRCAP2L00HIE0X00 0000BRCAP2H00HIPXX00 0000BTL200HSCON00HTH200HSBUFXXXX XXXXXBWDTRSTXXXX XXXXB表26中部分符号的含义如下:PSW=00H:表明复位后自动选择第0组工作寄存器组为当前工作寄存器组SP=07H:表明堆栈指
17、针指向片内RAM07H单元,堆栈的压入操作为先加后压,所以第一个被压入的数据存放在08H单元中P0P3=FFH:表明各端口写入1,此时各端口既可作输入口,也可以作输出口AUXR=XXX0 0XX0:表明ALE引脚在CPU不访问外部存储器期间有脉冲信号输出AUXR1=XXXX XXX0:表明选择DPTR0作数据指针IE=00H:表明各中断均关闭TCON=00H:表明T0,T1 均被停止SCON=00H:表明串口处于方式0,允许发送,不允许接收PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,单片机处于正常工作方式。单片机的RST引脚为复位引脚,振荡电路正常工作后,RST端加
18、上持续两个机器周期的高电平后,单片机就被复位。复位电路有3种基本方式:上电复位,开关复位和看门狗复位。这里只介绍上电复位和开关复位。(1) 上电复位上电复位的含义:计算机在接通电源的时候会进行一系列的初始化操作,包括测试内存,向内存导入BIOS数据,初始化寄存器,初始化各个硬件等等,统称上电复位。所谓上电复位就是单片机只要一上电就自动实现复位操作。常用的上电复位电路如图1所示 图2-3 单片机上电复位电路图 (a) (b)图a、图b所示电路在本质上是一样,它们都是RC微分复位电路。由于单片机的RST端对地存在一个等效电阻R,图a中的微分电阻为R1与R的并联电阻,图b中的微分电阻取至RST端的等
19、效电阻R。上电时,电源通过微分电阻对电容充电,由于电容两端电压不能突变,所以RST端出现一个正脉冲。过一段时间后,电容两端电荷充满,电容等效为开路,于是RST端所加电压为低电平,单片机完成复位。从图中可以看出,RST端高电平持续时间取于RC电路的充电时间常数。合理选择C1和R1就可以实现上电复位。由于上电后,振荡电路起振要经历一个振荡建立时间,不同频率的振荡器,起振荡建立时间不同,所以不同振荡频率下,上述上电复位电路的参数不同。通常要求上电时RST复位高电平能持续10ms以上,R、C的取值一般为:C1=1030F,R1=1K10K当晶振频率为6MHz时,可取R1=1 K,C1=22F晶振频率为
20、12MHz时,可取C1=10F,R1=8.2 K(2)开关复位开关复位是指通过接通按钮开关,使单片机进入复位状态。开关复位电路一般不单独使用。在应用系统设计中,若需使用开关复位电路,一般的做法是将开关复位与上电复位组合在一起形成组合复位电路,上电复位电路完成上电复位功能,开关复位电路完成人工复位。这种组合复位电路如图2所示图2.3-单片机组合复位电路图单片机组合复位电路:图中C1,R1构成了上电复位电路。上电复位后,电源经R1对C1充满电源,C1等效于开路,RST端为低电平;单片机正常工作。按开关K后,C1两端电荷经R2迅速放电,K断开后,由C1、R1及电源完成对单片机的复位操作。在上述电路中
21、,R2的取值一般为0200,C1、R1按上电复位电路的设计而取值。 复位电路的作用非常重要,能否成功复位关系但单片机系统能否正常运行的问题。如果振荡电路正常而单片机系统不能正常运行,其主要原因是单片机没有完成正常复位,程序计数器的值没有回0,特殊功能寄存器没有回到初始状态。这时可以适当地调整上电复位电路的阻容值,增加其充电时间常数来解决问题。本文采用上电复位电路。3、LED数码管显示电路单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结
22、构:段显示(7段、米字型等)和点阵显示(58、88点阵等)。 (1)静态显示方式LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。(2)动态显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选
23、,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 图2-4 七段LED显示器使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。用共阴LED显示器显示16进制数的编码已列在下表。共阴数码管码表v 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,v 0 1 2 3 4 5v 0x7d , 0x07 , 0x7f , 0x6f , 0x7
24、7 , 0x7c ,v 6 7 8 9 A Bv 0x39 , 0x5e , 0x79 , 0x71 , 0x00v C D E F 无显示2.2各元器件介绍AT89S51 AT89S51 是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能 CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造计术制造,与工业标准的 MCS-51指令集和输出管脚相兼容,并有ISP管脚,只需要将单片机的ISP引脚接入专用的下载线上就可以编程。由于将多功能8位CPU和闪烁存储器组合在这个芯片中,ATMEL的 AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图
25、2-5 AT89S51AT89S51图如下: (1)主要特性:8031 CPU与MCS-51兼容4K字节可编程FLASH存储器(寿命:1000写/擦循环) 全静态工作:0Hz-24KHz三级程序存储器保密锁定128*8位内部RAM32条可编程I/O线两个16位定时/器计数器6个中断源可编程串行通道低功耗的闲置和调电模式VCC:供电电压 GND:接地 (2) 各引脚及功能说明P0口:P0口为一个8位漏极开路双向I/O口。P0口能用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FALSH进行校验时,P0口输出原码,此时P0口外部必须被拉高。P1
26、口:P1口是 一个内部提供上拉电阻的8位双向I/O口。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流。在FALSH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口。当P2口被写入“1”时,其管脚被内部上拉电阻拉高,且作为输入。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口。当P3口写入“1”后,它们被内部上拉为高电平并用作输入。 P3口:除作I/O口使用外,还有
27、特殊功能如图所示P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(计时器0外部输入)P3.5T1(计时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为编程和校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FALSH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6.
28、因此它可用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出可在SFR8EH地址上置0.此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该指令被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有校。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器,注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器
29、。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入XTAL2:来自反向振荡器的输出ISP:在线编程引脚P1.5、P1.6、P1.7、RST四个引脚可以作为在系统编程引脚(3)振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动件,XTAL2应不接。其余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证,脉冲的高低电平要求的宽度。MAX232:MAX232是一种双组驱动器接收器,片内含有一个电容
30、性电压发生器以便在单5V电源供电时提供EIA/TIA-232-E电平,每个接收器将EIA/TIA-232-E 电平输入转换为5 V TTL/CMOS电平。这些接收器具有1.3 V的典型门限及0.5V的典型迟滞,而且可以接收30的输入,每个驱动器将TTL/CMOS输入电平转换为 EIA/TIA-232-E电平,其主要特点为:单5V电源工作LinBiCMOSTM工艺技术两个驱动器及两个接收器30V输入电平低电源电流:典型值是8mA符合ANSI标准EIA/TIA-232-E及ITU推荐标准 V.28 ESD保护大于MIL-STD-883 标准的2000VDS18B20: DS18B20基本知识DS1
31、8B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点:(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在55。C到125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。DS18B20的引脚介绍TO92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。 表1
32、DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。第三章 系统软件设计3.1设计流程图开始设备初始化PC发送工作指令开始工作(测温、显示)PC发送命令按照命令执行操作PC发停机命令NYNYNY图3-1 系统工作流程图开始是否中断是否命令字符停机命令非停机命令为发送数据命令发送温度数据结束结束结束写入ROM关中断,能标志归0错误,发送,E开中断,使能标志置1YYYYYN,发中断N,发数据N,停机NN图3-2 串行口中断流程开始初值
33、重装从18B20读温度并存储到RAM发送高温警报到PC发送低温警报到PC对读取数据进行处理DS18B20存在低于报警高温线结束高于报警低温线YYYNYN图3-3 T0口中断流程图开始DS18B20复位程序发温度转化指令并做750cm延迟复位DS18B20发送取温度数据命令读取温度数据清DS18B20存在标志位,数码显示管000.F,跳出程序DS18B20存在标志位为1结束YN图3-4 CET_TEMPER 子程序流程图3.2汇编语言程序;*;* 汇编语言程序 *;*ENABLE EQU 00HDTSIGN EQU 01HSDSIGN EQU 02HHAVE EQU 03HPSHU EQU 04
34、HLED0 EQU P0.0LED1 EQU P0.1LED2 EQU P0.2LED3 EQU P0.3WR1820 EQU P1.1SEG EQU P2WARNH0 EQU 31HWARNH1 EQU 32HTEMP0 EQU 34HTEMP1 EQU 35HDIS0 EQU 36HDIS1 EQU 37HDIS2 EQU 38HDIS3 EQU 39HSDAT EQU DWORK EQU WPAUSE EQU PERR EQU EORG 0000HAJMP MAINORG 000BHAJMP T0INTORG 0023HAJMP S_INT;*;* 主程序 *;*ORG 0030HMAI
35、N: MOV SP,#40H ; 堆栈栈底放50HMOV WARNH0,#30HMOV WARNH1,#00CALL T0INIT ;初始化T0CALL T1INIT ;初始化T1CALL SINIT ;初始化串口CLR ENABLE ;清使能标志CLR DTSIGN ;清数据标志JNB ENABLE,$ ;查询使能,无效则停机LCALL INT_ENLOOP: CALL DISPLY ;调用显示子程序JNB ENABLE,$ ;查询使能,无效则停机AJMP LOOP;T0初始化T0INIT:ORL TMOD,#01HANL TMOD,#0F1H MOV TH0,#3CH MOV TL0,#0
36、B0H MOV R7,#15H ;软件记数初值RET;T1初始化T1INIT:ORL TMOD,#20HANL TMOD,#02FHMOV TH1,#0FDHMOV TL0,#0FDHCLR ET1 ; 关T1中断SETBTR1 ; T1开始计数RET;串口初始化SINIT: ANL PCON,#7FHMOV SCON,#50HSETBEA ; 开全局中断SETB ES ; 开串口中断RET;开中断子程序INT_EN: SETB ET0 ;开T0中断SETB TR0RET ;T0开始计数;关中断子程序INT_DS: CLR ET0 ;关T0中断CLR TR0 ;T0停止计数RET;*;* 显示
37、子程序 *;*DISPLY: PUSH ACC ;保护现场PUSH 06HMOV A,TEMP1 ;温度整数部分送AMOV B,#100HDIV AB ;相除取百位MOV DIS3,A ;百位送DIS3MOV A, B ; 余数送 AMOV B,#10DIV AB ; 相除取十位MOV DIS2,A ;十位送DIS2MOV DIS1,B ;个位送DIS1MOV DIS0,TEMP0 ;小数部分送DIS0MOV DPTR,#ZIXING ;送字型码首地址MOV A,DIS0 ;取小数MOVC A,A+DPTR ;取对应字型码SETB LED0SETB LED1SETB LED2SETB LED3
38、CLR LED0MOV SEG, A ;送字型码CALL DELAY0MOV A,DIS1 ;取各位MOVC A,A+DPTR ;取对应字型码CLR ACC.7 ;清最高位显示小数点SETB LED0SETB LED1SETB LED2SETB LED3CLR LED1MOV SEG, A ;送字型码CALL DELAY0MOV A, DIS2 ;取十位MOVC A,A+DPTR ;取对应字型码SETB LED0SETB LED1SETB LED2SETB LED3CLR LED2MOV SEG,A ;送字型码CALL DELAY0MOV A,DIS3 ;取百位JNB FSHU,ZHENG ;判断是否为正数MOV A,#16 ;如果不是正数送- ZHENG: MOVC A,A+DPTR ;取对应字型码SETB LED0SETB LED1SETB LED2SETB LED3CLR LED3MOV SEG, A ;送字型码CALL DELAY0OUTD