为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

智能温度计

2011-06-22 24页 doc 485KB 47阅读

用户头像

is_533652

暂无简介

举报
智能温度计智能温度计设计 数理与信息工程学院 课 程 设 计 题 目: 智能温度计 专 业: 计算机科学与技术(专升本) 班 级: 计算机056班 姓 名: 陈婷婷 学号: 05191104 成 绩: 2006.6 目 录 一 引言 …………………………………………………………………………(1) 二 智能温度计的基本组成方框……………………………………………… (1) 三 系统硬件组成…………………… …………………………………………(2) (1)​ 温度传感器AD590及其应用 ………………………………………(2) (2)​ 放大器…...
智能温度计
智能温度计 数理与信息工程学院 课 程 设 计 目: 智能温度计 专 业: 计算机科学与技术(专升本) 班 级: 计算机056班 姓 名: 陈婷婷 学号: 05191104 成 绩: 2006.6 目 录 一 引言 …………………………………………………………………………(1) 二 智能温度计的基本组成方框……………………………………………… (1) 三 系统硬件组成…………………… …………………………………………(2) (1)​ 温度传感器AD590及其应用 ………………………………………(2) (2)​ 放大器…………………………………………………………………(3) (3)​ A/D转换器MC1443 …………………………………………………(3) (4)​ LED显示器……………………………………………………………(4) (5)​ 系统核心单片机部分闪电存储器型器件AT89C51…………………(5) (6)​ 其它……………………………………………………………………(10) 四 智能温度计的流程图 ………………………………………………………(10) 五 系统主程序 …………………………………………………………………(12) 六 总结和体会……………………………………………………………………(22) 七 参考文献 ……………………………………………………………………(23) 智能温度计设计 数理与信息工程学院 05计算机专升本 陈婷婷 [摘要] 本叙述了应用单片机AT89C51构成的智能温度计主要的功能、硬件的组成和软件的设计。该系统的功能是通过温度传感器对温度进行采集,然后通过A/D转换器MC14433进行模数转换,传给单片机进行处理,从而实现温度的实时显示。整个系统结构紧凑、简单可靠、操作灵活、功能强、性能价格比高,较好地满足了现代农业生产和科研的需要。 [关键词] 单片机 温度传感器 A/D转换器 实时显示 一、引言 单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。而现在单片机在农业上也有了很多的应用。 温度是日常生活、工业、医学、环境保护、化工、石油等领域最常遇到的一个物理量。测量温度的基本是使用温度计直接读取温度。最常见到的测量温度的工具是各种各样的温度计,例如,水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,又直观准确。 二、智能温度计的基本组成方框 图1—1是智能温度计的基本组成方框。主要由温度传感器,放大器,A/D转换器,单片机控制,LED显示器,电源等组成。温度传感器是把温度转换成电压(或电流)的器件,温度传感器输出电压的大小随温度的高低变化而变化,电压值的变化范围从几个微伏到几个毫伏。不同的温度传感器,输出电压的范围也差别很大。放大器的主要功能是把微弱的温度电压信号放大到(0—2)伏或(0—5)伏的范围内,以便进行A/D转换。A/D转换器把放大后的模拟温度电压信号转换成对应的数字温度电压信号。单片机8051是智能温度计的控制核心,一方面控制A/D转换器实现模拟信号到数字信号的转换,另一方面将采集到的数字温度电压值,经过计算处理,得到相应的温度值,送到LED显示器以数字形式显示测量的温度。LED显示器用于显示测量温度的结果。 图1—1 智能温度计方框图 三、系统硬件组成 图1—2 测量摄氏(℃)温度的电路原理。 假定 :温度测量范围:0——150℃。摄氏(℃) 温度数字显示: 000.0 或112.8等,十进制小数点后一位。 (一)、温度传感器AD590及其应用 AD590是美国模拟器件公司生产的单片集成两端感温电流源。它的主要特性如下: (1) 流过器件电流的微安数等于器件所处环境温度的热力学温度(开尔文)度数。即 IT/T=1µA/K 式中的IT为流过器件(AD590)的电流,单位µA,T为温度,单位为K。 (2)AD590的测温范围为-55 ℃ -+150 ℃。 (3) AD590的电源电压范围为4V~30V。电源电压从4V到6V变化,电流IT变化1µA,相当于温度变化1K。AD590可以承受44V正相电压和20 V反相电压。因而器件反接也不会损坏器件。 (4) 输出电阻为710MΩ。 (5) 精度高。 AD590在出厂以前已经校对,精度高。因为流过AD590的电流于热力学温度成正比,如两个电阻之和为1K,温度变化1°C,那么输出电压Vo变化为1mV/K。但由于AD590 的增益有偏差,电阻也有误差,调整的方法与对P-N结温度传感器调整的方法相同。即,把AD590放于冰水混合物中,调整电位器,使Vo=273.2mV。或在室温下,例如25℃条件下调整电位器使Vo=273.2+25=298.2(mV)。但这样调整只可以保证0 ℃或25 ℃附近有较高精度。 图中用电位器R1调零点,用R2调增益,方法如下:在0 oC时调整W1使输出Vo=273.2mV。然后在100 ℃时调W2使Vo=373.2mV。然后反复多次,直至0 ℃时Vo=273.2mV,100 ℃时Vo=373.2mV为止。最后在室温下进行校验。例如,若室温为25℃,那么Vo应为298.2mV。0 ℃和100 ℃环境的产生方法:冰水混合物是0 ℃的环境,沸水为100 ℃环境。 (二)、 放大器 放大器由运算放大器A组成,常用的芯片有:LF335,LF336,CA3140等,主要功能是把模拟的温度电压信号放大到A/D转换器要求的输入电压范围。A/D转换器MC14433要求,模拟输入电压的范围为:0——2V。W3的作用是抵消温度传感器AD590在摄氏0℃时产生的温度电压Vo=273.2mV,使放大器A的输出电压为0.0V。放大器A的放大倍数选择为10,保证温度在0—150℃范围内变化,而放大器的输出电压在0—1。50V的范围内。电位器W2用于调整放大器的放大倍数。 (三)、 A/D转换器MC14433 A/D转换器由双积分型3又1/2位A/D转换器MC14433来完成。因为温度的变化具有惯性,变化缓慢,MC14433的转换速度完全可以满足温度测量的要求。 MC14433的方框图和引脚如图3所示,它是单片CMOSA/D转换器,它采用双积分原理实现A/D转换。因为转换后的数字量有三位十进制数,而最高位只能输出0或1,故称为3又1/2位A/D转换器.该电路需要外接积分电阻R和电容C,外接失调补偿电容C。该电路具有自动调零、自动极性转换功能,它精度高、功耗低、使用方便并能与微机或其他数字电路兼容。它广泛用于数字面板表、数字万用表、数字量具和遥控遥测系统。 图1—3 MC14433的方框图和引脚 引脚引线功能如下: G 被测电压VX和参考电压VR的模拟接地端 VR 外接参考电压端(+2V或+200Mv) VX 被测电压输入端 R1,R1/C1,C1 外接积分电阻R1和积分电容C1元件端。外接元件典型值:当量程为2V时,C = 0.1μF,R = 470kΩ;当量程为200mV时,C1 = 0.1μF, R1 = 27kΩ C01,C02 外接失调电容C0端。C0典型值为0.1μF DU 数据显示控制端。当DU和EOC(引脚14)连接时,每次A/D转换都输出 CLKI,CLKO 时钟振荡器外接电阻RC端, RC的典型值为470kΩ,时钟频率随RC增加而下降 VEE 模拟负输入端。典型值为-5V VSS 数字地,除CLKO端外所有输出端的低电平基准。当VSS与VAG相连(即数字地和模拟地相连)时,输出电压幅度为VAG~VDD(0V~+5V);当VSS与VEE(-5V)相连,输出电压幅度为VEE~VDD(-5V~+10V)。实际应用时一般是VSS与VAG相连 EOC 转换结束控制端(输出)。每当一个A/D转换周期结束,EOC端输出一个宽度为时钟周期1/2宽度的正脉冲 过量程标志输出端。平时为高电平。当|VX|﹥VR时(被测电压输入绝对值大于参考电压), 端输出低电平 DS1~DS4 多路选通脉冲输出端,对应DS1千位,对应DS4个位。每个选通脉冲宽度为18个时钟脉冲,两个相邻脉冲之间间隔为2个时钟周期 Q0~Q3 BCD码数据输出线。其中为Q0最低位,Q3为最高位。当DS2 、DS3和 DS4选通期间,Q0~Q3除了表示千位的0或1外,还表示了转换值的正负极性和欠量程还是过量程 VDD 正电源端。典型值为+5V MC14433的外部连接电路 尽管MC14433外部连接元件很少,为使其工作于最佳状态,也必须注意外部电路的连接和外接元件的选择,其实际连接电路如图11—18所示。为了提高电源抗干扰的能力,正、负电源分别通过去耦电容0.047μF、0.02μF与VSS(VAG)相连。 MC14433和单片机8051采用查询方式连接。MC14433的多路选通脉冲输出端和BCD码数据输出端Q0--Q7和单片机的P0口连接。EOC端和8051的/INT0连接,单片机8051通过不断查询/INT0端的状态,了解MC14433的每次A/D转换是否结束,在A/D转换结束后,经P0口读取A/D转换的结果,存入CPU内部的输入数据缓冲区。MC1403是高精度的基准源(2.5V),它的输出经10K可调电位器,调整到2.0V提供MC14433的基准电压。 (四)、LED显示器 LED显示器由4位共阴极LED显示器组成,采用动态分时扫描方式。采用4位共阴极LED示器使为了保证温度超过100℃时,测量结果仍能保持在小数点后一位显示,例如:110.4℃,提高测量显示精度。 共阴极LED显示器的阳极和单片机CPU的P1口连接,显示段码由CPU通过P1口传送到LED显示器的阳极。位扫描码由单片机8051的P2口低四位输出,经同相驱动器传送到LED显示器的阴极,选通LED显示器的数位,P2.3,P2.2,P2.1,P2.0输出电平为‘0111’时,选通左边的第一位数字,P2.3,P2.2,P2.1,P2.0输出电平为‘1011’时,选通左边的第二位数字,P2.3,P2.2,P2.1,P2.0输出电平为‘1101’时,选通左边的第三位数字,P2.3,P2.2,P2.1,P2.0输出电平为‘1110’时,选通左边的第四位数字。 (五)、系统核心单片机部分---闪电存储器型器件AT89C51 单片机AT89C51有内部RAM,可以作为各种数据区使用,内部闪电存储器存放智能温度计的控制程序。它的主要功能是控制MC14433,实现温度的数字值采集,完成温度的数字采集值到对应数字温度的转换计算,并把计算的数字温度转换相应的显示段码,控制LED显示器以动态扫描方式进行温度显示。 AT89系列单片机是ATMEL公司生产的。这是当前最新的一种电擦写8位单片机,与MCS-51系列完全兼容,有超强的加密功能,可完全替代87C51/52和8751/52。它物美价廉,深受用户欢迎。 与87C51相比,AT89系列的优越性在于,其片内闪电存储器的编程与擦除完全用电实现;数据不易挥发,可保存10年;编程/擦除速度快,全4K字节编程只需时3s,擦除时间约用10ms;AT89系列了实现在线编程;也可借助电话线进行远距离编程。 AT89C51是一种低功耗、高性能内含4K字节闪电存储器(Flash Memory)的8位CMOS微控制器。这种器件系以ATMEL高密度不挥发存储技术制造,与工业MCS-51指令系统和引脚完全兼容。片内闪电存储器的程序代码或数据可在线写入,亦可通过常规的编程器编程。例如,MP-100这样一种经济型的编程器,它支持通用EPROM等各种存储器、PAL、GAL以及INTEL、ATMEL和PHILIPS等各公司的全系列51单片机的编程。ME5103和ME5105仿真器支持AT89系列所有器件的调试、仿真和编程。 AT89C51具有下列主要性能: . 4KB可改编程序Flash存储器 (可经受1,000次的写入/擦除周期) .全静态工作:0Hz~24MHz .三级程序存储器保密 .128 X 8字节内部RAM .32条可编程I/O线 .2个16位定时器/计数器 .6个中断源 .可编程串行通道 .片内时钟振荡器 另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0 Hz,并提供两种可用软件来选择的省电方式——空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。 (1)主电源引脚 (a).Vcc 电源端 (b).GND 接地端 (2)外接晶体引脚XTAL1和XTAL2 (a).XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。 (b).XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。 (3).控制或与其它电源复用引脚RST、ALE//PROG、/PSEN和/EA/Vpp (a).RES 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。 (b).ALE//PROG 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。 如果需要的话,通过对专用寄存器(SFR)区中8EH单元的D0位置数,可禁止ALE操作。该位置数后,只有在执行一条MOVX或MOVC指令期间,ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,该设定禁止ALE位无效。 (c). /PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89C51/LV51由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 (d)./EA/Vpp 外部访问允许端。要使CPU只访问外部程序存储器(地址为0000H~FFFFH),则/EA端必须保持低电平(接到GND端)。然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存/EA端的状态。 当/EA端保持高电平(接Vcc端)时,CPU则执行内部程序存储器中的程序。 在Flash存储器编程期间,该引脚也用于施加12V的编程允许电源Vpp(如果选用12V编程)。 (4)输入/输出引脚 P0.0~ P0.7、P10.~P1.7、P2.0~ P2.7 和P3.0~P3.7 (a).P0端口(P0.0~ P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。 在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。 在Flash编程时,P0端口接收指令字节;而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。 (b).P1端口(P1.0~ P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在对Flash编程和程序验证时,P1接收低8位地址。 (c).P2端口 (P2.0~P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX @DPIR指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。 在对Flash编程和程序验证期间,P2也接收高位地址和一些控制信号。 (d).P3端口(P3.0~P3.7) P3 是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在AT89C51中,P3端口还用于一些专门功能,这些兼用功能见表1 表 1—1 端口引脚 兼 用 功 能 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 (外部数据存储器读选通) 在对Flash编程和程序验证时,P3还接收一些控制信号。 (5)Flash存储器的编程和程序校验: AT89C51单片机内部有一个4K字节的Flash PEROM。这个Flash存储阵列通常是处于已擦除状态(既存储单元的内容为FFH),随时可对它进行编程。编程接口可接收高电压(12V)或低电压(Vcc)的允许编程信号。低电压编程方式可很方便地对AT89C51内的用户系统进行编程;而高电压编程方式则可与通用的EPROM编程器兼容。 AT89C51的程序存储器阵列是采用字节写入方式编程的,既每次写入一个字节。要对片内的PEROM程序存储器写入任何一个非空字节,都必须用片擦除方式将整个存储器的内容清除。 (6) 对Flash存储器编程 编程前,必须按照表2和图5建立好地址、数据和相应的控制信号。编程单元的地址加在P1端口和P2端口的P2.0~P2.3(11位地址为0000H~0FFFH),数据从P0端口输入。引脚P2.6、P2.7和P3.6、P3.7的电平选择见表2。/PSEN应保持低电平,而RST应保持高电平。/EA/VPP是编程电源的输入端,按要求加入编程电压。ALE//PROG端输入编程脉冲(应为负脉冲信号)。编程时,采用4~20 MHz的振荡器。对AT89C51编程的步骤如下: (a)在地址线上输入要编程单元的地址。 (b)在数据线上输入要写入的数据字节。 (c)激活相应的控制信号。 (d)在采用高电压编程方式时,将/EA/VPP端的电压加到12V。 (e)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加一个ALE//PROG编程脉冲。 改变编程单元的地址和要写入的数据,重复步骤a~e,直到全部文件编程完毕。 每个字节写入周期是自动定时的,通常不大于1.5ms。 表 1—2 Flash编程方式 (7)数据查询方式 AT89C51单片机用数据查询方式来检测一个写周期是否结束。在一个写周期期间,如果想读出最后写入的哪个字,则读出数据的最高位(P0.7)是原来写入字节最高位的反码。写周期一旦完成后,有效的数据就会出现在所有输出端上,这时可开始下一个写周期。一个写周期开始后,可在任何时间开始进行数据查询。 图1—5 Flash编程 图 1—6 程序的校验 图1—7 Flash编程和校验的波形(高电平编程方式) (8)准备就绪/忙信号 字节编程的过程也可通过RDY//BSY输出信号来监视。在编程期间,当ALE变为高电平后,P3.4(RDY//BSY)端的电平被拉低,表示忙(正在编程)状态。编程完毕后,P3.4的电平变高表示就绪状态。 (9)程序的校验 如果加密位LB1和LB2没有被编程,那么就可以对AT89C51内部已编好的程序进行校验。这时采用图6所示的引脚接法。程序存储器的地址仍由P1端口和P2端口的P2.0~P2.3输入,数据由P0端口输入。P2.6、P2.7和P3.6、P3.7的电平见表1-4。/PSEN保持低电平,而ALE、/EA和RST保持高电平。校验时,在P0端口上要求外接约10KΩ左右的上拉电阻。 程序加密位不能直接校验。加密位的校验可通过观察它们的功能是否被允许来进行。 Flash存储器编程和程序校验时的时序图见图1—7(高电平编程)和图1—8(低电压编程)。 图 1—8 Flash编程和校验的波形(低电压编程方式) (六)、其它 为增强系统在工作现场的抗干扰能力,在硬件设计方面采取了一系列措施,例如,信号的输入/输出采用电平转换、光电隔离;正确配置接地系统,处理好共地信号;强电信号和弱电信号分开走线,传输线尽可能使用双绞线和屏蔽电缆;设置WDT时钟监视电路,自动监视CPU运行状态,出现故障自动处理,同时具有硬件自诊断功能,避免“死机”现象发生等等。 4.​  智能温度计的流程图 在软件设计上,采用了良好的人机交互环境,可通过选择功能热键执行特定的程序,如任意设定检测参数值,选择显示方式和控制模式等,还可设置优先权直接进行人为干预以便达到灵活控制的目的,如果某一检测通道被键设置成关闭,那么不管此通道外部情况如何,系统均不作任何反应。 为了提高系统的抗干扰能力,除硬件上采取了相应的措施外,在软件设计中也采取了若干措施,如在数据采集时采用数字滤波;采取指令冗余设计,在程序中适当地插入空操作指令,对一些重要的指令重写等等。从而有效地提高了系统运行的可靠性,使其检测控制工作及时准确、安全稳定,达到良好的环境模拟控制性能要求。 图9是智能温度计的流程图。因为智能温度计的控制和计算相对简单,由该流程方框图可见,该主程序是循环线性结构。在初始化时,清除内部RAM,设定标志位和标志单元,设置堆栈指针,检测LED显示器工作是否正常等。 它主要包括了下述一些子程序: (1)从A/D转换器MC14433读取温度数字电压子程序:查询A/D转换状态,一旦本次A/D转换结束,CPU将温度电压的BCD码数字值送到RAM中的输入缓冲区存放。 (2)温度电压数字值到温度数字转换子程序;将缓冲区中的温度电压数字BCD码转换为实际的温度十进制数字。 (3)温度数字到LED显示段码转换子程序:把温度十进制数字转换成相应的LED显示段码,存放在显示段码缓冲区供LED显示器显示传送子程序 (4)​ LED显示段码到LED显示器显示传送和动态扫描子程序 (5)​ BCD码加,减,乘,除子程序; (6)​ BCD码在缓冲器间传送子程序; (7) 其它专用子程序; 图 9 智能温度计的流程图 4、​ 系统主程序 系统主程序: ORG 0000H LJMP MAIN ORG 0013H LJMP SUB ORG 0100H MAIN: MOV SP,#40H MOV A,#78H MOV R7,#09H MOVX A,@DPTR MOV R0,A CLR C SUBB A,#34H JNC LOOP1 CLR C MOV A,R0 SUBB A,#3AH JC LOOP MOV A,R0 ACALL TEMP LOOP:MOV DPTR,#EF00H MOV R1,#0F8H MOV A,#33H MOVX @R1,A MOV A,R0 MOVC A,@A+DPTR DEC R1 MOVX @R1,A MOV A,R2 INC R1 MOVX @R1,A INC R0 MOV A,R2 CLR C RRC A MOV R2,A MOV A,#00H MOV DPTR,#00F8H MOVX @DPTR,A AJMP GO LOOP1: MOV P1,#8FH AJMP GO LOOP2: MOV P1,#0BFH GO : POP DPH POP DPL POP ACC POP PSW RETI END TEMP: MOV DPTR,TABLE MOV A,R0 MOV B,#04H CLR C MUL AB JNC NOO INC DPH NOO: MOVC A,@A+DPTR MOV 80H,A INC DPTR MOVC A,@DPTR MOV 81H,A AJMP LOOP ORG 0300H TAB: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 83H MAIN:MOV 20H,#0 MOV 21H,#0 MOV R0,#3CH MOV R1,#12 LCALL CLEAR SETB PT0 ML2: NOP NOP NOP MOV A,P1 CJNE A,#0FBH,ML3 AJMP MAIN ML3: MOV A,PIN1 INC A SUBB A,PIN3 CJNE A,#0,ML4 AJMP TEST0 ML4: JC TEST0 JNB E1,TEST0 AJMP COMPP TEST0:MOV PIN3,#0 MOV A,P1 CJNE A,#0FDH,TEST AJMP EXIT TEST:MOV A,P1 CJNE A,#0FFH,TEST1 EXIT:MOV R0,#79H MOV R1,#50H HEX: ACALL HEXASC MOV R2,#6 MOV R0,#5AH ACALL INI CLR FLAG3 SJMP HERE COMPP:AJMP COMP SECOO:JNB P1.5,SSECO AJMP SECO SSECO:AJMP SEC MINII:JNB P1.5,MMINI AJMP MINI MMINI:AJMP MIN HOURR:JNB P1.5,HHOUR AJMP HOUR HHOUR:AJMP HOU TEST1:JNB P1.0,SETT TEST2:SETB EA JNB P1.4,EXIT JNB P1.5,DEAL AJMP TEST SETT:CLR EA MOV C,P1.4 MOV F0,C JNB P1.1,SECOO JNB P1.2,MINII JNB P1.3,HOURR AJMP TEST2 DEAL:SETB E1 JNB P1.4,OVER MOV R0,#49H MOV R1,#6 ACALL CLEAR MOV B,#3 MOV A,PIN1 MUL AB ADD A,R4 MOV PIN,A MOV A,PIN1 CJNE A,#4,AAA MOV PIN1,#0 MOV PIN2,#3EH MOV PIN,#3CH AAA: JNB P1.4,OVER JNB P1.1,SECOO JNB P1.2,MINII JNB P1.3,HOURR AJMP AAA OVER:SETB E2 INC PIN1 MOV R2,#6 MOV R0,#3AH MOV R1,PIN1 ACALL INI MOV R0,#49H MOV R2,#3 MOV R1,PIN ZIP: MOV A,@R0 MOV @R1,A INC R0 MOV A,@R0 SWAP A ORL A,@R1 MOV @R1,A INC PIN INC R0 INC R1 DJNZ R2,ZIP AJMP EXIT COMP:MOV A,PIN2 CJNE A,#4AH,J AJMP OVR J: MOV R0,PIN2 MOV R1,#7EH MOV R2,#3 JJJ:MOV A,@R0 ANL A,#0F0H SWAP A XRL A,@R1 JNZ ENDD DEC R1 MOV A,@R0 ANL A,#0FH XRL A,@R1 JNZ ENDD DEC R1 DEC R0 DJNZ R2,JJJ SETB FLAG2 INC PIN3 AJMP TEST ENDD:MOV A,PIN2 ADD A,#3 MOV PIN2,A AJMP COMP OVR: MOV PIN2,#3EH AJMP TEST HOUR:ACALL DELY MOV R0,#7EH JNB F0,SUB1 ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ ML0 ACALL CLR0 AJMP ML0 MINI:ACALL DELY MOV R0,#7CH JNB F0,SUB1 ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML0 ACALL CLR0 AJMP ML0 SECO:ACALL DELY MOV R0,#7AH JNB F0,SUB1 ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML0 ACALL CLR0 ML0: MOV R0,#79H MOV R1,#50H ACALL HEXASC MOV R2,#6 MOV R0,#5AH ACALL INI AJMP SETT SUB1:SETB F0 ACALL SUB AJMP ML0 CLEAR:MOV @R0,#0 INC R0 DJNZ R1,CLEAR RET HOU: ACALL DELY SETB E0 MOV R0,#4EH ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ ML00 ACALL CLR0 AJMP ML00 MIN: ACALL DELY SETB E0 MOV R0,#4CH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML00 ACALL CLR0 AJMP ML00 SEC: ACALL DELY SETB E0 MOV R0,#4AH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML00 ACALL CLR0 ML00:MOV R0,#49H MOV R1,#30H ACALL HEXASC MOV R2,#6 MOV R0,#3AH MOV R1,PIN1 INC R1 ACALL INI AJMP AAA DELY:MOV R1,#0FFH A1: MOV R2,#0FFH LOOP:NOP NOP NOP DJNZ R2,LOOP DJNZ R1,A1 RET PITO:PUSH PSW PUSH 0E0H PUSH DPH PUSH DPL SETB PSW.3 MOV A,P1 MOV TL0,#01H MOV TH0,#1FH CJNE A,#0FDH,SSS MOV TL0,#0EDH MOV TH0,#0FBH SSS: JNB P1.5,GETNUM DDD: MOV A,2FH DEC A MOV 2FH,A JNZ RET0 MOV 2FH,#10H MOV R0,#7AH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#7CH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#7EH ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ RET0 ACALL CLR0 RET0:SETB TR0 POP DPL POP DPH POP 0E0H POP PSW RETI GETNUM: JB FLAG1,EE MOV R1,#49H MOV R2,#6 CO: MOV @R1,#0 INC R1 DJNZ R2,CO SETB FLAG1 EE: AJMP DDD DAAD1:MOV A,@R0 DEC R0 SWAP A ORL A,@R0 ADD A,#1 DA A MOV R2,A ANL A,#0FH MOV @R0,A MOV A,R2 INC R0 ANL A,#0F0H SWAP A MOV @R0,A SETB FLAG3 RET SUB: DEC R0 DEC @R0 CJNE @R0,#0FFH,RET2 INC R0 CJNE @R0,#0,AA DEC R0 MOV @R0,#0 RET AA: DEC R0 MOV @R0,#9 INC R0 DEC @R0 CJNE @R0,#0FFH,RET2 MOV @R0,#0 SETB FLAG3 RET2: RET SUB0: DEC R0 DEC @R0 CJNE @R0,#0FFH,RET2 INC R0 CJNE @R0,#0,BB DEC R0 MOV @R0,#0 RET BB: DEC R0 MOV @R0,#9 INC R0 DEC @R0 CJNE @R0,#0FFH,RET3 MOV @R0,#0 SETB FLAG3 RET3: RET CLR0: CLR A MOV @R0,A DEC R0 MOV @R0,A SETB FLAG3 RET FUL0: MOV A,#6 MOV @R0,A DEC R0 CLR A MOV @R0,A SETB FLAG3 RET INI: ORL TMOD,#20H MOV TH1,#0fdH MOV TL1,#0fdH MOV SCON,#50H MOV PCON,#80H SETB TR1 MOV A,#0CH MOV SBUF,A JNB TI,$ CLR TI MOV R3,#2 REC2: MOV R2,#2 REC: MOV A,@R0 SND: MOV SBUF,A JNB TI,$ CLR TI DEC R0 DEC R0 DJNZ R2,REC MOV A,#3AH MOV SBUF,A JNB TI,$ CLR TI DJNZ R3,REC2 MOV R2,#2 REC1: MOV A,@R0 MOV SBUF,A JNB TI,$ CLR TI DEC R0 DEC R0 DJNZ R2,REC1 JB E0,REE AJMP JJ RET REE: MOV SBUF,#24H JNB TI,$ CLR TI DJNZ R1,REE EEE: JNB E2,JJ CLR E2 CLR E0 E: MOV SBUF,#0DH JNB TI,$ CLR TI JJ: JNB FLAG2,ENDS MOV R3,#5 RE: MOV SBUF,#30H JNB TI,$ CLR TI DJNZ R3,RE CLR FLAG2 ENDS: RET 六.总结和体会 本课程设计叙述了智能温度计的设计,包括硬件组成和软件的设计,该系统在硬件设计上主要是通过温度传感器对温度进行采集,把温度转换成变化的电压,然后由放大器将信号放大,通过A/D转换器,MC14433将模拟温度电压信号转化为对应的数字温度信号电压。其硬件设计中最核心的器件是单片机89C51,它一方面控制A/D转换器实现模拟信号到数字信号的转换,另一方面,将采集到的数字温度电压值经计算机处理得到相应的温度值,送到LED显示器,以数字形式显示测量的温度。整个系统的软件编程就是通过汇编语言对单片机MT89C51实现其控制功能。整个系统结构紧凑,简单可靠,操作灵活,功能强大,性能价格比高,较好的满足了现代农业生产和科研的需要。 通过本次的设计,参考了大量的资料,让我认识到了单片机功能的强大,让我学到了很多,受益匪浅! 七.参 考 文 献 ​ 李朝青《PC机及单片机数据通信技术》》 [M] 北京航空航天大学出版社,2000 ​ 何立民《单片机应用技术选编》[M] 北京航空航天大学出版社,1993 ​ 周明德《微型计算机硬件软件及其应用》[M] 清华大学出版社。1980 ​ 金伟正.《单线数字温度传感器的原理与应用》[J].电子技术应用2000(6):66~68. ​ 李广弟.《单片机基础》[M].北京航空大学出版社.1994年6月 ​ 何立民。 单片机应用系统设计——系统配置与接口技术. 北京:北京航空航天大学出版社。 1995 ​ 马明建. 数据采集与处理技术。 西安:西安交通大学出版社. 1997
/
本文档为【智能温度计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索