图 2 外部振荡源电路
3.复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图
图 3 复位电路
4.显示电路的设计
显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
5
5. 键盘扫描电路的设计
键盘是人与微机系统打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。
图 4 独立键盘
它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺”现象。
6 发声
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。
6
7 系统复位
使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。有的编程人员用020000(LJMP 0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这类错误的典型代表。软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。
五 系统软件设计方案
1.主程序系统结构图
图5 软件系统结构图
系统初始化模块 按键模块 抢答模块 数码显示模块 2.程序流程图
7
图6 程序设计流程图
复位 显示抢答号 按键抢答 显示000000 初始化 3.系统程序
cs8255 equ 0ffffh ;8255命令控制口 outsegequ 0fffch ;字形控制口 outbitequ 0fffdh ;字位/键扫控制口 org 0 Start: mov sp,#40h mov dptr,#CS8255
mov a,#88h ;命令字:A,B口输出 movx @dptr,a ;8255初始化
clr c setb
c
st0: jb p3.0,st1 ;setb p1.4 ;setb p1.5 ; setb p1.6 ; setb p1.7 mov r0,#0
call DisplayLED0 ;显示 st1: jnc st0
8
jb p1.0,st2 clr c mov r0,#1
;clr p1.4
;setb p1.5 ;setb p1.6 ;setb p1.7 call DisplayLED1;显示 st2: jnc st0
jb p1.1,st3 clr c mov r0,#2
;clr p1.5 ;setb p1.4 ;setb p1.6 ;setb p1.7 call DisplayLED2;显示 st3: jnc st0
jb p1.2,st4 clr c mov r0,#3
;clr p1.6 ;setb p1.4 ; setb p1.5 ;setb p1.7 call DisplayLED3 ;显示st4: jnc st0
jb p1.3,st5 clr c mov r0,#4
;clr p1.7 ;setb p1.4 ;setb p1.5 ; setb p1.6
call DisplayLED4;显示
9