3.4Proteus仿真图
图3 proteus仿真图 3.5分电路图及原理说明
本次设计的硬件电路由主控部分(单片机MCS-51)、计时部分(实时时钟芯片DS1302)、显示部分(数码管)、调时部分(按键)4个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。现就各部分的硬件电路设计作出如下论述:
3.5.1 主控部分(单片机MCS-51)
MCS-51单片机作为主控芯片,控制整个电路的运行。其外围电路主要有两部分:复位电路和晶体振荡器。
复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
- 5 -
晶体振荡电路:MCS-51单片机中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。这个反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,电容应该使用30pF?10pF。电路图如下:
C122PFC2Y1CRYSTAL+5V40U11234567813121514+5V3119189+5V1716C322UFP10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRXDTXDRDALE/PWRPSEN10113029AT89C51R21KP00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27393837363534333221222324252627281234567822PFK4 R1100
图4主控部分电路图
3.5.2 计时部分(实时时钟芯片DS1302)
时钟芯片DS1302与外围电路的连接:与MCS-51单片机的接口是由3条线来完成的,MCS-51单片机的P1.0与时钟芯片的数据传输端I/O相连,P1.1用来作为DS1302输入时钟SCLK控制端,P1.2控制DS1302的复位输入端RST。DS1302的X1和X2管脚外接标DS1302的复位引脚通过把RST输入驱动置高电平来启动所有的数据传送。 RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。
- 6 -
20GNDVCC
Y2CRYSTAL+5V1234U4 C41048765VCC1VCC2 X1SCLK X2IO GNDRST DS1302(8)
图5 计时部分电路图
P10P11P123.5.3 显示部分(共阳极数码管)
八段数码显示管有两种,一种是共阳数码管,其内部是由八个阳极相连接的发光二极管组成;另一种是共阴数码管,其内部是由八个阴极相连接的发光二极管组成。二者原理不同但功能相同。本设计的时间显示选用6个共阴八段数码管LED,其外形和内部结构如图10所示:
abcdefgdpABCDEFGHABCDEFGH1174211011742110+553U3191GDIRA1A2A3A4A5A6A7A874LS245B1B2B3B4B5B6B7B81817161514131211ABCDEFGH53aaaagd数码管a*4bfcedpgdabcdefgdpDS1DS2agdbcdp6aa数码管*4 fegdbfcedpgdbfcedpgdbfcedpbfcedpgdbfcedpgdbfcedp 12P20P21P22P23P24P25P26图6 八段共阴数码管LED
3.5.4 调时部分(按键)
按键电路有K1,K2,K3三个按键和一个74S15组成,只有其中任意一个按键按下,电路都会通过74S15向单片机INT0引脚发送一次中断请求信号。按键K1用来调整小时,按键K2用来调整分钟,按键K3用来结束调时,数字开始继续走表。
- 7 -
P27 12P00P01P02P03P04P05P06P072345678998698
K1P15P16P17K2U2AK31213&12P3274S15 图7 按键电路
4 系统软件设计 4.1程序流程图
刷新数码管是 显示 外部中断 按键调时 调用ds1302否 时间函数 是否有键按下 按键扫描 开始
图8 主程序流程图
- 8 -
启动 复位端变高启动一 次数据传送工作 写命令字节一位 SCLK发脉冲 够8次吗? N Y 写数据字节一位
SCLK发脉冲 够8次吗? N Y 复位端变低
结束 图9 写DS1302流程图 4.2 源程序 #include
#define uchar unsigned char #define uint unsigned int
sbit sda=P1^1; //ds1302的数据线sbit clk=P1^0; //ds1302的时钟线sbit rst=P1^2; //ds1302的复位线sbit k1=P1^5; //调时 sbit k2=P1^6; //调分
- 9 -
启动 复位端变高启动一次数据传送工作 写命令字节一位 SCLK发脉冲 够8次吗? N Y 读数据字节一位 SCLK发脉冲 够8次吗? N Y 复位端变低 结束 图10 读DS1302流程图