单片机课程设计电子钟设计.docx
- 文档编号:4304567
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:14
- 大小:582.58KB
单片机课程设计电子钟设计.docx
《单片机课程设计电子钟设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子钟设计.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计电子钟设计
目录
1设计题目
2设计要求
3硬件设计
4资源分配
5算法分析与流程图
6程序
7总结
8附录
一、设计题目
(1).设计一个可以正确显示月、日、时、分的电子钟,只有四个数码管,默认时候是显示时间的。
1
2.
3
4
(2).可以切换显示。
默认是显示时间,按切换键是转变为显示日期,显示时间的第二个数码管的小数点要闪烁,时间为半分钟灭半分钟亮,切换到显示日期时小数点一直亮。
(3).要求电子时钟可以校正,校正时,校正的内容要求闪烁。
(4).按键设置
K1:
时间/日期切换键
K2:
校正键
K3:
+键(校正时候增加)
K4:
确定键
二、设计要求
(1)具有校正功能,校正修改时,被修改的位能闪烁显示,按键要灵敏。
(2)若最高位为0,高位能灭0显示。
三、硬件设计
四、资源分配
1、校正/非校正标志20H.1:
为0时处于非校正状态,为1时处于校正状态。
2、秒、分、时、日、月单元分别为34H、33H、32H、31H、30H。
3、1/16s单元2FH:
通过判断2FH.3来控制秒点半秒亮半秒灭。
4、时间/日期显示标志20H.0:
为0时显示日期,为1时显示时间。
5、校正指针21H,通过判断21H.0来判断校正时间还是日期,通过21H.1来判断校正时内容的闪烁。
20H.121H.1
00月
01日
10时
11分
6、按键信息显示50H。
7、显示缓冲单元43H、42H、41H、40H分别用来存放时(月)的BCD码的高位、时(月)的BCD码的低位、分(天)的BCD码的高位、分(天)的BCD码的低位。
8、K1:
时间/日期切换键P1.4
K2:
校正键P1.5
K3:
+键(校正时候增加)P1.6
K4:
确定键P1.7
9、采用定时/计数器1中断,TMOD设置为定时工作方式1状态,晶振用12MHz,定时1/16s,所以初值:
65536-62.5*1000/2=0BDCH
五、算法分析与流程图
(一)流程图
日期时间中断服务程序流程图
(二)算法分析
1)开始编程序是没有加入灭高位程序,需要往显示单元送数0AH
灭高位程序
MOV41H,#0AH;送灭码
MOV40H,#0AH
MOV43H,#0AH
MOV42H,#0AH
2)实验过程中老师要求“+”键实现连加程序。
KEY2:
MOV50H,A;有键按下
JNBACC.5,SET2;是否校正键
JNBACC.6,ADD2;是否加键
JNBACC.7,SURE;是否确定键
LJMPNONE2;无键按下处理
六、程序
ORG0000H
SJMPMAIN
ORG000BH;设置定时器、计数器1入口地址
LJMPIT0P
ORG0030H
MAIN:
MOV50H,#0FFH;按键信息
MOV30H,#1;月单位置1
MOV31H,#1;日单位置1
MOV32H,#0;时单位置0
MOV33H,#0;分单位置0
MOV34H,#0;秒单位置0
MOV2FH,#16;计数单位清0
CLR20H.1;清零校时标志
SETB20H.0;时间,日期标志
MOVTMOD,#01H;定时器计数器1方式1
MOVTH0,#0BH;采用12M晶振,定时16分之一秒
MOVTL0,#0DCH;装载定时器初值
MOVIE,#82H;可以中断
SETBTR0;启动定时器
SJMP$
IT0P:
MOVTH0,#0BH;计时
MOVTL0,#0DCH
DJNZ2FH,KEY
MOV2FH,#16
MOVA,34H;进行秒单元计数
ADDA,#1
DAA
MOV34H,A
CJNEA,#60H,KEY;判断1分钟是否到?
MOV34H,#0
MOVA,33H
ADDA,#1
DAA
MOV33H,A
CJNEA,#60H,KEY;判断1小时是否到?
MOV33H,#0
MOVA,32H;进行小时单元计数
ADDA,#1
DAA
MOV32H,A
CJNEA,#24H,KEY
MOV32H,#0
MOVA,31H;进行日单元计数
ADDA,#1
DAA
MOV31H,A
CJNEA,#32H,KEY;判断31天是否到?
MOV31H,#1
MOVA,30H
ADDA,#1
DAA
CJNEA,#13H,KEY;判断12个月是否到?
MOV30H,#1;计时后开始判键及键处理
KEY:
JNB20H.1,ZOUSHI;校时标志不为1,则走时
LJMPJIAOSHI;为1走时为校时
ZOUSHI:
MOVA,P1;读按键信息
CJNEA,50H,KEY1;判断与上一次按键是否相同
LJMPNONE1;跳转到无按键处理
KEY1:
MOV50H,A;A的值赋给50H
JNBACC.4,SWITCH1;是否P1.4切换键,即时间日期切换键是否按下
JNBACC.5,SET1;是否P1.5校正键,校正键是否按下
LJMPNONE1;都不是则跳转到无按键处理
SWITCH1:
CPL20H.0;切换键按下,取反时间日期标志
NONE1:
JNB20H.0,DATE1;显示时间日期标志
MOV3BH,32H;时间送显缓
MOV3AH,33H
LJMPDISP
DATE1:
MOV3BH,30H;日期送显缓
MOV3AH,31H
LJMPDISP
SET1:
SETB20H.1;校正键按下
MOV21H,#0;校正指针清0
CLR20H.0;切换到日期
MOV3BH,30H;显示日期
MOV3AH,31H
LJMPDISP
JIAOSHI:
MOVA,P1
CJNEA,50H,KEY2;判断与上次是否按键相同?
LJMPNONE2;没有键按下,调用显缓
KEY2:
MOV50H,A;A的值赋给50H
JNBACC.5,SET2;是否P1.5切换键,即时间日期切换键是否按下
JNBACC.6,ADD2;是否P1.6校正键,校正键是否按下
JNBACC.7,SURE;是否P1.7校正键,校正键是否按下
LJMPNONE2;都不是则跳转到无按键处理
SET2:
INC21H;按下校正键,校正下一个状态
ANL21H,#03H;修改校正标志
SJMPNONE2
ADD2:
MOVA,#30H;处于校正,按下加键
ADDA,21H;判断校正哪个单元
MOVR0,A
MOVA,@R0;R0的值赋给A
ADDA,#1
DAA
MOV@R0,A
CJNER0,#30H,DATE;校日
CJNE@R0,#13H,NONE2;判断校日是否超出范围
MOV@R0,#1
SJMPNONE2
DATE:
CJNER0,#31H,HOUR;校时
CJNE@R0,#32H,NONE2
MOV@R0,#1
SJMPNONE2
HOUR:
CJNER0,#32H,MIN;校月
CJNE@R0,#24H,NONE2
MOV@R0,#0
SJMPNONE2
MIN:
CJNE@R0,#60H,NONE2;校分
MOV@R0,#0
SJMPNONE2
SURE:
CLR20H.1;是确定键,清校正状态
SJMPTIME2
NONE2:
JNB21H.1,DATE2;
TIME2:
SETB20H.0;时间送显缓
MOV3BH,32H;
MOV3AH,33H
LJMPDISP
DATE2:
CLR20H.0;日期送显缓
MOV3BH,30H;
MOV3AH,31H
DISP:
MOVA,3BH;第一个数码管显示
ANLA,#0F0H
SWAPA
MOV43H,A
MOVA,3BH
ANLA,#0FH
MOV42H,A
MOVA,3AH
ANLA,#0F0H
SWAPA
MOV41H,A
MOVA,3AH
ANLA,#0FH
MOV40H,A
JNB20H.1,DISP1;判断是否校正?
非校正则正常显示
JNB2FH.3,DISP1;校正,判断半秒到否?
未到正常显示
JNB21H.0,HIGHS;半秒到,判断数码管哪个闪
MOV41H,#0AH;送灭码
MOV40H,#0AH
SJMPDISP1
HIGHS:
MOV43H,#0AH;显示程序段
MOV42H,#0AH;显示程序段
DISP1:
MOVDPTR,#TAB
MOVA,43H;显示时(月)高位
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
MOVDPTR,#TAB
MOVA,42H;显示时(月)低位
MOVCA,@A+DPTR
MOVC,2FH.3;半秒送到C
ANLC,20H.0;保留低位
MOVACC.0,C
MOVSBUF,A
JNBTI,$
CLRTI
MOVDPTR,#TAB
MOVA,41H;显示分(日)高位
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
MOVDPTR,#TAB
MOVA,40H;显示分(日)低位
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
RETI
TAB:
DB09H,7DH,07H,15H,71H,91H,81H,3DH,01H,11H,0FFH;0~9的笔形码和灭码
END
七、总结
通过两天的实验,发现自身存在很多不足,但在老师的耐心指导下,我完成了实验任务,也更进一步的了解了单片机的使用和编程,虽然还停留在比较初级的阶段,但已经感受到了单片机的魅力和无所不在,希望在以后的学习和工作中能更进一步的学习单片机。
八、附录
(1)80C51单片机的功能介绍。
下面是8051单片机引脚图及引脚功能介绍:
40个引脚按引脚功能大致可分为4个种类:
电源、时钟、控制和I/O引脚。
⒈电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
注:
用万用表测试单片机引脚电流一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。
⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根,
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 电子钟 设计