此时Q=O,使内部放电管截止。
当υC上升到大于Vcc/3时,RD=1,SD=1,基本RS触发器状态不变,即输出端Q仍为高电平,当VC上升到略大于2VCC/3时,RD=0,SD=1,基本RS触发器置0,输出端Q为低电平。
这时Q=1,使内部放电管饱合导通。
于是电容C经R2和内部放电管放电,υc按指数规律减小。
当υC下降略小于Vcc/3时,内部比较器A1输出高电平,A2输出低电平,基本RS触发器置1,输出高电平。
这时,Q=0,内部放电管截止。
于是C结束放电并重新开始充电。
如此循环不止,输出端就得到一系列矩形脉冲,如图1.3(b)所示。
由图可见,υC将在Vcc/3和2VCC/3之间变化,因而可求得电容C上的充电时间
和放电时间
充电时间
放电时间
矩形波的振荡周期
………①
因此改变
、
和电容C的值,便可改变矩形波的周期和频率。
当矩形波的频率f=100Hz时,振荡周期T=0.01s。
当取C=0.1µF,R1=40千欧,若使T=0.01s,那么,R2≈51千欧。
取一固定电阻47千欧与一5千欧的电位器相串联代替电阻R2。
在调试电路时,调节电位器RP,使输出脉冲周期为0.01s,即可获得所需的基准脉冲。
2.方案二:
由石英晶体构成的多谐振荡器
在对频率的稳定性要求较高的电路中,应采用频率稳定性很高的石英晶体振荡器,图3给出了两种常见的石英晶体振荡电路。
图3石英晶体振荡电路
石英晶体振荡电路的谐振频率由石英晶体的固有频率决定,故图1.4中的两电路输出的波形的振荡频率均为1MKz,电路中其它元器件对输出波形频率的影响极为有限。
只是石英晶体振荡器产生的频率很高,要得到基准毫秒脉冲,还需要用分频电路。
振荡器输出1MKz信号,为了得到100Hz的振荡脉冲,可以进行10000分之一的分频。
3.两种方案的比较与选择
首先,555多谐振荡器的振荡频率不可能是某一精确值,即它的振荡频率不可能达到100Hz;其次,因为555多谐振荡器的振荡
,故频率还受电阻R1、R2和电容C的影响,当它们中的任一值变动时,振荡频率就受到影响;最后,上述555振荡电路中的振荡频率是由门电路输入电压上升到转换电平所需要时间来决定的,由于受电源电压、温度变化以及某些干扰因素的影响,门电路的转换时间不可能十分精确和稳定,可见,上述振荡电路的振荡频率极不稳定。
而石英晶体振荡器则可以克服以上缺点。
石英晶体多谐振荡器是一种产生高稳定度的脉冲振荡器,它有极高的频率稳定性,而且品质因数又高,因此它有极好的选频特性。
当外加电压频率等于石英晶体的固有频率f0时,它的阻抗最小,频率为f0的电压信号最容易通过,并在电路中形成正反馈而使电路振荡。
石英晶体多谐振荡器的振荡频率只取决于石英晶体的固有频率f0,而与外接的R、C元件无关。
此外,石英晶体振荡器的电路结构简单、频率易调整。
但是,石英晶体振荡器产生的振荡脉冲的频率过高,为了的到基准脉冲,还需要外加分频电路,555多谐振荡器则不需如此。
在电子秒表的设计中,选择了方案二。
尽管方案二需要使用分频电路,增加了电路中使用的元件数,但秒表的计时一定要可靠、精准,与555多谐振荡器相比,石英晶体振荡器在振荡频率的稳定性上刚好符合设计需要。
4.分频电路的设计
由于要求得到的基准脉冲的频率是100Hz,而石英晶体振荡器产生的频率过大,需要进行分频。
分频电路有多种选择方案,可以使用专用的分频器,也可通过触发器进行分频,还可以用计数器分频,本次设计中用10进制计数器74HC160对1MKz进行分频,因为是取10000分之一,所以使用了4个计数器,尽管用74HC160较多,有点浪费,但其在电路中的连接方式较为简单。
74HC160是同步十进制加法计数器,它有异步清零、同步置数等功能。
图4为它的逻辑符号图。
图474HC160的逻辑方框图
74HC160的状态转换表和时序波形图分别如表1.1和图5所示
表174HC160的状态转换表
图574HC160的时序波形图
通过对表1和图5的分析,可以看出,从CP端输入十个矩形脉冲,而从74HC160的进位输出端知输出一个矩形脉冲,可见,当把前一个74160的进位输出端作为下一个74160的脉冲输入端,即可达到十分频的目的。
由于晶体振荡器的输出为1MKz的脉冲信号,为了得到100Hz的振荡脉冲,要进行10000分之一的分频,故需要四个74160来对振荡输出脉冲进行分频。
基准脉冲的产生电路如图6所示。
图6基准脉冲的产生电路
3.2键盘及控制电路
1.启动和暂停控制开关
启动和暂停控制开关是由基本RS触发器构成的。
基本RS触发器是由两个与非门交叉耦合而成的,是TTL触发器的最基本组成部分,其逻辑图如图7所示,它能够存储1位二进制信息,但存在R+S=1的约束条件。
图7RS触发器逻辑电路和逻辑符号
基本RS触发器的用途之一是作无抖动开关。
例如触发器是具有记忆功能的二进制信息存储器件,是时序逻辑电路的基本器件之一。
在图1.9(a)所示的电路中通过希望在开关S闭合时,A点电压的变化是从+5V到0V的清楚跃迁,但是由于机械开关的接触抖动,往往在几十毫秒内电压会出现多次抖动,相当于连续出现了几个脉冲信号。
显然,用这样的开关产生的信号直接作为电路的驱动信号可能导致电路产生错误动作,这在有些情况下是不允许的。
为了消除开关的接触抖动,可在机械开关与驱动电路间接入一个基本RS触发器,把带RS触发器的无抖动的开关称为逻辑开关。
在秒表的设计电路图中,启动和暂停控制开关电路如下图8所示。
图8控制电路
由图知,当开关J1和开关J2都打开时,基本RS触发器的两输入端都是1,触发器输出保持原状态不变。
当开关J1闭合是,Q输出1,基准脉冲可以输入到计数单元,秒表起动计时;当开关J2闭合是,Q输出0,基准脉冲无法输入到计数单元,秒表暂停计时。
若要继续计时,合上开关J1即可。
2.清零开关的设计
清零功能的实现相对而言比较简单。
把计数单元的所有74LS161的清零控制端Rd连接在一起,通过一个开关接地,需要清零时,闭合开关就行。
图9复位电路
3.3计数、译码及显示电路
1.计数器的设计
秒表中的计数器是由74LS161构成的。
74LS161是集成同步二进制计数器,该计数器具有同步预置、异步清零、计数和保持四种功能,且有进位信号输出端,可串接计数使用。
它的引脚图见图9。
图974LS161引脚图
60进制计数器也是用乘数法构成的,它是由一个十进制计数器和一个六进制计数器级联而成。
如图10
图1060进制计数器
2.译码显示电路
本设计中选用的74LS48是BCD码七段译码器兼驱动器,输出端(Ya-Yg)为高电平有效,可驱动共阴极LED显示器,其外引线排列图如图11所示。
图1174LS48外引线排列图
显示器采用七段发光二极管显示器,它可直接显示出译码器输出的十进制数。
七段发光显示器有共阳和共阴两种接法。
与74LS48译码器配套的显示器为共阴型。
七段显示器的7段数码管结构如图11所示
图117段数码管结构图
4数字秒表系统软件设计
本系统系统软件设计主要包括数码显示和复位键,开始键,停止键。
本章节系统的介绍了数字秒表的主程序和中断程序的设计流程。
4.1主程序软件设计
4.2中断服务程序设计
中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。
中断是单片机实时地处理内部或外部事件的一种内部机制。
当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
中断源
中断标志
中断服务程序入口
优先级顺序
外部中断0
IE0
0003H
0
定时/计数器
TF0
000BH
1
外部中断1
IE1
0013H
2
定时/计数器1
TF1
001BH
3
串行口
EI或TI
0023H
4
PDJW
现场保护
计数器重加载
循环次数减1
是否满8次
毫秒值加1
是否满60
毫秒缓冲清零
秒值加1
是否60S
秒显缓冲清零
分显示加1
是否满60
分显示清零
现场恢复
Y
N
N
N
N
Y
Y
Y
5调试与仿真
5.1软件调试与烧写
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
图12为在编辑程序时所用的软件KILE.通过此程序对软件进行编辑,编译,调试。
图12烧写过程
5.2硬件仿真
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
比如:
原理布图;PCB自动或人工布线;SPICE电路仿真;互动的电路仿真;用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
6.结论
单片机可以应用于各个领域,而单片机本身也是融合了各个领域的知识。
我们可以通过单片机去实现很多的电子产品,因为它的应用领域非常的广泛,所以发展很迅速。
本次设计,先通过KEIL软件对软件进行编辑、调试、编译,通过此次长达数天的编辑,对单片机C语言编写应用的更加熟练;然后通过STC-ISP软件学习如果在单片机种下载程序代码;通过proteus软件,对数字秒表的硬件进行仿真。
本次设计时以单片机为中心进行设计,但是仅仅有单片机的知识还不够,同时还需要具有硬件的知识和软件的知识,并将它们有机的结合起来。
首先要通过硬件知识去设计整个电路,然后通过C语言去写数字秒表的C语言设计。
同时,由于STC89C52单片机的ROM只有8KB,所以还要注意内存的应用;还要注意如何设计硬件和软件,去增加运行速度和计数精度。
本次设计的数字秒表结构简单,但是对以后来说却是很好的经历。
参考文献:
[1]阎石.数字电子技术基础[M].北京:
高等教育出版社,2006年5月第5版
[2]胡健,刘玉宾,朱焕立等.单片机原理及接口技术[M].北京:
机械工业出版社,2009年7月第一版
[3]郭天祥.51单片机C语言教程[M].北京:
电子工业出版社,2009年12月第一版
[4]谭浩强.C程序设计[M].北京:
清华大学出版社,2005年7月第三版.
附录
附录一系统原理图
附录二源程序代码
ORG0000H
START:
LJMPMAIN
ORG000BH
LJMPPDJW
;****************************************************************;
;系统监控程序区
ORG0030H
MAIN:
MOVPSW,#00H
MOVSP,#7FH;确立堆栈区
MOVR0,#20H;RAM区首地址
MOVR7,#96;RAM区单元个数
MOVTMOD,#01H
SETBEA
SETBET0
ML:
MOV@R0,#00H
INCR0
DJNZR7,ML
TSF:
MOVDPTR,#DISBH;系统初始化后提示符“P.”字符代码表首地址
MOVR5,#08H
MOVR0,#78H
DISPTSF:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR5,DISPTSF
KEY0:
LCALLDISP
LCALLKEY
JB20H.0,K1
JB20H.1,K2
JB20H.2,K3
LJMPKEY0
KEY00:
LCALLKEY
LCALLDISP
JB20H.2,K3
LJMPKEY00
K1:
JB22H.1,KEY0;如果此时为暂停状态,本次按键K1无效
CPL22H.0
JB22H.0,K01;高电平则计时
CLRTR0;低电平则停止
LCALLDISP
LJMPKEY00
K01:
MOV7AH,#12H;从零开始计时
MOV7DH,#12H
MOV7FH,#10H
MOV78H,#00H
MOV79H,#00H
MOV7BH,#00H
MOV7CH,#00