基于51单片机多功能电子时钟报告.docx
- 文档编号:23267232
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:35
- 大小:134.11KB
基于51单片机多功能电子时钟报告.docx
《基于51单片机多功能电子时钟报告.docx》由会员分享,可在线阅读,更多相关《基于51单片机多功能电子时钟报告.docx(35页珍藏版)》请在冰豆网上搜索。
基于51单片机多功能电子时钟报告
基于51单片机多功能电子时钟报告
单片机课程设计报告
多功能电子数字钟
姓名:
学号:
班级:
指导教师:
一课程设计题目--------------------------------3
二电路设计---------------------------------------4
三程序总体设计思路概述-------------------5
四各模块程序设计及流程图----------------6
五程序及程序说明见附录-------------------**
六课程设计心得及体会----------------------11
七参考资料---------------------------------------12
一题目及要求
本次单片机课程设计在Proteus软件仿真平台下实现,完成电路设计连接,编程、调试,仿真出实验结果。
具体要如下:
用8051单片机设计扩展6位数码管的静态或动态显示电路,再连接几个按键和一个蜂鸣器报警电路,设计出一个多功能电子钟,实现以下功能:
(1)走时(能实现时分秒,年月日的计时)
(2)显示(分屏切换显示时分秒和年月日,修改时能定位闪烁显示)
(3)校时(能用按键修改和校准时钟)
(4)定时报警(能定点报时)
本次课程设计要求每个学生使用Proteus仿真软件独立设计制作出电路图、完成程序设计和系统仿真调试,验收时能操作演示。
最后验收检查
结果,评定成绩分为:
(1)完成“走时+显示+秒闪”功能----及格
(2)完成“校时修改”功能----中等
(3)完成“校时修改位闪”----良好
(4)完成“定点报警”功能,且使用资源少----优秀
二电路设计(电路设计图见附件电路图)
(1)采用89C51型号单片机
(2)采用8位共阴数码管
(3)因为单片机输出高电平时输出的电流不足以驱动数码管,所以在P0口与8位数码管之间加74LS373来驱动数码管
(4)P2口与数码管选择位直接加74LS138译码器
(5)蜂鸣器接P3.7口。
因为单片机输出高电平时输出的电流不足以驱动蜂鸣器所以蜂鸣器,所以P3.7口与蜂鸣器直接接反相器再接蜂鸣器的一端,蜂鸣器的另一端接5V电源。
这样当P3.7口给高电平时蜂鸣器导通名声。
否则反之。
(6)单片机XTAL1,XTAL2端接外部时钟电路(时钟电路参考课本),RAT端接复位电路(复位电路参考课本)。
EA端接5V电源,使得单片机读取片内程序。
(7)修改时间控制开关key1接p1.0口,key2至key7用来对时间,日期,闹钟时间的修改,依次于p1.1至p1.6。
key2用来显示日期并做修改的开关,接于INT0(p3.2)口。
key3用来显示闹钟时间并做预置的开关,接于INT1(p3.3)口。
所有按键的另一端接地。
三总体设计思路概述
(1),数码管显示使用动态显示,每四毫秒轮流显示一个数码管.一个循环耗时32ms(这样会有微闪烁可设置更快的动态显示)
(2),设置四个中断,高底:
定时器1溢出中断外部中断0外部中断1定时器1溢出中断.
A.首先允许前三个中断,当没有出现T0,T1中断时主程序在判键并且计时器0在计时.每隔4ms定时器0溢出中断,动态轮流显示一个数码管.用LED_LP做标志,计中断次数.每中断250次秒加一,每60秒分加一,时日月年依规律类推(不用判断平润年).
B.当出现T0(显示日期并做修改)或T1(显示闹钟定时时间并可修改定时时间)中断时都会自动关闭计时器0,此时软件控制打开计数器1,用它继续计时并且如A中用来动态显示日期或闹钟设置的时间,同时每个中断子程序都是在判键,通过按键修改日期或设置闹钟时间.此时已经是计数器1中断级别最高,同样每4ms动态轮流显示数码管,此时数码管显示的是日期或定时时间.当修改完时间或定时时间,人工弹出按键,中断结束返回主程序,在返回前关闭定时器1.这样,在没有T0,T1中断时计数器0中断级别最高.
四各模块程序设计及流程图
(1)主程序判键修改时间及走时:
流程图:
ban
YN
N
YN
Y
(2)定时器0每隔4ms溢出中断(优先级别最低)
流程图:
(3)外部中断0(优先级别第二)
流程图:
N
Y
(4)外部中断1(优先级别第三)
流程图:
N
Y
(5)定时器0每隔4ms溢出中断(优先级别最高)
流程图:
YN
六课程设计心得体会:
此次课程设计是大学里来第二次课程设计,于我的感觉是这是一次与实际最贴切的一次课程设计,亦或是说实践。
首先我的心得体会有如下几点
(1)万事开头难,要做好单片机课程设计必须要有足够的耐心与兴趣。
要反复编程调试,检验。
而本次软件编程我反复调试了多达几十次。
(2)要想全面的做好这次课程设计,必须要全面统筹,细心规划好自己所需使用的单片机内部资源以及硬件资源。
并尽量做到少用资源而达到最大实用效果。
同时也要单个功能慢慢编程调试,而不要好高骛远,急功心切。
(3)第一次设计编写这样较为难而大的课程设计必须要做到对单片机基础硬件与软件的熟练掌握,尤其单片机里汇编语言指令。
只有做到融汇贯通方能运筹帷幄。
(4)做好课程设计要学会借鉴别人好的思想与技巧,而教材上就有许多很好的例子。
同时要将每次单片机实验灵活运用于此次课程设计。
七参考资料:
(1)单片机授课教材
(2)单片机网络资源
八.程序:
SHANEQU20H;秒闪烁标志
BUFF_KEYEQU21H;键盘键
LED1EQU22H;数码管显示缓存
LED2EQU23H
LED3EQU24H
LED4EQU25H
LED5EQU26H
LED6EQU27H
LED_LPEQU28H;计时标志
HOREQU30H;小时值缓存
MINEQU31H;分钟值缓存
SECEQU32H;秒值缓存
NHOREQU33H;闹钟时间缓存
NMINEQU34H
NSECEQU35H
YEREQU36H;年月日缓存
MOTEQU37H
DATEQU38H
SXXEQU39H
F_BEEPBIT01H
LED_PORTEQUP0
DIG_PORTEQUP2
SW0BITP3.2
SW8BITP1.0
SW1BITP1.1
SW2BITP1.2
SW3BITP1.3
SW4BITP1.4
SW5BITP1.5
SW6BITP1.6
SW7BITP3.3
;-----------------------------------------------------
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0_INT
ORG0003H
LJMPT_0
ORG0013H
LJMPT_1
ORG001BH
LJMPT1_INT
ORG100H
MAIN:
MOVSP,#40H
MOVPSW,#00H
MOVR0,#7FH;初始化RAM区,
CLR_RAM:
MOVA,#00H
MOV@R0,A
DJNZR0,CLR_RAM
MOVP1,#0FFH
MOVP2,#0FFH
MOVP0,#0FFH
MOVP3,#0FFH
MOVTMOD,#11H
MOVTH0,#0F0H;T0=4MS
MOVTL0,#060H
MOVNHOR,#100
MOVYER,#12
MOVMOT,#06
MOVDAT,#17
CLRC
MOVP3.7,C
SETBPT1;定时器1中断级别最高
CLRPT0;定时器0中断级别最低
SETBTR0;开定时器0
SETBET0;允许定时器0中断
SETBEX0;允许外部中断0
SETBEX1;允许外部中断1
SETBEA;允许所有中断
;---------------------------------------------按键预置时间
WAIT_KEY:
MOVA,NHOR
CJNEA,HOR,LNNN
MOVA,NMIN
CJNEA,MIN,LMNN
MOVA,NSEC
CJNEA,SEC,LNNN
SETBC
MOVP3.7,C
LJMPLNNN
LMNN:
MOVA,NMIN
ADDA,#01
CJNEA,MIN,LNNN
MOVA,NSEC
CJNEA,SEC,LNNN
CLRC
MOVP3.7,C
LNNN:
JNBSW8,LSNN
MOVSXX,#0
LJMPWAIT_KEY
LSNN:
JNBSW1,SW1_OK
JNBSW2,SW2_OK
JNBSW3,SW3_OK
JNBSW4,SW4_OKA
JNBSW5,SW5_OKA
JNBSW6,SW6_OKA
JMPWAIT_KEY
SW4_OKA:
JMPSW4_OK
SW5_OKA:
JMPSW5_OK
SW6_OKA:
JMPSW6_OK
SW1_OK:
MOVSXX,#01
MOVA,HOR
CJNEA,#23,SW1_OVER
MOVHOR,#00H
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW1_OVER:
INCHOR;时加1
MOVR7,HOR
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW2_OK:
MOVSXX,#01
MOVA,HOR
CJNEA,#00,SW2_OVER
MOVHOR,#23
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW2_OVER:
DECHOR;时减1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW3_OK:
MOVSXX,#02
MOVA,MIN
CJNEA,#59,SW3_OVER
MOVMIN,#00H
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW3_OVER:
INCMIN;分加1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW4_OK:
MOVSXX,#02
MOVA,MIN
CJNEA,#00,SW4_OVER
MOVMIN,#59
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW4_OVER:
DECMIN;分减1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW5_OK:
MOVSXX,#03
MOVA,SEC
CJNEA,#59,SW5_OVER
MOVSEC,#00H
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW5_OVER:
INCSEC;秒加1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW6_OK:
MOVSXX,#03
MOVA,SEC
CJNEA,#00,SW6_OVER
MOVSEC,#59
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
SW6_OVER:
DECSEC;秒减1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPWAIT_KEY
;--------------------------------------------------------------------
DEL:
MOVR5,#07;按一次键处理一次
DEL01:
MOVR6,#200
DEL02:
MOVR7,#200
DJNZR7,$
DJNZR6,DEL02
DJNZR5,DEL01
RET
BIN_BCD:
MOVB,#10
DIVAB
RET
;--------------------------------------------------------------------
T0_INT:
PUSHACC
PUSHPSW
MOVTH0,#0F0H;T0=4MS
MOVTL0,#060H
INCLED_LP
MOVA,LED_LP
CJNEA,#250,CONT_SCAN;250*4MS=1S
MOVLED_LP,#00H
INCSEC
MOVA,SEC
CJNEA,#60,CONT_SCAN
MOVSEC,#00H
INCMIN
MOVA,MIN
CJNEA,#60,CONT_SCAN
MOVMIN,#00H
INCHOR
MOVA,HOR
CJNEA,#24,CONT_SCAN
MOVHOR,#00H
INCDAT
MOVA,DAT
CJNEA,#30,CONT_SCAN
MOVDAT,#00
INCMOT
MOVA,MOT
CJNEA,#12,CONT_SCAN
MOVMOT,#00
INCYER
MOVA,YER
CJNEA,#99,CONT_SCAN
LCALLDEL
CONT_SCAN:
MOVA,SEC
MOVB,#02
DIVAB
MOVA,B
CJNEA,#00,LOPK
MOVSHAN,#10
LOPK:
CJNEA,#01,LOPL
MOVSHAN,#11
LOPL:
MOVA,SXX
CJNEA,#01,LK1
MOVA,LED_LP
MOVB,#125
DIVAB
CJNEA,#0,LLL1
MOVLED1,#10
MOVLED2,#10
LJMPLLL2
LK1:
MOVA,SXX
CJNEA,#02,LK2
MOVA,LED_LP
MOVB,#125
DIVAB
CJNEA,#0,LLL1
MOVLED3,#10
MOVLED4,#10
LJMPLLL3
LK2:
MOVA,SXX
CJNEA,#03,LLL1
MOVA,LED_LP
MOVB,#125
DIVAB
CJNEA,#0,LLL1
MOVLED5,#10
MOVLED6,#10
LJMPLKMM
LLL1:
MOVA,HOR
LCALLBIN_BCD
MOVLED2,B
MOVLED1,A
LLL2:
MOVA,MIN
LCALLBIN_BCD
MOVLED4,B
MOVLED3,A
LLL3:
MOVA,SEC
LCALLBIN_BCD
MOVLED6,B
MOVLED5,A
LKMM:
MOVA,LED_LP
MOVB,#08
DIVAB
MOVA,B
RLA
MOVDPTR,#TAB_SCAN
JMP@A+DPTR
TAB_SCAN:
AJMPSCAN_L1
AJMPSCAN_L2
AJMPSCAN_L3
AJMPSCAN_L4
AJMPSCAN_L5
AJMPSCAN_L6
AJMPSCAN_L7
AJMPSCAN_L8
SCAN_L1:
MOVDIG_PORT,#0
MOVA,LED1
JMPEND_SCAN
SCAN_L2:
MOVDIG_PORT,#1
MOVA,LED2
JMPEND_SCAN
SCAN_L3:
MOVDIG_PORT,#2
MOVA,#11
JMPEND_SCAN
SCAN_L4:
MOVDIG_PORT,#3
MOVA,LED3
JMPEND_SCAN
SCAN_L5:
MOVDIG_PORT,#4
MOVA,LED4
JMPEND_SCAN
SCAN_L6:
MOVDIG_PORT,#5
MOVA,SHAN
JMPEND_SCAN
SCAN_L7:
MOVDIG_PORT,#6
MOVA,LED5
JMPEND_SCAN
SCAN_L8:
MOVDIG_PORT,#7
MOVA,LED6
END_SCAN:
MOVDPTR,#TAB_LED
MOVCA,@A+DPTR
MOVLED_PORT,A
POPPSW
POPACC
RETI
TAB_LED:
DB3FH,06H,5BH,4FH;共阴0-9和(-)字码表
DB66H,6DH,7DH,07H
DB7FH,6FH,00H,48H,40H
;--------------------------------------------------进入日期显示
T_0:
PUSHACC
PUSHPSW
MOVTH1,#0F0H;T1=4MS
MOVTL1,#060H
SETBTR1
SETBET1
;---------------------------------------
RWAIT_KEY:
JNBSW0,RLOOP
CLRTR1
POPPSW
POPACC
RETI
RLOOP:
JNBSW1,RSW1_OK
JNBSW2,RSW2_OK
JNBSW3,RSW3_OK
JNBSW4,RSW4_OK
JNBSW5,RSW5_OKA
JNBSW6,RSW6_OKA
JMPRWAIT_KEY
RSW5_OKA:
JMPRSW5_OK
RSW6_OKA:
JMPRSW6_OK
RSW1_OK:
MOVA,YER
CJNEA,#99,RSW1_OVER
MOVYER,#00H
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW1_OVER:
INCYER;年加1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW2_OK:
MOVA,YER
CJNEA,#00,RSW2_OVER
MOVYER,#99
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW2_OVER:
DECYER;年减1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW3_OK:
MOVA,MOT
CJNEA,#12,RSW3_OVER
MOVMOT,#00H
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW3_OVER:
INCMOT;月加1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW4_OK:
MOVA,MOT
CJNEA,#00,RSW4_OVER
MOVMOT,#12
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW4_OVER:
DECMOT;月减1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW5_OK:
MOVA,DAT
CJNEA,#30,RSW5_OVER
MOVDAT,#00H
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW5_OVER:
INCDAT;号加1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW6_OK:
MOVA,DAT
CJNEA,#00,RSW6_OVER
MOVNSEC,#30
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
RSW6_OVER:
DECDAT;号减1
SETBF_BEEP
LCALLDEL
CLRF_BEEP
JMPRWAIT_KEY
;--------------------------------------------------------------------
T_1:
PUSHACC
PUSHPSW
MOVTH1,#0F0H;T1=4MS
MOVTL1,#060H
MOVNHOR,#0
SETBTR1
SETBET1
NWAIT_KEY:
JNBSW7,NLOOP
CLRTR1
POPPSW
POPACC
RETI
NLOOP:
JNBSW1,NSW1_OK
JNBSW2,NSW2_OK
JNBSW3,NSW3_OK
JNBSW4,NSW4_OK
JNBSW5,NSW5_OKA
JNBSW6,NSW6_OKA
JMPNWAIT_KEY
NSW5_OKA:
JMPNSW5_OK
NSW6_OKA:
JMPNSW6_OK
NSW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 多功能 电子 时钟 报告