电器课程设计电子钟Word文档格式.docx

上传人:b****7 文档编号:22768522 上传时间:2023-02-05 格式:DOCX 页数:26 大小:319.34KB
下载 相关 举报
电器课程设计电子钟Word文档格式.docx_第1页
第1页 / 共26页
电器课程设计电子钟Word文档格式.docx_第2页
第2页 / 共26页
电器课程设计电子钟Word文档格式.docx_第3页
第3页 / 共26页
电器课程设计电子钟Word文档格式.docx_第4页
第4页 / 共26页
电器课程设计电子钟Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

电器课程设计电子钟Word文档格式.docx

《电器课程设计电子钟Word文档格式.docx》由会员分享,可在线阅读,更多相关《电器课程设计电子钟Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

电器课程设计电子钟Word文档格式.docx

要电器特性参数和芯片的驱动能力准许,完全可以通过控制负极的电压来控制二极管的发光或者熄灭。

这种连接方式的数码管又叫做共阳极数码管。

本次电路设计了一组数码管显示电路,8只数码管可以单只驱动也可动态显示8位数码管。

通过上拉电阻及三极管的反相作用共同实现数码管的输出与控制信号。

显示部分电路如图2.7。

图2.7数码管显示电路

2.5总体电路图

详见附录A

三、软件系统设计方案

3.1系统主程序

图3.1数字电子钟主程序流程图

主程序流程图如上图3.1所示,初始化后显示“P.”准备状态,然后调键盘扫描程序判断启动键(键A)是否按下,若按下则定时器、中断初始化,开启中断,调键盘扫描程序,判断启动(键A)是否按下,未按则等待中断,进入开始计时即显示时间开始;

若开启按键(键A)再次按下,则时、分、秒按键可以调整时间了。

调整完毕再按启动按键时间开始正常计时。

3.2中断服务程序

图3.2中断服务程序流程图

中断服务程序主要功能是进行计时操作。

当定时器计满一秒后发生定时器0中断,秒值加一。

判断是否计满60s,满则分值加一,否则返回。

同理对时进行判断。

中断服务程序流程如图3.2所示。

3.3加一子程序

加1子程序用于完成对秒、分、时的加1操作,中断服务程序中在秒、分、时共有三处调用此子程序,在秒、分、时调整是也有三处调用此子程序。

程序流程图如图3.3所示。

图3.3加一程序流程图

3.4键扫描及键处理子程序

独立式键盘的程序设计一般把键盘扫描程序设计成子程序,以便其它各程序调用。

程序设计采用查询法。

包括判断有无键按下子程序与键盘扫描子程序,程序流程图见图3.4。

图3.4键扫描子程序流程图

3.5显示程序

为了存放显示的数字或字符,在内部RAM中开辟显示数据缓冲区,其单元个数与显示器数码管的位数相同。

显示缓冲区8个显示缓冲单元地址依次为30H~37H,则显示缓冲单元与LED显示器数码管对应关系为:

LED7

LED6

LED5

LED4

LED3

LED2

LED1

LED0

37H

36H

35H

34H

33H

32H

31H

30H

动态扫描从右向左进行,则缓冲区首地址应为30H。

LED显示器动态显示过

程为:

从P0口输出字形代码,字形代码通过LED数码管的dp~a端加到8个LED上,从P2口输出位控代码,位控代码通过LED数码管的位控端(LED数码管的公共极)加到8个LED上。

显示程序流程图如图3.5。

图3.5显示子程序流程图

四、设计总结

4.1设计结果及误差分析

将程序导入单片机后,上电或按键复位数码管显示准备状态提示符“P.”;

能通过按键对电子钟进行时间调整并能正常运行显示时间。

通过一段时间的正常运行后发现该电子钟存在一定的误差,误差的产生有以下几个方面的原因:

首先,此次设计虽说是采用软件的方法产生1s的基本时间,然而定时器/计数器并不能进行标准的1s定时,而是产生一个基准时间后进行循环计数来得到1s,但CPU执行代码需要1~2us的时间,因此实际产生的1秒、1分、1小时都会略大于理论时间,此外,单片机也会受硬件系统的影响,而且也易受到外界因素的影响,比如温度、湿度等的干扰。

4.2心得体会

本次设计从前期硬件电路的制作到后期程序的编写最终实现电子钟计时前后历时一个星期。

不管是制板还是编程其间都遇到了不少挫折与困难。

第一次制PCB板就因为绘制PCB图时设置的导线太细加上转印缺乏经验和腐蚀时间掌握不好,导致板子报废。

第二次制板当然因为第一次制作失败心有余悸,但由于是第二次做,制作程序和小技巧都轻车熟路了,完成了让自己比较满意的电路板的制作,很有成就感。

后期编程同样不顺利。

首先是对整个设计感到很茫然,设想的很简单,可就是不知道从哪里下手。

后来朱老师在课堂上对程序设计思路的讲解提醒了我,可以将整个程序分成多个子程序,这样主程序主要是子程序的调用就变得简洁清楚了。

通过查阅资料和请教同学,我终于理清了整个程序流程,然后着重进行子程序编写。

在写程序的过程中经常会对一些指令功能感到陌生,通过翻阅课本和上网查阅,使我对指令和常用程序的功能有了更清楚的了解。

譬如说十进制调整指令。

在课堂上没听明白,因为在平时编写小程序基本上不用,所以一直也没想要弄清楚。

但在设计过程中必须用到DB指令对要显示的数据进行处理,所以上网把指令的具体操作过程弄清了。

设计过程中,遇到问题就得解决问题。

解决的过程有时兴奋有时烦躁,但解决之后都是特别有满足感的。

参考文献

[1]李广弟,朱月秀,冷祖祁.单片机基础[M].第三版.北京:

航空航天大学出版社,2007.6.

[2]清源计算机工作室.Protel99SE原理图与PCB及仿真.北京:

机械工业出版社,2004

[3]阎石.数字电子技术基础.北京:

高等教育出版社,2006

[4]康华光等.电子技术基础(模拟部分).北京:

辞谢

首先我要感谢我的指导老师朱老师。

上学期他教授我们单片机基础这门课程,他对理论知识清楚细致的讲解让我具备了完成本次课程设计必需的理论基础。

同时他严谨务实,敦促我认真完成每一次作业和实验,这些都为我的设计的顺利完成奠定了基础。

其次我要感谢给予我不同帮助的班上同学们,每次遇到问题都会就近找高手寻求解决,感谢你们的不吝赐教。

很多时候你们都能为我解决疑团和困惑,衷心地觉得,你们真是太强了!

最后,感谢您对拙作的审阅。

附录A

总体电路图

附录B

程序清单

ORG0000H

AJMPMAIN

ORG000BH

LJMPINTT0;

计数器T0中断入口地址

ORG0030H

MAIN:

MOVSP,#60H;

栈顶地址确立堆栈区

MOVPSW,#00H;

选择当前通用寄存器第0组

MOVR0,#20H;

RAM区首地址

MOVR7,#5FH;

RAM区单元个数

QL:

MOV@R0,#00H;

RAM(位寻址区和用户RAM区)清零

INCR0

DJNZR7,QL

MOVIP,#02H

MOVIE,#82H;

中断初始化,

MOVTMOD,#01H;

定时器0工作方式1

LCALLDP;

送P.显示编码

NEXT:

LCALLDISP;

调显示程序

LCALLKEY;

调键扫子程序

JBACC.0,RUN;

A键按下运行

SJMPNEXT

RUN:

LCALLBUF;

调待显数据传送子程序

LCALLTIME;

调电子钟计时准备子程序

JK:

LCALLDISP;

调用显示子程序

按键检测子程序

JZJK

LCALLADJUST;

调键调整子程序

LCALLDISP;

SJMPJK

;

--------------------------------------------------------P点显示编码

DP:

MOV37H,#17;

P点编码送寄存器

MOVR0,#30H

MOVR7,#07H

DP1:

MOV@R0,#16

INCR0

DJNZR7,DP1;

30H~36H灭,37HP.

RET

-----------------------------------------------------键扫子程序

KEY:

LCALLKS;

调“判断有无键按下”子程序

JZEXIT;

没有键按下转到返回

LCALLDISP

LCALLDISP;

调显示去抖动

LCALLKS

JZEXIT

MOVB,A;

保存键值

LK1:

LCALLKS

JZLK2;

键释放,转到恢复键值

LCALLDISP;

调显示子程序延时

AJMPLK1;

继续查询等待键释放

LK2:

MOVA,B;

键值送回累加器返回

EXIT:

RET

KS:

MOVP1,#0FFH;

“判断有无键按下”子程序

MOVA,P1;

P1口值送累加器A

CPLA;

A值取反

ANLA,#0FH;

保存P1口的低4位

RET

-----------------------------------------------------键调整程序

ADJUST:

CLREA;

关中断

CHECK:

JBTR0,JR;

判断是否运行

K0:

CJNEA,#01H,K1

AJMPRUN1;

A键按下转运行

K1:

CJNEA,#02H,K2

AJMPKEY1;

转时调整

K2:

CJNEA,#04H,K3

AJMPKEY2;

转分调整

K3:

CJNEA,#08H,OUT

AJMPKEY3;

转秒调整

JR:

JBACC.0,STOP

AJMPOUT

KEY1:

MOVR0,#45H;

时调整

LCALLADD1

CLRC

CJNEA,#24H,BUF

ACALLCLR0

AJMPBUF

KEY2:

MOVR0,#43H;

分调整

LCALLADD1

CJNEA,#60H,BUF

KEY3:

MOVR0,#41H;

秒调整

ACALLADD1

CJNEA,#60H,BUF

-------------------------------------------显示数据送显示缓冲区

BUF:

MOV30H,40H;

秒显示单元41H-42H

MOV31H,41H;

秒十位

MOV32H,#18;

"

-"

MOV33H,42H;

分显示单元43H-44H

MOV34H,43H

MOV35H,#18;

MOV36H,44H;

时显示单元44-45H

MOV37H,45H

STOP:

CLRTR0;

关电子钟并跳出

RET

RUN1:

LCALLTIME;

运行电子钟

OUT:

SETBEA;

无键按下或完成功能跳出

RET

-----------------------------------------------------电子钟计时准备

TIME:

SETBEA

MOVTL0,#0B0H

MOVTH0,#3CH

MOVR4,#20;

50ms,20次循环

SETBTR0;

启动定时器0

---------------------------------------------------------定时中断

INTT0:

PUSHACC

PUSHPSW

CLRET0

CLRTR0

MOVTL0,#0B0H;

重新设定定时初值

MOVTH0,#3CH

DJNZR4,BUF0;

1秒到

ADDS:

MOVR4,#14H;

20次计数

放置秒十位

ACALLADD1;

加1程序

CJNEA,#60H,ADDM;

1分到

ADDM:

JCBUF0

ACALLCLR0

MOVR0,#43H

加1程序

CJNEA,#60H,ADDH;

1小时到

ADDH:

MOVR0,#45H

CJNEA,#24H,HOUR;

1天到

HOUR:

JCBUF0

BUF0:

MOV30H,40H;

MOV31H,41H

POPPSW

POPACC

SETBET0

RETI

-------------------------------------------------时间清零子程序

CLR0:

CLRA

MOV@R0,A

DECR0

----------------------------------------------------加一子程序

ADD1:

MOVA,@R0;

取十位(存在41H低四位)

DECR0

SWAPA

ORLA,@R0;

组合十位与个位

ADDA,#01H;

加1

DAA;

十进制调整

MOVR3,A;

暂存

ANLA,#0FH;

屏蔽十位

MOV@R0,A;

放入个位单元

MOVA,R3;

取值

INCR0

SWAPA

屏蔽个位

放入十位单元

MOVA,R3;

数值放入A中等待判断

----------------------------------显示子程序显示缓冲区30H~37H

DISP:

PUSHDPH

PUSHDPL

PUSHACC

PUSHPSW

CLRRS1;

改变当前寄存器组为组1

SETBRS0

MOVR1,#30H;

显示缓冲存储单元首地址

MOVR2,#0FEH;

从右至左显示

MOVR5,#08H;

循环次数,即驱动数码管的位数

DISP1:

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A;

送段控

MOVP2,R2;

送位控

LCALLDL;

延时1毫秒

MOVA,R2;

位控码送A

RLA;

获得新的位控码

MOVR2,A;

保存新的位控码

INCR1;

获得新的显示缓冲单元地址

DJNZR5,DISP1;

循环没有结束则继续

POPPSW;

恢复当前寄存器组的组号

POPDPL

POPDPH

DL:

MOVR7,#02H;

延时1ms

DL1:

MOVR6,#0FFH

DL2:

DJNZR6,DL2

DJNZR7,DL1

TAB:

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

显示0-8

DB90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;

显示9,A,B,C,D,E,F,灭,p.,-

END

附录C

PCB图

元器件布局图

附录D

元器件清单

PartType

Designator

Footprint

 

1K

R12

RES

470

RP7

R13

R26

1k

R2

BELL

LS1

2k

R01

CCN2

JX2

JP2

10k

J5

JP9

J1

J2

CCN8

J8

12MHz

Y1

JINZHENG

JP1

22uF

C3

CAPACITOR

JP3

33pF

C1

CAP

JP4

C2

LED

D6

200

R1

D5

R07

D4

R22

D8

R20

D9

R21

D7

R04

D3

R05

D1

R06

D2

R00

LEDJ

1

DIP12

R02

2

R03

PNP

Q49012

RP3

Q39012

RP5

Q69012

RP6

Q59012

RP4

Q29012

R27

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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