当前位置:文档之家› 基于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溢出中断外部中断外部中断定时器1溢出中断.A.首先允许前三个中断,当没有出现T0, T1中断时主程序在判键并且计时器0在计时.每隔4ms定时器0溢出中断,动态轮流显示一个数码管.用LED_LP做标志,计中断次数.每中断250次秒加一,每60秒分加一, 时日月年依规律类推(不用判断平润年).B.当出现T0(显示日期并做修改)或T1(显示闹钟定时时间并可修改定时时间)中断时都会自动关闭计时器0,此时软件控制打开计数器1,用它继续计时并且如A中用来动态显示日期或闹钟设置的时间,同时每个中断子程序都是在判键,通过按键修改日期或设置闹钟时间.此时已经是计数器1中断级别最高,同样每4ms动态轮流显示数码管,此时数码管显示的是日期或定时时间.当修改完时间或定时时间,人工弹出按键,中断结束返回主程序,在返回前关闭定时器1.这样,在没有T0,T1中断时计数器0中断级别最高.四各模块程序设计及流程图(1) 主程序判键修改时间及走时:流程图:(2)定时器0每隔4ms溢出中断(优先级别最低)流程图:(3) 外部中断0(优先级别第二)流程图:N(4) 外部中断1(优先级别第三)流程图:N(5) 定时器0每隔4ms溢出中断(优先级别最高)流程图:六课程设计心得体会:此次课程设计是大学里来第二次课程设计,于我的感觉是这是一次与实际最贴切的一次课程设计,亦或是说实践。

首先我的心得体会有如下几点(1)万事开头难,要做好单片机课程设计必须要有足够的耐心与兴趣。

要反复编程调试,检验。

而本次软件编程我反复调试了多达几十次。

(2)要想全面的做好这次课程设计,必须要全面统筹,细心规划好自己所需使用的单片机内部资源以及硬件资源。

并尽量做到少用资源而达到最大实用效果。

同时也要单个功能慢慢编程调试,而不要好高骛远,急功心切。

(3)第一次设计编写这样较为难而大的课程设计必须要做到对单片机基础硬件与软件的熟练掌握,尤其单片机里汇编语言指令。

只有做到融汇贯通方能运筹帷幄。

(4)做好课程设计要学会借鉴别人好的思想与技巧,而教材上就有许多很好的例子。

同时要将每次单片机实验灵活运用于此次课程设计。

七参考资料:(1) 单片机授课教材(2) 单片机网络资源八.程序:SHAN EQU20H ;秒闪烁标志BUFF_KEY EQU 21H ;键盘键LED1 EQU22H ;数码管显示缓存LED2 EQU 23HLED3 EQU 24HLED4 EQU 25HLED5 EQU 26HLED6 EQU 27HLED_LP EQU 28H ;计时标志HOR EQU 30H ;小时值缓存MIN EQU 31H ;分钟值缓存SEC EQU 32H ;秒值缓存NHOREQU 33H ;闹钟时间缓存NMIN EQU 34HNSEC EQU 35HYER EQU 36H ;年月日缓存MOT EQU 37HDAT EQU 38HSXX EQU 39HF_BEEP BIT 01HLED_PORTEQU P0DIG_PORT EQU P2SW0BIT P3.2SW8BIT P1.0SW1 BIT P1.1SW2 BIT P1.2SW3 BIT P1.3SW4 BIT P1.4SW5 BIT P1.5SW6 BIT P1.6SW7 BIT P3.3;-----------------------------------------------------ORG 0000HLJMP MAINORG 000BHLJMP T0_INTORG 0003HLJMP T_0ORG 0013HLJMP T_1ORG 001BHLJMP T1_INT ORG 100HMAIN: MOV SP ,#40HMOV PSW,#00HMOV R0,#7FH ;初始化RAM区,CLR_RAM:MOV A,#00HMOV @R0,ADJNZ R0,CLR_RAMMOV P1,#0FFHMOV P2,#0FFHMOV P0,#0FFHMOV P3,#0FFHMOV TMOD,#11HMOV TH0,#0F0H ;T0=4MSMOV TL0,#060HMOV NHOR,#100MOVYER,#12MOVMOT,#06MOVDAT,#17CLR CMOV P3.7,CSETBPT1 ;定时器1中断级别最高CLRPT0 ;定时器0中断级别最低SETB TR0 ;开定时器0SETB ET0 ;允许定时器0中断SETBEX0 ;允许外部中断0SETB EX1;允许外部中断1SETB EA ;允许所有中断;---------------------------------------------按键预置时间WAIT_KEY:MOV A,NHORCJNEA,HOR,LNNNMOVA,NMINCJNEA,MIN,LMNNMOVA,NSECCJNEA,SEC,LNNNSETB CMOV P3.7,CLJMP LNNN LMNN:MOV A,NMINADD A,#01CJNEA,MIN,LNNNMOVA,NSECCJNEA,SEC,LNNNCLR CMOV P3.7,C LNNN:JNB SW8,LSNNMOVSXX,#0LJMPWAIT_KEYLSNN:JNB SW1,SW1_OKJNB SW2,SW2_OKJNB SW3,SW3_OKJNB SW4,SW4_OKAJNB SW5,SW5_OKAJNB SW6,SW6_OKAJMP WAIT_KEYSW4_OKA: JMP SW4_OKSW5_OKA: JMP SW5_OKSW6_OKA: JMP SW6_OKSW1_OK: MOV SXX,#01MOV A,HORCJNE A,#23,SW1_OVERMOV HOR,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW1_OVER:INC HOR ;时加1MOV R7,HORSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW2_OK: MOV SXX,#01MOV A,HORCJNE A,#00,SW2_OVERMOV HOR,#23SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW2_OVER:DEC HOR ;时减1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW3_OK: MOV SXX,#02MOV A,MINCJNE A,#59,SW3_OVERMOV MIN,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW3_OVER:INC MIN ;分加1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW4_OK: MOV SXX,#02MOV A,MINCJNE A,#00,SW4_OVERMOV MIN,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW4_OVER:DEC MIN ;分减1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW5_OK: MOV SXX,#03MOV A,SECCJNE A,#59,SW5_OVERMOV SEC,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW5_OVER:INC SEC ;秒加1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW6_OK: MOV SXX,#03MOV A,SECCJNE A,#00,SW6_OVERMOV SEC,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW6_OVER:DEC SEC ;秒减1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEY;-------------------------------------------------------------------- DEL: MOV R5,#07 ;按一次键处理一次DEL01: MOV R6,#200DEL02: MOV R7,#200DJNZ R7,$DJNZ R6,DEL02DJNZ R5,DEL01RETBIN_BCD: MOV B,#10DIV ABRET;--------------------------------------------------------------------T0_INT: PUSH ACCPUSH PSWMOV TH0,#0F0H;T0=4MSMOVTL0,#060H INC LED_LPMOV A,LED_LPCJNE A,#250,CONT_SCAN ;250*4MS=1SMOV LED_LP,#00HINC SECMOV A,SECCJNE A,#60,CONT_SCANMOV SEC,#00HINC MINMOV A,MINCJNE A,#60,CONT_SCANMOV MIN,#00HINC HORMOV A,HORCJNE A,#24,CONT_SCANMOV HOR,#00HINC DATMOVA,DATCJNEA,#30,CONT_SCANMOV DAT,#00INC MOTMOVA,MOTCJNEA,#12,CONT_SCANMOV MOT,#00INC YERMOVA,YERCJNEA,#99,CONT_SCANLCALL DEL CONT_SCAN:MOV A,SECMOV B,#02DIV ABMOV A,BCJNE A,#00,LOPKMOVSHAN,#10 LOPK: CJNE A,#01,LOPLMOVSHAN,#11 LOPL:MOV A,SXXCJNE A,#01,LK1MOVA,LED_LPMOVB,#125DIV ABCJNEA,#0,LLL1MOVLED1,#10MOVLED2,#10LJMP LLL2 LK1:MOV A,SXXCJNE A,#02,LK2MOVA,LED_LPMOVB,#125DIV ABCJNEA,#0,LLL1MOVLED3,#10MOVLED4,#10LJMP LLL3 LK2:MOV A,SXXCJNE A,#03,LLL1MOV A,LED_LPMOV B,#125DIV ABCJNEA,#0,LLL1MOV LED5,#10MOV LED6,#10LJMP LKMMLLL1:MOV A,HORLCALL BIN_BCDMOV LED2,BMOV LED1,ALLL2:MOV A,MINLCALL BIN_BCDMOV LED4,BMOV LED3,ALLL3:MOV A,SECLCALL BIN_BCDMOV LED6,BMOV LED5,ALKMM:MOV A,LED_LPMOV B,#08DIV ABMOV A,BRL AMOV DPTR,#TAB_SCANJMP @A+DPTRTAB_SCAN: AJMP SCAN_L1AJMP SCAN_L2AJMP SCAN_L3AJMP SCAN_L4AJMP SCAN_L5AJMP SCAN_L6AJMP SCAN_L7AJMP SCAN_L8SCAN_L1: MOV DIG_PORT,#0MOV A,LED1JMP END_SCANSCAN_L2: MOV DIG_PORT,#1MOV A,LED2JMP END_SCANSCAN_L3: MOV DIG_PORT,#2MOV A,#11JMP END_SCANSCAN_L4: MOV DIG_PORT,#3MOV A,LED3JMP END_SCANSCAN_L5: MOV DIG_PORT,#4MOV A,LED4JMP END_SCANSCAN_L6: MOV DIG_PORT,#5MOV A,SHANJMP END_SCANSCAN_L7: MOV DIG_PORT,#6MOV A,LED5JMP END_SCANSCAN_L8: MOV DIG_PORT,#7MOV A,LED6END_SCAN: MOV DPTR,#TAB_LEDMOVC A,@A+DPTRMOV LED_PORT,APOP PSWPOP ACCRETITAB_LED: DB 3FH,06H,5BH,4FH ;共阴0-9和(-)字码表DB66H,6DH,7DH,07HDB 7FH,6FH,00H,48H,40H;--------------------------------------------------进入日期显示T_0:PUSH ACCPUSH PSWMOVTH1,#0F0H ;T1=4MSMOV TL1,#060HSETB TR1SETB ET1;---------------------------------------RWAIT_KEY:JNB SW0,RLOOPCLR TR1POP PSWPOP ACC RETIRLOOP:JNB SW1,RSW1_OKJNB SW2,RSW2_OKJNB SW3,RSW3_OKJNB SW4,RSW4_OKJNB SW5,RSW5_OKAJNB SW6,RSW6_OKAJMP RWAIT_KEYRSW5_OKA: JMP RSW5_OKRSW6_OKA: JMP RSW6_OKRSW1_OK: MOV A,YERCJNE A,#99,RSW1_OVERMOV YER,#00HSETBF_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW1_OVER:INC YER ;年加1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW2_OK: MOV A,YERCJNE A,#00,RSW2_OVERMOV YER,#99SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW2_OVER:DEC YER ;年减1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW3_OK: MOV A,MOTCJNE A,#12,RSW3_OVERMOV MOT,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW3_OVER:INC MOT ;月加1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW4_OK: MOV A,MOTCJNE A,#00,RSW4_OVERMOV MOT,#12SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW4_OVER:DEC MOT ;月减1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW5_OK: MOV A,DATCJNE A,#30,RSW5_OVERMOV DAT,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW5_OVER:INC DAT ;号加1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW6_OK: MOV A,DATCJNE A,#00,RSW6_OVERMOV NSEC,#30SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW6_OVER:DEC DAT ;号减1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEY;--------------------------------------------------------------------T_1: PUSH ACCPUSH PSWMOVTH1,#0F0H ;T1=4MSMOV TL1,#060HMOV NHOR,#0SETB TR1SETB ET1NWAIT_KEY:JNB SW7,NLOOPCLR TR1POP PSWPOP ACCRETINLOOP:JNB SW1,NSW1_OKJNB SW2,NSW2_OKJNB SW3,NSW3_OKJNB SW4,NSW4_OKJNB SW5,NSW5_OKAJNB SW6,NSW6_OKAJMP NWAIT_KEYNSW5_OKA: JMP NSW5_OKNSW6_OKA: JMP NSW6_OKNSW1_OK: MOV A,NHORCJNE A,#23,NSW1_OVERMOV NHOR,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW1_OVER:INC NHOR ;闹钟时加1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW2_OK: MOV A,NHORCJNE A,#00,NSW2_OVERMOV NHOR,#23SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW2_OVER:DEC NHOR ;闹钟时减1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW3_OK: MOV A,NMINCJNE A,#59,NSW3_OVERMOV NMIN,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW3_OVER:INC NMIN ;闹钟分加1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW4_OK: MOV A,NMINCJNE A,#00,NSW4_OVERMOV NMIN,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW4_OVER:DEC NMIN ;闹钟分减1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW5_OK: MOV A,NSECCJNE A,#59,NSW5_OVERMOV NSEC,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW5_OVER:INC NSEC ;号加1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW6_OK: MOV A,NSECCJNE A,#00,NSW6_OVERMOV NSEC,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW6_OVER:DEC NSEC ;号减1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEY;--------------------------------------------------------------------T1_INT: PUSH ACCPUSH PSWMOV TH1,#0F0H;T1=4MSMOVTL1,#060HINC LED_LPMOV A,LED_LPCJNE A,#250,RCONT_SCAN ;250*4MS=1SMOV LED_LP,#00HINC SECMOV A,SECCJNE A,#60,RCONT_SCANMOV SEC,#00HINC MINMOV A,MINCJNE A,#60,RCONT_SCANMOV MIN,#00HINC HORMOV A,HORCJNE A,#24,RCONT_SCANMOV HOR,#00HLCALL DEL RCONT_SCAN:JNB SW0,LPP1JNBSW7,LPP2LPP1:MOV A,YERLCALL BIN_BCDMOV LED2,BMOV LED1,AMOV A,MOTLCALL BIN_BCDMOV LED4,BMOV LED3,AMOV A,DATLCALL BIN_BCDMOV LED6,BMOV LED5,AMOV A,LED_LPMOV B,#08DIV ABMOV A,BRL AMOV DPTR,#RTAB_SCANJMP @A+DPTRRTAB_SCAN:AJMP RSCAN_L1AJMP RSCAN_L2AJMP RSCAN_L3AJMP RSCAN_L4AJMP RSCAN_L5AJMP RSCAN_L6AJMP RSCAN_L7AJMP RSCAN_L8RSCAN_L1: MOV DIG_PORT,#0MOV A,LED1JMP REND_SCANRSCAN_L2: MOV DIG_PORT,#1MOV A,LED2JMP REND_SCANRSCAN_L3: MOV DIG_PORT,#2MOV A,#12JMP REND_SCANRSCAN_L4: MOV DIG_PORT,#3MOV A,LED3JMP REND_SCANRSCAN_L5: MOV DIG_PORT,#4MOV A,LED4JMP REND_SCANRSCAN_L6: MOV DIG_PORT,#5MOV A,#12JMP REND_SCANRSCAN_L7: MOV DIG_PORT,#6MOV A,LED5JMP REND_SCANRSCAN_L8: MOV DIG_PORT,#7MOV A,LED6REND_SCAN:MOV DPTR,#TAB_LEDMOVC A,@A+DPTRMOV LED_PORT,APOP PSW POP ACCRETI;----------------------------------------LPP2: MOV A,NHORLCALL BIN_BCDMOV LED2,BMOV LED1,AMOV A,NMINLCALL BIN_BCDMOV LED4,BMOV LED3,AMOV A,NSECLCALL BIN_BCDMOV LED6,BMOV LED5,AMOV A,LED_LPMOV B,#08DIV ABMOV A,BRL AMOV DPTR,#NTAB_SCANJMP @A+DPTRNTAB_SCAN:AJMP NSCAN_L1AJMP NSCAN_L2AJMP NSCAN_L3AJMP NSCAN_L4AJMP NSCAN_L5AJMP NSCAN_L6AJMP NSCAN_L7AJMP NSCAN_L8NSCAN_L1: MOV DIG_PORT,#0MOV A,LED1JMP NEND_SCANNSCAN_L2: MOV DIG_PORT,#1MOV A,LED2JMP NEND_SCANNSCAN_L3: MOV DIG_PORT,#2MOV A,#11JMP NEND_SCANNSCAN_L4: MOV DIG_PORT,#3MOV A,LED3JMP NEND_SCANNSCAN_L5: MOV DIG_PORT,#4MOV A,LED4JMP NEND_SCANNSCAN_L6: MOV DIG_PORT,#5MOV A,#11JMP NEND_SCANNSCAN_L7: MOV DIG_PORT,#6MOV A,LED5JMP NEND_SCANNSCAN_L8: MOV DIG_PORT,#7MOV A,LED6NEND_SCAN:MOV DPTR,#TAB_LEDMOVC A,@A+DPTRMOV LED_PORT,APOP PSW POP ACCRETIEND。

相关主题