要利用二极管的单向导电作用来实现的。
由于整流后的电压还有较大的交流成分,因此必须通过滤波电路加以滤除,从而得到比较平滑的直流电压。常见的有电容滤波、电感滤波等电路形式。本设计中采用1000uF的电容C1并联在负载两端进行滤波。
经过滤波后得到的输出电压还会随电网电压波动、负载和温度的变化而变化,因此,在整流、滤波电路之后,还需要稳压电路,以维持输出电压的稳定。本设计中采用三端集成稳压器7805进行稳压,C3用于防止稳压器自激,取0.1uF,C2和C5用于抑制稳压器的纹波,D1为电源指示灯。
电源电路如图3-2所示。
图3-2 电源电路
3
3.3时钟电路设计
AT89S52单片机各功能部件的运行都以时钟控制型号为基准,有条不紊、一拍一拍地工作。该设计中的时钟电路采用内部时钟方式。AT89S52内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片19引脚XTAL1,输出端为18引脚XTAL2。这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器,图3-3是AT89S52内部时钟方式电路。
图3-3 AT89S52内部时钟方式电路
电路中的电容C1和C2的选择典型值30pF。该电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体振荡器的频率选择12MHz,晶体振荡器的频率越高,系统的时钟频率越高,单片机的运行速度越。另外,在连接电路时,晶体与电容尽可能安装的与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。
4
3.4复位电路设计
AT89S52的复位是由外部的复位电路实现的。复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平有复位电路采样一次,然后才能得到内部复位操作所需要的信号。
本设计采用的是按键电平复位方式。通过AT89S52的9引脚RST段经电阻与电源VCC接通来实现,具体电路如图3-3所示。复位电路中的R和C参数的选取要统一考虑,以保证可靠复位。即要要给AT89S52的复位引脚RST加大于两个时钟周期的高电平信号。本设计中电容C取22uF,R取1K,就可保证单片机可靠复位。
图3-4 按键电平复位电路
3.5软件设计
根据要求:程序先给数码管送数字“8”,然后拨动DIP开关,数码管显示对应的数字“0”-“F”。程序流程图如图3-5所示:
5
开始 数码管显示8 YES 复位键是否按下 NO DIP开关输入数据 查表送数码管显示 图3-5 程序流程图
根据要求,用汇编语言编写的程序如下:
A_BIT EQU 20H B_BIT EQU 21H YI EQU 22H ER EQU 23H SI EQU 24H BA EQU 25H P1_BUF EQU 26H ORG 00H LJMP POWER_ON ORG 30H
POWER_ON: ;上电程序从此处开始进行 MOV A_BIT,#00H ;初始化寄存器 MOV B_BIT,#00H
6
MOV P0,#0FFH ;读端口前初始化端口 MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH
MOV A,P1 ;读一下P1端口,保存当前端口状态 MOV P1_BUF,A
LCALL DELAY PPT:
MOV A,P1 CJNE A,P1_BUF,START MOV P0,#00H LJMP PPT START:
LCALL DISP MOV YI,#0 MOV ER,#0 MOV SI,#0 MOV BA,#0
MOV A_BIT,#00H MOV B_BIT,#00H
MOV A,P1 ANL A,#0FH LCALL DELAY JB P1.0,START1 MOV YI,#1 START1:
JB P1.1,START2 MOV ER,#2 START2:
JB P1.2,START3 7
;调延时 ;再读端口状态
;没变化,显示8 ;跳回重新检测 ;调显示子函数
;清每个开关按下代表的值寄存器 ;清开关值和寄存器 ;读P0口
;屏蔽高4位(pa7-pa4) ;调延时,按键消抖
;P1.0口没合上,跳转判断P1.1口 ;P1.0口开关合上,键值赋1 ;P1.1口没合上,跳转判断P1.2口 ;P1.1口开关合上,键值赋2 ;P1.2口没合上,跳转判断P1.3口