单片机电子时钟设计
摘 要
单片机自20世纪70年代问世以来~以其极高的性能价格比~受到人们的重视和关注~应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点~在我国~单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪
、家用电器、电力电子、机电一体化设备等各个方面~而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用~以AT89S51芯片为核心~辅以必要的电路~设计了一个简易的电子时钟~它由4.5V直流电源供电~通过数码管能够准确显示时间~调整时间~从而到达学习、设计、开发软、硬件的能力。
关键词:单片机 AT89S51 电子时钟 数码管
第一章 前言
时钟~自从它发明的那天起~就成为人类的朋友~但随着时间的推移~科学技术的不断发展~人们对时间计量的精度要求越来越高~应用越来越广。怎样让时钟更好的为人民服务~怎样让我们的老朋友焕发青春呢,这就要求人们不断设计出新型时钟。
现今~高精度的计时工具大多数都使用了石英晶体振荡器~由于电子钟~石英表~石英钟都采用了石英技术~因此走时精度高~稳定性好~使用方便~不需要经常调校~数字式电子钟用集成电路计时时~译码代替机械式传动~用LED显示器代替显示器代替指针显示进而显示时间~减小了计时误差~这种表具有时~分~秒显示时间的功能~还可以进行时和分的校对~片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用~是保证系统正常工作的基础。在一个单片机应用系统中~时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号~主要由晶振和外围电路组成~晶振频率的大小决定了单片机系统工作的快慢,二是指系统的标准定时时钟~即定时时间~它通常有两种实现
:一是用软件实现~即用单片机内部的可编程定时/计数器来实现~但误差很大~主要用在对时间精度要求不高的场合,二是用专门的时钟芯片实现~在对时间精度要求很高的情况下~通常采用这种方法~典型的时钟芯片有:DS1302~DS12887~X1203等都可以满足高精度的要求。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法~本设计由单片机AT89S51芯片和LED数码管为核心~辅以必要的电路~构成了一个单片机电子时钟。
1
第二章
论证与比较
2.1数字时钟方案
数字时钟是本设计的最主要的部分。根据需要~可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器~其芯片精度不大于10ms/年~且具有完备的时钟闹钟功能~因此~可直接对其以用于显示或设臵~使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作~芯片内部包含锂电池。当电网电压不足或突然掉电时~系统自动转换到内部锂电池供电系统。而且即使系统不上电~程序不执行时~锂电池也能保证芯片的正常运行~以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断~每产生一次中断~存储器内相应的秒值加1,若秒值达到60~则将其清零~并将相应的分字节值加1,若分值达到60~则清零分字节~并将时字节值加1,若时值达到24~则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时~定时器都要重新赋初值~所以该时钟精度不高。而且~由于是软件实现~当单片机不上电~程序不执行时~时钟将不工作。
基于硬件电路的考虑~本设计采用方案二完成数字时钟的功能。
2.2数码管显示方案
方案一:静态显示。所谓静态显示~就是当显示器显示某一字符时~相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度~且字符不闪烁。但当所显示的位数较多时~静态显示所需的I/O口太多~造成了资源的浪费。
方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位~对于显示器的每一位来
2
说~每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示~但必须保证扫描速度足够快~字符才不闪烁。显示器的亮度既与导通电流有关~也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口~降低了能耗。
从节省I/O口和降低能耗出发~本设计采用方案二。
3
第三章 系统设计 3.1总体设计
3.1.1系统说明
利用单片机,AT89S51,制作简易电子时钟~由六个LED数码管分别显示小时十位、小时个
位、分钟十位、分钟个位、秒钟十位、秒钟个位。6个PNP管,9012,分别控制六个数码管的亮
灭~一个按键用于时间调整。
3.1.2系统框图
电源部分 按键S2 复位电路 直流电源4.5V
控制部分
单片机(AT89S51)
显示部分
位选部分
6个PNP三极管(9012)
6个七段共阴极数码管
显示秒,分钟及小时位
图3-1
4
3.2模块设计
3.2.1电源部分
图3-2
如图3-2所示~从外部引入4.5V的直流电~为单片机、复位电路提供电源。
3.2.2复位电路
图3-3
如图3-3所示~复位电路主要由型号为1N4148的二极管~型号为10UF/16V的电解电容~型号为104的瓷片电容~10K的电阻以及按键S1构成~S1接芯片的相应引脚RST~当开关按下时引脚RST为高电平1~断开时引脚为低电平0。
5
3.2.3程序下载接口
图3-4
如图3-4所示~由AT89S ISP构成的两排十针下载口~板图上有一个小方框~为1号引角,下载线的凸口为正方向~凸口的右侧边的第一个插孔为1号引角。
3.2.4位选部分
图3-5
图3-5为位选电路~三极管的集电极接数码管的公共端~当P2口对应的引脚输出高电平时三极管导通~对应的数码管显示数据。这样~在同一时刻~6位LED中只有选通的那1位显示出字符~而其他5位则是熄灭的。同样~在下一时刻~只让下一位的位选线处于选通状态~而其他个位的位选线处于关闭状态~在段码线上输出将要显示字符的段码~则同一时刻~只有选通位显示出相应的字符~而其他各位则是熄灭的。如此循环下去~就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的~而在同一时刻~只有一位显示~其他各位熄灭~但由于LED的余辉和人眼的视觉暂留作用~只要每位显示间隔足够短~则可以造成多位同时亮的假象~达到同时显示的效果。
6
3.2.5数码管的连接电路
图3-6
图3-6为数码管的引脚图~每位的段码线,a,b,c,d,e,f,g,dp,分别与1个8位的锁存器输出相连~由AT89S51控制组合0,9十个数据~如令其显示1则b,c引脚,即2~3引脚,送高电平~此时数码管显示1。由于各位的段码线并联~8位I/O口输出段码对各个显示位来说都是相同的。
3.2.6控制部分
图3-7
7
AT89S51是美国ATMEL公司生产的低功耗~高性能CMOS 8位单片机~片内含4K bytes的可系统编程的Flash只读程序存储器~器件采用ATMEL公司的高密度~非易失性存储技术生产~兼容标准8051指令系统及引脚。AT89S51提供以下标准功能:4K字节Flash闪速存储器~128字节内部RAM~32I/O口线~看门狗,WDT,~两个数据指针~两个16位定时/计数器~一个5向量两级中断结构~一个全双工串行通信口~片内振荡器及时钟电路。
如图3-7所示~AT89S51有40引脚~双列直插,DIP,封装~所用引脚功能如下:
1. VCC ——运行时加,4.5V
2. GND ——接地
3. XTAL1 ——振荡器反相放大器及内部时钟发生器的输入端
4. XTAL2 ——振荡器反相放大器的输出端
5. RST ——复位输入~高电平有效~在晶振工作时~在RST引脚上作用2个机器周
期以上的高电平~将使单片机复位。WDT溢出将使该引脚输出高电平~设臵SFT AUXR
的DISRTO位,地址8EH,可打开或关闭该功能。DISRTO位缺省为RESET输出高电平
打开状态。
6. EA/VPP ——片外程序存储器访问允许信号。欲使CPU仅访问外部程序存储器,地址
为0000H-FFFFH,~EA端必须保持低电平,接地,~如果EA端为高电平,接Vcc端,~
CPU则执行内部程序存储器中的指令。
7. P1口,P2口——P1~P2是一组带内部上拉电阻的8位双向I/O口。运行时通过P1口控制
驱动电路的工作~将数据送到数码管~显示相应的段码~为了达到减少功耗或满足端口
对最大电流的限制~应加上一限流电阻。P2.0——P2.5口控制数码管的位选~使六个数码
管轮流显示数据~等于1时位选三极管导通~等于0 时位选三极管截止。
8. 无自锁开关——,S2,P3.7,开关接相应引脚P3.7~当开关按下时~相应引脚为低电平0~
断开时引脚为高电平1。
8
第四章 原理图与PCB图
图4-1
图4-2
9
第五章 软件设计
5.1程序
图
T0中断
主程序开始 现场保护
重装定时器初值
满20次否, 设定定时器常数,
开中断
秒值加1
满60秒否, 到1秒,
秒缓冲单元清零
分值加1 显示时间
满60分否,
分缓冲单元清零
时值加1
满24小时否,
时缓冲单元清零
恢复现场
结束
10
时钟调整程序
关闭显S2是否按键S2时间t>1 示,省电按下
状态 分钟闪烁,调时状态
时钟闪烁,
调时状态 按键S2时间
t<0.5
按键S2时分值加1 间t<0.5 分值=60, 时值加1
分值清零 时值=24,
时值清零
返回显示
11
5.2源程序
表5-1 P1口对应段码及数值:
显示数P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 16进制字 代码
dp g f e d c b a 0 0 0 1 1 1 1 1 1 3FH 1 0 0 0 0 0 1 1 0 06H 2 0 1 0 1 1 0 1 1 5BH 3 0 1 0 0 1 1 1 1 4FH 4 0 1 1 0 0 1 1 0 66H 5 0 1 1 0 1 1 0 1 6DH 6 0 1 1 1 1 1 0 1 7DH 7 0 0 0 0 0 1 1 1 07H 8 0 1 1 1 1 1 1 1 7FH 9 0 1 0 1 1 1 1 6FH 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 中断入口程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
LJMP INTT1 ;跳至INTT1执行
ORG 0023H ;串行中断程序入口地址
RETI ;串行中断程序返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 主 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
12
START: MOV R0,#70H ;清70H-7AH共11个内存单元
MOV R7,#0BH
;clr P3.7 ;
CLEARDISP: MOV @R0,#00H ;
INC R0 ;
DJNZ R7,CLEARDISP ;
MOV 20H,#00H ;清20H,标志用,
MOV 7AH,#0AH ;放入"熄灭符"数据
MOV TMOD,#11H ;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值,T0计时用,
MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值,T1闪烁定时用,
MOV TH1,#3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;开启T0定时器
MOV R4,#14H ;1秒定时用初值,50MS×20,
START1: LCALL DISPLAY ;调用显示子程序
JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序
SJMP START1 ;P3.7口为1时跳回START1
SETMM1: LJMP SETMM ;转到时间调整程序SETMM ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序
INTT0: PUSH ACC ;累加器入栈保护
PUSH PSW ;状态字入栈保护
CLR ET0 ;关T0中断允许
CLR TR0 ;关闭定时器T0
MOV A,#0B7H ;中断响应时间同步修正
ADD A,TL0 ;低8位初值修正
MOV TL0,A ;重装初值,低8位修正值,
MOV A,#3CH ;高8位初值修正
ADDC A,TH0 ;
MOV TH0,A ;重装初值,高8位修正值,
SETB TR0 ;开启定时器T0
DJNZ R4, OUTT0 ;20次中断未到中断退出
ADDSS: MOV R4,#14H ;20次中断到,1秒,重赋初值
MOV R0,#71H ;指向秒计时单元,71H-72H,
ACALL ADD1 ;调用加1程序,加1秒操作,
MOV A,R3 ;秒数据放入A,R3为2位十进制数组合,
CLR C ;清进位标志
CJNE A,#60H,ADDMM ;
13
ADDMM: JC OUTT0 ;小于60秒时中断退出
ACALL CLR0 ;大于或等于60秒时对秒计时单元清0
MOV R0,#77H ;指向分计时单元,76H-77H,
ACALL ADD1 ;分计时单元加1分钟
MOV A,R3 ;分数据放入A
CLR C ;清进位标志
CJNE A,#60H,ADDHH ;
ADDHH: JC OUTT0 ;小于60分时中断退出
ACALL CLR0 ;大于或等于60分时分计时单元清0
MOV R0,#79H ;指向小时计时单,78H-79H,
ACALL ADD1 ;小时计时单元加1小时
MOV A,R3 ;时数据放入A
CLR C ;清进位标志
CJNE A,#24H,HOUR ;
HOUR: JC OUTT0 ;小于24小时中断退出
ACALL CLR0 ;大于或等于24小时小时计时单元清0
OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移
MOV 73H,77H ;入对应显示单元
MOV 74H,78H ;
MOV 75H,79H ;
POP PSW ;恢复状态字,出栈,
POP ACC ;恢复累加器
SETB ET0 ;开放T0中断
RETI ;中断返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 闪动调时 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T1中断服务程序~用作时间调整时调整单元闪烁指示
INTT1: PUSH ACC ;中断现场保护
PUSH PSW ;
MOV TL1, #0B0H ;装定时器T1定时初值
MOV TH1, #3CH ;
DJNZ R2,INTT1OUT ;0.3秒未到退出中断,50MS中断6次,
MOV R2,#06H ;重装0.3秒定时用初值
CPL 02H ;0.3秒定时到对闪烁标志取反
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
MOV 72H,76H ;02H位为0时正常显示
MOV 73H,77H ;
MOV 74H,78H ;
MOV 75H,79H ; INTT1OUT: POP PSW ;恢复现场
POP ACC ;
RETI ;中断退出
14
FLASH1: JB 01H,FLASH2 ;01H位为1时~转小时熄灭控制
MOV 72H,7AH ;01H位为0时~"熄灭符"数据放入分
MOV 73H,7AH ;显示单元,72H-73H,~将不显示分数据
MOV 74H,78H ;
MOV 75H,79H ;
AJMP INTT1OUT ;转中断退出
FLASH2: MOV 72H,76H ;01H位为1时~"熄灭符"数据放入小时
MOV 73H,77H ;显示单元,74H-75H,~小时数据将不显示
MOV 74H,7AH ;
MOV 75H,7AH ;
AJMP INTT1OUT ;转中断退出
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 加1子 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
ADD1: MOV A,@R0 ;取当前计时单元数据到A
DEC R0 ;指向前一地址
SWAP A ;A中数据高四位与低四位交换
ORL A,@R0 ;前一地址中数据放入A中低四位
ADD A,#01H ;A加1操作
DA A ;十进制调整
MOV R3,A ;移入R3寄存器
ANL A,#0FH ;高四位变0
MOV @R0,A ;放回前一地址单元
MOV A,R3 ;取回R3中暂存数据
INC R0 ;指向当前地址单元
SWAP A ;A中数据高四位与低四位交换
ANL A,#0FH ;高四位变0
MOV @R0,A ;数据放入当削地址单元中
RET ;子程序返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 清零程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;对计时单元复零用
CLR0: CLR A ;清累加器
MOV @R0,A ;清当前地址单元
DEC R0 ;指向前一地址
MOV @R0,A ;前一地址单元清0
RET ;子程序返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 时钟调整程序;;
15
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;当调时按键按下时进入此程序
SETMM: cLR ET0 ;关定时器T0中断
CLR TR0 ;关闭定时器T0
LCALL DL1S ;调用1秒延时程序
JB P3.7,CLOSEDIS ;键按下时间小于1秒~关闭显示,省电,
MOV R2,#06H ;进入调时状态~赋闪烁定时初值
SETB ET1 ;允许T1中断
SETB TR1 ;开启定时器T1
SET2: JNB P3.7,SET1 ;P3.7口为0,键未释放,~等待
SETB 00H ;键释放~分调整闪烁标志臵1
SET4: JB P3.7,SET3 ;等待键按下
LCALL DL05S ;有键按下~延时0.5秒
JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作
LCALL ADD1 ;调用加1子程序
MOV A,R3 ;取调整单元数据
CLR C ;清进位标志
CJNE A,#60H,HHH ;调整单元数据与60比较
HHH: JC SET4 ;调整单元数据小于60转SET4循环
LCALL CLR0 ;调整单元数据大于或等于60时清0
CLR C ;清进位标志
AJMP SET4 ;跳转到SET4循环
CLOSEDIS: SETB ET0 ;省电,LED不显示,状态。开T0中断
SETB TR0 ;开启T0定时器,开时钟,
CLOSE: JB P3.7,CLOSE ;无按键按下~等待。
LCALL DISPLAY ;有键按下~调显示子程序延时削抖
JB P3.7,CLOSE ;是干扰返回CLOSE等待
WAITH: JNB P3.7,WAITH ;等待键释放
LJMP START1 ;返回主程序,LED数据显示亮,
SETHH: CLR 00H ;分闪烁标志清除,进入调小时状态,
SETHH1: JNB P3.7,SET5 ;等待键释放
SETB 01H ;小时调整标志臵1
SET6: JB P3.7,SET7 ;等待按键按下
LCALL DL05S ;有键按下延时0.5秒
JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整
MOV R0,#79H ;按下时间小于0.5秒加1小时操作
LCALL ADD1 ;调加1子程序
MOV A,R3 ;
CLR C ;
CJNE A,#24H,HOUU ;计时单元数据与24比较
HOUU: JC SET6 ;小于24转SET6循环
LCALL CLR0 ;大于或等于24时清0操作
AJMP SET6 ;跳转到SET6循环
16
SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键释放
LCALL DISPLAY ;延时削抖
JNB P3.7,SETOUT ;是抖动~返回SETOUT再等待
CLR 01H ;清调小时标志
CLR 00H ;清调分标志
CLR 02H ;清闪烁标志
CLR TR1 ;关闭定时器T1
CLR ET1 ;关定时器T1中断
SETB TR0 ;开启定时器T0
SETB ET0 ;开定时器T0中断,计时开始,
LJMP START1 ;跳回主程序
SET1: LCALL DISPLAY ;键释放等待时调用显示程序,调分,
AJMP SET2 ;防止键按下时无时钟显示
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
AJMP SET4
SET5: LCALL DISPLAY ;键释放等待时调用显示程序,调小时,
AJMP SETHH1 ;防止键按下时无时钟显示
SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用
AJMP SET6
SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待
AJMP SETOUT ;防止键按下时无时钟显示 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 显示程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 显示数据在70H-75H单元内~用六位LED共阳数码管显示~P0口输出段码数据~P3口作 ; 扫描控制~每个LED数码管亮1MS时间再逐位循环。
DISPLAY: MOV R1,#70H ;指向显示数据首址
MOV R5,#0FEH ;扫描控制字初值
PLAY: MOV A,R5 ;扫描字放入A
MOV P2,A ;从P2口输出
MOV A,@R1 ;取显示数据到A
MOV DPTR,#TAB ;取段码表地址
MOVC A,@A+DPTR ;查显示数据对应段码
MOV P1,A ;段码放入P0口
LCALL DL1MS ;显示1MS
INC R1 ;指向下一地址
MOV A,R5 ;扫描控制字放入A
JNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束
RL A ;A中数据循环左移
MOV R5,A ;放回R5内
AJMP PLAY ;跳回PLAY循环
ENDOUT: SETB P2.5 ;一次显示结束~P2口复位
MOV P1,#0FFH ;P0口复位
17
RET ;子程序返回
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;1MS延时程序~LED显示程序用
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
;20MS延时程序~采用调用显示子程序以改善LED的显示闪烁现象
DS20MS: ACALL DISPLAY
ACALL DISPLAY
ACALL DISPLAY
RET
;延时程序~用作按键时间的长短判断
DL1S: LCALL DL05S
LCALL DL05S
RET
DL05S: MOV R3,#20H ;8毫秒*32=0.196秒
DL05S1: LCALL DISPLAY
DJNZ R3,DL05S1
RET
END ;程序结束
18
第六章 总结 6.1物品清单与元件特性
表6-1 物品清单:
元件名称
型号 单位 数量
瓷片电容 104 只 1
瓷片电容 30P 只 2
电解电容 47UF/16V 只 1
电解电容 10UF/16V 只 2
电阻 10k 只 1
电阻 4.7k 只 6
芯片 AT89S51 片 1
芯片座 DIP40 只 1
无源晶振 12M 只 1
7段数码管 0.5寸/共阴 只 6
三极管 个 6 9012
二极管 1N4148 只 1
按键 无自锁 只 2
单排插针 条 1
双排插针 条 1
电池盒 个 1
电路板 9.55*5.664 CM2 1
表6-2 AT89S51功能特性:
? 兼容MCS-51指令系统 ? 4k可反复擦写(>1000次,ISP Flash ROM
? 32个可编程I/O口 ? 4.0-5.5V工作电压范围
? 2个16位可编程定时/计数器 ? 全静态工作模式:时钟频率0-33MHz
19
? 全双工UART串行中断口线 ? 128x8bit内部RAM
? 6个中断源 ? 低功耗空闲和掉电模式
? 中断唤醒省电模式 ? 3级程序加密锁
? 看门狗,WDT,电路 ? 掉电标识和快速编程特性
6.2设计总结
本设计能够很准确的走时~并能够通过硬件对时钟进行时间调整。
, 功能介绍:
1. 显示XX:XX:XX时间
2. 时间可调:调整键,S2,按下时间小于1秒,t<1s,~关闭显示,省电,。调整键,S2,
按下,t>0.5s,分钟位闪亮~此时按下S2键,t<0.5s,该个位数值加1~当加到9时~再
按下S2键则该个位显示0~分钟十位加1。继续按下调整键,S2,,t>0.5s,时钟位闪亮~
此时按下S2键,t<0.5s,该个位数值加1~当加到9时再按下加S2键则该个位显示0~
时钟十位加1。继续按下调整键,S2,,t>0.5s,~返回到正常显示状态。
3. 下载线和电源线插接说明:1.下载线插接说明:两排十针下载口~板图上都有一个小方
框~为1号引角,下载线的凸口为正方向~凸口的右侧边的第一个插孔为1号引角~这
一点一定要切记~不然的话程序下载不进去。2.电源线插接说明:电池盒的红线为正~
黑线为负。板子所留出来的电源插口用VCC,表示电源正,和GND,表示电源负,标明。 , 调试要点:首先确保各器件的完好性~其次检测各芯片的电源线和地线是否接触良好~然后焊接器件~接好电源用万用表检测各电源端、地端的状态是否正常。检查无误后插上AT89S51并烧写一简易的程序~观察电路是否能协同工作。最后烧写工作程序~根据显示现象调试程序直至成功。上电运行时~数码管开始显示00:00:00~时钟开始走时。
, 制作心得:在这次课程设计的调试过程中~我遇到很多问题~如:由于跳转指令出错~导致整个程序在运行时进入死循环~修改时没有根据流程盲目查找原因浪费许多时间~又由于考虑不周~时钟显示29:89。该电路缺少整点报时及闹钟功能~由于能力和时间问题只能到此为止~很是遗憾~但在查找资料的过程中学到了许多~同时在协作过程中增进同学间的友谊。
20
21
22