四川师范大学成都学院电子工程系课程设计报告
图4..复位电路
图3中由按键RESET1以及电解电容C3、电阻R2构成按键及上电复位电路。由于单片机是高电平复位,所以当按键RESET1按下时候,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H开始执行。
值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。
2.1.4显示电路
该电路的显示电路由4个LED共阴极管作为显示时间和选手号码,当然采用LCD液晶显示其也可以但是考虑到成本的问题,和实用性我们选择了LED,成本大大的降低,显示电路采用74LS04进行锁存,将P0口的数据进行锁存,这样P0口可以作为其他的用途了。动态显示当中由于人们的视觉残留没一部分必须停留约为5-20ms才能完全的显示。
显示通过软件程序控制LED的动态显示显示程序如下:
void display(uchar baiwei,shiwei,gewei,xuanshou) //显示函数
{
suo=1;
P2=0xf7; //打开显示时间十位的位选 delay1(5);
P2=0xfb; //打开显示时间十位的位选 delay1(5);
4
四川师范大学成都学院电子工程系课程设计报告
}
4位七段数码管显示电路如图4所示。 P2=0xfd; //个位位选 delay1(5);
P2=0xfe; //选手位选 delay1(5); suo=0;
图5.. 共阴极数码管
2.1.5键盘扫描电路的设计
键盘扫描电路分为独立式和矩阵键盘在选手按键的时侯可以选择矩阵键盘,也可以选择独立键盘,但是在这里没有必要选择矩阵式键盘,当选择矩阵键盘时,选手个数可以达到16个。键盘点路图如下:
5
四川师范大学成都学院电子工程系课程设计报告
图6..抢答按键及调整按键
在图5中8个选手按键分别接入单片机的P1.0~P1.7端口,然后通过反相器连到P3口的中断0端口,单片机通过读取P1.0~P1.7的值来判断当前输入的是8个抢答按键中的哪一个。然后出发一次中断,抢答时间调整和回答时间调整接到单片机的P3.3和P3.4接口,加一及减一按键接到单片机的P3.5和P3.6接口。
图7.. 开始、结束按键
在图6中,开始及结束按键接到单片机的10、11脚,这里用到了单片机10、11脚复合功能中的IO端口功能,单片机通过读取10、11脚的P3.0、P3.1的IO端口值来判断当前是否处于抢答开始状态或抢答结束状态。
按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms,例如取10-20ms。如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中。如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。
在键盘扫描电路中开始按键和选手按键都通到了中断0,当开始键和选手按键按下是都会触发一次中断,然后扫描按键判断是哪一个按键按下的,如果是选手按下抢答按键时则非法处理,如果时主持人按下时则按照正常的抢答流程进行抢答。
51单片机大外部中断经过初始化后,当外部引脚变为低电平后片出发一次中断。中断处理函数如下:
6
四川师范大学成都学院电子工程系课程设计报告
void init()//中断 定时器 初始化函数 {
TMOD=0x01; EA=1; TH0=0x3C;
TL0=0xB0; }
void int0() interrupt 0//中断0函数 { }
中断1为判断主持人停止键,当主持人在答题时间按下停止时,答题变立刻停止, void int1() interrupt 2//中断0函数 { }
temp_int0=1; temp=1;
ET0=1; EX0=1; IT0=1; EX1=1;
2.1.6 报警电路
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。
当在最后的5秒的时侯蜂鸣器变产生报警,以提醒选手们抢答时间或答题时间将要结束了。
报警程序如下: If(t==5) {
7
四川师范大学成都学院电子工程系课程设计报告
}
当有选手提前答题的时候蜂鸣器便持续发出响声。
本文设计如图8所示。图中单片机的14脚输出具有复合功能,此处用到了单片机17脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。
Beep=1;
图8 报警电路
2.1.7 系统复位设计
使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。有的编程人员用020000(LJMP 0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这类错误的典型代表。软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。
8