还剩37页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
哈尔滨理工大学学士学位论文目录摘要……………………………………………………………………..IAbstract…………………………………………………………………..II第一章绪论
1.1太阳能热水器的发展概况及市场竞争分析
1.2太阳能热水器的应用及意义第二章太阳能热水器的组成及工作原理
2.1系统总体结构设计
2.2太阳能热水器组成及原理
2.3主要芯片的结构与特点
2.
3.1DS12887实时时钟芯片简介
2.
3.280C51单片机结构特点
2.
3.3数字温度传感器DS18B20主要特性及测温原理第三章太阳能热水器硬件设计
3.1太阳能控制器硬件结构
3.2控制器实时时钟接口电路设计
3.3水位检测和温度检测接口电路设计
3.4看门狗和复位接口电路设计
3.5键盘和显示接口电路设计
3.
5.1键盘电路
3.
5.2显示接口电路
3.6光电隔离与辅助加热电路设计第四章控制器的软件设计结束语参考文献致谢附录太阳能热水器智能控制器的设计摘 要太阳能热水器以其诸多的优点受到人们的欢迎本文结合实际太阳能热水器的具体应用,在介绍太阳能、传感器、单片机的特点基础上,详细描述了太阳能热水器的工作原理和设计方案这里根据太阳能热水器对控制器的要求与特点,提出了一种基于DS12887的太阳能热水器智能控制器的设计方法,给出了系统硬件设计及软件实现方法全文分三大部分第一部分包括第一章,描述太阳能的利用和前景发展状况第二部分包括第二章,描述太阳能系统组成及工作原理第三部分包括第
三、四章硬件设计及电路原理和软件设计,分别介绍了传感器的特点及应用、一般的太阳能热水器及循环系统、单片机发展和原理,这也是此款太阳能热水器的理论基础和必要前提关键词太阳能热水器;传感器;模糊控制;实时时钟;单片机DesignofintelligentcontrollerforSolarWaterHeaterAbstractSolarWaterHeaterispopularwithitsprettybenefitsBasedonauthor’srealexperienceonSolarWaterHeaterdesignthisarticledescribestheworkingtheoryofthissolarwaterhearerafterintroducingthecharactersofsolar、sensor、SingleChipMicrocomputerSCM.AccordingtotherequestandcharacteristicofSolarWaterheaterforthecontroller.ProvidingadesignofIntelligentCon-trollerforSolarWaterheaterbasedonDS
12887.Sumupadesignwayofthesystem’shardwareandsoftware.Thisarticleisdividedinto3parts.PartOneisChapter1includingtheuseandperspectiveofsolarenergy.PartTwoincludingChapter2describingtheincludingandthetheoryofthissolarwaterheater.PartthreeincludingChapter3Chapter4:thedesignofhardwareandsoftware、thetheoryofthecircuit.SeparatelyintroducingthecharactersanduseoftransducercommonsolarwaterheaterandcyclesystemthedevelopmentandtheoryofSingleChipMicrocomputerSCMwhicharethebasictheoryandnecessaryprecondition.[KeyWords]SolarWaterHeater、Sensor、Vaguecontrol、Realclock、SingleChipMicrocomputerSCM.第一章绪论
1.1太阳能热水器的发展概况及市场竞争分析目前,中国已成为世界上最大的太阳能热水器生产国,年产量约为世界各国之和,已有一百多家太阳能热水器生产厂但是与之配套的太阳能热水器控制器却一直处在研究与开发阶段这种控制器只具有温度和液位显示功能,而且为分段显示,温度显示误差为10%,水位显示误差为25%这种显示器还称不上控制器不具有温度控制功能,当由于天气原因而光强不足时,就会给热水器用户带来不便;即使热水器具有辅助加热功能,由于加热时间不能控制而产生过烧,从而浪费大量的电能本文设计的太阳能热水器控制器以80C51单片机为检测控制核心,采用DS12887实时时钟,不仅实现了时间、温度和水位三种参数实时显示和FUZZY控制功能,而且具有时间设定、温度设定与控制功能温度控制采用模糊控制,控制器可以根据天气情况利用辅助加热装置使蓄水箱内的水温在设定时间达到预先设定的温度,从而达到24小时供应热水的目的太阳能热水器是太阳能利用中最常见的一种装置,经济效益明显,正在迅速的推广应用,太阳能热水器能够将太阳辐射能转换热能,供生产和生活使用他主要由平板集热器、蓄水器和连接管道等部件组成,可分循环式、直流式和闷晒式当今社会发展日新月异,人们衣食住行也在不断的提高现有电热型热水器费用昂贵及燃气型的不安全性,且排放二氧化碳污染大气,北方用煤气取暖造成城市空气环境污染,这些都是太阳能热水器良好的外部生存环境太阳能热水器克服了上述缺点,他是绿色环保产品它使用简单、方便太阳能热水器顺呼时代发展的要求,满足人们对环保绿色产品的需求在人类文明程度日益提高的今天,它是现代文明社会的最佳选择应该注意到,集体单位对太阳能热水器的用量很大新建商住楼安装热水器,已是房屋开发公司计划之内的事,配套热水器的商品房销势更好
[5]此款热水器包括主、从两大系统主系统的特点是在晴好的天气利用太阳光能为热水器加热;从系统相当于电热水器,它在无光照的情况下利用电辅助加热它充分利用太阳能的丰富的免费的资源的优势,同时考虑到在阴天及夜间无法利用太阳能的缺点,充分发挥太阳能热水器和电热水器的各自优势,这是世面上大部分热水器所不能比拟的
1.2太阳能热水器的应用及意义众所周知,太阳能是取之不尽,用之不竭,没有污染的巨大能源随着世界上煤、油、气的储量日益减少,能源危机已日益增长,环境污染的危机已威胁着生态平衡,太阳能开发利用的课题已提到人类的面前有人预测二十一世纪太阳能将由辅助能源上升为主要能源但由于太阳能的分散性、季节性和地区性又给太阳能利用带来重重困难,有些技术难点尚未突破,产品造价偏高(如光电池)因而尚未被人们大规模的使用在太阳能热利用技术中,太阳能热水器是技术上比较成熟、造价比较低廉的产品,同时给人民提供不耗能源、保护环境、绝对安全的热水而受到人们的欢迎太阳能热水器是以太阳能光热转换,利用温室效应和虹吸原理使水加热的装置,此装置分为两个不同的概念
1.太阳能热水工程系统,这种系统由太阳能集热器、储水箱管线、补水箱组成不同形式的热水系统,包括自然循环式、定温放水式等等,可构成提供热水10吨到100吨的装置,大多提供集体单位使用
2.太阳能热水器是指将上述各种不见组装成一个小系统,提供家庭或需要产热水1吨以下的单位使用,此种装置算为太阳能热水器太阳能热水器(或系统)均以其采光面积作为计量单位,一般1平方米光面积可产热水100升,采光面积每种型号不同,一般在
1.5~
2.0平方米我国从“六五”计划期间开始推广太阳能热水器,到目前全国已有250万平方米采光面积的太阳能热水器,厂家又几家发展到全国约有180家左右,是目前世界上推广最大的国家之一,而且形成了规模,形成了中国特色的太阳能企业,有中国太阳能协会为中心的学术中心,以中国农村能源企业协会太阳能热利用专业委员会为中心,制定了产品标准、测试条件、产品合格证颁发等一系列措施世界各国的太阳能热水器生产发展也很快例如澳大利亚政府规定,在北部地区新建房屋一定要设置太阳能热水器,西澳大利亚已有25%的新住宅安装了太阳能热水器日本现在每年安装太阳能热水器近50万台,现在有20%的家庭安装了太阳能热水器,计划今后普及率达到25%,按照日本的“阳光计划”还将为公寓,办公楼安装6500套太阳能热水系统,为工厂安装1900套工业用太阳能热水系统以色列的法令规定所有新建筑物必须配备太阳能热水器,目前普及率已超过60%英、法、德、意、希腊五国到2000年底推广热水器600万平方米,比1990年增长2倍多国内外太阳能热水器使用量增长如此之快,其根本原因是能源问题、环保问题是当今世界各国面临的主要问题之一太阳能热水器是节能、环保产品,故受到广泛重视,发展极快,预计今后每年将以15%~20%的速度发展根据理论计算及实际应用证明,太阳能热水器每平方米光面积一年可节约标准煤200-300公斤节电1500度,或节约液化气180公斤采用本热水器与电热水器、燃气热水器相比,还具有绝对安全,最为卫生的特点,在电费,液化气、煤气价格较高的地区,用户1-3年即收回投资,在这以后提供的热水是免费的设计可以参考以下的几个意见
1.在设计民用建筑时,若此地区没有集中热水供应,可给用户安装太阳能热水器,以提供热水,提高住房的档次,在设计时将冷、热水管线预埋,以平均每套住宅建筑面积65平方计算,工程造价大约每平方米增加18-20元,
2.设计工厂浴室时,可考虑采用太阳能热水系统,每平方采光面积产热水100升计算,100平方米太阳能热水系统可产热水10吨,每人每次标准用水40升,可解决250人的洗浴用水作为工厂中低温工业热水,可根据当地各种各样的不同条件予以特殊设计
3.作为工厂中低温工业热水,可根据当地各种各样的不同条件予以特殊设计,太阳能热水器的推广应用及经济效益据不完全统计,迄今全国太阳能热水器累计安装使用总量已达300万平方米以上所以该控制器具有使用方便、性价比高、工作可靠、精度高等特为太阳能热水器的进一步推广具有积极的推动作用第二章太阳能热水器的组成及工作原理
2.1系统总体结构设计排气管不锈钢保温水箱图2-1系统结构图图2-1为系统设计的结构图,该图的系统控制原理图如下图2-2T3T2F3热集水热太阳光F1箱器T1D自来水F2图2-2系统控制原理图注释T1热水箱的温度传感器T2循环水管中的温度传感器T3集热器中的温度传感器F1循环水阀门F2冷水阀门F3热水阀门此款热水器利用微机控制主要有以下几种控制功能晨水加热控制、温水循环控制、冷水集热控制、水箱加热控制早晨水温控制由于清晨太阳光较弱,所以太阳能热水器从系统发挥作用为了提供温度不低于30摄氏度的水,热水器在清晨4-7点之间对水箱进行电加热,具体控制过程如下首先,关闭冷水阀门F2和循环水阀门F1,然后微机开始进行水箱的温度采集,同时进行温度的比较,当水箱的温度小于30摄氏度时,电热器D接通进行加热,同时微机继续对热水箱的温度进行采集当温度加热到大于30摄氏度时电热器断开,如此反复循环保证了温度的稳定循环水集热过程早晨水温控制之后(7~9点),设定当日的水箱温度N(由两位BCD次齿轮开关设定),输入微机,再利用微机控制系统,通过太阳光能对热水箱加热以达到理想温度N具体控制过程如下打开循环阀门F1,关闭冷水进水阀门F2,热水阀门F3处于空控状态然后开始比较温度,若(T3-T15摄氏度,T2T1)为止如若T1=N,那么循环水集热过程结束,进入冷水集热控制过程冷水集热控制此时热水箱温度已达到了N,冷水要进入太阳能集热器,这时温度为T3,和当日的设定温度值相比较,若T3N则将已加热的水送入热水箱,每天的控制时段大概为9点~20点具体控制过程如下关闭循环水阀门F2,打开冷水阀门F2,热水阀门F3处于可控状态若T3N,打开热水阀门F3并将保持一段时间,若T3N,关闭F3继续给太阳能集热器加热,知道温度答应N,当打开F3时此时比较水管水温T2与N的值,若T2N阀门F3继续保持打开状态,否则关闭F3可见,次过程充分利用太阳光能转化为热能,方便快捷水箱加热控制此时,也许你会问如果没有日照或者日照较弱时,到了晚上我们是否还能洗上热水澡吗?答案是肯定的,不要忘了这款热水器还有一个从系统,这时它就要发挥作用了热水箱温度为T1,将它和设定值N相比较,从而控制是否打开电加热,控制时段为下午,具体过程如下若T1N,电加热接通;否则,电加热断开,而且,15点~20点中的每个小时有下表的关系表一时间(时)温度比较加热值(度)15T135N3516T140N4017T145N4518T150N5019T155N5520T160N60最终热水箱的温度加热到设定值N由此可见,即使没有日照我们照样可以洗上热水澡了综上所述,太阳能供热控制系统不仅节约而且高度只能化,方便省事,不论日常家居,还是对宾馆、学校等都是最佳选择
2.2太阳能热水器组成及原理65472132-3热水器装置简图1-集热器2-下降水管3-循环水管4-补给水箱5-上升水管6-自来水管7-热水出水管热水器主要由集热器、循环管道和水箱等组成,图中为典型的热水器装置图图中集热器1按最佳倾角放置,下降水管2的一端与循环水箱3的下部相连,另一端与集热器1的下集管接通上升水管5与循环水箱3上部相连,另一端与集热器1的上集管相接补给水箱4供给循环水箱3所需的冷水当集热器吸收太阳辐射后,集热器内温度上升,水温也随之升高水温升高后,水的比重减轻,便经上升水管进入循环水箱上部而循环水箱下部的冷水比重较大,就由水箱下流到集热器下方,在集热器内受热后又上升这样不断对流循环,水温逐渐提高,直到集热器吸收的热量与散失的热量相平衡时,水温不再升高这种热水利用循环加热的原理,因此又称循环热水器集热器是一种利用温室效应,将太阳能辐射转换为热能的装置,该装置与一般热水交换器不一样,热交换器通常只是液体到液体,或是液体到气体的热交换过程,而平板行集热器时直接将太阳辐射传给液体或气体,是一个复杂的传热过程平板型集热器结构形式很多,世界上已实用的集热器就有直管式、瓦楞式、扁管式、铝翼式等二十多种
2.3主要芯片的结构与特点
2.
3.
1.DS12887时钟芯片简介随着2000年的即将来临,“千年虫”问题成为困扰当今世界的一大难题过去采用两位数表示年度的日历系统将要用四位数来表示,因此有关的计算机操作系统和应用软件都要作相应的修改据此,美国达拉斯半导体公司Dallas最新推出DS12887的串行接口实时时钟芯片,采用CMOS技术制成,具有内部晶振和时钟芯片备份锂电池,同时它与目前IBMAT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换它所提供的世纪字节在位置32h,世纪寄存器32h到2000年1月1日从19递增到20采用DS12887芯片设计的时钟电路不需任何外围电路和器件,并具有良好的微机接口DS12887芯片具有微功耗,外围接口简单,精度高,工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟系统美国Dallas公司推出两款数字时钟芯片DS12887/DS12C887,两款时钟芯片都将在1999年12月31日23时59分59秒时顺利地跳到2000年1月1日零时,并能实2000年2月29日的闰年提示,是时钟芯片DS1287的增强型品种,结构上相当于MC146818B的改进型芯片都采用24引脚双列直插式封装,其引脚接口逻辑和内部操作方式与MC146818基本一致,所不同的是DS12887/DS12C887芯片的晶体振荡器、振荡电路、充电电路和可充电锂电池等一起封装在芯片的上方,组成一个加厚的集成电路模块,因此,DS12887/DS12C887时钟芯片无需MC146818的电源电位检测端PS,电路通电时其充电电路便自动对可充电电池充电,充足一次电可供芯片时钟运行半年之久,正常工作时可保证时钟数据十年内不会丢失此外,片内通用的RAM为MC146818的两倍以上DS12887/DS12C887内部有专门的接口电路,从而使得外部电路的时序要求十分简单,使它与各种微处理器的接口大大简化使用时无需外围电路元件,只要选择引脚MOT电平,即可和不同计算机总线连接
1.主要技术特点DS12887/DS12C887具有下列主要技术特点1具有完备的时钟、闹钟及到2100年的日历功能,可选择12小时制或24小时制计时,有AM和PM、星期、夏令时间操作,闰年自动补偿等功能2具有可编程选择的周期性中断方式和多频率输出的方波发生器功能3DS12887内部有14个时钟控制寄存器,包括10个时标寄存器,4个状态寄存器和114bit作掉电保护用的低功耗RAM4由于该芯片具有多种周期中断速率时钟中断功能,因此可以满足各种不同的待机要求,最长可达24小时,使用非常方便5时标可选择二进制或BCD码表示6工作电压+
4.5~
5.5V、工作电流7~15mA7工作温度范围0~70°C
2.DS12887/DS12C887的内部结构DS12887/DS12C887为24引脚芯片,内部结构如下图图2-4DS18B20内部框图其中MOT计算机总线选择端;SQW方波输出,速率和是否输出由专用寄存器A、B的预置参数决定;AD0~AD7地址/数据双向总线,由AS的下降沿锁存8位地址;R/W读/写数据;AS地址锁存信号端;DS数据读信号端;CS选通信号端,低电平有效;IRQ中断申请,由专用寄存器决定;RESET复位端;NC空引脚DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制计加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成DS12887管脚分配如图图2-5管脚分配图VCC直流电源+5V电压当5V电压在正常范围内时,数据可读写;当VCC低于
4.25V,读写被禁止,计时功能仍继续;当VCC下降到3V以下时,RAM和计时器供电被切换到内部锂电池MOT模式选择MOT管脚接到VCC时,选择MOTOROLA时序,当接到GND时,选择INTEL时序SQW方波信号输出SQW管脚能从实时时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变AD0—AD7双向地址/数据复用线总线接口,可与MOTOROLA微机系列和INTEL微机系列接口AS地址选通输入用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887DS数据选通或读输入DS/RD管脚有两种操作模式,取决于MOT管脚的电平,当使用MOTORO2LA时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总线的时刻;在写周期,DS的后沿使DS12887锁存写数据选择INTEL时序时,DS称作RD,RD与典型存贮器的允许信号OE的定义相同R/W读/写输入R/W管脚也有两种操作模式选MOTOROLA时序时,R/W是一电平信号,指示当前周期是读或写周期,DS为高电平时,R/W高电平指示读周期,R/W信号是一低电平信号,称为WR在此模式下,R/W管脚与通用RAM的写允许信号WE的含义相同CS片选输入在访问DS12887的总线周期内片选信号必须保持为低IRQ中断申请输入低电平有效,可作微处理的中断输入没有中断的条件满足时,IRQ处于高阻态IRQ线是漏极开中输入,要求外接上接电阻RESET复位输出当该脚保持低电平时间大于200ms,保证DS12887有效复位
3.DS12887/DS12C887内部寄存器的功能因DS12887和DS12C887结构功能上类似,现以DS12887为例说明如下CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化芯片的10个时标寄存器其114bit非易失性静态RAM可供用户使用,对于没有RAM的单片机应用系统,可在主机掉电时来保存一些重要的数据DS12887的4个状态寄存器用来控制和指DS12887模块的当前工作状态,除数据更新周期外,程序可随时读写这4个寄存器,各寄存器的功能和作用如下寄存器A各位不受复位的影响,UIP位为只读位,其它各位均可读写寄存器的控制字的格式如下表2所列表2DS12887控制寄存器A各布尔位定义IT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0UIPDV2DV1DV0RS3RS2RS1RS
01.IP位更新周期标志位该位为“1”时,表示芯片正处于或即将开始更新周期,此时程序不准读写时标寄存器;该位为“0”时,表示至少在244μs后才开始更新周期,此时程序可读芯片内时标寄存器该位是只读位
2.DV
0、DV
1、DV2芯片内部振荡器RTC控制位当芯片解除复位状态,并将010写入DV
0、DV
1、DV2后,另一个更新周期将在500ms后开始因此,在程序初始化时可用这三位精确地使芯片在设定的时间开始工作这与MC146818不同的是,DS12887固定使用32768Hz的内部晶体,所以,DV0=“0”,DV1=“1”,DV2=“0”,即只有一种010的组合选择即可启动RTC
3.RS
3、RS
2、RS
1、RS0周期中断可编程方波输出速率选择位各种不同的组合可以产生不同的输出程序可以通过设置寄存器B的SQWF和PIE位控制是否允许周期中断和方波输出其寄存器A输出速率选择位如表3所列表3DS12887控制寄存器A输出速率选择位定义寄存器A输出速率选择位32768Hz时基RS3RS2RS1RS0中断周期SQWF输出频0000无无
00013.90625ms256Hz
00107.8125ms128Hz
0011122.0μs
8.192kHz
0100244.141μs
4.096kHz
0101488.281μs
2.048kHz
0110976.5625μs
1.024kHz
01111.953125ms512Hz
10003.90625ms256Hz
10017.812ms128Hz
101015.625ms64Hz
101131.25ms32Hz
110062.5ms16Hz1101125ms8Hz1110250ms4Hz1111500ms2Hz寄存器B允许读写,主要用于控制芯片的工作状态寄存器B的控制字的格式如表4所列表4DS12887控制寄存器B各布尔位定义BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SETPIEAIEUIESQWEDM24/12DSE 1SET位当该位为“0”时,芯片处于正常工作状态,每秒产生一个更新周期来更新时标寄存器为“1”时,芯片停止工作,程序在此期间可初始化芯片的各个时标寄存器2PIE、AIE、UIE位分别为周期中断、报警中断、更新周期结束中断允许位各位为“1”时,允许芯片发相应的中断3SQWE位方波输出允许位SQWE“1”,按寄存器A输出速率选择位所确定的频率输出方波;SQWE=“0”,脚SQW保持低电平4DM位时标寄存器用十进制BCD码表示或用二进制表示格式选择位DM=“0”时,为十进制BCD码;DM=“1”时,为二进制码524/12位24/12小时模式设置位24/12位=“1”时,为24小时工作模式;24/12位=“0”时,为12小时工作模式6DSE位夏令时服务位DSE=“1”,夏时制设置有效,夏时制结束可自动刷新恢复时间;DSE=“0”,无效寄存器C的控制字的格式如表4所列该寄存器的特点是程序访问读该寄存器后,该寄存器的内容将自动清零,从而使IRQF标志位变为高电平,否则,芯片将无法向CPU申请下一次中断表5DS12887控制寄存器C各布尔位定义BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0IRQFPFAFUF0000 1IRQF位中断申请标志位该位逻辑表达式为IRQF=PF·PIE+AF·AIE+UF·UIE当IRQF位变“1”时,引脚将变低电平引发中断申请2PF、AF、UF位这三位分别为周期中断、报警中断、更新周期结束中断标志位只要满足各中断的条件,相应的中断标志位将置“1”3BIT3~BIT0未定义的保留位读出值始终为0寄存器D为只读寄存器寄存器D的控制字的格式如表6所示表6DS12887控制寄存器D各布尔位定义BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0VRT00000001VRT位芯片内部RAM与寄存器内容有效标志位该位为“1”时,指芯片内部RAM和寄存器内容有效读该寄存器后,该位将自动置“1”2BIT6~BIT0位保留位读出的数值始终为
04.DS12887/DS12C887的中断和更新周期DS12887/DS12C887处于正常工作状态时,每秒钟将产生一个更新周期,芯片处于更新周期的标志是寄存器A中的UIP位为“1”在更新周期内,芯片内部时标寄存器数据处于更新阶段,故在该周期内,微处理器不能读芯片时标寄存器的内容,否则将得到不确定数据更新周期的基本功能主要是刷新各个时标寄存器中的内容,同时秒时标寄存器内容加1,并检查其他时标寄存器内容是否有溢出,如有溢出则相应进位日、月、年另外一个功能是检查三个时、分、秒报警时标寄存器的内容是否与对应时标寄存器的内容相符,如果相符则寄存器C中的AF位置“1”如果报警时标寄存器的内容为C0H至FFH之间的数据,则为不关心状态为了采样时标寄存器中的数据,DS12887/DS12C887提供了两种避开更新周期内访问时标寄存器的方案第一种是利用更新周期结束发出的中断它可以编程允许在每次更新周期结束后发生中断申请,提醒CPU将有998ms左右的时间去获取有效的数据,在中断之后的998ms时间内,程序可先将时标数据读到芯片内部的不掉电静态RAM中因为芯片内部的静态RAM和状态寄存器是可随时读写的,在离开中断服务子程序前应清除寄存器C中的IRQF位另一种是利用寄存器A中的UIP位来指示芯片是否处于更新周期在UIP位从低变高244μs后,芯片将开始其更新周期,所以检测到UIP位为低电平时,则利用244μs的间隔时间去读取时标信息如检测到UIP位为“1”,则可暂缓读数据,等到UIP变成低电平后再去读数据
2.
3.280C51单片机结构特点微型计算机的出现与发展已广泛应用到各行各业中,使人们的日常生活工作都发生了重大变化,如果没有微型计算机,人们的工作生活的质量都受到很大的损失单片微型计算机是微型计算机发展中的一个重要分支,其独特的结构与性能,越来越普及地应用于国民经济的各个领域,以下主要介绍80C51单片机,它与微型计算机的区别是什么,单片机发展概况;它的特点和应用,通过对本节的学习,使大家对单片微型计算机有个初步的认识和了解
一、单片机的组成单片微型计算机简称单片机,它在一块芯片上集成了各种功能部件中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时器/计数器、和各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等他们之间相互连接图如2-6图,构成一个完整的微型计算机图2-6单片机结构框图80C51单片机的引脚描述及片外总线结构
1.芯片的引脚描述CHMOS制造工艺的80C51单片机采用40引脚的双列直插封装(DIP方式),在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制与其它电源复用的引脚,32条输入/输出(I/O)引脚下面按其引脚功能为四部分叙述这40条引脚功能电源引脚VCC和VSS其中VCC(40脚)接+5V电压VSS(20脚)接地接晶体引脚XTAL1和XTAL2XTAL1(19脚)接外部晶体的一个引脚在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器当采用外部振荡器时,对CHMOS单片机,此引脚作为驱动端XTAL2(18脚)接外部晶体的另一端在单片机内部,接至上述振荡器的反相放大器的输出端采用外部振荡器时,对CHMOS单片机,该引脚悬浮控制或与其他电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPPST/VPD(9脚)当振荡器运行时,在此引脚上出现两个机器周期的高电平将使单片机复位推荐在此引脚与VSS引脚接一个约
8.2K的下拉电阻,与VCC引脚之间连接一个约10uf的电容,以保证可靠地复位
(4)VCC掉电期间,此引脚可接上备用电源,以保持内部RAM的数据不丢失当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围内,VPD就向内部RAM提供备用电源
(5)ALE/PROG(30脚)当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6因此,它可用作对外输出的时钟,或用于定时目的然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路对于EPROM型的单片机,在EPROM编程期间,此引脚用于输入编程脉冲(PROG)
(6)RSEN(29脚)此脚的输出是外部程序存储器的读写选通信号在从外部程序存储器取令(或常数)期间,每个机器周期两次PESN有效但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现,PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入
(7)EA/VPP当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH时,将自动转向执行外部程序存储器内的程序,当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器,对于常用的80C51来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器对于EPROM型单片机,在EPROM编程期间,此引脚也用于施加21伏的编程电源(VPP)输入/输出I/O引脚P
0、P
1、P
2、P3共32根aP0口(39脚~32脚)是双向8位三态I/O口,外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LSTTL负载bP1口(1脚~8脚)是8位准双向I/O口由于这种接口输出没有高阻状态,输入也不能琐存,故不是真正的I/O口门口能驱动(吸收或输出电流)4个LSTTL负载,对
8052、8032,P
1.0引脚的第二功能为T2定时/计数器的外部输入,P
1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端对EPROM编程和程序验证时,它的接收低8位地址cP2口(21脚~28脚)是8位准双向I/O口在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址,在对EPROM编程和程序验证期间,它的接收高8位地址P2可以驱动(吸收或输出电流)4个LSTTL负载dP3口(10脚~17脚)是8位准双向I/O口,在80c51中,这8个引脚还用于专门功能,是复用双功能口,P3能驱动(吸收或输出电流)4个LSTTL负载作为第一功能用时,就作为普通的I/O口用,功能和操作方法与P1口相同表6口线引脚第二功能P
3.010RXD(串行输入口)P
3.111TXD(串行输出口)P
3.212INT0外部中断0P
3.313INT1外部中断1P
3.414T0(定时器0外部输入)P
3.515T1(定时器1外部输入)P
3.616WR(外部数据存储器写脉冲)P
3.717RD(外部数据存储器读脉冲)值得强调的是,P3口的每一条引脚都可以独立定义第一功能的输入输出或第二功能
2.
3.3数字温度传感器DS18B20主要特性及测温原理 一线式数字温度传感器DS18B20是DS1820的更新换代产品由美国DAIIAS公司生产它具有体积小分辨率高转换快等优点由于每片DS18B20含有唯一的硅串行数所以在一条总线上可以挂接多达248≈218×1014只DS18B20再加上DS18B20独特的单线总线结构决定了DS18B20特别适合于大型的多路温度实时测控系统的温度检测温度实时测控集装箱的设计在实现测控系统的温度检测方面就较好地利用了DS18B20的独到特点使系统得到了极大的简化
一、DS18B20的特性1独特的单线接口方式DS18B20在I/O处理器连接时仅需要一个I/O口即可实现微处理器同DS18B20的双向通讯2DS18B20支持组网功能多个DS18B20可以并联在唯一的单线上实现多点测温3DS18B20的测温范围为:-55℃~+125℃在-10℃~+85℃时其精度为+015℃4DS18B20的测温结果的数字量位数从9~12位可编程进行选择5DS18B20内含寄生电源,器件既可以由单线总线供电也可用外部的电源310V~515V供电数字化温度传感器DS1820测温范围为-55~+125℃,增量值为
0.5℃9位温度读数,它主要由4个数据部件部分组成64位ROM;温度传感器;非易失性的温度告警触发器TH和TL;高速便笺存储器64位ROM用于存储序列号,其首字节固定为28H,表示产品类型码,后6个字节是每个器件的编码,最后1个字节是CRC校验码.温度告警触发器TH和TL存储用户通过软件写入的报警上下限值,高速便笺存储器由9个字节组成,其中有2个字节RAM单元用来存放温度值前1个字节为温度值的补码低8位,后1个字节为符号位和温度值的补码高3位
二、DS18B20测温原理DS18B20内部结构框图如图
2.
3.3所示2-7DS18B20内部结构框图DS18B20的测温原理DS18B20测量温度采用了特有的温度测量技术,它是通过计数时钟周期来实现的,内部计数器对一个受温度影响的振荡器的脉冲计数低温时振荡器的脉冲可以通过门电路而当到达某一设置高温时振荡器的脉冲无法通过门电路计数器设置为-55℃同时计数器复位在当前的温度值时电路对振荡器的温度系数进行补偿计数器重新开始计数直到回零如果门电路仍未关闭则系统重复上述过程
三、DS18B20的操作协议DS18B20单纯通信功能是分时完成的单线信号包括复位脉冲响应脉冲写“0”写“1”读“1”它们有严格的时隙概念系统对DS18B20的操作以ROM命令5个和存储器命令6个形式出现对它的操作协议是初始化DS18B20发复位脉冲→发ROM功能命令→处理数据→发存储器命令处理数据各种操作都有相应的时序图DS18B20在使用时,一般都采用单片机来实现数据采集只需将DS18B20信号线与单片机1位I/O线相连,且单片机的1位I/O线可挂接多个DS18B20,就可实现单点或多点温度检测DS18B20传感器精度高、互换性好;它直接将温度数据进行编码,可以只使用一根电缆传输温度数据,通信方便,传输距离远且抗干扰性好与用传统温度传感器组成的多点测温系统相比可节省大量电缆,而且系统得以简化,系统扩充维护十分方便DS18B20可以广泛用于工厂工业过程、大型粮仓、酿酒厂,食品加工厂的温度检测以及宾馆、仪器仪表室等处的温度检测和控制第三章太阳能热水器硬件设计
3.
1.太阳能控制器硬件结构根据控制要求,采用80C51单片机的智能控制器结构框图如图1所示由于本系统运算量不是很大,没有太多的中间数据需要处理、保存,因此不再外扩数据存储器仅使用80C51内部RAM已完全能够满足要求系统的硬件接口电路包括控制器实时时钟接口电路,蓄水箱温度和水位检测接口电路、设定键和串行显示接口电路、看门狗和复位接口电路以及继电器输出接口电路等图3-1太阳能控制器硬件结构图
3.
2.控制器实时时钟接口电路为实现热水器24小时供应热水的目的,控制器必须有一个实时时钟来为系统提供准确的基准时间;在软件设计上则要实时地读出当前时间,同设定时间比较,以决定系统工作状态本系统采用美国DALLAS半导体公司最新推出的时钟芯片DS12887,该芯片采用CMOS技术,把时钟芯片所需的晶振和电池以及相关的电路集成到芯片内部,并与MC146818管脚完全兼容DS12887芯片具有微功耗、外围接口简单、精度高,工作稳定可靠等优点它与80C51单片机的接口电路见下图3-28+5V
5.1K+5V1KC图3-2DS12887与单片机接口电路模式选择脚MOT接地,选择INTEL时序DS12887的高位地址用80C51的P
2.4选择,则时钟芯片的高8位地址为EFH,而其低8位地址则由芯片内部各单元的地址来决定00H~80H,DS12887的中断输出端IRQ接上拉电阻,同80C51中断线INTO相连,为单片机提供中断信号SQW端口编程为2Hz方波输出,经二分频后,驱动两个LED发光二极管作为时钟的秒闪烁显示
3.
3.水位检测和温度检测接口电路蓄水箱水位和温度检测部分是实现温度智能控制的重要环节,只有准确地检测出水位和温度,才能通过软件计算提前开始辅助加热的预加热时间要实现辅助加热提前时间的精确计算,最好是采用连续液位传感器,但考虑系统成本,本设计仍采用分段式液位传感器通过软件来提高精度,在水位显示上也仍采用分段显示水位检测部分的硬件连接如图3所示图3-3水位监测及显示接口电路检测原理如下当水箱中无水时,8个非门均由1M欧姆电阻上拉成高电平,所以图中各“非”门CD4069输出均为低电平,LED1~LED8均不亮当水位高于“非”门1的输入探针时,由于水的导电作用,使“非”门1的输入变为低电平,所以其输出变为高电平,LED点亮,依此类推随着水位的上升,各“非”门输出相继为高电平,LED依次点亮这里要注意的是上拉电阻不能选择太小,因为水的电阻在100k8左右,所以上拉电阻选择太小的话,将在水位升高时,无法把“非”门输入端拉成低电平实验表明,上拉电阻选择在500k~1M欧姆左右能很好地满足电路的工作要求为了使80C51随时能够读出当前的水位情况,这里选用74LS244作为状态输入缓冲器蓄水箱温度检测电路采用DS18B20芯片使其换成脉冲信号,送到80C51的I/O口编程为计数器工作模式,通过测量输出脉冲频率的大小来换算成水温高低信号
3.4看门狗和复位接口电路的设计控制器的看门狗电路由两级74LS123芯片组成用P
1.7作为单稳态触发器的定时脉冲发生端,当P
1.7口线超过一定时间不对74LS123发正脉冲时,系统将自动复位(附录)
3.5键盘和显示接口电路的设计
3.
5.1键盘电路下图为80C51单片机P1口构成的中断方式4*4键盘电路P
1.0-P
1.3为行线,P
1.4-P
1.7为列线,行线与4输入与门74HC21的一组输入端相连,输出端与外部中断INT1相连16个键号Ki(I=0-15)次序如图中标注INT174HC2110K*4VCCP
1.0ABCDP
1.1P
1.2P
1.3P
1.4P
1.5P
1.6P
1.780C51图3-480C51P1口构成的4*4中断方式键盘行列式键盘处理程序较为复杂,当有键按下时74HC21输出端出现低电平请求中断;在中断服务程序中要再次确认是否真有键按下,真有键按下时,再查出是哪个键按下,把该键的键号送入堆栈保护,等待键释放后再将键号弹出A中该键盘输入处理程序的出口状态是键号在A中设计中断程序时,先在主程序中将中断系统初始化,并开中断在试验演示中通常开中断都设置循环等待
3.
5.3显示接口电路的设计键盘和显示电路是人机交互的重要手段控制键是用户干预系统运行的唯一接口,也是用户比较关心的问题为了实现控制器对时间与温度的设定及显示功能,串行显示电路采用串入并出芯片74LS164驱动4位数码管实现时间与温度的静态显示该电路只使用80C51的3个端口,配接4片串入并出移位寄存器74LS164与1片三端可调稳压器LM317T其中74LS164的引脚Q0~Q7为8位并行输出端;引脚A、B为串行输入端;引脚CLK为时钟脉冲输入端,在CLK脉冲的上升沿作用下实现移位,在CLK=
0、清除端MR=1时,74LS164保持原来数据状态;MR=0时,74LS164输出清零,其显示电路如
3.
5.3图图3-5串行口扩展的4位LED显示电路其工作过程如下:80C51的串行口设定在方式0移位寄存器状态下,串行数据由P
3.0发送,移位时钟由P
3.1送出在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中4片74LS164串级扩展为4个8位并行输出口,分别连接到4个LED显示器的段选端作静态显示需要指出的是,由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,造成不应显示的字段仍有较暗的亮度,影响了显示的效果以往的做法是在74LS164的输出端加接4片锁存器或三态门,使移位寄存器串行输入数据时其输出端的变化不反映到LED上,待串行输入结束后再打开锁存器或三态门,将稳定的显示数据送给LED本设计电路的独特之处在于仅采用了1片三端可调稳压器LM317T,317T的
3、2脚分别是电压输入、输出端,317T的1脚是电压调整端,脚2输出电压随脚1电压而变化脚1与接地电阻之间并一个NPN三极管,它的基极受P
1.7口线控制,串行输入时P
1.7口线为高电平,三极管饱和导通使317T的脚1约为
0.3V,脚2输出电压随之下降到
1.5V,不足以使共阳极LED发光,故此时串行输入的影响不会反映到LED上;串行输入结束后,使P
1.7口线为低电平,三极管截止,脚2输出电压因脚1电压增高便上升到
2.0V使LED正常发光因此,1片三端可调稳压器LM317T起到了4片锁存器的作用使LED显示不会闪烁本电路的另一优点是通过可调电位器P1可在线调整脚2的输出电压,使LED的显示亮度均匀可调,而且省掉了大量的LED限流电阻
3.6光电隔离与辅助加热电路设计VCCVCCVCCR5P
2.1KT1R1R2R3R4LEDT2GNDR6图3-6辅助加热电路图上图为太阳能热水器光电隔离与辅助加热电路设计当室外光强不足(阴天、下雨)时,对水箱的水提前加热是很必要的,这一电路恰好能完成这一功能工作原理当单片机80C51P
2.1口输出高电平时,三极管T1导通,致使发光二极管发光,同时光敏三极管T2导通,继电器闭合,电阻丝R1~R4发热,这样就完成了加热任务,此电路虽然简单,但在太阳能热水器中是必不可少的第四章控制器的软件设计
4.1主程序设计热水器不论在什么样的天气里,都能够在设定的时间向用户提供设定温度的热水,从而给用户带来便利当控制器在设定的时间使水温达到设定温度时,将通过声光报警提醒用户根据这一要求,控制器软件设计采用模块化结构,包括主程序、键盘中断子程序、DS12887更新周期结束中断子程序、LED显示子程序和提前加热时间计算子程序等系统主程序主要完成温度和水位的检测以及进行辅助加热时间预算和一些初始化功能在主程序中采用了查表方法进行辅助加热提前量预算系统主程序流程图如图4所示图4-1系统程序流程图对于温度和时间设定,每次设定结束后,就将设定值存入DS12887的非易失性RAM中,下次开机时进行读取这样作至少有两个优点一是系统在不进行设定时,就认定该设定值和先前一次一样,解决了每次开机总要从头设定的问题,另一个是若系统在运行中间停电而再次来电时,可以不用重新设定,就能按原设定值对温度进行控制,增强了控制器适应外界变化的能力对提前加热时间的计算,则是系统能否实现预定功能的重要一环因为系统采用分段式水位检测,若采用能量守恒的方法对提前加热时间进行预算,也同样得不到精确的结果为了避开繁琐的计算过程,本系统中采用了模糊控制思想,使用了如下一些控制语句IF水位高AND温度差大THEN加热时间长IF水位适中AND温度差适中THEN加热时间适中IF水位低AND温度差低THEN加热时间少采用这种思想后,可以用实验方法获得各种情况下需要加热的时间,编制成表格使用时,只要查表获得提前加热时间就行了显然,表格分得越细,控制就越准确本控制器采用温差每等于5℃为一格,就能满足控制要求了为了减小误差,试验表明,可以采用如图5的方法图4-2水位监测处理示意图实验中,用水位达到B1时的结果代替水位达到A1时的结果,B2代替A2,B3代替A3,B4代替A4这样,CPU读入的A1水位查表后得到的预加热时间是实验中水位在B1处的时间经过这种处理,会把由于分段检测而产生的计算误差减小一半,由原来的h变成了h/2h为分段水位检测间隙如果水箱水深为40cm,分8段检测,此种处理方法的计算将使水位误差由原来的5cm变成了
2.5cm这种误差对于民用的热水器来说,已完全能够满足要求了
4.2显示子程序分析表明,移位寄存器74LS164仅有串入并出作用没有译码功能因此,在编写显示驱动程序之前,首先需要计算列写出与本电路对应的LED段选码,然后由80C51的P
3.0口送入74LS164的串行输入端,再并行输出到LED的段选端需要指出的是,上面显示电路采用TOS28106BHK型号的共阳极LED显示器,根据PCB印制线路板的连线方便,其LED的8个段选端与74LS164的并行输出口即8根段选线的连接没有遵照通常的规律,而是如图3-5所示的段排列为
7、
6、
4、
2、
1、
9、
10、5,相应的段选码也要重新计算,如显示字符0的段选码为11H,显示字符1的段选码为D7H等另外,这种稳定的静态显示方式也省去了CPU的动态扫描过程,此为上述电路的又一特点电路中设计了4位LED显示器,其功能为左首位为百位数或标志位,左二位为十位数,左三位为个位数,左四位为小数点后的十分位数据此,给出如图4-3所示的显示子程序框图结束语该控制器和以往显示仪相比具有性能价格比高、温度控制与显示精度高、使用方便和性能稳定等优点单片机控制系统具有低价、智能的优势,能够根据需求的不同而作相应的调整,更加个性化同时,使用单片机控制系统能够节约能源,保护设备,延长设备的使用时间该热水器具备以下特点结构简单、运行可靠、操作维护简便热源取之不尽用之不竭,不需要运输,节省燃料无污染,不会对周围环境造成任何影响热水产量受季节、地区纬度、采热面积、采热器类型、环境温度、供水温度、风速、日照实际等因素影响较大该系统加装减压阀后可与锅炉配套使用,解决冬季用水不用考虑玻璃盖的防冻装置该热水器装置置于浴室屋订占地面积较大,同时增加了建筑物的载荷在试制和安装过程中我们体会到只有注意以下几个方面才能保证热水器的正常运行,第一是循环管道水流方向不允许有反坡现象,拐弯要和缓,管道内要清洁无阻塞第二是冷水箱、热水箱、集热器及热水保温的相对位置及标高合理,符合水流规律,第三是补充给热水箱的水流不允许冲击,第四是电磁阀的选择及安装位置要合理,保证动作灵敏可靠总之,无论从市场或技术抑或价格的角度来说,此款热水器具有很大的优势它市场前景广阔、技术先进、价格合理、高度智能化,方便省事,是当前市面上热水器的升级产品它不但适合于城乡民宅需求,还适用于写字楼、餐饮、娱乐、商业服务浴室、理发店、旅馆、招待所、托儿所、敬老院及外贸出口等各种需求参考文献
[1]刘福才、刘丰、刘立伟AVR单片机在太阳能热水器智能控制器中的应用微计算机信息,1999,4
[2]王长胤、文 军单片单板机原理及应用[M]武汉武汉大学出版社,1993
[3]向奇汝多功能温度控制器[J]自动化与仪器仪表,1999
[4]TomFoxBuildtheIntelligentThermometer[J]ComputerElectronicsJanuary,1983
[4]何立民单片机中、高级教程北京航空航天出版社1999
[5]郭廷玮太阳能利用和前景科学普及出版社1986
[6]万福君、潘松峰单片机原理系统设计与应用科学技术大学出版社2001
[7]潘永雄、沙河、刘向河电子线路CAD实用教程西安电子科技出版社2001
[8]何克忠、李伟计算机控制系统清华大学出版社1998
[9]周政新电子设计自动化实践与训练中国民航出版社1998
[10]丁志刚、李刚民单片微型计算机原理与应用北京电子工业出版社1990
[11]王福瑞单片微机测控系统设计大全[M].北京:北京航空航天大学出版社
1999.
[12]金伟正单线数字温度传感器的原理及应用电子技术应用,2000
[13]王建萍串行LED显示驱动器及应用电子技术应用1996致谢在我的学习过程及论文的设计编写过程得到了王艳华老师的鼎立相助和悉心指导,以及在完成论文的过程中,系统软件的编写方面得到了一些同学的协助,在此一并表示深深的感谢附录一主程序ORG000HJMPSTARTSTART CurtempEQU10H;Curtemp存储地址PretempEQU11H;Pretemp存储地址MOVTMOD,#53HLCALLInitDS12887;初始化DS12887时钟芯片SETBEA;开CPU中断LCALLReadTempandTime;读温度时间设定值LCALLReadWaterandPosition;读水位高度CLRC;C清零SUBCurtemp,pretempJCOffheatHeatcontinue LCALLFUZZY;预算提前加热时间LCALLDELAYLCALLHeatSJMP$OffHeat CLRP
2.1RETIHeat SETBP
2.1LCALLDELAYCLRCLCALLReadTempMOVA,CurtempADDA,#2HSUBA,PretempJNCKeepTempJMPHeatcontinueLCALLKeeptempCONRETIInitDS12887SETBP21MOVDPTR,#0BH;初始化DS12887B寄存器MOVA,#22H;置DS1288724小时模式MOVX@DPTR,A;允许报警中断禁止其它中断MOVDPTR,#0AH;初始化DS12887A寄存器MOVXA,#20H;时钟频率
52.628KHZ,禁止SQWMOVDPTR,#00H;初始化时钟MOVA,#00HMOVX@DPTR,A;秒MOVDPTR,#02H;分MOV@DPTR,AMOVDPTR,#04H;时MOVA,#12HMOV@DPTR,ARETIReadTempandTime LCALLReadTempLCALLReadTimeRETIORG0013HJMPKeyBoardINTKeyBoardINT LED显示子程序DISI:SETBP
1.7;灭显示MOVR0#SBCDMOVA@R0;取出要显示的数ADDA#2DH;加上偏移量MOVCA@A+PC;查表取出段选码MOVSBUFA;送出显示DL1:JNBTIDL1;输出完否CLRTI;完清中断标志INCR0MOVA@R0ADDA#21HMOVCA@A+PCANLA#OEFH;个位加小数点MOVSBUFADL2:JNBTIDL2CLRTIINCR0MOVA@R0ADDA#13HMOVCA@A+PCMOVSBUFADL3:JNBTIDL3CLRTIMOVA#0FFHMOVSBUFADL4:JNBTIDL4CLRTICLRP
1.7;亮显示RETSEGTAB:DB11H0D7H32HDB92H0D4H98HDB18H0D3H10H0D0H键盘输入主程序MOVP1#0FH;键盘初始化,P
1.0~P
1.3置输入方式,P
1.4~P
1.7为0状态MOVIE#84H;开CPU中断,开INT1中断SJMP$;中断等待中断服务程序ORG0013;INT1中断入口地址LJMPIO51K16;从中断入口转移键盘处理程序IO51K16IO51K16:CALLD10MS;延时10秒LCALLKEYIN;调键输入检查子程序JNZLKOUT;有键输入,转查键号RETI;无键输入,中断返回LKOUT:MOVR2#0EFH;首列扫描字写如R2MOVR4#00H;首列偏移值如R4CONU:MOVP1R2;列扫描字写入列线中MOVAP1;读入P1口状态到A中JBACC.0LONE;检查第0行是否为0状态,不为0表示按下键不在此行,转下行MOVA#00H;第0行为0状态,表明按下键在此行,首列号如AAJMPLKP;转求键号LONE:JBACC
1.1LTWO;检查第1行有无键按下MOVA#04H;有键按下,该行首列号入AAJMPLKP;转求键号LTWO:JBACC.2LTHRMOVA#08HAJMPLKPLTHR:JBACC.3NEXT;该列所有行都无键按下,转NEXTMOVA#0CH;有键按下,该行首列号入A中LKP:ADDAR4;求键号,键号位首列号加列偏移值PUSHA;键号入栈保护WKFE:LACLLKEYIN;等待键释放JNZWKFE;键未释放转WKFE等待POPA;键释放,键号如ALJMPKJMP;转键操作转处理NEXT:INCR4;转查下一列,列偏移值加1MOVAR2JNBACC.7KND;最后一列查完?查完中断返回RLA;未查完,列扫描字左移1位MOVR2A;扫描字如R2继续查找LJMPCONUKND:RETIKEYIN:MOVP1#0FH;查完有无键按下,A不为0,有键按下MOVAP1CPLAANLA#0FHRETKJMP:SUBA#OFHJCWriteTempADDA#0FHCLRCSUBA#0EHJCStoreTemporTimeADDA#0EHCLRCSUBA#ODHJCWaterpoistionADDA#ODHCLRCSUBA#0CHJCVtempADDA0CHCLRCSUBA#OBHJCStoreTimeRETIORG0003HJMPHeatRET时钟复位、PAGE4。