用键盘扫描程序获取对应命令键的键值,然后执行相应的子程序,实现所要求的控制功能。
开 始将上一根列线置低将下一根列线置高初始化依次扫描行线将第一根列线置高NN依次扫描行线有信号吗YN延时一次是第四根列线吗Y将第四根列线置低N返回一个值有信号吗Y延时一次有信号吗YN再延时一次有信号吗Y再延时一次有信号吗YN返回对应键值N有信号吗Y返回对应键值
图4.2 键盘扫描程序流程图
4.1.2 LED数码显示程序设计
本系统采用了四位共阳极七段数码管,共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻,这里的限流电阻选为100Ω。
这里选用的7447芯片是从BCD码到SEG7段码的转换器,而74LS138是一个地址译码器,
通过74LS138选通某个数码管,然后根据7447传送过来的SEG7段码的数据进行显示,而在非选通的时候,数码管能够保持原有的显示数据。LED数码显示程序的流程图如图4.3所示。
子程序入口初始化查表取段码段码送驱动显示位码送译码器选通低位数码管显示缓冲区左移数字是否显示完Y关显示N返回
图4.3 LED数码显示程序流程图
4.2 照明启停控制程序设计
照明的启停控制主要是由主控制器发出指令,通过RS485通信方式或无线数传方式控制全部或部分分控制器所控制照明灯具的启停,因此照明启停控制程序由两部分组成,即全部启停控制与单独启停控制两部分。
4.2.1 全部启停控制程序设计
全部照明启停控制系统是利用主控制器上的开、关按键来控制全部照明灯的启停,控制命令是通过串口通信方式传达到分控制器,分控制器再依据命令向P3.7口输出高低电平,来达到控制灯泡亮和灭的目的。
在这个多机系统中采用的是主从式通信方式,主机即主控制器处于主导和支配地位,从机即分控制器一般以中断方式来接收和发送数据。在主从式多机系统中主机发送的信息可以传送到所有的从机或指定的从机,在这里是要发送给所有的从机,来控制照明灯的启停。在本系统中采用广播式命令,不需要从机返回信息,从机之间也不能直接通信。主机由AT89C51单片机充当,从机为AT89C2051单片机。主机与从机的数据通信波特率定为9600波特,每个从机都有唯一的地址号,用来区分各从机。单片机的数据通信由串口完成,定时器T1为波特发生器,数据传送格式为1位起始位,8位数据位,1位停止位,1位可编程位(TB8)。工作方式:定时器T1设置为方式2,串口设置为工作方式3。
本系统的通信原理为:从机在建立与主机通信之前所有分机的SM2都置1,即随时处于对通信线路监听的状态,只能收到主机发送来的机号信息。主机向从机发送广播地址信息时,广播地址为00H,所有分机都接收到广播地址信息,然后进入正常通信状态,清除SM2位,开始接收主机发送来的命令。从机收到的命令是开灯时,向P3.7口输出高电平,打开MOC3021驱动双向可控硅,从而就点亮了灯泡;同理,如果收到的命令是关灯时,向P3.7口输出低电平,封闭MOC3021使双向可控硅截止,也就达到了关闭灯泡的目的。该系统的主机和从机的控制程序流程图如图4.4和图4.5所示。
开始初始化调用键盘扫描子程序有键按下吗Y取键值N发送数据给从机返回
图4.4 全部启停控制主机程序流程图
中断程序入口初始化接收主机发送的地址N地址是00H吗Y接收主机发送的数据是打开命令吗N是关闭命令吗NY向P3.7口输出高电平Y向P3.7口输出低电平返回
图4.5 全部启停控制从机程序流程图
4.2.2 单独启停控制程序设计
单独照明启停控制系统是通过主机发送给指定的从机命令信息,来实现照明灯的启停控制。主机首先发送从机地址,被叫到的从机向主机发送本机地址,然后主机向从机传送数据,从机根据接收的数据信息执行相应的命令。单片机的工作方式同全部照明启停控制系统。其具体的工作过程是:所有的从机在通信之前都把SM2位置1,随时处于侦听状态。当主机发送从机的地址信息时,每帧数据的第9位都为1,所有从机都接收到地址信息,然后判断主机是否呼叫本机。如果呼叫本机则进入正式通信状态,清除SM2,并把本机地址号发送给主机作为应答,然后才开始接收主机发送来的信息。而其它从机由于地址号不符,他们的SM2位仍然为1,仍处于侦听状态,无法接收主机发送来的数据信息。主机收到从机发送来的回应信息后,比较主机已发送的地址号与刚接收的地址号是否相符,如果不符,则发出错误信如
果相符,则正式发送数据信息,这时发送的每帧的第9位都为0。只有SM2=0的从机才能接收到主机发送的信息。从机根据命令执行相应的动作,如果为打开命令,则输出高电平驱动可控硅动作,开启照明灯;如果为关闭命令,则输出低电平使可控硅截止,停掉照明灯。该系统的主机和从机控制程序流程图分别如图4.6与4.7所示。
开始初始化调用键盘扫描子程序有键按下吗Y取键值N发送地址给从机接收从机返回的地址N两个地址相符吗Y发送数据给从机送显错误信息“0E”返回
图4.6 单独启停控制主机程序流程图