您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制设备状态及时钟显示的程序设计 正文
设备状态及时钟显示的程序设计

设备状态及时钟显示的程序设计

点击数:7891 次   录入时间:12-12 10:40:07   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  机器设备在运行中有可能遇到各种问题,如复印机卡纸、汽车发动机超温、水箱缺水、油箱缺油等,本设计可将机器设备运行中遇到的情况立即显示于液晶屏上提醒操作人员。
  
  这里使用的是查询的方法,正常工作时屏幕上显示:Hello-Normal!!。
  
  P2.1为低电平时模拟超温,屏幕显示:
  
  Overtemp.?????。P2.2为低电平时模拟超速,屏幕显示:Overspeed?????。
  
  P2.3为低电平时模拟缺水,屏幕显示:
  
  Notwater??????。P2.4为低电平时模拟缺油,屏幕显示:Notoil????????。
  
  在我的文档中建立一个文件目录(LCD6),然后建立—个LCD6.uv2的工程项目,最后建立源程序文件(LCD6asm)。
  
  输入下面的程序:

 



www.55dianzi.com

  编译通过后,将LCD5文件夹中的hex文件通过TOP851编程器烧录到89C51芯片中,将芯片插入到S2型数码管试验板上,试验板上标示LCD1的排针通过14芯排线与液晶显示模组(LCM)正确连接,将TOP851编程器的9V直流电源插到S2型试验板上通电运行。屏幕上显示:Hello-Normal!!!(你好一正常!!!)。拿一支万用表的表笔,一端接地(可搭在试验板上7805稳压器的散热片上),另一端碰触板上标示P2.1的铜箔(模拟超温微动开关接通),屏幕显示:Overtemp.?????(超温???
  
  ?)。表笔碰触板上标示P2.2的铜箔,屏幕显示:Overspeed?????(超速????
  
  ?)。表笔碰触板上标示P2.3的铜箔,屏幕显示:Notwater??????(无水?????
  
  ?)。表笔碰触板上标示P2.4的铜箔,屏幕显示:Notoil????????(无油???????
  
  ?)。读者朋友也可根据各种机器设备的不同来设置表达的语句。
  
  我们对程序进行解释。
  
  序号1(程序解释,以下同):程序分隔及说明。
  
  序号2:定义LCM的RS引脚由89C51的P3.3脚控制。
  
  序号3:定义LCM的R_W引脚由89C51的P3.4脚控制。
  
  序号4:定义LCM的E引脚由89C51的P3.5脚控制。
  
  序号5:定义LCM的数据口DBO_DB7由89C51的P1口控制。
  
  序号6:程序分隔及说明。
  
  序号7:程序从地址OOOOH开始。
  
  序号8:跳转到MAIN主程序处。
  
  序号9:程序分隔及说明。
  
  序号10:主程序MAIM人地址030H开始。
  
  序号11:主程序开始,堆栈指针指向60H。
  
  序号12:调用启动LCM子程序进行初始化。
  
  序号13:调用清除LCM子程序。
  
  序号14:程序分隔及说明。
  
  序号15:标号START.指向显示屏的第一行第1列。
  
  序号16:调用写指令到LCM子程序。
  
  序号17:读取P2口状态至累加器内。
  
  序号18:累加器取反。
  
  序号19:累加器第1位为0转DONE2;否则顺序执行。
  
  序号20:调用2.7ms延时子程序。
  
  序号21:累加器第1位为O转DONE2;否则顺序执行。
  
  序号22:将需用的字符串首地址送DPTR。
  
  序号23:调用显示子程序。
  
  序号24:跳转到START处循环执行。
  
  序号25:累加器第2位为0转DONE3;否则顺序执行。
  
  序号26:调用2.7ms延时子程序。
  
  序号27:累加器第2位为0转DONE3:否则顺序执行。
  
  序号28:将需用的字符串首地址送DPTR。
  
  序号29:调用显示子程序。
  
  序号30:跳转到START处循环执行。
  
  序号31:累加器第3位为0转DONE4;否则顺序执行。
  
  序号32:调用2.7ms延时子程序。
  
  序号33:累加器第3位为0转DONE4;否则顺序执行。
  
  序号34:将需用的字符串首地址送DPTR。
  
  序号35:调用显示子程序。
  
  序号36:跳转到START处循环执行。
  
  序号37:累加器第4位为O转DONEO;否则顺序执行。
  
  序号38:调用2.7ms延时子程序。
  
  序号39:累加器第4位为0转DONEO;否则顺序执行。
  
  序号40:将需用的字符串首地址送DPTR。
  
  序号41:调用显示子程序。
  
  序号42:跳转到START处循环执行。
  
  序号43:将需用的字符串首地址送DPTR。
  
  序号44:调用显示子程序。
  
  序号45:跳转到START处循环执行。
  
  序号46:程序分隔及说明。
  
  序号47~55:显示子程序。
  
  序号56:程序分隔及说明。
  
  序号57~63:启动LCM子程序。
  
  序号64~75:查询忙碌标志信号子程序。
  
  序号76:程序分隔及说明。
  
  序号77~84:写指令到LCM子程序。
  
  序号85:程序分隔及说明。
  
  序号86~93:写数据到LCM子程序。
  
  序号94:程序分隔及说明。
  
  序号95~97:清除LCM子程序。
  
  序号98:程序分隔及说明。
  
  序号99~103:延时子程序。
  
  序号104:程序分隔及说明。
  
  序号105~109:需显示的字符串。
  
  序号110:程序分隔及说明。
  
  序号111:程序结束。
  
  下面一个实验是设计一个计时时钟。我们曾在《手把手教你学单片机》中实验了数码管显示的电子钟,由于数码管只有4位,秒无法显示,只能用小数点(秒点)闪烁来代替。这次我们用液晶显示,不仅可显示时、分、秒,而且还显示出BeijingTime(北京时间),看效果令人满意否?
  
  液晶屏上显示:--BeijingTime------XX:XX:XX----在我的文档中建立一个文件目录(LCD7),然后建立—个LCD7.uv2的工程项目,最后建立源程序文件(LCD7.asm)。
  
  输入下面的程序:
  
  序号:1:****89C51引脚定义****

 



www.55dianzi.com

  编译通过后,将LCD5文件夹中的hex文件通过TOP851编程器烧录到89C51芯片中,将芯片插入到S2型数码管试验板上,试验板上标示LCD1的排针通过14芯排线与液晶显示模组(LCM)正确连接,将TOP851编程器的9V直流电源插到S2型试验板上通电运行。屏幕上的时钟从00:00:00开始走时,按下6号键可调整时,按下3号键可调整分。调整秒一般没什么意义,我们就不设置此功能了。看看,界面是否比原先的数码管显示美观多了。当然走时并非十分精准,如你需精确的时间,可改变定时器的初值多作几次试验后确定。
  
  我们对程序进行解释。

[1] [2]  下一页


本文关键字:程序设计  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制