基于单片机的温度控制系统设计论文123_第1页
基于单片机的温度控制系统设计论文123_第2页
基于单片机的温度控制系统设计论文123_第3页
基于单片机的温度控制系统设计论文123_第4页
基于单片机的温度控制系统设计论文123_第5页
已阅读5页,还剩33页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、 继续教育学院 毕业论文毕业论文题目:题目: 基于单片机的温度控制系统设计 学生姓名:学生姓名: 杨宁杨宁 学学 号:号: 班班 级级: 机电机电 0901专专 业:业: 机电一体化机电一体化指导教师:指导教师: 2011 年年 10 月月 目目 录录摘摘 要要.1第第 1 章章 绪论绪论.21.1 选题背景.21.2 选题简介.2第第 2 章章 系统总体设计及方案系统总体设计及方案.32.1 单片机的介绍.32.1.1单片机的特点.32.1.2 单片机的基本组成.32.2 系统功能的确定.42.3 温度传感器 DS18B20 的介绍.42.3.1 DS18B20的特点.42.3.2 DS18

2、B20的内部结构.52.3.3 DS18B20的引脚介绍.72.4 人机交互与串口通信.8第第 3 章章 硬件设计硬件设计.93.1 系统结构框图.93.1.1 系统硬件原理图.93.2 人机交互与串口通信单元设计.113.2.1 键盘输入电路.113.2.2 LED七段数码动态显示电路.123.2.3 串口通信电路.143.3 控制执行单元设计.15第第 4 章章 软件设计软件设计.164.1 设计思路、主程序流程图.164.1.1 主程序代码.174.2 温度采集子程序.314.3 数据转换子程序.324.4 动态显示子程序.334.5 温度控制执行子程序.344.6 键盘输入中断服务子程

3、序.36第第 5 章章 结结 论论.38参考文献参考文献.38摘 要随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。为了更好地推广单片机在实际生活和生产中的应用,本文介绍一种应用 AT89C52 单片机设计的温度控制系统。该环境温度系统采用温度传感器DS18B20通过I2C总线通信来获得当前温度,并与从3X4矩阵键盘输入的温度值进行验证,系统自动控制升温或降温的操作,将温度稳定在所设定的温度值。经实际制作表明该环境温度控制系统具有体积小、操作灵活、可靠性高、实用、成本低等特点,适合住宅和各类温室温度的控制,具有一定的实际意义。关键词 单片机;键盘;稳定温度

4、;显示器;温度控制第 1 章 绪论1.1 选题背景 在生产过程中,温度的控制是十分常见的。国内已相继出现各种以微机为核心的温度控制系统。这种系统控制精度高、重复性好、自动化程度高。 在日常生活中,人们为了拥有一个更舒适的生活环境,往往需要室内拥有一个合适的温度,而单片机的准确性高、价格低、功耗低等一系列优点,可结合升温和降温设备,有效的应用到实际生活中。单片机温度控制系统是单片机控制的一项简单应用。近几年来单片机因其独特的,方便,快捷的优势被广泛的应用于各个领域之中。1.2 选题简介课题名称:基于单片机的温度控制系统主要任务:将温度控制在设定的温度值,设定范围为2-98度,针对在生产和日常生活

5、中温度智能化控制系统的实现。开发环境:本环境温度控制系统的软件部分是通过KEIL进行编译,并由Proteus 7 Professional进行仿真测试。技术指标: 以AT89C52系列单片机为核心部件 以数字电路和模拟电路为硬件基础 以汇编语言为软件实现语言功能概述:在该环境温度控制系统中,单片机作为核心部件进行检测控制,增强了设计的通用性,适时性。在该环境温度控制系统中温度检测采用 DS18B20 温度传感器,它不仅具有较高的精度,而且适用电压宽。同时采用了 3x4 矩阵扫描键盘输入,显示设备等外围扩展芯片。温度控制分为升温和降温控制,升温控制和降温控制分别采用继电器来控制外部的升温和降温设

6、备。软件部分采用流程图来表示,对各个子程序进行说明,包括控制算法,偏差计算等。控制是否升温或降温。 第 2 章 系统总体设计及方案2.1 单片机的介绍 随着大规模集成电路的出现及其发展,将计算机的 CPU 、RAM 、 ROM 、定时/计数器和多种 I/O 接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机 。 2.1.1 单片机的特点1具有优异的性能价格比 2集成度高、体积小、可靠性高 3控制功能强 4低电压、低功耗 2.1.2 单片机的基本组成 它由 CPU 、存储器(包括 RAM 和 ROM )、I/O 接口、定时/计数器、中断控制功能等均集成

7、在一块芯片上,片内各功能通过内部总线相互连接起来。 输入 / 输出引脚 P0、P1、P2、P3 的功能: P0.0P0.7(3239 脚):P0 口是一个 8 位漏极开路型双向 I/O 端口。在访问片外存储器时,它分时作低 8 位地址和 8 位双向数据总线用。在 EPROM 编程时,由 P0 输入指令字节,而在验证程序时,则输出指令字节。验证程序时,要求外接上拉电阻。 P0 能以吸收电流的方式驱动 8 个 LSTTL 负载。 P1.0P1.7(18 脚): P1 是一上带内部上拉电阻的 8 位双向 I/O 口。在 EPROM 编程和验证程序时,由它输入低 8 位地址。 P1 能驱动 4 个 L

8、STTL 负载。 P2.0P2.7(2128 脚): P2 也是一上带内部上拉电阻的 8 位双向 I/O 口。在访问外部存储器时,由它输出高 8 位地址。在对 EPROM 编程和程序验证时,由它输入高 8 位地址。 P2 可以驱动 4 个 LSTTL 负载。 P3. 0 P3. 7 ( 1017 脚): P3 也是一上带内部上拉电阻的双向 I/O 口。 在 MCS-52 中,这 8 个引脚还用于专门的第二功能。P3 能驱动 4 个 LSTTL 负载。 P3.0 RXD(串行口输入) P3.1 TXD(串行口输出) P3.2 INT0(外部中断 0 输入) P3.3 INT1(外部中断 1 输入

9、) P3.4 T0(定时器 0 的外部输入) P3.5 T1(定时器 1 的外部输入) P3.6 WR(片外数据存储器写选通) P3.7 RD(片外数据存储器读选通)2.2 系统功能的确定 一个控制系统是否能被大众所接受,在于该控制系统是否拥有人性化的操作功能。为了使本次设计的环境温度控制系统具有操作简单、灵活及高可靠性等特点,确定了该系统功能: 3x4 矩阵键盘输入。 由温度采集。 温度显示。 温度控制执行。 温度测量范围为 0-99 度,温度有效范围为 2-98 度,允许误差为 1 度。2.3 温度传感器 DS18B20 的介绍 DS18B20 温度传感器是 DALLAS 公司生产的 1W

10、ire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的温度传感器,十分方便。2.3.1 DS18B20 的特点1.只要求一个端口即可实现通信。2.在 DS18B20 中的每个器件上都有独一无二的序列号。3.实际应用中不需要外部任何元器件即可实现测温。4.测量温度范围55 到125。5.数字温度计的分辨率用户可以从 9 位到 12 位选择。6.内部有温度上、下限告警设置。2.3.2 DS18B20 的内部结构DS18B20 采用 3 脚 PR-35 封装或 8 脚 SOIC 封装,其内部结构框图如图 2.1 所示。 64 位 R

11、OM 的位结构如图 2.2 所示。开始 8 位是产品类型的编号;接着是每个器件的唯一的序号,共有 48 位;最后 8 位是前面 56 位的 CRC 检验码,这也是多个DS18B20 可以采用单线进行通信的原因。非易失性温度报警触发器 TH 和 TL,可通过软件写入用户报警上下限数据。图 2.2 64 位 ROM 的位结构图DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电擦除的 E2PROM。 高速暂存 RAM 的结构为 9 字节的存储器,结构如图 2.3 所示。前 2 字节包含测得的温度信息。第 3 和第 4 字节是 TH 和 TL 的拷贝,是易失的,每次

12、上电复位时被刷新。第 5 字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图 2.4 所示,其中,低 5 位一直为 1;TM 是测试模式位,用于设置 64 位ROM 和单线接口 存储器与控制逻辑 高速缓存 温度传感器高温触发器 TH低温触发器 TL配置寄存器8 位 CRC 发生器图 2.1 DS18B20 内部结构框图8 位检验 CRC48 位序列号8 位工厂代码(10H)MSB LSB MSB LSB MSB LSBDS18B20 在工作模式还是在测试模式,在 DS18B20 出厂时,该位被设置为

13、 0,用户不要去改动;R1 和 R0 决定温度转换的精度位数,即用来设置分辨率,其定义方法见表 2.1。温度 LSB温度 MSBTH 用户字节1TL 用户字节 2配置寄存器保留保留保留CRC R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750TH 用户字节11TL 用户字节2E2PROM图 2.3 高速暂存 RAM 结构图表 2.1 DS18B20 分辨率的定义和规定TM R1 R0 1 1 1 1 1 1 由表可见,DS18B20 温度转换的时间比较长,而且设置的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换

14、时间权衡考虑。 高速暂存 RAM 的第 6、7、8 字节保留未用,表现为全逻辑 1。第 9 字节是前面8 字节的 CRC 码,可用来检验数据,从而保证通信数据的正确性。 当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16 位带符号扩展的二进制补码形式存储在高速暂存 RAM 的第 1、2 字节中。 单片机可以通过单线接口读出该数据。读数据时,低位在先,高位在后,数据格式以 0.0625C/LSB 形式表示。温度值格式如图 2.5 所示:低字节232221202-12-22-32-4高字节SSSSS2625242.3.3 DS18B20 的引脚介绍TO92 封装的

15、DS18B20 的引脚排列见图 2.6,其引脚功能描述见表 2.2。图 2.6(底视图)表 2.2 DS18B20 详细引脚功能描述序号名称引脚功能描述1GND地信号图 2.4 配置寄存器位定义图 2.5 温度数值格式2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的 VDD 引脚。当工作于寄生电源时,此引脚必须接地。2.4 人机交互与串口通信该热炉温度控制系统由温度采集、3x4矩阵键盘输入、温度显示、温度控制执行等四大模块组成。 温度采集:由温度传感器DS18B20完成,并通过串口通信技术与单片机进行数据传输,使用单片机P3.7端口。

16、3x4矩阵键盘输入:采用外部中断0来判断是否拥有输入请求,并通过键盘扫描技术来获取所输入的温度值和偏差温度值,输入更灵活、更方便,使用单片机P0口和P3.2端口。 温度显示:通过4个7段LED数码显示管显示当前温度值和设定的温度值,及时反应当前温度的变化与设置温度的关系,使用单片机P1.0P1.5端口。 温度控制执行:系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯,让使用者知道系统正在进行的操作,使用单片机P2.2P2.3端口。第 3 章 硬件设计3.1 系统结构框图图 3.1AT89C52温度显示电路温度控制电路键盘输入电路温度

17、采集电路 系统硬件总体框图该系统由核心部件AT89C52来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。3.1.1 系统硬件原理图 图 3.1.1 原理图3.2 人机交互与串口通信单元设计在该系统中,人机交互技术主要应用在恒定温度与偏差温度的设置,以及当前温度与设置温度的显示;串口通信技术应用在对温度的采集。3.2.1 键盘输入电路在本系统中,采用外部中断0控制键盘输入请求,键盘输入主要采用3x4矩阵键盘扫描技术。如图3.2所示,当按下“设置/切换”键时,进入恒定温度的设置,可从键盘中自由输入09的数字,如果输入错误可按

18、“删除(*)”键进行删除,如果要设置偏差温度,再按一下“设置/切换”键,可进入偏差温度的设置,按“确定(#)”键,保存设置并退出键盘输入,进入温度控制状态。1234567890#123ABCDSASBSCSDS1S2S3S1S2S3SASBSCSDR114.7kR124.7kR134.7kR144.7k+5SSINT0R104.7kD1LED-REDD2LED-REDR16300R17300LED_ALED_B设置温度偏差温度设置/切换删除确定图 3.2 键盘输入原理图为了避免从键盘输入的数据错误,该键盘输入电路还为判断按键是否释放的功能做了铺垫,如图3.3所示,该电路由3个与门构成,当有键按

19、下时SA、SB、SC、SD端中将会有一个为低电平,此时与门的SS端将会输出低电平,同时控制了单片机的P0.7端口,再通过软件控制按键是否释放。AT89C52P0 口123U7:A74LS08456U7:B74LS089108U7:C74LS08SASBSCSDSS图 3.3 判断键盘是否有键按下3.2.2 LED 七段数码动态显示电路在本系统中采用了LED七段数码动态显示电路来显示温度值,显示范围在0-99之间,该电路由显示、片选、译码三部分组成。 显示部分:由两个两位的LED七段共阴数码管构成,分别用来显示当前温度和设置温度,如图3.4所示。L1L2L3L4L5L6L7L1L2L3L4L5L

20、6L7L10 L11L8L9当前温度恒定温度图 3.4 LED 七段共阴数码管 片选部分:如图3.5所示,由一片2-4译码器(74LS139)构成,单片机的P1.4和P1.5输出两位片选信号到2-4译码器的A、B端口,进行译码后输出到LED七段数码管的片选端口,其译码功能如表3.1所示。A2Y04B3Y15Y26E1Y37U3:A74LS139KAKBL8L9L10L11图 3.5 动态显示片选电路(2-4 译码器)表 3.1 74LS139 功能表输入选通端地址输入端输出EABY0Y1Y2Y3100000011010110111110111110111110 译码部分:该电路由LED七段数码

21、管显示译码器(4511)来完成,如图3.6所示,单片机将要显示的十进制数据转换成8421BCD编码,对应的译码值如表3.2所示,再分别送到LED七段数码管显示译码器的A、B、C、D引脚进行译码,最后输出到LED七段数码管的相引脚。AT89C52P1.4P1.5L1L3L2L4L5L6L7R11kR21kR31kR41kR51kR61kR71k+5A7B1C2D6LT3BI4LE/STB5QA13QB12QC11QD10QE9QF15QG14U64511图 3.6 LED 七段数码显示译码电路表 3.2 4511 译码表8421BCD 码十进制数0000000011001020011301004

22、01015011060111710008100193.2.3 串口通信电路为了使测得的温度更准确,在本系统中采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I2C总线进行通信的,如图3.7所示,单片机使用P3.7端口与DS18B20的数据通讯端口相连接,并通过软件实现P3.7控制DS18B20的读和写。+532.0DQ2VCC3GND1U8DS18B20图 3.7 单片机与 DS18B20 的通信3.3 控制执行单元设计该电路的主要任务是完成单片机所发出的升温或降温操作,来控制外部的升温或降温设备。如图3.8所示,电路的GK1和GK2端分别与单片机的P2.2和P2.3端相连

23、接,其工作原理如下:在通常情况下,GK1和GK2均为低电平,当单片机向温度控制执行电路发送降温命令时,GK1为高电平,GK2为低电平,使三极管Q1饱和导通,此时使继电器RL1闭合控制外部的降温设备进行工作,同时发光二极管D9将被点亮,提醒使用者温度过高正在进行降温操作。当单片机向温度控制执行电路发送升温命令时,GK1为低电平,GK2为高电平,使三极管Q2饱和导通,此时使继电器RL2闭合控制外部的升温设备进行工作,同时发光二极管D4将被点亮,提醒使用者温度过低正在进行升温操作。AT89C52P3.7+5GK1GK2D9LED-RED温度过低温度过高RL1G2RL-1AB-DC5Q1MPS6514

24、R8300Q2MPS6514RL2G2RL-1AB-DC5D4LED-BIRGR9300图 3.8 温度控制及相应显示电路第 4 章 软件设计4.1 设计思路、主程序流程图根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现输入一个需要恒定的温度值和偏差温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,在这一过程中将随时显示当前温度值和设置的温度值。其主要实现的部分包括:键盘输入、温度采集、数据转换、动态显示、温度控制等。主程序流程图如图4.1所示。开始系统初始化发送温度读取指令读出温度值数据转换16 进制10 进制温度控制执行显示当前温

25、度和设置温度是否有外部中断 0 请求?键盘输入中断服务子程序结束断点YN图 4.1 主程序流程图4.1.1 主程序代码 ORG 0000H LJMP MAIN ORG 0003H ;外部中断 INT0 入口地址 LJMP SKEY ;转外部中断 INT0 ORG 1000HMAIN: CLR P2.2 ;初始控制端,温度过高/降温 CLR P2.3 ;温度过低/升温 TEMPDIN BIT P3.7 ;DS18B20 通信端口 TEMPLEQU24H ;温度低位存储单元TEMPHEQU25H ;温度高位存储单元 TEMPHEADEQU26H ;DS18B20 9 位数据存储单元(26H-2EH

26、)SHOWGETLEQU30H ;当前温度低位SHOWGETHEQU31H ;当前温度高位SHOWSETLEQU32H ;设置温度低位SHOWSETHEQU33H ;设置温度高位 TEMPCKEQU34H ;偏差温度存储单元 MOV TEMPCK,#03H ;设置系统允许的偏差温度 MOV SHOWGETL,#00H ;当前温度低位初值MOV SHOWGETH,#00H ;当前温度高位初值 MOV SHOWSETL,#00H ;设置温度低位初值 MOV SHOWSETH,#00H ;设置温度高位初值LOOP: MOV IE,#00H ACALLREADTEMP ;发送温度读取指令 ACALLR

27、EADTEMP1 ;读出温度值子程序 ACALL DATAS ;数据转换(将 16 进制数据转换成 10 进制数据) ACALL SETOUT ;温度数据处理,温度控制执行 ACALL SHOW ;显示当前温度和设置温度 CLR IT0 ;电平触发方式 SETB EA ;CUP 开放中断 SETB EX0 ;允许外部中断 0 AJMP LOOP;-;下面是主程序所用到的子程序;-; RESET DS18B20 复位INITDS1820:SETBTEMPDINNOPNOPCLRTEMPDINMOVR6, #0A0H; DELAY 480usDJNZR6, $ MOVR6, #0A0H DJNZR

28、6, $SETBTEMPDINMOVR6, #SHOWSETL; DELAY 70usDJNZR6, $ MOV R6,#3CHLOOP1820: MOVC, TEMPDINJC INITDS1820OUT DJNZ R6,LOOP1820 MOV R6, #064H; DELAY 200usDJNZR6, $SJMPINITDS1820RETINITDS1820OUT:SETBTEMPDINRET;-;读 DS18B20 的程序, 从 DS18B20 中读出一个字节的数据READDS1820:MOVR7, #08HSETBTEMPDINNOPNOPREADDS1820LOOP:CLRTEMP

29、DINNOPNOPNOPSETB TEMPDINMOV R6, #07H; DELAY 15us DJNZ R6, $ MOV C, TEMPDINMOVR6, #3CH; DELAY 120usDJNZ R6, $RRC A SETB TEMPDINDJNZ R7, READDS1820LOOPMOVR6, #3CH; DELAY 120usDJNZR6, $RET;-; 写 DS18B20 的子程序, 向 DS18B20 中写一个字节的数据WRITEDS1820: MOVR7, #08HSETBTEMPDINNOPNOPWRITEDS1820LOOP:CLRTEMPDINMOV R6, #

30、07H; DELAY 15us DJNZ R6, $ RRC A MOVTEMPDIN, C MOVR6, #34H; DELAY 104us DJNZR6, $SETBTEMPDIN DJNZ R7, WRITEDS1820LOPRET;-; 向 DS18B20 写入相应的 ROM 命令READTEMP:LCALL INITDS1820MOVA, #0CCHLCALL WRITEDS1820; 写入 ROM 命令 SKIP ROMMOVR6, #34H; DELAY 104usDJNZR6, $MOVA, #44HLCALL WRITEDS1820; 写入 ROM 命令 START CONV

31、ERSIONMOVR6, #34H; DELAY 104usDJNZR6, $RET;-;读出温度值子程序READTEMP1:LCALLINITDS1820MOVA, #0CCHLCALL WRITEDS1820; 写入 ROM 命令 SKIP ROMMOVR6, #34H; DELAY 104usDJNZR6, $MOVA, #0BEHLCALL WRITEDS1820; 写入 ROM 命令 SCRATCHPADMOVR6, #34H; DELAY 104usDJNZR6, $MOVR5, #09HMOVR0, #TEMPHEAD MOV B,#00HREADTEMP2:LCALLREADD

32、S1820;开始读出温度MOVR0, AINC R0READTEMP21:LCALL CRC8CAL DJNZR5, READTEMP2MOVA, BJNZ READTEMPOUTMOVA, TEMPHEAD + 0MOVTEMPL, AMOVA, TEMPHEAD + 1MOVTEMPH, AREADTEMPOUT:RET;-;DS18B20 CRC-8 校验程序CRC8CAL:PUSHACCMOVR7, #08HCRC8LOOP1:XRLA, BRRCAMOVA, BJNCCRC8LOOP2XRLA, #18HCRC8LOOP2:RRCAMOVB, APOPACCRR APUSHACCDJ

33、NZR7, CRC8LOOP1POPACCRET;-;数据转换(将 16 进制数据转换成 10 进制数据)DATAS: MOV A,TEMPL ANL A,#0F0H ;屏蔽低位 SWAP A MOV B,A MOV A,TEMPH SWAP A ORL A,B MOV B,#10 DIV AB MOV SHOWGETH,A MOV SHOWGETL,B RET;-;温度数据处理SETOUT:MOV A,SHOWGETL ;设置偏差温度,当前温度+TEMPCK ADD A,TEMPCK MOV 50H,A MOV 51H,SHOWGETH SUBB A,#0AH JC SSZ_5 MOV 50

34、H,A INC 51HSSZ_5: MOV A,SHOWSETL ;设置偏差温度,设置温度+TEMPCK ADD A,TEMPCK MOV 52H,A MOV 53H,SHOWSETH SUBB A,#0AH JC SD1 MOV 52H,A INC 53HSD1: MOV A,52H ;设置温度+TEMPCK 减 当前温度(判断温度是否过高) SUBB A,SHOWGETL MOV A,53H SUBB A,SHOWGETH JC JIANG MOV A,50H ;当前温度+TEMPCK 减 设置温度(判断温度是否过低) SUBB A,SHOWSETL MOV A,51H SUBB A,SH

35、OWSETH JC SHENG CLR P2.2 ;初始控制端,温度过高/降温 CLR P2.3 ;温度过低/升温 AJMP OVERJIANG: SETB P2.2 ;温度过高/降温处理 CLR P2.3 ;温度过低/升温 AJMP OVERSHENG: SETB P2.3 ;温度过低/升温处理 CLR P2.2 ;初始控制端,温度过高/降温OVER: RET;-;3x4 矩阵键盘输入中断子程序SKEY: MOV R0,#00H CLR P2.2 ;初始控制端,温度过高/降温 CLR P2.3 ;初始控制端,温度过低/升温LS1: JB P3.2,SK1 MOV A,R0 CPL A MOV

36、 R0,A JNB P3.2,$SK1: MOV ACC,#0FFH CLR ACC.0 SETB ACC.1 SETB ACC.2 MOV P0,ACC ACALL DELAY1 ;调用两次 10ms 延时,消除抖动 ACALL DELAY1 MOV ACC,P0 MOV 40H,#01H AJMP HS1LS2: MOV ACC,#0FFH SETB ACC.0 CLR ACC.1 SETB ACC.2 MOV P0,ACC ACALL DELAY1 ACALL DELAY1 MOV ACC,P0 MOV 40H,#02H AJMP HS1LS3: MOV ACC,#0FFH SETB A

37、CC.0 SETB ACC.1 CLR ACC.2 MOV P0,ACC ACALL DELAY1 ACALL DELAY1 MOV ACC,P0 MOV 40H,#03H AJMP HS1HS1: JB ACC.3,HS2 MOV A,#00H ADD A,40H AJMP KSOKHS2: JB ACC.4,HS3 MOV A,#03H ADD A,40H AJMP KSOKHS3: JB ACC.5,HS4 MOV A,#06H ADD A,40H AJMP KSOKHS4: JB ACC.6,FH1 MOV A,#09H ADD A,40H AJMP KSOKFH1: ACALL SH

38、OW1 MOV R1,40H CJNE R1,#01H,FH2 AJMP LS2FH2: CJNE R1,#02H,FH3 AJMP LS3FH3: AJMP LS1KSOK: CJNE A,#0AH,OK1 ;退格键 CJNE R0,#0FFH,SS1 MOV SHOWSETL,SHOWSETH MOV SHOWSETH,#00H AJMP ONSKEYSS1: ANL TEMPCK,#0F0H MOV A,TEMPCK SWAP A MOV TEMPCK,A AJMP ONSKEYOK1: CJNE A,#0BH,OK2 ;0 键 MOV A,#00H AJMP OK3OK2: CJNE

39、A,#0CH,OK3 ;确认键 AJMP EXXOK3: CJNE R0,#0FFH,SS2 MOV SHOWSETH,SHOWSETL MOV SHOWSETL,A AJMP ONSKEYSS2: MOV R1,A ANL TEMPCK,#0FH MOV A,TEMPCK SWAP A MOV TEMPCK,A MOV A,R1 ORL TEMPCK,AONSKEY: JNB P0.7,$ ;判断是否释放按键 ACALL DELAY1 ACALL DELAY1 AJMP LS1EXX: MOV P0,#0FFH MOV IE,#00H ;关闭中断 INT0 RETI;-;主程序显示子程序SH

40、OW: MOV A,SHOWGETH ORL A,#30H ANL A,#0CFH MOV P1,A ACALL DELAY2 MOV A,SHOWGETL ORL A,#30H ANL A,#0DFH MOV P1,A ACALL DELAY2 MOV A,SHOWSETH ORL A,#30H ANL A,#0EFH MOV P1,A ACALL DELAY2 MOV A,SHOWSETL ORL A,#30H ANL A,#0FFH MOV P1,A SETB P2.0 SETB P2.1 RET;-;3x4 矩阵键盘输入中断子程序 显示子程序SHOW1: MOV A,SHOWGETH

41、ORL A,#30H ANL A,#0CFH MOV P1,A ACALL DELAY2 MOV A,SHOWGETL ORL A,#30H ANL A,#0DFH MOV P1,A ACALL DELAY2 CJNE R0,#0FFH,SHOW_SET MOV A,SHOWSETH ORL A,#30H ANL A,#0EFH MOV P1,A ACALL DELAY2 MOV A,SHOWSETL ORL A,#30H ANL A,#0FFH MOV P1,A CLR P2.0 SETB P2.1 AJMP SHOW_OVERSHOW_SET: MOV A,TEMPCK ;偏差温度显示 S

42、WAP A ORL A,#30H ANL A,#0EFH MOV P1,A ACALL DELAY2 MOV A,TEMPCK ORL A,#30H ANL A,#0FFH MOV P1,A SETB P2.0 CLR P2.1SHOW_OVER:RET;-;延时 10ms 用于键盘输入子程序(防抖动)DELAY1: MOV R5,#10 DE1:MOV R6,#250 DE2:NOP NOP DJNZ R6,DE2 DJNZ R5,DE1 RET;-;延时 1ms 用于显示子程序DELAY2: MOV R5,#1 D1:MOV R6,#250 D2:NOP NOP DJNZ R6,D2 DJ

43、NZ R5,D1 RET END4.2 温度采集子程序温度采集子程序主要负责驱动外部的温度传感器DS18B20进行工作,通过串口通信方式向DS18B20写入ROM命令,并读取当前温度值,将读取的数据存放在26H-2EH存储单元,其中26H单元存放温度值的低位,27H单元存放温度值的高位,程序流程图如图4.2所示。开始DS18B20 复位向 DS18B20 写入相应的 ROM 命令读出温度值并进行校验结束图 4.2 温度采集子程序流程图4.3 数据转换子程序数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据,转换成十进制的数值并存储在指定的存储单元内。由于该恒温系统设计的温度检测有效

44、为0-99,所以数据转换原理为:将获取到的十六进制温度值除以十进制数10,所得到的商为相应十进制数的十位,并存入31H单元,余数则为相应十进制数的个位,并存入30H单元,其程序流程图如图4.3所示。 开始合并温度值的高位和低位存入 AA 除以 10商送 31H 单元余数送 30H 单元结束图 4.3 数据转换流程图4.4 动态显示子程序在该恒温系统中使用了两个两位的LED七段数码管来显示系统所采集的当前温度值和设置的温度值,为了不占用更多的单片机端口,在针对显示电路的设计时采用了动态显示的方案,而动态显示子程序的主要任务就是控制显示电路的扫描规律,其程序流程图如图4.4所示。开始当前温度高位送入A片选信号初始化ORL A,#30H当前温度高位片选信号ANL A,#0CFH显示输出MOV P1,A延时 1ms当前温度低位送入A片选信号初始化ORL A,#30H当前温度低位片选信号ANL A,#0DFH显示输出MOV P1,A延时 1ms设置温度高位送入A片选信号初始化ORL A,#30H设置温度高位片选信号ANL A,#0EFH显示输出MOV P1,A延时 1ms设置温度低位送入A片选信号初始化ORL A,#30H设置温度低位片选信号ANL A,#0FFH显示输出MOV P1,A延时 1ms结束图 4.4 动态显示子程序

温馨提示

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

评论

0/150

提交评论