单片机课程设计电子万年历Word文档下载推荐.docx

上传人:b****5 文档编号:19485756 上传时间:2023-01-06 格式:DOCX 页数:14 大小:19.77KB
下载 相关 举报
单片机课程设计电子万年历Word文档下载推荐.docx_第1页
第1页 / 共14页
单片机课程设计电子万年历Word文档下载推荐.docx_第2页
第2页 / 共14页
单片机课程设计电子万年历Word文档下载推荐.docx_第3页
第3页 / 共14页
单片机课程设计电子万年历Word文档下载推荐.docx_第4页
第4页 / 共14页
单片机课程设计电子万年历Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机课程设计电子万年历Word文档下载推荐.docx

《单片机课程设计电子万年历Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子万年历Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

单片机课程设计电子万年历Word文档下载推荐.docx

⑴10μF1个(用于系统复位电路)。

⑵30pF2个(用于系统振荡电路)。

(11)其它:

⑴万能电路板(10×

15):

1块

⑵焊锡条:

2米

⑶带插头、座的电源端子:

1条

⑷各种颜色外皮的导线:

各1米

(12)工具:

1.电烙铁:

1把

2.剪钳:

3.镊子:

4.万用表:

1个

(13)设备:

编程器(MEP300或TOP851)6个

4、软件方案:

只使用第一组工作寄存器,功能分布如下:

⑴“时钟”基准时间由单片机内部定时中断来提供,定时时间应该乘以一个整数得到“秒”,且不宜太长或太短,最长不能超过16位定时器的最长定时时间,最短不能少于定时中断服务程序的执行时间。

一般来说,基准时间越短,越有利于提高时钟运行的精确度。

本实验定时5mS。

乘以一个整数200得到“1秒”.

⑵用一个计数器(R4)对定时中断的次数进行计数,从而可以实现“秒”定时,同理可以实现“分”定时和“时”定时,甚至于“日”、“月”、“年”定时。

⑶显示器采用动态驱动时要注意到:

LED的“启辉时间”和“余辉时间”。

驱动信号的维持时间必须大于启辉时间;

而驱动信号的间歇时间必须小于余辉时间。

“启辉时间”和“余辉时间”与驱动电流的大小有关,驱动电流越大,启辉时间越短,而余辉时间越长。

但是,驱动电流的大小受到驱动电路的驱动能力和LED极限功耗的限制。

本实验采用了74ls244和晶体管8550驱动,并进行适当的延时3ms解决上述问题。

⑷LED的余辉时间使动态驱动显示得到保证,但也要注意到它在更新显示内容时,可能造成显示字符的混乱模糊。

为此,在把“更新显示内容”写入显示器之前,必须把所有的LED熄灭,即要把一个“熄灭驱动信号”先写入显示器。

⑸对于按键的处理,采用中断。

产生中断后先判有无按键被按下,还要考虑到“去抖动影响”问题,可采用软件延迟法解决这个问题,延迟时间至少10mS。

而单纯进行软件延时的话会令到显示管产生断续的情况,故调用显示程序作为延时时间。

这样就合理地处理好这两者的矛盾了。

⑹把键盘的按键分两种情况来处理,操作简单。

①调整时间时,先按下KA键,(KA键为选择调整位置的键,如选调整秒或分),而此时的KB键只是用来加一操作。

在调整时间状态下,若在十秒内检测到没有任何按键按下,则返回正常显示时钟状态。

②而不调整时间,即不按下KA键,KB的键只用来切换显示日期和时钟。

⑺对于自动识别“月大、月小”和“平年、闰年”的问题,主要考虑:

①月大、月小:

1~7月:

逢单月为31天;

逢双月为30天,其中2月另行处理。

8~12月:

逢单月为30天;

逢双月为31天。

②平年、闰年:

仅仅处理2月份的天数:

平年的2月份天数为28天,闰年的2月份天数为29天。

5、程序流程图如下:

(1)电子时钟计算程序图

(2)调整流程图

程序编写如下:

;

/////////////////////////////////////////////////////////

ORG0000H

LJMPSTART

ORG0003H

LJMPPROINT0;

int0用来切换时钟调整位置

ORG0013H;

用来调整时间,只加不减

LJMPPROINT1

ORG001BH;

5ms的延迟,计数200次则为1秒

LJMPPROTIME

ORG0030H;

主程序

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;

0123456789

ORG0050H

START:

MOVTCON,#05H;

中断初始化

MOVIE,#8DH

MOVTMOD,#10H

MOVTH1,#0eCH;

定时器初始化

MOVTL1,#78H

MOV31H,#0AH;

10秒

MOV32H,#1EH;

30分

MOV33H,#09H;

9点

MOV34H,#0AH;

10号

MOV35H,#06H;

6月

MOV36H,#05H;

2005年

MOV37H,#14H

R7存放切换标志0NORMAL,1HOUR,2MINUTE,3SECOND,4YEAR,5MONTH,6DAY

MOVR1,#00H;

确定在调时不按键的最长时间,10秒后返回normal状态

MOVR7,#00H;

切换标志

MOV40H,#00H;

十六进制转换BCD的高位

MOV41H,#00H;

十六进制转换BCD的低位

MOVR6,#00H;

调时的位闪烁的时间间隔

MOVR4,#00H;

用来计数5ms的中断次数,200次则一秒

movr3,#00h

SETBTR1;

开始计时

AGAIN:

ACALLPROSHOW;

显示

AJMPAGAIN

PROSHOW:

CJNER3,#00H,SHOWDATE;

如果r3等于1就显示日期,等于0就显示时钟

CJNER7,#04H,DATE1;

显示程序

AJMPSHOWDATE;

showdate显示年月日

DATE1:

CJNER7,#05H,DATE2

AJMPSHOWDATE

DATE2:

CJNER7,#06H,SHOWCLOCK

AJMPSHOWDATE

showCLOCK:

MOVR0,33H;

showclock显示时分秒,先显示时

ACALLPROHTOD

CJNER7,#01H,CLK1

INCR6

CJNER6,#03H,CLK2;

若处于调时状态,则该位闪烁

MOVR6,#00H

CLK1:

clrP2.4

mova,41H

MOVP0,a;

显示时的低位

ACALLDELAY3MS

CLK2:

SETBP2.4

CLRP2.5

mova,40H

MOVP0,a;

显示时的高位

SETBP2.5

MOVR0,32H;

显示分

ACALLPROHTOD

CJNER7,#02H,CLK3

CJNER6,#03H,CLK4;

MOVR6,#00H

CLK3:

CLRP2.2

MOVP0,a;

显示分的低位

CLK4:

SETBP2.2

CLRP2.3

mova,40h

显示分的高位

SETBP2.3

MOVR0,31H;

显示秒

CJNER7,#03H,CLK5

CJNER6,#03H,CLK6;

CLK5:

CLRP2.0

显示秒的低位

CLK6:

SETBP2.0

CLRP2.1

显示秒的高位

SETBP2.1

RET

SHOWDATE:

MOVR0,36H;

显示年

CJNER7,#04H,DAY1

CJNER6,#03H,DAY2;

DAY1:

CLRP2.4

MOVP0,41H;

显示年的低位

DAY2:

MOVP0,40H;

显示年的高位

MOVR0,35H;

显示月

CJNER7,#05H,MONTH1

CJNER6,#03H,MONTH2;

MONTH1:

显示月的低位

MONTH2:

显示月的高位

MOVR0,34H;

显示日

CJNER7,#06H,YEAR1

CJNER6,#03H,YEAR2;

YEAR1:

CLRP2.0

MOVP0,41H

YEAR2:

MOVP0,40H

PROHTOD:

PUSHACC;

十六进制数转换成bcd码,且可以直接输出p0口

MOVA,R0

MOVB,#0AH

DIVAB

MOVDPTR,#0030H

MOVCA,@A+DPTR

MOV40H,A

MOVA,B

MOV41H,A

POPACC

DELAY3MS:

;

DELAY3MS

MOV45H,#08H

DELAY1:

MOV46H,#0FFH

DELAY2:

DJNZ46H,DELAY2

DJNZ45H,DELAY1

PROINT0:

CLREX0;

切换键中断程序

MOVR3,#00H

ACALLPROSHOW

MOVC,P3.2

JCIEXIT0

MOVR1,#00H

INCR7

CJNER7,#07H,IEXIT0

MOVR7,#00H

INT01:

JCINT02

AJMPINT01

INT02:

ACALLPROSHOW

IEXIT0:

SETBEX0

RETI

PROINT1:

CLREX1

MOVC,P3.3

JCIEXIT1

LCALLISYEAR;

判断平年闰年

LCALLISMONTH;

判断月份,确定最大日数

CJNER7,#00H,NEXT1;

若不是调时状态,按此键就是切换显示日期、时钟

INCR3

CJNER3,#02H,IEXIT1

AJMPIEXIT1

NEXT1:

CJNER7,#03H,NEXT2;

修改秒位

INC31H

MOVA,31H

CJNEA,#3CH,INT11;

遇60变0

MOV31H,#00H

NEXT2:

CJNER7,#02H,NEXT3;

修改分位

INC32H

NEXT3:

CJNER7,#01H,NEXT4;

修改时位

INC33H

MOVA,33H

CJNEA,#18H,INT11;

遇24变0

MOV33H,#00H

NEXT4:

CJNER7,#06H,NEXT5;

修改日

INC34H

MOVA,34H

CJNEA,49H,INT11;

到月底就返回月初

MOV34H,#01H

NEXT5:

CJNER7,#05H,NEXT6;

修改月

INC35H

MOVA,35H

CJNEA,#0DH,INT11;

十二月过后就跳回1月

MOV35H,#01H

NEXT6:

CJNER7,#04H,INT11;

修改年

INC36H

MOVA,36H

CJNEA,#64H,INT11

MOV36H,#00H

INT11:

JCINT12

AJMPINT11

INT12:

IEXIT1:

setbEX1

PROTIME:

MOVTH1,#3CH;

MOVTL1,#60H

setbtr1

INCR4

CJNER4,#0c8H,EXIT

计满1秒则清零

CJNER7,#00H,DIAOSHI

AJMPNORMAL

DIAOSHI:

INCR1;

调时不按键的最长时间为10秒,在此期间又键按下重新计时

CJNER1,#0AH,EXIT

到10秒则返回正常显示状态

AJMPEXIT

NORMAL:

ACALLISYEAR;

判断平闰年,返回标志48h,0为平年,1为闰年

ACALLISMONTH;

判断哪个月,返回该月的最大日数,存放在49h

INC31H

MOVA,31H;

秒加一

CJNEA,#3CH,EXIT

MOV31H,#00H

INC32H;

分加一

MOVA,32H

MOV32H,#00H

INC33H;

时加一

CJNEA,#18H,EXIT

INC34H;

日加一

CJNEA,49H,EXIT

INC35H;

月加一

CJNEA,#0DH,EXIT

INC36H;

年加一

CJNEA,#64H,EXIT

EXIT:

ISYEAR:

MOVA,36H;

判断平闰年

MOVB,#04H

CJNEA,#00H,EXITYEAR1

MOV48H,#01H;

闰年

SJMPEXITYEAR

EXITYEAR1:

MOV48H,#00H;

平年

EXITYEAR:

ISMONTH:

MOVA,35H;

开始检查月份

CJNEA,#02H,NEXTMON1;

判断二月

MOVR2,48H

CJNER2,#00H,RUNNIAN

MOV49H,#1DH;

平年为28天,赋29给49h

AJMPEXITMONTH

RUNNIAN:

MOV49H,#1EH;

闰年为29天,赋30天给49h

AJMPEXITMONTH

NEXTMON1:

CJNEA,#04H,NEXTMON2

AJMPXIAOYUE

NEXTMON2:

CJNEA,#06H,NEXTMON3

AJMPXIAOYUE

NEXTMON3:

CJNEA,#09H,NEXTMON4

AJMPXIAOYUE

NEXTMON4:

CJNEA,#0BH,DAYUE

XIAOYUE:

MOV49H,#1FH;

四,六,九,十一月是小月,30天,但应该赋31天给比较值49h,

DAYUE:

MOV49H,#20H;

其他月份为大月,31天,赋32天给49h

EXITMONTH:

RETI

END

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

当前位置:首页 > 工程科技 > 材料科学

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

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