基于单片机的智能浇灌控制系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能浇灌控制系统设计
1 系统的外围设备设计
1.1 系统示意图
图1 智能浇灌控制系统示意图
1.2 外围设备选型
(1)土壤湿度传感器: TR-5型 土壤水分传感器 测量参数: 土壤容积含水量 ·单 位: %(m3/m3) ·量 程: 0~100%(m3/m3)
·精 度:
0~50%(m3/m3)范围内为±2%(m3/m3)
·分 辨 率: 0.1%(m3/m3 )
·测量区域: 90%的影响在围绕中央****的直径3cm 、长为6cm 的圆柱体内 ·稳定时间: 通电后约1秒
·响应时间: 响应在1秒内进入稳态过程
·工作电压: 电流输出为12V —24V DC,电压输出为5V DC ·工作电流: 50~70mA ,典型值50 mA ·输出形式: a: 0-5VDC;
b: 0~20mA;
c: RS232/RS485网络通讯 ·密封材料: ABS 工程塑料 ·材料:
不锈钢或铜
·电缆长度: 标准长度5m
太阳能电池板
·遥测距离:小于1000米
产品特点
1)高稳定性,安装维护操作简便。
2)支撑的材料为环氧树脂,强度和寿命得到保证。
3)密封性好,可长期埋入土壤中使用,且不受腐蚀
4)采用标准的电流环传送技术使其具有抗干扰能力强,传送距离远,测量精度高,响应速度快。
5)土质影响较小,应用地区广泛,价格低廉,适合中国国情。
(2)控制器:AT89C51单片机
(3)A/D转换器:ADC0809
是目前国内应用最广泛的8位通用A/D芯片。
主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
(4)电磁阀:DF-25 电磁阀
最高工作压力:0.8MPa
1)工作压差:0.03MPa~0.8MPa(其中φ3、φ5为直动式0~0.6MPa)
2)环境温度:-10~+50℃
3)介质温度:0~75℃
4)电压AC:380V; 220V; 36V/50Hz DC:12V;24V;110V;220V
5)绝缘等级:B级
6)功率:φ5~φ20 12W φ25~φ100 15W
φ125~φ150 30W
7)线圈温升:≤80℃
8)电源允许波动:-15%~+10%
9)工作介质:液体气体油〈20CST
10)安装方式:介质流向与电磁阀箭头保持一致,线圈向上,允许倾斜度小于30°
11)响应时间:φ3~φ50≤1秒关≤2秒φ65~φ150≤3秒关≤5秒
2 系统主要硬件电路设计
2.1 单片机控制系统原理
土壤土壤湿度传感A/D转换
AT89C51单片机
LED显示报警放大驱动
电磁阀
图2 单片机控制系统原理框图
2.2 单片机主机系统电路
AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。
图3 单片机主机系统图
2.2.1时钟电路
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通
常用两种电路形式得到:内部振荡和外部振荡。
MCS-51单片机内部有一个用于
构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输
入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实
际使用中常采用这种方式,如图3所示在其外接晶体振荡器(简称晶振)或陶
瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外
石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。
图3中外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选6MHz o
RESET
2.2.2复位电路
为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。
单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。
复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部
清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。
复位操作有两种情况,即上电复位和手动(开关)复位。
本系统采用上电复位方式。
图3中R9和Cl组成上电复位电路,其值R取为1KQ, C取为1pF.
2.2.3数据存储器的扩展电路
AT89C51单片机外接数据RAM时,P2口输出存储器地址的高8位,PO口
分时输出地址的低8位和传送指令字节或数据。
PO口先输出低8位地址信号,在ALE有效时将它锁存到外部地址锁存器中,然后PO口作为数据总线使用,此处地址锁存器选用74LS373,实际电路图连接如图4所示。
图4数据存储器的扩展电路
2.3数据采集处理电路
ADC0809是一种8位逐次逼近式A/D转换器,内部具有锁存控制的8路模
拟开关,外接8路模拟输入端,可同时对8路0-5V的输入模拟电压信号分时进行采集转换,本系统只用到INO和INl两路输入通道。
ADC0809转换器的分辨
率为8位,最大不可调误差小于士1LSB,采用单一+5V供电,功耗为15mW,
不必进行零点和满度调整。
由于ADC0809转换器的输出数据寄存器具有可控的
三态输出功能,输出具有TTL三态锁存缓冲器,故其8位数据输出引脚可直接
与数据总线相连。
A/D转换器需外部控制启动转换信号方能进行转换,这一启动
转换信号可由CPU提供,不同型号的A/D转换器,对启动转换信号的要求也不
同,分脉冲启动和电平启动两种,ADC0809采用脉冲启动转换,只需给A/D转
换器的启动控制转换的输入引脚((START)上,加入正脉冲信号,即启动A/D
转换器进行转换,转换开始后,转换结束信号输出端(EOC)信号变低,转换结
束时,EOC返回高电平,以通知主机读取转换结果的数字量,这个信号可以作
为A/D转换器的状态信号供查询,也可以用作中断请求信号。
图5数据采集处理电路
本系统中ADC0809与AT89C51单片机的接口如图5所示,采用等待延时方式。
ADC0809的时钟频率范围要求在10-1280kHz , AT89C51单片机的ALE脚的频率是单片机时钟频率的1/6,因此当单片机的时钟频率采用6MHz,ADC0809输入时钟频率即为CLK=1MHz,发生启动脉冲后需延时100Us才可读取A/D转换数据。
如图5连接方式,ADC0809的8位数据输出引脚可直接与数据总线相连,地址译码引脚A, B, C分别与74LS373的A, B, C相连,以选通INO- IN7中的一个通道。
AT89C51的p 2.6作为片选信号,在启动AM转换时,由单片机的写信号WR和p2.。
控制ADC的地址锁存和转换启动。
由于ALE与START连在一起,因此ADC0809在锁存通道地址的同时也启动转换,在读取转换结果时,用单片机的读信号RD和p2.。
引脚一级或非门产生的正脉冲作为OE信号,用以打开三态输出锁存器。
2.4LED显示系统电路
微机化测控系统中常用的测量数据的显示器有发光二极管显示器(简称LED或数码管)和液晶显示器(简称LCD)。
这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点,本系统输出结果选用4个LED显示。
LED数码管的外形结构如图6,外部有10个引脚,其中3, 8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在
位选端加上低电平即可。
由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。
LED有共阴极和共阳极两种。
如图6所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
符号和引脚共阴极共阳极
图6 LED数码管结构原理图
因AT89C51单片机I/O口资源有限,必须对其Il0口进行扩展才能满足实现系统功能,如图7所示为用8155扩展1/0口的4个8位LED动态显示器,显示扫描由程控实现,其中PA口输出字型码,PC口输出位选信号即扫描信号,图中片选线CE和AT89C51的P2.7口相连,IO/ M选通输入线与P2.4口相连,该系统中当P2.7=0且P2.4 =1时,选中8155芯片内三个I/O口。
相应的端口地址分配如表4-1:
表4-1 8155端口地址分配
图7 显示电路
2.5超限报警电路
为了在某些紧急状态或反常状态下,能使操作人员不致忽视,以便及时处理,往往需要有某种更能引起人们注意提起警觉的报警信号产生,这种报警信号通常有三种类型:闪光报警、鸣音报警、语音报警,本系统采用简单易行的声光报警电路。
如图8所示报警电路,报警设备选用压电式蜂鸣器,它约需要10mA的驱动电流,只需在其两条引线上加3一15V的直流电压,即可产生3KHz左右的蜂鸣声音,图中蜂鸣器的一端接在高电平+SV,另一端接Pl.0,在初态Pl.0始终输出高电平1,当需要报警时,程序对其端口清零即可,声音的长短可用延时程序控制实现。
图中接入的发光二极管LED为超高线报警器,当P1.1端输出为低电平“0”时,二极管导通,灯亮发出报警信号。
图8报警电路
3系统的软件设计
系统软件程序设计主要包括:主程序设计,采样子程序设计,数据处理程序,显示子程序,串口通信程序等。
各芯片地址编码为:
RAM6116: OFOOOH-OF7FFH 81551/0口:7FF8H - 7FFDH
ADC0809: OBFF8H-OBFFFH
3.1 系统主程序设计
在主程序设计时考虑到扩展性强、识别性高、实时性强的原则,设计主程序,使其易于读取反应迅速。
3.2采样子程序设计
根据电路图5,因EOC未接入单片机,故只能采用延时等待的方法来读取A/D转换结果,ADC0809的INO和INl两个地址分别是OBFF8H, OBFF9H, INO通道采集到的11个数据放入以ADTURNO(片内21H)为首址的一片数据区内,IN1通道采集到的11个数据放入以ADTURN1(片内2CH)为首址的另一片数据区内。
3.3 数据处理
3.3.1数字滤波技术
在单片机进行数据采集时,输入信号总难免受到这样那样的随机干扰,它们来自被测信号源、传感器、外界干扰等,从而使A/D送入单片机的数据中存在误差,这种因随机千扰而引入的误差为随机误差,其特点是在相同条件下测量同一量时,其大小和符号作无规则变化而无法预测,但测量次数足够多时,其总体服从统计规律,大多数随机误差服从正态分布。
为了克服随机干扰引起的误差,硬件上可采用滤波技术;软件上可按照统计规律采用数字滤波方法来抑制有效信号
中的干扰成分,消除误差。
本系统即采用数字滤波法。
数字滤波无需硬件,它是用软件算法来实现的,只要适当改变软件滤波程序的运行参数,就能方便的改变其滤波特性,实时性很强。
常用的数字滤波算法有: 限幅滤波法、中位值滤波法、算术平均滤波法、去极值平均滤波法、移动平均滤波法、加权平均滤波法、低通滤波法、复合滤波法等。
中位值滤波法能有效的克服偶然因素引起的波动或采样器不稳定引起的误
码等脉冲干扰,对变化比较缓慢的被测参数采用此法能收到良好的滤波效果。
因本系统的被测参数土壤湿度为缓慢变化参数,故采用中位值滤波算法。
中位值滤波算法实际上是一种排序方法,其具体思路是:对被测参数连续采
样N次(一般N为奇数),然后把N次采样值按大小排列,取其中间值为本次采
样值。
本程序每次对土壤湿度连续采样11次,ADTURNO为片内RAM的21H地
址单元,是采样值放入内存的首地址,滤波结果放入片内RAM的37H地址单元,即LINEADRO地址。
图9 数字滤波程序流程图
3.3.2标度变换
在微机化测控系统中,经A/D转换器接口送入微机的数据,是对被测量进行
测量得到的原始数据。
这些原始数据送入微机后通常要先进行一定的处理,然后
才能输出作为显示器的显示数据。
例如当被测温度为1000 C,经热电偶转换成热
电势,再经放大和A/D转换得到的数字是10,这个A/D转换结果10虽然与100
0C温度是对应的,但数字上并不是相等的。
因此,不能当作温度值去显示或打
印,必须把A/D转换结果10变换成供显示或打印的温度值100,这个变换就是
数字显示的标度变换。
在该系统中,湿度传感器和A/D相连,A/D转换器和单片机相连,其中不包
括任何非线性的数字化测量通道,因此被测量的值N‘与A/D转换结果D,存在如
图10所示线性关系。
图10线性关系
在该系统中,土壤湿度测量范围0到100%对应的输出电压范围为0-5V,ADC0809为8位A./D转换器,转换输出的数码为0255。
即根据上面公式,DL=0lD H =255,NL=0, NH=100.
3.3.3 BCD转换
计算机所能识别和处理的是二进制数,在进行标度变换后的结果都是用二进
制数进行计算和存储的,而在输入/输出系统中,按照人们的习惯均采用十进制
数比较直观一些。
在计算机中十进制数常采用BCD码(即用四位二进制数代表
一位十进制数)表示,这样采样得到的数据才可以以十进制的形式输出显示。
本
系统将二进制数转换成BCD数的方法是将其除以10”次幂,即得相应位数,最
后的余数为个位数。
3.4 LED动态显示程序
根据LED动态显示系统电路图4-8, 8155控制口的地址为7FF8H, POA口
地址为7FF9H , PC口地址为7FFBH,片内显示缓冲区为
SHOWADR-SHOWADR+3 (40H-43H),共4个单元对应4个数码管。
程序中先
取SHOWADR-I-3中的数,对应选中最左边的数码管,其余类推。
由于LED为
共阴极接法,并有反相驱动,字型表TAB中有效的字型码为:
4 节水分析:
4.1硬件设计节水性分析
在实际控制时, 模糊控制器首先把输入量量化到输入量的语言变量论域中, 再根据量化的结果去查表求出控制量。
这样可大大提高模糊控制的实时效果、节省内存空间。
具体算法是首先求出模糊关系R, 再根据输入的偏差和偏差变化率利用合成推理方法求出模糊输出量, 最后经过非模糊化把模糊量转换为精确量, 即可得到控制表。
将模糊控制引入灌溉系统不但能起到节水增产的效果, 而且不需要建立精确的数学模型, 根据作物灌溉的特点, 很适合应用模糊控制理论对灌溉量进行控制。
系统通过传感器采集到当前的土壤湿度值,首先对其数据进行处理, 例如进行数字滤波、标度变换、BCD 转换等, 然后根据处理后的数据,求出与设定土壤湿度值的偏差E 以及偏差变化率EC。
考虑土壤湿度的变化特点和控制系统的实际情况, 我们取10分钟时间段的土壤湿度变化值作为要求的变化率。
之所以选取这样的时间段, 主要原因有二: 一是因为土壤湿度系一个缓变量,短时间间隔的湿度变化率是很小, 进行测量是不可能精确的, 所以必须经过一定的时间段。
二是能在很大程度上消除干扰的影响, 避免出现设备频繁启闭的现象。
模糊控制算法的基本思路: 根据模糊控制的要求, 对偏差 E 和偏差变化率EC
进行规范化和模糊化处理, 处理的结果将E 和EC 变换为模糊集合中对应的论域值M、N, 根据M、N 的值,查出模糊控制响应表, 得出输出控制量。
由于本系统的特殊性, 输出控制量为控制设备的启闭状态, 控制设备的运行状态有3种: 保持原状态、从停止转换为启动和从启动转换为停止。
4.2智能浇灌系统与现行系统的对比
在我国,现在有很多城市都面临着严重的缺水问题,2003年干旱情况尤为严重。
目前京津翼地区的水资源总量仅占全国的1%,人均地表水资源占有量不足250立方米,仅相当于全国的1/8和世界平均的1/32,远低于国际公认的1000立方米的水资源紧缺的标准。
城市公共绿地的浇灌是一个长期大量的用水项目。
随着现代城市人们生活质量的提高,美化城市和建设绿色家园的需要,城市绿化带正在扩大,用水量随之不断增大。
因此,城市绿化用水的节约是一个十分重要的问题。
目前,对于绿地的浇灌用水主要有移动水车浇灌和安装固定喷水龙头旋转喷浇两种方式。
移动水车主要用于道路两侧狭长绿地的浇灌,固定喷水龙头主要用于公园,小区,广场等观赏性绿地。
观赏性绿地的草根很短,根系寻水性能差,不能蓄水,因此,喷水龙头的喷浇区域要保证对绿地的全面覆盖。
因此,传统方法在对绿地进行浇灌的过程中存在大量的水分浪费和分布不均匀,对于根部吸水、存水效果差的草木水分浪费更加严重。
面对传统方式水资源浪费、利用不均衡的情况,采用新型智能灌溉系统解决了一下几个难题。
在模式上,我们采用模糊识别的计算方法,对土壤湿度进行较为精确的监控,能做到适时补水,同时采用单片机控制,昼夜实现节水控制,合理分配浇灌时间。
在使用只能浇灌系统进行浇灌时,在控制浇灌时间方面做到了最优化,减少了无效浇灌效率。
平均每日灌溉时间
如上图所示,在同等条件下,我们以每日平均浇水时间为例,进行测算,发现在同等条件下,使用智能浇灌控制系统都可达到良好的节水效果,尤其是在夏季,蒸发量较大时效果更加明显。
4.3节水性分析结论
经过上述分析可得,使用本智能灌溉系统从数据处理方式、节水性设计、实际应用中都可实现节水,符合国家关于节水要求的宏观策略。
首先,为了遵循设计节水理念,在系统设计之初,在对于传感器信号采集时,利用单片机数据扫描多时段不间断的进行土壤湿度实时监测,增强了灌溉的实时性。
并且,使用了模糊数据处理算法,使得检测误差大大减小,更加有利于数据的整理
和处理,对于节水性的增强有着突出的作用。
其次,在系统设计中,我们采用分时段实时的浇灌系统,在对于用水量和用水时间进行智能控制,有利于对于水资源的高效利用。
对于定点的定量浇灌,做到量化、细化,更做到实时化,符合随季节和天气变化的要求。
此外,整个系统利用太阳能为能量依托,并且控制中心在绿地周围,以单片机为载体,在实时监测实时控制方面起到的很好的效果,避免了水分无用蒸发量,同时
也实时的保证了植物的用水需求。
参考文献
[1]景东升.单片机自动灌溉控制系统研究、设计及应用.〔学位论文].北京农业工程大学,1994 [2」武庆生,仇梅.单片机原理与应用.电子科技大学出版,1998,12
附件:单片机源程序
ADTURNO EQU 21H ;INO通道A/D转换数据存放首址
ADTURN1 EQU 2CH ;IN1通道A/D转换数据存放首址
LINEADRO EQU 37H ;1N0采集数据经滤波处理数据存
放地址
LINEADR1 EQU 38H ;INl采集数据经滤波处理数据存放地址
LINEADR EQU 39H ;平均值存放地址
HUMID EQU 3BH ;标度变换后的湿度值存放地址
BCDADR EQU 3CH ;BCD转换后的湿度值存放地址
HUMADR EQU 3DH ;上位机传来的湿度值存放地址
TIMEADR EQU 3EH ;上位机传来的时间值存放地址 T100US EQU 256-50 ;延时参
Cl00US EQU 3FH
SHOWADR EQU 40H ;显示区数据存放首址
ORG OOOOH
SJMP START
ORG OOOBH ;定时器0中断服务程序入口
Limp TOINT
ORG 0023H ;串行I/O中断服务程序入口
Limp SERVE
ORG 0050H
START: MOV SP, #50H ;设置堆栈
MOV HUMADR, #OFFH
SETB OD3H ;选中寄存器3
SETS OD4H
MOV R0, #HUMADR
CLR OD3H ;选中寄存器0
CLR OD4H
Mov TMOD, #22H;主程序初始化
Mov TH1, #OF3H
Mov TLl, #OF3H
Mov SCON, #50H
Mov PCON, #80H
mov DPTR, #7FF8H
mov A, #4DH
MOVX @DPTR, A
SETB TR1
SETB EA
SETB ES
RUN: LCALL AD;调用A/D转换子程序
LCALL MAOPAO;调用滤波子程序
LCALL TURN;调用湿度转换子程序
Mov A, HUMID;将湿度值送往上位机
Mov SBUF, A
LCALL TWOSEC;延时等待两妙钟
LCALL BCDTURN;调用BCD转换子程序
LCALL SHOW;调用显示子程序
Mov A, HUMID
CJNE A, HUMADR, COMP; 检测到的湿度值大于上位机送来
的湿度值时,则循环采样,否则报
警灌溉
DONE: CLR P1.1
LCALL ALARM;调用报警延时子程序进行灌溉动作
LCALL TIME
ORL P1, #02H
LCALL TENMIN;灌水结束等待10分钟
Limp RUN;回到主程序
COMP:JC DONE
LJMP RUN
END
AD: MOV R0, #ADTURNO
MOV R6, #OBH
ADLOOP: MOV DPTR, #OBFF8H; 启动INO通道A/D转换
GOON: MOVX @DPTR, A
MOV R7, #OAOH; 延时等待转换结束
DLAY: NOP
NOP
NOP
NOP
NOP
DJNZ R7, DLAY
MOVX A, @DPTR
MOV @R0, A;将转换后的数据送入以ADTURNO为首址的一片
RAM内
INC RO
DJNZ R6, ADLOOP
SJMP AD
RET
MAOPAO: MOV Rl, #ADTURNO
MOV R5, #OAH
CLR OOH
FILTER: MOV 3CH, @R1
INC Rl
MOV A, @R1
CLR C
SUBB A, 3CH
JNC NEXT
MOV A, @Rl
MOV @R1, 3CH
DEC R1
MOV @Rl, A
INC Rl
SETB OOH
NEXT: DJNZ R5, FILTER
JB OOH, MAOPAO
MOV LINEADRO, 26H
RET
TURN: SETB OD3H
CLR OD4H;选则第一组寄存器
CLR C
MOV A, LINEADR
MOV B, #20
MUL AB CLR OD2H MOV R7, B
MOV R6, A
MOV R5, #00H MOV R4, #33H LOOP1: MOV A, R7
JNZ LOOP2 MOV A, R6
JNZ LOOP2 MOV R7, #0 MOV R6, #0 SJMP$
LOOP2: CLR A
MOV R2, A
MOV R3, A
MOV Rl, #16 ADIN: CLR C
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R2
RLC A
MOV R2, A
MOV A, R3
RLC A LOOP3:DJNZ R1,ADIN
MOV A,R3
JB ACC.7, LOOP4
MOV A, R2
RLC A
MOV R2,A
MOV A, R3
RLC A
SUBB A,R5
JC DONE1
JNZ LOOP4
MOV A,R2
SUBB A,R4
JC DONE1
LOOP4:MOV A,R6
ADD A,#1
MOV R6,A
MOV A,R7
ADDC A,#0
MOV R7,A
DONE1: MOV HUMID,R6
CLR 0D3H
RET
BCDTURN: MOV SHOWADR+3, #00H‘因湿度值只能小于100,故千位数为0 MOV B, #100
MOV A, HUMID
DIV AB
MOV SHOWADR+2,A‘将百位数送SHOWADR+2显示地址
MOV A, #10
XCH A, B
DIV AB
MOV SHOWADR+1,A‘将十位数送SHOWADR+1显示地址
MOV SHOWADR, B‘将个位数送SHOWADR显示地址
RET
MOV DPTR, #7FF8H;指向8155控制口
MOV A, #4DH;设置8155工作方式字
MOVX @DPTR, A;设A口、C口均为输出
SHOW: CLR OD3H
SETB OD4H ;选中寄存器2组
MOV R4, #OFFH
SHOWSTART: MOV R0, SHOWADR+3 ;指向缓冲区末单元MOV R1, #4;显示4位LED
SHOWLED:
MOV R6, #20H
MOV R7, #00H
DIR 1:MOV A, #00H
MOV DPTR, #7FFBH
MOVX @DPTR, A
MOV A,@R0
MOV DPTR, #TAB
MOV A, @A+DPTR
MOV DPTR, #7FF9H
MOVX @DPTR,A
MOV A,R6
MOV DPTR,# 7FFBH
MOVX @DPTR,A
HERE:DJNZ R7,HERE
DEC RO
CLR C
MOV A,R6
RRC A
MOV R6,A
JNZ DIR1
DJNZ R1,SHOWLED
DJNZ R4,SHOWSTART
CLR 0D4H
TAB:DB OCOH, OF9H, OA4H, OBOH DB 99H, 92H, 82H, OF8H
DB 80H, 90H, 88H, 83H
DB OC6H, OA1H, 86H, 8EH
RET。