资源描述
三门峡职业技术学院
信息工程系
毕
业
设
计
论
文
毕业设计题目:基于51单片机的空气智能加湿器设计
专 业: 计算机应用技术(嵌入式方向)
摘 要
在日常生活中加湿器得到了广泛的应用,但是现有的加湿器都需要手工控制开启和关闭并且不具备对室内空气温湿度的监测,人们在使用过程中存在过度加湿和干烧的问题,不仅给室内空气舒适度造成负面影响并且还存在安全隐患。因此开发设计一种价格低廉、功耗低、具有自动控制功能的加湿器显得尤为必要。本设计采用智能控制,以AT89C51单片机为核心,外接辅助电路,通过实现加湿器的防干烧、声光报警、智能开启和关闭以及室内温湿度的显示功能基本实现加湿器的智能化。
关键词:单片机、智能、加湿器、相对湿度、传感器
目 录
摘 要 1
目 录 2
第一章 任务来源意义及目的 3
第二章 设计方案 4
2.1 总体设计 4
2.2 实现方式 4
2.3 理论基础 5
2.3.1 单片机 5
2.3.2 DS18B20传感器 6
2.3.3 1602LCD液晶显示屏 7
第三章 硬件设计 8
3.1 设计方案 8
3.2 电路图 8
3.3 信号分析 9
3.4 功能描述 9
3.5 复位电路 9
3.6液位定位及光电开关 10
3.7 1602显示屏 10
3.8 DS18B20温度传感器 11
第四章 软件设计 12
4.1整体设计及说明 12
4.2 DS18B20流程设计 13
4.3 1602字符型LCD流程设计 15
第五章 系统调试 17
第六章 总结 18
参考文献 19
致 谢 20
附录一 LCD控制及显示子程序 21
第一章 任务来源意义及目的
在日常生活中加湿器得到了广泛的应用,但是现有的加湿器都需要手工控制开启和关闭并且不具备对室内空气温湿度的监测,人们在使用过程中存在过度加湿和干烧的问题,不仅给室内空气舒适度造成负面影响并且还存在安全隐患。因此开发设计一种价格低廉、功耗低、具有自动控制功能的加湿器显得尤为必要。
本设计采用智能控制,以AT89C51单片机为核心,外接辅助电路,通过实现加湿器的防干烧、声光报警、智能开启和关闭以及室内温湿度的显示功能基本实现加湿器的智能化。
第二章 设计方案
2.1 总体设计
智能加湿器需满足以下要求:
1)相对湿度低于40%时自动加湿;
2)用户可以设置系统温湿度报警值;
3)由5V稳压直流电源供电,提供温湿度调节控制信号,实现自动控制;
4)检测得到的数据可以通过显示模块显示。
硬件设计不仅要满足系统需求,还要满足功能和外形尺寸要求。
根据设计要求确定了系统的总体方案,包系统由两个DS18B20温度传感器一个水位传感器、单片机、1602LCD液晶显示屏、声光报警器、以及一个光电耦合开关等部分组成。系统功能原理图如图1-1所示,两个温度传感器分别采集室内空气的干湿球温度,并将采集的温度传送至单片机。单片机对这两个数据加以处理并结合室内湿度要求参数控制加湿器的开启和闭合。另外,水位传感器还能监测水位,单片机根据水位高低控制声光报警装置。自动加湿器包括加湿模块、报警模块、自动断电模块。
单片机
温度传感器1
温度传感器2
1602LCD显示屏
水位传感器
加湿器开关
声光报警器
图1-1 自动加湿器功能原理图
2.2 实现方式
要达到自动加湿器功能要做好硬件和软件设计和调试三个方面的工作。首先硬件方面,通过合理的设计单片机管脚及其他外围电路的链接,使之既有I/O口的功能,又有控制型号的功能。由于时间仓促,没有找到合适的水位传感器,在开发过程中利用三个按钮开关代替水位传感器分别代表高、中、低水位,而加湿器开关则由一发光二级管代替,在方正过程中更容易观察系统开发效果。这方面的内容详见硬件设计部分内容。其次软件方面,通过合理设计软件的结构和安排子程序,使程序以最简洁有效的方式实现目的。最后,调试方面,程序编辑用VW8系列方针器环境,编辑过程可使用软件仿真观察,并对其进行调试。在程序编辑完成之后使用硬件仿真,最终用烧录器将程序写入单片机进行实测。
本系统分信号的主要有温度传感器的输入信号和单片机输出的控制信号构成。首先由单片机向温度传感器发出读信号,随后温度传感器做出响应,单片机待DS18B20完成收集到得温度信息进行AD处理并存储为数字信号后,开始读取温度值,并对其信号做位处理使之达到用户需求的精度以及计算得到相对湿度,最后通过1602LCD显示温湿度值。另外,系统在运行过程中还有专门的控制声光报警系统、光电耦合开关的控制信号,
2.3 理论基础
2.3.1 单片机
T89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2-1所示
图2-1 AT89S51芯片引脚图
AT89C51共有40个引脚,大致可分为4类:电源引脚、时钟电路引脚、I/O引脚、控制线引脚。根据开发的需要和单片机的结构,我们就可以实现单片机的自动工作,即实现自动化。
2.3.2 DS18B20传感器
传感器是一种按一定的精度把被测量转换为与之有确定关系的、便于应用的某种物理的测量器件或装置,用于满足系统信息传输、存储、显示、记录及控制等要求。在本系统的开发过程中主要用到了DS18B20数字温度传感器,这种传感器提供9-12位摄氏温度测量i fu b‘有一个由高低电平触发的可编程的不因电源消失}fu改变的报警功能。DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线)。它的测温范围为一55-}- + 125 0C,并目‘在一10-}-+850C精度为士5 0C。除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求。每个DS 18B20都有一个独特的64位序列号,从}fu允许多只DS 18B20同时连在一根单线总线上;因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS 18B20。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
在测温操作方面,DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9, 10, 11或12位,分别以0. 5 0C , 0 . 2 5 0C , 0. 12 5 0C和0. 06250C增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD转换时,总线控制器必须发出「44h〕命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0,转换结束返回1。如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值。寄生电源的总线要求在口618820供电节详细解释。
图2-2 DS18B20数字温度传感器内部结构
2.3.3 1602LCD液晶显示屏
在单片机系统中应用液晶显示器作为输出器件有以下几个优点:一、显示质量高,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。二、数字式接口,液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。三、体积小、重量轻,液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。四、功耗低,相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
本系统选用的字符型LCD是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。本次设计选用的是长沙太阳人电子有限公司的1602字符型液晶显示器。一般1602字符型液晶显示器实物如图3-1:
图2-3 1602字符型液晶显示器实物图
1602LCD主要技术参数:
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
第三章 硬件设计
3.1 设计方案
单片机
温度传感器1
温度传感器2
1602LCD显示屏
水位传感器
加湿器开关
声光报警器
图3-1 自动加湿器功能原理图
3.2 电路图
单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能。硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起。这种设计方法可以降低系统设计的复杂性。系统电路原理图如图2所示。本系统主要硬件设计包括电源电路、蜂鸣器电路、晶振电路、复位电路、LCD显示电路以及温度传感器电路。
AT89C51是一种低功耗、高性能的CMOS8位微控制器,具有2K在系统可编程Flash存储器,采用的工艺是Atmel公司的高密度非易失存储器技术;片上Flash允许程序存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业控制和嵌入式系统中。
图3-2 电路原理图
系统的声光报器电路(警蜂鸣和LED发光二极管组成)、振落电路、复位电路。显示模块选用1602字符型液晶模块,是目前工控系统中使用最为广泛的液晶屏之一,电路图如图所示。1602字符型液晶模块是点阵型液晶,驱动方便,经编码后显示内容多样化。由于时间仓促,没有找到合适的水位传感器,在开发过程中利用三个按钮开关代替水位传感器分别代表高、中、低水位,而加湿器开关则由一发光二级管代替,在方正过程中更容易观察系统开发效果。
3.3 信号分析
本系统分信号的主要有温度传感器的输入信号和单片机输出的控制信号构成。首先由单片机向温度传感器发出读信号,随后温度传感器做出响应,单片机待DS18B20完成收集到得温度信息进行AD处理并存储为数字信号后,开始读取温度值,并对其信号做位处理使之达到用户需求的精度以及计算得到相对湿度,最后通过1602LCD显示温湿度值。另外,系统在运行过程中还有专门的控制声光报警系统、光电耦合开关的控制信号,这些控制信号比较简单,不再一一论述。
3.4 功能描述
参考舒适性空调的相对湿度采用40%—65%的要求[x],在功能设计过程中以40%为最适相对湿度参考值。单片机一方面通过监测加湿器内部的水位,达到加湿器防干烧的功能,即只有在水位在水位下限以上时加湿器才能通电工作。另一方面通过处理两个温度传感器测得的干湿球温度得到室内相对湿度,并和人体最适相对湿度做比较。在水位符合要求的前提下,若室内相对湿度高于人体最适值则控制加湿器不动作,反之则对加湿器通电开始加湿,直到室内空气达到最适湿度时断电。另外,单片机通过和声光报警器以及1602LCD显示屏相连,还具有了温湿度及水位的显示功能。总之,在现有的加湿器内加入此单片机将实现加湿器的防干烧、声光报警、智能开启和关闭以及室内温湿度的显示功能基本实现加湿器的智能化。
3.5 复位电路
复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。图3-3所示的RC复位电路可以实现上述基本功能,图3为其输入-输出特性。但解决不了电源毛刺(A点)和电源缓慢下降(电池电压不足)等问题 而且调整 RC 常数改变延时会令驱动能力变差。左边的电路为高电平复位有效 右边为低电平Sm为手动复位开关 Ch可避免高频谐波对电路的干扰。
图3-3 上电及手动复位电路图
3.6液位定位及光电开关
由于开发过程时间紧迫,暂时未购买到合适的液位监测传感器,因此在实际开发过程中采用三个开关进行代替,按下按钮表示水位到达相应的水位。另外为了直观的看出控制输出信号的转台,开发过程中将光电开关改为一发光二级管并与电阻串联接地。见图3-4。
图3-4 水位计光电开关替代元件
3.7 1602显示屏
利用滑动变阻器调节背光灯与显示字符的对比度,利用三极管的及P2.7控制背光的的暗与灭。接线原理见图3-5。
图3-5 1602接线原理图
3.8 DS18B20温度传感器
由于此款温度传感器输出串行通信信号,电路图相对简单,见图3-6。
图3-6 DS18B20温度传感器接线图
第四章 软件设计
4.1整体设计及说明
系统单片机代码采用汇编语言编译,以伟福仿真器V8/L为开发环境。系统软件实现的功能:
1)通过LCD显示温湿度值及水位;
2)比较监测到的水位,发现低水位时自动掉电并声光报警;
3)根据相对湿度值控制加湿器的开关。
根据监控系统功能要求,系统软件流程图设计如图所示。
显示温湿度
初始化
载入程序
读干球温度T
读湿球温度TS
求出相对湿度D
读水位H
判断H>Ho
是否成立
开启加湿器
判断D >D0是否成立
声光报警并关闭加湿器
是
否
是
否
关加湿器
图4-1 主程序流程图
初始化开始,然后载入程序,根据显示数据读出干球温度T,湿球温度TS,根据干湿球温度求出相对湿度D,然后读出显示的水位H,判断水位H是否大于最小水位Ho:若H<=Ho,则声光报警并关闭加湿器,然后显示温湿度,再读出一个干球温度T,湿球温度TS,计算出相对湿度D,读出水位H循环,直至H>Ho成立后,判断相对湿度D与最小湿度Do的大小比较,若D<=Do则开启加湿器,显示温湿度,循环直至相对湿度D<=Do,关闭加湿器,然后显示温湿度过程循环。
4.2 DS18B20流程设计
每个DS18B20温度传感器的流程图设计如下:
启动温度转换
读取温度
温度处理
跳过ROM匹配
DS18B20复位
跳过ROM匹配
DS18B20复位
图4-2 DS18B20模块程序流程图
传感器DS18B20复位,跳过ROM匹配后启动温度转换,DS18B20复位然后跳过ROM匹配,再读取温度后进行温度处理,保留一位小数。读取数据及传送的程序如下:
READ_TEMP: ;读1820内部温度子程序.
CALL RESET
JB 70h,EXT1
CALL SKIP_ROM
CALL TEMP_CONV ;温度AD变换
CALL DELAY_600MS
CALL RESET
CALL SKIP_ROM
CALL TEMP_GET ;发取温度的命令
CALL READ ;接收...
EXT1:
RET
SKIP_ROM:;跳过ROM检测
MOV A,#0CCH ;#0CCH为跳过rom命令
CALL WRITE
RET
RECALL_EPROM:;重调Eprom
MOV A,#0B8H
CALL WRITE
RET
TEMP_CONV:
MOV A,#44H ;AD变换
CALL WRITE
RET
TEMP_GET:
MOV A ,#0BEH;读18b20命令
CALL WRITE
RET
;********* 18B20基本时序子程序
RESET: ;初始化子程序
SETB P1.2
NOP
CLR P1.2 ;拉低
MOV R3,#150 ; *4=600US
CALL DELAY_BY_R3
SETB P1.2;拉高
MOV R3,#15 ; 60US
CALL DELAY_BY_R3
MOV R3,#60 ;4个周期*60=240US内检测
A1: JNB P1.2,A2 ;检测到低平信号
DJNZ R3,A1 ;如果没有应答的低电平信号,返回A1重新检测,超时后下一行,
SETB 70h ;DS1820不存在.
JMP A3
A2: CLR 70h
MOV R3,120;240US;等恢复时间2*120=240us
DJNZ R3, $
A3:
RET
WRITE:
MOV R2,#8;一个字节为8位
CLR C ;C位清0 C位用来放A的一位数据,用移位的方法放入C
B1: SETB P1.2
NOP
CLR P1.2
MOV R3,#4 ;16US
CALL DELAY_BY_R3
RRC A;把A中的数送入C
MOV P1.2,C ;把C送入总线
MOV R3,#12;48US(一位数据的发送:60us<tx<120us)
CALL DELAY_BY_R3
SETB P1.2 ;拉高1us结束一位
NOP
DJNZ R2,B1
RET
4.3 1602字符型LCD流程设计
1602字符型LCD流程设计如下:
延时15ms
显示模式设置
延时5ms
显示关闭
显示清屏
延时5ms
延时5ms
显示光标移动设置
延时5ms
显示开及光标设置
显示位置设置
延时
显示温度各位数值
1602初始化
图4-3 1602液晶驱动程序流程图
显示器1602初始化后延时15ms,显示模式设置,再延时5ms,显示关闭,延时5ms显示清屏,再延时5ms显示光标移动设置延时5ms显示开及光标设置,然后显示位置设置,延时,显示温度各位数值。此部分主要程序过长,参见附录一。
第五章 系统调试
系统与VW8系列的仿真环境下开发,编程过程中利用软件仿真调试系统,当软仿通过则利用该仿真器仿真,并按顺序检查错误进行修改,最终将程序的HEX文件烧录进入单片机进行实测。
第六章 总结
通过本次单片机学习课程的毕业设计,使自己在理解单片机基本电路的基础上掌握了简单电路的设计方法,同时对整个课题的编程方法和技巧也有了一定的认识和理解,并初步具备了独立编程和系统调试的能力。在本次课题设计中,自己遇到了不少问题,通过请教刘老师和翻阅资料,最终将问题解决。尤其是在调试程序时,运用软件仿真,逐步排查错误,最终将程序调试成功。在此过程中,自己的编程能力得到了加强,同时也锻炼了自己的耐性。总之,通过本次设计,使自己受益匪浅。另外,在智能加湿器的开发过程中我体会到了自动化得真正含义,对以后的学习和工作奠定了一定的基础,以后进一步的学习过程中一方面要拓展智能的加湿器的功能和应用范围,使之更加完善。另一方面还要探究新的课题,开发新的单片机应用系统,问何那得清如许,为由源头活水来!走上单片机开发之路,我要将自己的知识转化为社会可以运用的技术,为社会的进步尽自己一份力量。
参考文献
1 薛殿华.空气调节.北京:清华大学出版社,1991.
2 赵玉刚 邱东传.感器基础. 北京:中国林业出版社;北京大学出版社,2006.8
3 张俊谟.单片机中级教程:原理与应用. 北京:北京航空航天大学出版社,2006.10
4黄晓因.张连根.干湿球法测量相对湿度算法研究及单片机实现[[J].云南族大学学报:自然科学版.2003, I 2 ( 3 ) : I55 -157
5胡玉峰.自动与人工观测数据的差异[J〕.应用气象学报,2004.15(fi).
6孙晓波. DS18B20在多点温控系统中的应用J. 哈尔滨商业大学学报(自然科学版),2002,18(4):年,卷(期).
7李广弟等编著,《单片机基础》,北京航空航天大学出版社,2001年7月.
8 沙占友 集成智能传感器原理与应用 电子工业出版社2004.1 99~108
9 沙占友 王书海 张永昌 The design of Automatic Measure System of Energy Sources,ICEMI’2003 ,2003.8
10 廖惜春 基于 AT89C52 的温湿度智能监控系统的实现 现代电子技术 2003年第10期 10~12
11 李竹 简单温控和湿控电路的探讨 山西师范大学学报(自然科学版)200 年3月 第17卷第1期 2~4
12 史军勇 冀捐灶 杨宝强 基于 AT89C2051 的温湿度控制仪 电子技术 2004年第1期 17~19
13 黄国权,乔建安,陈宁 基于 MCS51 湿度检测系统的实现 广西工学院学报第 2002 年13 卷第 4 期 27~29
14 唐述宏 单片机构成的环境温湿度实时测控装置设计 国外电子元器件2004 年第4 期 34~35
15 许平 田瑜 张振仁 通用型温湿度检测仪的研制 中国仪器仪表 2004年第1期 31~32
16 姚岚 余海湖 姜德生 一种新型光纤湿度敏感元件 传感器技术 2001年第2期 25~28
17 孙炎增,郑国强 基于ADμC812的环境温湿度测量仪设计与校准 河南科技大学学报 16~17
致 谢
在毕业设计期间,始终得到指导老师的悉心指导。整个学习和设计过程中,我深切的体会到了导师严谨的治学精神、渊博的知识、敏锐的思维、对工作的热情态度和朴素高尚的人格修养,相信这些将使我终生受益。在此论文完成之际,谨向我敬爱的导师表示最诚挚的敬意。
由衷地感谢老师给予我的许多指导和帮助。也由衷地感谢各位同学为我的无私帮助,而且他们孜孜不倦的学习精神永远是我学习的榜样。同时,也向所有帮助支持过我的老师、同学和朋友致以衷心的感谢。
附录一 LCD控制及显示子程序
DISPLAY: MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
CALL WRITE_DATA_TO_LCD
INC R1
DJNZ R0,DISPLAY
RET
WRITE_NOT_CHECK_BUSY:
SETB E
NOP
NOP
CLR RS ;写入控制命令的子程序
CLR RW
CLR E
RET
ENABLE:
SETB E
NOP
NOP
CLR RS ;写入控制命令的子程序
CLR RW
CLR E
ACALL TEST_BUSY
SETB E
RET
TEST_BUSY:
SETB E
NOP
NOP
MOV P0,#0FFH ;判断液晶显示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P0.7,TEST_BUSY ;如果P0.7为高电平表示忙就循环等待
RET
WRITE_DATA_TO_LCD:
SETB E
NOP
NOP
SETB RS ;RS=1
CLR RW ;RW=0 ;准备写入数据
CLR E ;E=0 ;执行显示命令
ACALL TEST_BUSY ;判断液晶模块是否忙?
SETB E ;E=1 ;显示完成,程序停车
RET
;**********数据转换*******
DATA_CONV: ;数据转换
MOV A,28H ;低字节
ANL A,#0FH;去除高位
MOV B,#6;乘6得到实际数值的100倍.
MUL AB
MOV B,#10
DIV AB
MOV 33H,A;小数位高
MOV 32H,B; 小数位低
MOV A,28H
MOV C,29H.0 ;29h高位的低4字节
RRC A
MOV C,29H.1
RRC A
MOV C,29H.2
RRC A
MOV C,29H.3
RRC A
MOV 28H,A ;重新合成.结果存在28H.
MOV A,28H
MOV B,#10
DIV AB
MOV 26H,A ;整数位高
MOV 25H,B ;整数位低
;-------------------------
MOV A,2AH
MOV B,#10
DIV AB
MOV 40H,B ;高温限值个位
MOV B,#10
DIV AB
MOV 41H,B;十位
MOV 42H,A;百位
;----------------------------
MOV A,2BH
MOV B,#10
DIV AB
MOV 43H,B ;低温限值位个位
MOV B,#10
DIV AB
MOV 44H,B ;十位
MOV 45H,A ;百位
CLR C
MOV A,28H;现温度值与高温限值比较
SUBB A,2AH
JC BIG ;如果高.则关机器
CLR C
MOV A,2BH;现温度与低温限值比较
SUBB A,28H
JC X_BIG ;低温限值比现温高,则开机器
AJMP CONVERT_END
BIG:
AJMP CONVERT_END
X_BIG:
CONVERT_END:
RET
;*********显示温度**************
DISPLAY_18B20_TEMP: ;LCD_显示子程序
MOV P0,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB3;显示'WENDU:'
MOV R1,#0 ;码表初值
MOV R0,#7;字数
CALL DISPLAY
;---------------显示温度值高位
MOV DPTR,#LED_DATA
MOV R1,26H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示温度值低位
MOV DPTR,#LED_DATA
MOV R1,25H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示小数点
MOV DPTR,#DOT
MOV R1,#0 ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示温度值小数高位
MOV DPTR,#LED_DATA
MOV R1,33H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示温度值小数低位
MOV DPTR,#LED_DATA
MOV R1,32H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示单位度
MOV DPTR,#SIGN
MOV R1,#0 ;码表初值
MOV R0,#2;字数
CALL DISPLAY
RET
;*********显示限值.*****************
DISPLAY_18B20_TEMP_XZ:
MOV P0,#11000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_L ; 显示'L:'
MOV R1,#0 ;码表初值
MOV R0,#2;字数
CALL DISPLAY
;---------------显示温度限值高位
MOV DPTR,#LED_DATA
MOV R1,45H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示温度限值低位
MOV DPTR,#LED_DATA
MOV R1,44H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;-----------------
MOV DPTR,#LED_DATA
MOV R1,43H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
MOV P0,#11000111B; 显示位置
ACALL ENABLE
;-- ----------------------------------------
MOV DPTR,#TAB_H ; 显示'H:'
MOV R1,#0 ;码表初值
MOV R0,#2;字数
CALL DISPLAY
;---------------显示高温度限值高位
MOV DPTR,#LED_DATA
MOV R1,42H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;---------------显示高温度限值低位
MOV DPTR,#LED_DATA
MOV R1,41H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
;-------------------
MOV DPTR,#LED_DATA
MOV R1,40H ;码表初值
MOV R0,#1;字数
CALL DISPLAY
RET
;******** *提示语****************
DISPLAY_18B20_HELLO:
MOV P0,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_HELLO
MOV R1,#0 ;码表初值
MOV R0,#16;字数
CALL DISPLAy
RET
;/*
DISPLAY_18B20_TESTING:
MOV P1,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_TESTING
MOV R1,#0 ;码表初值
MOV R0,#16;字数
CALL DISPLAy
RET
;*/
DISPLAY_18B20_ERROR:
MOV P0,#00000001B ;清屏并光标复位
ACALL ENABLE
MOV DPTR,#TAB1
MOV R1,#0 ;码表初值
MOV R0,#16;字数
CALL DISPLAy
RET
DISPLAY_WATING:
MOV P0,#00000001B ;清屏并光标复位
ACALL ENABLE;调用写入命令子程序
MOV P0,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB2
MOV R1,#0 ;码表初值
MOV R0,#13;字数
CALL DISPLAy
RET
DISPLAY_SAVE:
MOV P0,#00000001B ;清屏并光标复位
ACALL ENABLE;调用写入命令子程序
MOV P0,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_SAVE
MOV R1,#0 ;码表初值
MOV R0,#10;字数
CALL DISPLAy
RET
DISPLAY_SETING_TEMP_H:
MOV P0,#00000001B ;清屏并光标复位
ACALL ENABLE;调用写入命令子程序
MOV P0,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_SETING_TEMP_H
MOV R1,#0 ;码表初值
MOV R0,#13;字数
CALL DISPLAy
RET
DISPLAY_SETING_TEMP_L:
MOV P0,#00000001B ;清屏并光标复位
ACALL ENABLE;调用写入命令子程序
MOV P0,#10000000B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_SETING_TEMP_L
MOV R1,#0 ;码表初值
MOV R0,#13;字数
CALL DISPLAy
RET
DISPLAY_ON:
MOV P0,#11001101B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_ON
MOV R1,#0 ;码表初值
MOV R0,#3;字数
CALL DISPLAy
RET
DISPLAY_OFF:
MOV P0,#11001101B; 显示位置
ACALL ENABLE ;执行指令
MOV DPTR,#TAB_OFF
MOV R1,#0 ;码表初值
MOV R0,#3;字数
CALL DISPLAy
RET
;/*
ADJ_FLASH:
MOV P1,#1 ;在显示数字的位置用三个空格..
ACALL ENABLE;
;*/
;***** *提示语****************
TM0: ;定时器程序.
DJNZ R0,N1
CPL 02H
MOV R0,#14H
N1:
MOV TL0,#0B0H
MOV TH0,#3CH
RETI ;中断返回
;****廷时程序***********
DELAY_BY_R3:
NOP
NOP
DJNZ R3,DELAY_BY_R3
RET
DELAY_BY_R6:
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
DELAY_2MS:
MOV R6,#2
F2: MOV R7,#75
x1: NOP
NOP
DJNZ R7,x1
DJNZ R6,F2
RET
DELAY_600MS:
MOV R6,#0
G2: MOV R7,#0
G1: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,G1
DJNZ R6,G2
RET
DELAY_1M:
MOV R6,#0
MOV R7,#0
E1: NOP
NOP
DJNZ R7,E1
DJNZ R6,E1
RET
DEFINE_DATA:
DB 0CH,12H,12H,0CH,00H,00H,00H,00H;度
DB 04H,0CH,12H,0DH,1EH,04H,08H,00H;今
DB 0EH,04H,1FH,04H,04H,0AH,11H,00H;天
DB 0EH,0EH,0EH,1FH,04H,0EH,17H,00H;是
DB 10H,1FH,02H,0FH,0AH,1FH,02H,00H;年
DB 0FH,09H,0FH,09H,0FH,09H,13H,00H;月
DB 0FH,09H,09H,0FH,09H,09H,0FH,00H;日
LED_DATA: DB '0123456789'
TAB_HELLO:
DB 'Hello!' ;6
DB 0H,1H,2H,3H,4H,5H,6H
TAB_TESTING:
DB 'TEXTING...' ;10
TAB1:
DB '18B20 NO CONNECT'
TAB2:
DB 'Waiting......'
TAB3:
DB 'WENDU: '
DOT:
DB "."
SIGN:
DB 00H,'C'
TAB_L:
DB 'L:'
T
展开阅读全文