整理基于51单片机多功能电子时钟报告.docx

上传人:b****6 文档编号:6553791 上传时间:2023-01-07 格式:DOCX 页数:51 大小:193.01KB
下载 相关 举报
整理基于51单片机多功能电子时钟报告.docx_第1页
第1页 / 共51页
整理基于51单片机多功能电子时钟报告.docx_第2页
第2页 / 共51页
整理基于51单片机多功能电子时钟报告.docx_第3页
第3页 / 共51页
整理基于51单片机多功能电子时钟报告.docx_第4页
第4页 / 共51页
整理基于51单片机多功能电子时钟报告.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

整理基于51单片机多功能电子时钟报告.docx

《整理基于51单片机多功能电子时钟报告.docx》由会员分享,可在线阅读,更多相关《整理基于51单片机多功能电子时钟报告.docx(51页珍藏版)》请在冰豆网上搜索。

整理基于51单片机多功能电子时钟报告.docx

整理基于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

NSW1_OK:

MOVA,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1