图3-1 系统流程图
通过不断地循环扫描按键,检查是否有病人呼叫。
3.2 各模块功能设计
1. 显示模块功能设计
当有按键按下时,就会调用显示子程序,在电路图中使用的是:串行方式,假如现在是2号床位上的病人呼叫,则在数码管上应显示“2”,串行方式中,数码管上显示的数字是先成二进制数,再一位一位地输进去的,然后才显示数字。这里是在模拟串口,因为该单片机中只有一个串口,而这里要用多个串口。当这段程序执行完以后,再进入循环。十进制数与相应二进制数的转换表如表3-1所示。
表3-1 转换表
2. 声音模块功能设计
如果有病人呼叫,即有按键按下,那么相应的蜂鸣器所接的I/O口也设置为高电平,而且每一个蜂鸣器发出的声音是不一样的,同时与床位号对应的指示灯也会亮。在程序中只用一条语句即可实现:CLR P2.4,因为在本电路设计时,每个引脚都是低电平有效的,所以在清零时蜂鸣器才能发出声音。
3. 键盘模块功能设计
通过不断的扫描按键所接的 I/O口是高电平还是低电平来判断是否有病人呼叫,是通过循环实现的。同时还需要考虑到一些问题,例如,当有多个病人同时呼叫时,怎样能使互不干扰,这时是通过一个标志位来控制的。
3.3计数器延时设定
3.3.1 计数器硬件延时
定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式:
TC=M-C
式中,M为计数器模值,该值和计数器工作方式有关。该系统中,选用的是方式1,