《毕业设计(论文)基于单片机最小系统下多点测温系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机最小系统下多点测温系统设计.doc(31页珍藏版)》请在三一办公上搜索。
1、皖 西 学 院本科毕业论文(设计)论 文 题 目基于单片机最小系统下多点测温系统设计姓名(学号) 系 别 机械与电子工程系 专 业 电子信息科学与技术 导 师 姓 名 二 一 年 六 月目 录1、毕业论文正文2、皖西学院本科毕业论文(设计)任务书3、皖西学院本科毕业论文(设计)开题报告4、皖西学院本科毕业论文(设计)中期检查表5、皖西学院本科毕业论文(设计)指导教师意见表6、皖西学院本科毕业论文(设计)评阅教师意见表7、皖西学院本科毕业论文(设计)答辩记录表基于单片机最小系统下多点测温系统设计作 者指导教师摘 要:本文介绍了数字温度测量及自动控制系统的设计。采用单片机来实现对温度的控制。它的主
2、要组成部分有:AT89S51单片机、温度传感器、键盘与显示电路。它可以实时的显示和设定温度,实现对温度的自动控制。通过测试表明,本设计对温度的控制有方便、简单的特点,从而大幅提高了被控温度的技术指标。关键词:单片机 温度传感器 键盘和显示 Based on AT89S51 digctrital temperature measurementand display system designAbstract: As the technology advances in industrial production in the temperature is charged with common
3、parameters, and the use of those charged with SCM to the parameters of control has become the mainstream. In this paper, digital temperature measurement and automatic control system design. In this paper, SCM to achieve the temperature control. It is a major component of: AT89S51 SCM, temperature se
4、nsor, keyboard and display circuit, temperature control circuit. It can display real-time and temperature settings, and the temperature control. Passed the tests show that the design of the temperature control is convenient and simple characteristics, thus greatly raising the temperature was charged
5、 with the technical indicators.Key words: MCU Temperature sensor Keyboard and Demonstration 目录1 引言12 系统的总体设计22.1 设计背景22.2 电路的总体工作原理23 系统的硬件设计33.1 单片机最小系统的设计33.2 温度传感电路设计53.2.1 温度传感器的选取53.2.2 测温原理63.3 键盘电路的设计83.4 显示电路的设计104、软件部分的设计(程序见附录2)124.1 各模块程序设计124.2 系统的调试135 全文总结145.1 经济效益分析145.2 社会效益分析15致谢16
6、参考文献17附录118附录2191 引言温度成为工业生产过程中最普遍、最重要的工艺参数之一。不仅如此,在我们的生活中时时刻刻也关注着温度,常常需要对温度进行检测和监控,例如家用电器中的电冰箱,空调等。随着时代的进步、社会的发展、科学技术的不断更新,温度的测量范围要求不断扩大,同时温度的测量准确性要求不断提高。测温系统的研发也越来越受关注。历来研究开发的测温系统都是由以下几个部分组成:电源电路,温度采集部分,温度显示部分,报警电路。其中温度采集部分主要是通过温度传感器对温度信号进行采集并处理然后传给上位机。传统温度采集的方法主要是使用诸如热电偶、热电阻、半导体PN结之类的模拟温度传感器。信号经取
7、样、放大后通过模数转换,再交自单片机处理。被测温度信号从温敏元件到单片机,经过众多器件,易受干扰、不易控制且精度不高9。本设计采用一种新型的数字式温度传感器DS18B20,它能代替模拟温度传感器和信号处理电路,直接与单片机连接,完成温度采集和数据处理。同时控制部分采用我们自己制作的单片机最小系统。单片机作为微型计算机的一个重要分支,以高性能、高速度、体积小、价格低廉、稳定可靠而得到广泛应用,是设计智能化仪器仪表的首选微控制器,对人类社会产生了巨大的影响。其中我们制作的单片机最小系统是一种结合简单的接口电路构成的单片机经系统,它是智能化仪器仪表的基础,也是测控。该系统带有数码管,可直接显示所测温
8、度,还有矩阵键盘,可进行键盘控制,为设计提供了很多方便。 2 系统的总体设计2.1 设计背景温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。本设计由于采用了新型单片机对温度进行控制,以其测量精度高,操作简单。可运行性强,
9、价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量及控制。本设计是一个数字温度测量及控制系统,能测柜内的温度,对温度进行控制、测量与显示。保证环境保持在限定的温度中。2.2 电路的总体工作原理温度控制系统采用AT89S51八位机作为微处理单元进行控制。正常工作温度范围AT89S51温度控制显示电路温度传感器键盘选定: 560,温度误差:1。八路测温输入单片机, 显示电路显示所测温度。系统框图如图2.1:图2.1 系统框图根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89S51为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器DS
10、18B20,省却了采样保持电路、运放、数模转换电路以及进行长距离传输时的串并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度中央微处理器 AT89S51: AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S51引脚结构,芯片内集成
11、了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率,并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存R
12、AM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式。AT89S51单片机综合了微型处理器的基本功能。按照实际需要,同时也考虑到设计成本与整个系统的精巧性,所以在本系统中就选用价格较低、工作稳定的AT89S51单片机作为整个系统的控制器。3 系统的硬件设计3.1 单片机最小系统的设计目前的单片机开发系统只能够仿真单片机,却没有给用户提供一个通用的最小系统。由设计的要求,只要做很小集成度的最小系统应用在一些小的控制单元。其应用特点是:(1)全部I/O口线均可供用户使用。 (2)内部存储器容量有限(只有4KB地址空间)。 (3)应用系统开
13、发具有特殊性图3.1 最小系统图单片机最小系统如图3.1所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。时钟电路用于产生MCS-51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。MCS-51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和
14、起振的快速性。晶体的振荡频率为12MHz。把EA脚接高电平,单片机访问片内程序存储器,但在PC值超过0FFFH(4Kbyte地址范围)时,将自动转向执行外部程序存储器内的程序。MCS-51的复位是由外部的复位电路来实现。采用最简单的外部按键复位电路。按键自动复位是通过外部复位电路的来实现的.我们选用时钟频率为12MHz。3.2 温度传感电路设计3.2.1 温度传感器的选取本系统采用DS18B20,其的性能特点:采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)测温范围为-55-+125,测量分辨率为0.06
15、25内含64位经过激光修正的只读存储器ROM适配各种单片机或系统机用户可分别设定各路温度的上、下内含寄生电源。DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图3.2所示。图3.2 DS18B20管脚图DS18B20有六条控制命令,如表3.1所示:指 令 约定代码 操 作 说 明 温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中 重新调E2RAM B
16、8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU 表3-1 DS18B20控制命令3.2.2 测温原理DS18B20的测温原理如图图3.3 DS18B20测温原理图图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-5
17、5 所对应的基数分别置入减法计数器和温度寄存器中,减法计数器和温度寄存器被预置在-55 所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到0时温度寄存器的值将加1,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。CPU对DS18B20
18、的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O
19、口线要接5K左右的上拉电阻.我们采用的是第一种连接方法,如图3.3所示:把DS18B20的数据线与单片机的13管脚连接,再加上上拉电阻。硬件电路图如下所示:图3.4 温度传感电路图3.3 键盘电路的设计如图3.6所示,用AT89S51的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;液晶显示器上显示每个按键的“0F”序号。把8根数据线和P2口连接,把3根控制线和P2.5、P2.6、P2.7连接。给VCC端加上+5V的电压,GND端接地。VEE端的驱动电压不要过大,要调节滑动变阻器使VEE在0.7伏以下显示器才能工作。键盘中阿拉伯数字09是数据输入键,A键是写上
20、限的功能键,B键是写下限的功能键,C键是取消键,其他的键置空。对应的按键的序号排列如图3.5所示图3.5 按键的序号排列图图3.6中微处理单元是AT89S51单片机,X1和X2接12M的两脚晶振,接两个30PF的起振电容,J1是上拉电阻.单片机的P1口8位引脚与行列式键盘输出脚相连,控制和检测行列式键盘的输入.行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,有键按下时,行线的电平状态将由与此行线相连接的列线的电平决定.键盘输入的信息主要进程是:1 CPU判断是否有键按下.2 确定是按下的是哪个键.3 把此键所代表的信息翻译成计算机可以识别的代码或者其他的特征符号键盘硬件电路图如
21、下:图 3.6 键盘硬件电路图3.4 显示电路的设计液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。根据显示内容和方式的不同可以分为,数显LCD,点阵字符LCD,点阵图形LCD在此设计中我们采用点阵字符LCD,这里采用常用的2行16个字的1602液晶模块。1602采用标准的14脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电
22、平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。 第1516脚:空脚。与单片机的连接如图3.7所示。图 3.7 液晶显示电路图4、软件部分的设计(程序见附录2)4.1 各模块程序设计软件部分主要有主程序、温度读取子程序、温度显示子程序和键盘扫描子程序18。各部分软件协同工作以完成温度的采集和控制的任务。本系统各部
23、分软件由汇编语言完成,由主程序调用各功能子程序,完成温度的采集、传输、处理和显示。主程序流程图如图4.1所示。初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束
24、八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?初始化开始调用按键扫描子程序调用温度读取子程序温度显示结束八路采集完了?调用按键扫描子程序调用温度读取子程序八路采集完了?结束开始初始化调用按键扫描子程序调用温度读取子程序温度显示八路采集完了?开始初始化调用按键扫描子程序调用温度读取子程序温度显示八路采集完了?开始初始化调用按键扫描子程序调用温度读取子程序温度显示开始初始化调用按键扫描子程序调用温度读取子程序温度显示开始初始化调用按键扫描子程序调用温度读取子程序温度显示开始初始化调用按键
25、扫描子程序调用温度读取子程序温度显示开始初始化调用按键扫描子程序调用温度读取子程序温度显示开始初始化调用按键扫描子程序调用温度读取子程序开始初始化调用按键扫描子程序开始初始化调用按键扫描子程序开始初始化开始初始化开始开始结束八路采集完了?温度显示调用温度读取子程序调用按键扫描子程序初始化 温度显示结束八路采集完了?调用温度读取子程序温度显示结束八路采集完了?图4.1 主程序流程图按键扫描十分重要,它将确定采集的温度信号(数码管显示的温度值)是哪一路的。在按键扫描中我们主要要克服的一个问题就是按键的抖动影响。一般去除抖动影响的方法有软、硬件两种,在这里我们主要用软件方法:在检测到有键按下时,执行
26、一个10ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持,则确认为该键处于闭合状态,从而去除了抖动影响。其流程图如图4.2所示。 图 4.2 键盘扫描流程图4.2 系统的调试调试部分是本设计的又一重点部分,如何按设计要求的实现实物制作,不仅是本设计的重要要求,而且也是本设计最终的目标。实现设计的目标,是关系到本设计的最重要的一步。调试步骤,第一,检查硬件电路的连接,是否正确,做出进一步确定,当发现硬件确实是正确无误,通电测试硬件。第二,当完成了第一步之后,可以把编译成二进制代码的程序灌进单片机,进行通电调试,观察显示是否符合设计的要求,验证采集来的信号是不是与现实的数据对应
27、,如果不符合要求,修改程序,使之达到要求。第三,当显示达到要求之后,要把制作实物,作进一步的固定,防止线路的震动影响系统的稳定性。调试过程中,发现数码管的显示有问题,这主要是程序问题,通过多次修改源程序可以达到设计要求的效果。其他方面都很好,不过,经过设计发现DS18B20的一个缺陷:当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。本设计测8点温度,只需要8个DS18B20,所以不需要担心总线驱动这一问题。经过多次调试最终可以实现对温度的读取显示,并且当温度值超过设定值时会报警。5 全文总结5.1 经济效益分析本系统的设计,是为
28、了保证某特定环境温度维持在设定的范围内,以保证工作系统在稳定的状态下工作。本系统的设计成本很低,总成本不超过50元人民币。如果采用大批量生产的话,生产成本会更低。在市场上的温度自动控制系统的价格在百元人民币以上。对于本系统的使用者来说,本系统能够很稳定的控制温度而且稳定性很高。只要配上适当的温度传感器,这个系统便还可以实现很多领域的温度自动控制。这对于提高系统的利用率,避免重复设计有很大的帮助的。在本系统的作用下,可以为工作系统提供一个良好的环境,使产品的数量和质量有很大的提高。使得产品的生产成本降低,从而使系统的使用者获得的利润提高了。通过分析表明:本系统是一个性价比比较好的系统,不论对于生
29、产者还是使用者来说,它都可以带来好的经济效益。5.2 社会效益分析本设计是以AT89S51为核心,利用软硬件相结合的自动控制的典型例子。在单片机自动控制已经广泛的应用于人们的生产和生活的今天,传统用模拟电路来控制温度的做法,已经逐渐被淘汰。这个系统的实现,改变了传统的温度控制方法,为温度的控制开辟了一条新的道路。根据我国的科技和工业水平,这个系统的设计是符合工业生产的需要。实现我国的工业化,自动控制是其中的一个重要目标,自动控制系统正广泛的应用于工业生产和人们的日常生活。本系统的设计成功知识实现自动控制的“冰山一角”,但它为以后更加智能化、人性化的自动控制系统的设计,作了铺垫。因此这种系统的设
30、计具有比较好的社会效益。经过四个多月的方案论证、系统的硬件和软件的设计、系统的调试。查阅了大量的关于传感器、单片机及其接口电路、以及控制方面的理论。经过了一番特殊的体验后,经历了失败的痛苦,也尝到了成功的喜悦。第一次靠用所学的专业知识来解决问题。检查了自己的知识水平,使我对自己有一个全新的认识。通过这次毕业设计,不仅锻炼自己分析问题、处理问题的能力,还提高了自己的动手能力。这些培养和锻炼对于我们这些即将走向工作岗位的大学生来说,是很重要的。这次毕业设计基本的完成了任务书的要求,实现了温度的控制。通过测试表明系统的设计是正确的,可行的。但是由于设计者的设计经验和知识水平有限,系统还存在许多不足和
31、缺陷。致谢在本次毕业设计中,不仅自己付出了很多心血,也得到了很多老师和同学的支持,为我创造了很多有利条件,在这里,我要特别感谢我的导师张斌老师,在毕业设计的开始,张老师给了我很多帮助,指导我了解了很多单片机的相关知识,并在当我设计遇到困难时,及时的给予帮助和鼓励,同时,对我其他学科的鼓励也渗透在毕业设计的同时,给了我莫大的信心,为我顺利完成毕业设计起到了非常重要的作用。同时。我还要感谢实习组及实验室的所有老师,为我的毕业设计提供了非常便利的条件。最后还要感谢帮助我的同学,在我遇到困难时给予我耐心的帮助。再次对在本次毕业设计中给予过我帮助的老师和同学至上我最真挚的谢意。参考文献1.陈光东,赵性初
32、,单片机微型计算机原理与接口技术武汉:华中理工大学出版社2.先锋工作室,单片机程序设计实例J.北京:清华大学出版社,20033.李朝清.单片机原理及接口技术J. 北京:航空航天大学出版社,19974.范寿康等编著,单片微型计算机的应用开发技术J. 北京:人民邮电出版社,19985.李珍,付植桐编著.单片机原理与应用技术MJ. 北京:清华大学出版社,6.万福君,潘松峰.单片微机原理系统设计与应用J.中国科学技术大学出版7.王守中.51单片机开发入门与典型实例J.北京:人民邮电出版社,20078. 周长. 基于单片机的多功能温度检测系统的设计与研究M.电子技术. 吉林大学,20089. 彭俊. 基
33、于FPGA的温度采集控制器的分析和设计M.电工技术. 同济大学,2008 10. 陈妙芳、胡晓东. 基于AT89S51单片机的温度控制系统设计M.机械工程师. 11. 钟伟雄. 基于8051单片机的温度采集系统M.科技创新导报. 福建师范大学协和学院.2008 12. 李海真、孙运强、许鸿鹰. 高精度多路温度采集模块硬件电路设计M.电子测试. 200813. 赵晓东、龚华平. 数字PID温度控制实验系统的设计与实现M.科技信息. 200814.基于AT89C51和DS18B20的最简温度测量系统的设计M.电子技术附录1附录2DI EQU P3.3DO EQU P3.4CLK EQU P3.5C
34、S EQU P3.6 ; LCD端口定义D2RS EQU P2.7D2RW EQU P2.6D2E EQU P2.5KEYPORT EQU P1 ; DS18B20端口定义TEMPER_L EQU 36HTEMPER_H EQU 35HTEMPER_NUM EQU 38HFLAG1 BIT 00HDQ BIT P2.4ORG 0000HLJMP MAINORG 0003HJMP INT00ORG 0038HMAIN: MOV SP,#60H SETB P2.0 SETB P2.1 SETB P2.2 SETB EA SETB EX0 SETB P2.0 SEETB P2.1 SETB P2.2
35、 MOV R0,#01H ;清屏并置地址计数器AC为0 LCALL DIS_CMD _WRT MOV R0,#38H ;8位数据接口,双行显示,5*7点阵 LCALL DIS_CMD _WRT CALL DIS_CUR_OFF MOV 42H,#20 MOV 43H,#32XIAN: LCALL GET_TEMPER LCALL DISP LCALL DELAY43MS MOV A,TEMPER_NUM SUBB A,42H JC ZZZL MOV A,TEMPER_NUM SUBB A,43H JNC ZZZ2 SETB P2.0 SETB P2.1 SETB P2.2 JMP XIANZZ
36、ZL: CLR P2.0 CLR P2.2 JMP XIANZZZ2: CLR P2.0 CLR P2.1 JMP XIANINT0: ;扫描键盘程序 LCALL ASKSAO: CLR 01H LCALL KEY JNB 01H,SAO CJNE A,#10,PAN LCALL ANSW RETIPAN: CJ RETI ;显示函数部分,可供调用DIS_CUR_OFF: MOV R0,#0CH LCALL DIS_CMD_WRT RETDIS_CUR_ON: MOV R0,#0EH LCALL DIS_CMD_WRT RETCHK_BUSY_FLG: MOV P0,#0FFH CLR D2R
37、S NOPNE A,#12,SAO NOP NOP LCALL DISPLAY_RD JB ACC.7,CHK_BUSY_FLG RETCLEAR_DIS: MOV R0,#01H LCALL DIS_CMD_WRT RETDIS_CMD_WRT: LCALL CHK_BUSY_FLG MOV P0,R0 CLR D2RS NOP NOP NOP LCALL DISPLAY_WRT RETDIS_DATA_WRT: LCALL CHK_BUSY_FLG CJNE A,#10H,DIS_DAT_WRT1 MOV P0,#0C0H ;1100,00000行起始地址为40 CLR D2RS NOP
38、NOP NOP LCALL DISPLAY_WRTDIS_DAT_WRT1: MOV P0,R0 SETB D2RS NOP NOP NOP LCALL DISPLAY_WRT RETDISPLAY_WRT: CLR D2RW NOP NOP NOP SETB D2E NOP NOP NOP CLR D2E NOP NOP NOP RETDISPLAY_RD: SETB D2RWNOPNOPNOP CLRNOPNOPCLR D2ENOPNOPRETDIS_DATA_RD: LCALL CHK_BUSY_FLGMOV P0,#0FFHSETB D2RSLCALL DISPLAY_RDRET ;键
39、盘程序,出口:A为按键值 01H:0无键按下 1 有键按下KEY: MOV KEYPORT,#0FH MOV A,KEYPOR CJNE A,#0FH,KEYDOWN MOV A,#0FFH RETKEYDOWN:LCALL DELAY43MS MOV KEYPORT,#0FH MOV A,KEYPORT CJNE A,#0FH,KEYDOWN_YES MOV A,#0FFH RETKEYDOWN _YES: MOV B,A MOV KEYPORT,#0F0H MOV A,KEYPORT ORL A,B PUSH 30H MOV 30H,AMOV R3,#10H MOV DPTR,#KEYVA
40、LUENEXT_KEY:MOV A,R3 MOVC A,a+dptr CJNE A,30h,NEXTKEYVALUE DEC R3 POP 30HWAITKEY_F:MOV KEYPORT,#0FH MOV A,KEYPORT CJNE A,#0FH, WAITKEY_F MOV A,R3 SETB 01H RETNEXTKEYVALUE: DJNZ R3,NEXT_KEY DEC R3 POP 30HWAITKEY_FREE: MOV KEYPORT,#0FH MOV A,KEYPORT CJNE A,#0FH, WAITKEY_FREE MOV A,R3 SETB 01H RETKEYVALUE:DB 0FFH,7EH,7DH,7BH,77H,0BEH,0BDH,0BBH,0B7H,0DEH,0DDH,0DBH,0D7H,0EEH,0EDH,0EBH,0E7HDELAY43MS: PUSH A MOV A,R3 PUSH A MOV A,R2 PUSH AMOV R3,#43DELAY:MOV R2,#0FAHASK: MOV R0,#01H ;清屏并置地址计数器AC为0 LCALL DIS_CMD_WRT MOV 40H,#0ZDZ: MOV DPTR,#LINE MOV A,40H MOVC A,A+DPTR M