武汉大学珞珈学院本科毕业论文
通过外部复位的电容充电来实现的,这样只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位,即接通电源那就成了系统的复位初始化;按键手动复位有电平方式和脉冲方式两种。如图(b),按键电平复位是通过使复位端经电阻与VCC电源接通而实现的。如图(c),按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。
(a)上电复位 (b)按键电平复位 (c)按键脉冲复位 图3.2 89C52复位电路
(2)复位操作
复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表3.1所示。
表3.1 一些寄存器的复位状态 寄存器 PC ACC PSW SP DPTR P0~P3 IP IE TMOD
复位状态 000H 00H 00H 07H 0000H FFH XX000000B 0X000000B 00H 寄存器 TCON TL0 TH0 TL1 TH1 SCON SBUF PCON 复位状态 00H 00H 00H 00H 00H 00H 不定 0XXX0000B 3.3 键盘电路的设计
键盘在单片机系统中是一个很重要的部分。输入数据、查询和控制系统的工作状态都要用到键盘,键盘是人工干预计算机的手段。
2
武汉大学珞珈学院本科毕业论文
微机所用的键盘可分为编码和非编码键盘两种。编码键盘采用硬件线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖功能。这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。非编码键盘仅提供按键开关状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。
本次设计用的是矩阵式键盘,这种键盘连接简单使用较少的I/O口就可以接较多按键。
3.3.1 矩阵式键盘扫描原理
矩阵键盘扫描的方法有两种:1、逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。2、行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。
图3.3 4 * 4矩阵键盘
矩阵键盘的原理如图3.3所示。首先可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,来判断是哪一列有键按下,其程序如下:
GPIO_KEY=0X0F;
switch(GPIO_KEY) {
case(0X07): case(0X0b):
KeyValue=0;break;测试第一列 KeyValue=1;break;测试第二列
3
武汉大学珞珈学院本科毕业论文
}
case(0X0d): KeyValue=2;break;测试第三列 case(0X0e):
KeyValue=3;break;测试第四列
然后再通过高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是哪一行有按键按下,其程序如下: GPIO_KEY=0XF0;
switch(GPIO_KEY) { }
case(0X70): case(0Xb0): case(0Xe0):
KeyValue=KeyValue;break;测试第一行 KeyValue=KeyValue+4;break;测试第二行 KeyValue=KeyValue+12;break;测试第四行
case(0Xd0): KeyValue=KeyValue+8;break;测试第三行
通过行与列的测试,这样就能够确定是哪一个按键按下了。
3.3.2 盘的去抖设计
(a)
(b)
图 3.4 键操作和键抖动示意图
按键开关在电路中的连接如图3.4(a)所示。按键未按下时,A点电位为高电平5V;按键按下时A点电位低电平。A点电位就用于向CPU传递开关状态。但由于按键的结构为机械弹性开关,在按键按下和断开时触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图3.4(b)所示,键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此,必须设法消除抖动的不良后果。
消除按键去抖不良后果的方法有硬件和软件两种。在此系统中我们采用软件去抖的方法来实现按键去抖问题。根据抖动的特性,在第一次检测到按键按下后,执行一段延时10ms子程序后再确定该键是否确实按下,从而消除抖动的影响。
3.3.3 键盘扫描控制方式
在单片机应用系统中,对键盘的处理工作只是CPU工作内容的一部分,CPU还要
4
武汉大学珞珈学院本科毕业论文
进行数据处理,显示和其他输入操作,因此键盘处理工作既不能占用CPU太多时间,又需要CPU对键盘操作及时作出响应,CPU对键盘处理控制的工作方式有以下几种。
1、程序控制扫描方式
程序控制扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号要求。程序控制扫描方式的键处理程序固定在主程序的某个程序段。当主程序运行到该程序段时,依次扫描键盘,判断有键输入否。若有,则计算按键编号,执行相应键功能子程序。这种工作方式对CPU影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。
2、定时扫描控制方式
定时扫描控制方式是利用定时器/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。程序控制扫描方式与定时控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时器/计数器定时控制,还要占用一个定时/计数器。
3、中断控制方式
中断控制方式是利用外部中断源,响应按键输入信号。当无按键按下时,CPU执行正常工作程序。当有键按下时,CPU立即产生中断。在中断服务子程序中扫描键盘,判断是哪一个键被按下,然后执行该按键的功能子程序,既能及时处理键输入,又能提高CPU运行效率。
本系统就采用此种键盘控制方式,来响应系统的按键输入信号。
5
武汉大学珞珈学院本科毕业论文
第4章 系统的软件部分设计
同硬件设计一样,软件设计也是分块进行的。本设计主要的现实背景就是以武昌火车站路线为依托,运行区间沿途设置12个站点。程序的主要设计包括系统主程序、键盘扫描程序、液晶显示程序等。各部分子程序由主程序调用,组成一个整体。
4.1 系统主流程设计序
如图4.1所示为系统主流程图。首先需要进行系统初始化设置,初始化后进行循环。在本设计中是采用中断扫描模式,当有键按下时,系统产生中断,CPU响应中断后,通过软件来实现该键号所对应键的功能。
图 4.1 系统主流程图
1
公交车自动报站系统毕业论文(DOC)



