简易电子时钟设计单片机.docx
《简易电子时钟设计单片机.docx》由会员分享,可在线阅读,更多相关《简易电子时钟设计单片机.docx(15页珍藏版)》请在冰豆网上搜索。
简易电子时钟设计单片机
基于单片机得简易电子时钟设计
一功能分析
1).时制式为24小时制。
2)。
采用LED数码管显示时、分,秒采用数字显示.
3)。
具有方便得时间调校功能。
4).计时稳定度高,可精确校正计时精度。
二 总体方案设计论证比较
2、1实现时钟计时得基本方法
利用MCS-51系列单片机得可编程定时/计数器、中断系统来实现时钟计数。
(1)计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现.
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs =50000μs
X=15536→10000→3CB0H
(2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);
(3)从秒到分与从分到时得计时就是通过累加与数值比较实现。
2、2电子钟得时间显示
电子钟得时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元.
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
37H 36H 35H 34H 33H 32H 31H 30H
时十位 时个位 分隔 分十位 分个位 分隔 秒十位 秒个位
2、3 电子钟得时间调整
电子钟设置3个按键通过程序控制来完成电子钟得时间调整。
A键调整时;
B键调整分;
C键复位
2、4总体方案介绍
2、4、1计时方案
利用AT89S51单片机内部得定时/计数器进行中断时,配合软件延时实现时、分、秒得计时。
该方案节省硬件成本,且能使读者在定时/计数器得使用、中断及程序设计方面得到锻炼与提高,对单片机得指令系统能有更深入得了解,从而对学好单片机技术这门课程起到一定得作用。
2、4、2 控制方案
AT89S51得P0口与P2口外接由八个LED数码管(LED8~LED1)构成得显示器,用P0口作LED得段码输出口,P2口作八个LED数码管得位控输出线,P1口外接四个按键A、B、C构成键盘电路。
AT89S51 就是一种低功耗,高性能得CMOS8位微型计算机.它带有8KFlash 可编程与擦除得只读存储器(EPROM),该器件采用ATMEL得高密度非易失性存储器技术制造,与工业上标准得80C51与80C52得指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂得问题,且成本较低。
简易电子钟得功能不复杂,采用其现有得I/O便可完成,所以本设计中采用此得设计方案.
三 硬件电路设计
根据以上得电子时钟得设计要求可以分为以下得几个硬件电路模块:
单片机模块、数码显示模块与按键模块,模块之间得关系图如下面得方框电路图1所示.
图1 硬件电路方框图
四各模块电路设计
4、1、1 芯片分析
AT89C51单片机引脚图如下:
图2 AT89C51引脚图
MCS-51单片机就是标准得40引脚双列直插式集成电路芯片,其各引脚功能如下:
VCC:
+5V电源。
VSS:
接地.
RST:
复位信号。
当输入得复位信号延续两个机器周期以上得高电平时即为有效,用完成单片机得复位初始化操作。
XTAL1与XTAL2:
外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体与微调电容;当使用外部时钟时,用于接外部时钟脉冲信号.
P0口:
P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中得锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入得干扰。
P1口:
P1口就是一个内部提供上拉电阻得8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路得FET截止。
P2口:
P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。
P2口可以作为通用得I/O口使用,这时多路转接电路开关倒向锁丰存器Q端.
P3口:
P3口特点在于,为适应引脚信号第二功能得需要,增加了第二功能控制逻辑.当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路得畅通。
当输出第二功能信号时,该位应应置“1",使与非门对第二功能信号得输出就是畅通得,从而实现第二功能信号得输出,具体第二功能如表1所示。
4、1、2 晶振电路
右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1与XTAL2之间跨接晶体振荡器与微调电容,从而构成一个稳定得自激振荡器。
时钟电路产生得振荡脉冲经过触发器进行二分频之后,才成为单片机得时钟脉冲信号。
图3晶振电路
4、 1、3复位电路
单片机复位得条件就是:
必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)得高电平。
例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间得高电平,在RST引脚出现高电平后得第二个机器周期执行复位。
单片机常见得复位如图所示。
电路为上电复位电路,它就是利用电容充电来实现得。
在接电瞬间,RESET端得电位与VCC相同,随着充电电流得减少,RESET得电位逐渐下降.只要保证RESET为高电平得时间大于两个机器周期,便能正常复位。
该电路除具有上电复位功能外,若要复位,只需按图中得RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平.
图4单片机复位电路
4、2数码显示模块设计
系统采用动态显示方式,用P0口来控制LED数码管得段控线,而用P2口来控制其位控线。
动态显示通常都就是采用动态扫描得方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示得感觉。
图5数码显示电路
4、3按键模块
下图为按键模块电路原理图,A为复位键,B为时钟调控键,C为分钟调控键.
图6按键模块电路原理图
五 软件设计流程图
在编程上,首先进行了初始化,定义程序得得入口地址以及中断得入口地址,在主程序开始定义了一组固定单元用来储存计数得时、分、秒,在显示初值之后,进入主循环。
在主程序中,对不同得按键进行扫描,实现秒表,时间调整,复位清零等功能,系统总流程图如下图7:
图7软件设计流程图
六 程序清单
ORG 0000H
MOV30H,#1 设置时钟得起始时间12、00、00,分配显示数据内存
MOV31H,#2
MOV 32H,#0
MOV33H,#0
MOV34H,#0
MOV35H,#0
MOVTMOD,#01 启动计数器
XS0:
SETBTR0 使TRO位置1
MOVTH0,#00H 计数器置零
MOVTL0,#00H
XS:
MOV 40H,#0FEH 扫描控制字初值
MOVDPTR,#TAB取段码表地址
MOVP2,40H 从P2口输出
MOVA,30H取显示数据到A
MOVCA,A+DPTR 查显示数据对应段码
MOVP0,A 段码放入P0中
LCALLYS1MS显示1MS
MOVP0,#0FFH PO端口清零
MOVA,40H 取扫描控制字放入A中
RLA A中数据循环左移
MOV40H,A 放回40H地址段内
MOVP2,40H
MOVA,31H
ADDA,#10 进位显示
MOVCA,A+DPTR
MOVP0,A
LCALL YS1MS
MOVP0,#0FFH
MOVA,40H
RL A
MOV 40H,A
MOVP2,40H
MOVA,32H
MOVCA,A+DPTR
MOVP0,A
LCALLYS1MS
MOV P0,#0FFH
MOVA,40H
RLA
MOV40H,A
MOVP2,40H
MOVA,33H
ADD A,#10
MOVCA,A+DPTR
MOV P0,A
LCALLYS1MS
MOVP0,#0FFH
MOVA,40H
RLA
MOV 40H,A
MOVP2,40H
MOVA,34H
MOVCA,A+DPTR
MOVP0,A
LCALLYS1MS
MOVP0,#0FFH
MOVA,40H
RLA
MOV40H,A
MOV P2,40H
MOVA,35H
MOVC A,A+DPTR
MOVP0,A
LCALLYS1MS
MOVP0,#0FFH
MOVA,40H
RLA
MOV40H,A
JBTF0,JIA 如果TF0为1时,则执行JIA,否则顺序执行
JNB P1、0,P100 为0则转移到P100ﻩ
JNBP1、1,P1000 为0则 转移到P1000
JNBP1、2,P10000 为0则 转移到P10000
AJMPXS 跳转到XS
P100:
MOV 30H,#0清零程序
MOV 31H,#0
MOV32H,#0
MOV 33H,#0
MOV 34H,#0
MOV35H,#0
JIA:
CLR TF0 TF0清零
MOVA,35H 秒单位数据到A
CJNE A,#9,JIA1 与9进行比较,大于9就转移到JIA1
MOV35H,0 秒个位清零
MOVA,34H 秒十位数据到A
CJNEA,#5,JIA10 与5进行比较,大于5就转移到JIA10
MOV34H,#0 秒十位清零
P10000:
JNBP1、2,P10000 为0则转移到P10000
MOVA,33H 取分得个位到A
CJNEA,#9,JIA100 与9进行比较,大于9就转移到JIA100
MOV 33H,#0 分得个位清零
MOVA,32H 分十位数据到A
CJNEA,#5,JIA1000与5进行比较,大于5就转移到JIA1000
MOV32H,#0 分得十位清零
P1000:
JNBP1、1,P1000 为0则 转移到P1000
MOVA,31H时个位数据到A
CJNEA,#9,JIA10000 与9进行比较,大于9就转移到JIA10000
MOV31H,#0 时得个位清零
MOVA,30H 时十位数据到A
CJNEA,#2,JIA100000 与2进行比较,大于5就转移到JIA100000
MOV30H,#0 时得十位清零
AJMPXS0 转移到XSO
JIA100000:
INC30H 加1
AJMPXS0 跳转到XS0
JIA10000:
CJNEA,#3,JIAJIA 与3进行比较,大于则转移到JIAJIA
MOV A,30H 将时得十位放到A
CJNEA,#02,JIAJIA 与2进行比较,大于则转移到JIAJIA
MOV30H,#0 时段清零
MOV31H,#0
AJMPXS0 跳转到XSO
JIAJIA:
INC 31H 加一
AJMPXS0
JIA1000:
INC 32H
AJMPXS0
JIA100:
INC 33H
AJMP XS0
JIA10:
INC34H
AJMPXS0
JIA1:
INC35H
AJMPXS0
RET 返回
YS1MS:
MOV R6,#9H 延时程序
YL1:
MOV R7,#19H
DJNZR7,$
DJNZR6,YL1
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H共阳段码表
DB040H,079H,024H,030H,019H,012H,002H,078H,000H,010H
END
七运行结果说明
电子时钟主要得设计要求就是能够实现时钟得一般功能,以及包括时间得调整功能,这个基于单片机得电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。
下述为18:
30:
30得仿真图:
图818:
30:
30时刻得仿真效果图
附录
附录1硬件电路总图
附录2元器件清单
表2 电子钟元器件清单
序号
元件名称
规格型号/参数
数量(个)
备注
1
单片机
AT89S52
1
2
显示驱动三极管
A1013
8
3
晶振
11、0592MHz
1
4
电容
30pF
2
5
电容
22μF
1
6
按键
BUTTON
3
7
排阻
RESPACK—8/10K
1