毕业设计单片机电子时钟设计Word文档格式.docx

上传人:b****2 文档编号:3741410 上传时间:2023-05-02 格式:DOCX 页数:46 大小:207.11KB
下载 相关 举报
毕业设计单片机电子时钟设计Word文档格式.docx_第1页
第1页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第2页
第2页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第3页
第3页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第4页
第4页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第5页
第5页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第6页
第6页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第7页
第7页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第8页
第8页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第9页
第9页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第10页
第10页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第11页
第11页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第12页
第12页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第13页
第13页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第14页
第14页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第15页
第15页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第16页
第16页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第17页
第17页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第18页
第18页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第19页
第19页 / 共46页
毕业设计单片机电子时钟设计Word文档格式.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计单片机电子时钟设计Word文档格式.docx

《毕业设计单片机电子时钟设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕业设计单片机电子时钟设计Word文档格式.docx(46页珍藏版)》请在冰点文库上搜索。

毕业设计单片机电子时钟设计Word文档格式.docx

确定变成结构和思路

综合各程序完成整体程序

编辑各个程序模块

用Proteus画出电路图

调试程序,进行修改

对仿真中出现的问题进行改正

画出仿真图进行仿真

准备器件、搭接电路

仿真成功

软硬件结合,完成任务书要求

验证硬件电路

成功

进行扩展

图整体设计思路

针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。

如此,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方式,如此既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、按时程序。

运用这种方式,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

3主要元件的利用方式

下面就本次设计顶用到的主要元件的所有功能进行简单的介绍,包括AT89C51单片机、74LS07芯片、和数码管的特性和用法。

AT89C51单片机:

单片机的结构如下:

图单片机引脚图

在使历时VCC接电源电压,GND接地。

P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。

XTAL1和XTAL2接复位电路。

这些能够在硬件设计部份表现出来。

7407驱动器

7407是集电极开路六正相高压驱动器,引脚1入2出,3进4出,5进6出,9进8出,11进10出,13进12出,7接地,14接高电平。

7407引脚图:

图7407引脚图

g

f

a

b

e

d

dp

c

8

7

10

9

6

1

2

3

4

5

数码管:

图数码管

利用共阴极数码管时将6个数码管按相同功能连接起来,3与8相连,当选通端所接管脚为低电平时该数码管选通。

单片机的P2口作为选通端,连接各数码管的3、8引脚轮流显示,连接时要加7407和上拉电阻。

单片机的P1口作为功能段,通高电平的引脚会使相应段亮起,一样的也要与7407和电阻连接利用。

4电路设计

整体设计

这次设计主如果应用单片机来设计电子时钟,硬件部份主要分以下电路模块:

显示电路用六个数码管别离显示小时(年份)、分钟(月份)和秒(日),通过动态扫描进行显示,从而避免了译码器的利用,使电路加倍简单。

单片机采用AT89C51系列,这种单片机应用简单,适合电子钟设计。

电路的整体设计框架如下:

单片机

输入部分

晶振和复位

输出部分

图电路模块图

分块设计

这部份介绍各模块电路的设计方式和功效,主要分为:

输入部份、输出部份、复位和晶振电路。

4.输入部份

在电子钟的输入部份,设置相应的置数功能,通过外部设备的输入,如按键,实现时间的修改。

除此之外,调整闹铃、按时、日期时也需要按键进行输入。

在选用输入端口时,将P3引脚与按键相连进行输入。

设计的输入部份如下:

图输入部份

各按键功能在后面的部份将会介绍到

4.输出部份(显示电路)

该部份电路图如下所示:

图显示部份

在实际电路中采用单个数码管相连进行显示,先把数码管的一、二、4、五、六、7、九、10对应相连,然后把各晶体管的3和8引脚各自相连,~别离接a~g,P2作为选通端~别离从左到右接各数码管的3、8端。

采用动态显示,即一名一名地轮流点亮列位显示器,因此~轮流置0。

持续时刻为1ms,这点在程序部份还会讲到。

4.晶振与复位电路:

图晶振与复位电路

5程序设计

程序思路

初始化

判断按键

显示

按下3键

按下1键

按下2键

若无按键

调时

调闹钟

调定时

显示所调时间

显示闹铃时间

显示定时时间

调整时限到或有其他输入

图程序设计思路

结合电路,程序的整体思路是:

一、点复位键后,进行时刻显示,从0时0分0秒开始。

2、按下按键1时,进行调时,现在按下4调整时,按下5调整分,若2秒钟未按键,则再也不等待,恢复走时,持续按键时大约秒步进1,下同。

3、按下2键时进行闹铃调整,用4、5键别离调时和分,现在只有前四位进行显示,即闹铃功能精准到分,2秒钟无按键则返回时刻显示,时刻抵达闹铃所按时刻时输出高电平,蜂鸣器响,按下按键2或3时蜂鸣器停止。

4、按3键时进行按时的设定,一样,别离通过4、5调整分和秒,若两秒未按键则不进行按时,设定以后再次按下3键则进行倒计时,倒计不时刻未到时若按下1键则进行时刻显示;

若倒计不时刻到则为高电平,蜂鸣器响。

按时的最大值为59分59秒。

程序设计步骤

在程序设计进程中,我碰到了很多困难,这部份也是让我学到很多东西的地方。

第一,我学习了按时器的相关知识,计数器的利用是很重要的组成部份[15],在那个设计当选择计数器T0。

T0的工作方式有:

方式0:

不推荐

方式1:

16位计数器,常常利用

方式2:

自动重装初值的8位按时/计数器

方式3:

T0相当于两个独立的8位按时/计数器

此程序采用方式1,方式1的按不时刻t为t=(216-M)*12/fosc。

其中M为按时器初值,fosc为12MHz,若M为0则t=65536*12/2*106=。

因此可取50ms为计时单位,初值M应为50*10-3*106=216-M。

M=15536=0=3CB0。

即按时器初值为TH0=03CH,TL0=0B0H。

按时器中断20次为一秒,这部份在中断程序顶用到。

第二,我参看了文献中的设计思路,做到胸有成竹后再进行具体的程序书写工作。

认真学习了教科书中关于汇编语言编程的问题,熟悉了汇编语言的编程方式和语法适应。

第三步就是进行具体的程序编写工作。

程序的主要模块

延迟程序

在动态扫描时,必然用到延迟程序,这里利用延迟1ms的程序,此程序需要反复挪用。

D_1MS:

MOVR7,#2

D_5:

MOVR2,#250

DJNZR2,$

DJNZR7,D_5

RET

中断服务子程序

中断服务程序中,整体思路是:

由于初值是3CB0H,所以装满按时器需要50ms的时刻,从而20次中断为一秒,一秒以后,判断是不是到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。

包括日期显示的功能也是如此。

另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄放器,需要时将其进行显示。

基于以上考虑,以R3为倒计时中的秒,R4为倒计时的分,当秒加1时R3减一,减到0以后,秒赋值为59,分减一,直到分为0。

再显示走时部份。

流程框图如下:

给T0赋值

中断20次

R3赋值为60

分=0,秒=0,时加一

秒加一

R3、R4都为0时倒计时结束,蜂鸣器响,显示走时状态

秒=60

Y

秒=0时加1

N

时=24

分=60

分=0,秒=0,时=0

返回

R3=0

R3、R4减一

图中断程序思路

主程序

主程序主要对按键进行扫描,和判断按时和闹铃时刻是不是已到,若到则挪用声音程序,该段程序如下:

MAIN:

JNB,DATETZ;

按下0键时,显示日期并可对日期进行调整

JNB,ZSTZ1;

按下1键时,显示时刻,并可调时

JNB,NLTZ1;

按下2键进行闹铃设置

JNB,DSTZ;

按下3键进行按时设置

ACALLDISP;

MOVA,HOUR;

SUBBA,38H;

JZFEN;

AJMPDSPD2;

FEN:

MOVA,MINUTE;

SUBBA,37H;

JZSHENGYIN1;

DSPD2:

MOVA,R4;

JZS_PD;

AJMPMAIN;

S_PD:

MOVA,R3;

显示程序

6个晶体管轮流进行显示,别离显示1ms,这依赖的是人们视觉的惰性,该段程序如下:

DISP:

;

走时的显示程序,包括调不时的显示

MOVDPTR,#LEDTAB

MOVA,SECOND

MOVB,#10

DIVAB;

A存十位B存个位

MOVCA,@A+DPTR

MOVP1,A

CLRSEC_S

ACALLD_1MS;

显示秒十位

SETBSEC_S

MOVA,B

CLRSEC_G

显示秒个位

SETBSEC_G

……

以此类推,进行时和分的显示

另外,调闹铃和按不时刻、进行日期显示时,有各自的显示程序,但不能成为独立子程序,别离柔和在闹铃、按时、和日期程序中。

闹铃程序和按时程序

这两段程序别离包括了各自的显示、调整程序。

程序思路是对照,走时部份的程序,进行编写,包括显示程序,与显示时刻的程序是相似的,闹铃和按时的调整程序与走时调整程序相似。

程序调试

程序写完以后必需进行调试,以验证程序是不是正确。

在程序调试时,出现了很多问题,比如跳转距离太长、打错字母、逻辑有错等,发觉问题后,利用两天时刻进行了更正,但即便编译通过,最后也不必然能够实现功能。

以为程序的调试只能检查出语法错误,而不能检查出逻辑的错误。

要真正把程序写对,要通过仿真发觉而且更正错误。

6功能仿真

这部份工作可能碰到的困难是很多的,程序庞大极可能出现各类问题。

在仿真工作中,第一要对仿真软件有足够的了解并能够正确熟练地运用

软件介绍

在这部份工作顶用到了medwin3和Proteus两个软件,其中Medwin3用来编译程序并生成hex文件,装入Proteus仿真图的芯片中,通过仿真结果一步步进行调整最后达到预期的功能。

仿真进程:

仿真图的绘制

在利用Proteus进行仿真时,仿真图不用画出数码管驱动程序,其他部份与设计的硬件图相仿。

绘制结果如下:

图仿真图

功能的实现

在绘制仿真图以后,要向单片机装入程序,从而使单片机开始工作并带动整个电路工作,装入进程为:

点击单片机,选择所编译程序的输出hex文件,肯定即可。

现在单片机缘依照程序所设定的功能进行工作,在仿真进程中会碰到各类问题。

这里列出仿真结果:

(1)走时仿真:

图走时状态下的仿真结果

(2)闹钟设定的仿真:

图闹铃仿真结果

可见所定闹钟时刻为10点15分。

(3)按时钟倒计时的仿真:

图倒计时仿真

可见,倒计时进行到3分3秒。

7日历功能的实现

在设计的开始阶段,我主要考虑了日期的逻辑算法。

第一,要考虑年份是不是闰年,闰年的判断方式是:

将年份除以100,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;

若不能被100整除,则判断是不是能被4整除,若能,则为闰年,若不能则为平年。

只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。

其中一、3、五、7、八、10、12月是每一个月31天,4、六、九、11月为每一个月30天。

在电路方面:

用按键的输入决定6个数码管显示日期仍是时刻,按键控制为:

按下1键时,显示日期,而且用4、五、6键别离调全年、月、日;

按下2键时,进行走时和时刻调整;

3键位闹铃键;

4键为按时键。

程序思路如下:

年份能否被100整除

年份是否能被4整除

年份是否能被400整除

平年

闰年

是不是2月

日>

=28之后返回为1

=29之后返回为1

若月份为1、3、5、7、8、10、12月则调用31天的程序

若月份为4、6、9、11则调用30天的程序

图扩展部份思路

按键形式:

图按键图示

结论

通过对数字时钟的设计,加倍深了对单片机功能的了解和各个模块程序的挪用,编程。

在实物设计时候碰到了更多的问题,比如芯片的质量问题不能取得保证。

由于用全能电路板搭建,飞线数量特别多,整个实物给人的印象十分复杂,在焊接的进程中不免出现各类错误,通过等的帮忙,最终实现了部份功能,在此对他们真挚的感激

附录完整程序

HOU_SBIT;

第一个数码管

HOU_GBIT;

第二个数码管

MIN_SBIT;

第三个数码管

MIN_GBIT;

第四个数码管

SEC_SBIT;

第五个数码管

SEC_GBIT;

第六个数码管

DAYEQU39H;

日期

MONTHEQU3AH;

月份

YEAREQU3BH;

年份

SECONDEQU30H;

MINUTEEQU31H;

HOUREQU32H;

TIM_1EQU33H;

TIM_2EQU34H;

ORG0000H

LJMPCHUSHI

ORG000BH

LJMPTIMER0

ORG30H

CHUSHI:

MOVSECOND,#0;

MOVMINUTE,#0;

MOVHOUR,#0;

时刻的初值为000000

MOVDAY,#1;

MOVMONTH,#1;

MOVYEAR,#1;

日期的初值为000000

SETBHOU_S;

SETBHOU_G;

SETBMIN_S;

SETBMIN_G;

SETBSEC_S;

SETBSEC_G;

初始状态为1,都不显示

MOVR0,#0;

MOVR1,#12;

闹铃初始化

MOVR3,#0;

MOVR4,#1;

存储按不时刻,点击按时开始后,从所存时刻开始倒计时

MOVR5,#0;

MOVR6,#0;

设定按不时刻所用寄放器

MOV38H,#12;

MOV37H,#0;

存储所定闹铃,以便判断是不是闹铃时刻到

CLR;

MOVTIM_1,#10;

执行完后经历秒

MOVTIM_2,#2;

执行完后经历1秒

ANLTMOD,#0F0H

ORLTMOD,#01H;

按时器0为模式1

MOVTH0,#03CH

MOVTL0,#0B0H;

装入初值

SETBET0;

SETBTR0;

SETBEA;

允许中断

挪用显示程序

FMQPD:

判断按时是不是到零、闹铃时刻是不是已到

MOVA,HOUR;

SUBBA,38H;

判断时是不是到闹铃所按时刻,若到,则对分进行判断,若不到,则对按时进行判断

AJMPDSPDKQ

MOVA,MINUTE;

SUBBA,37H;

时和分都到闹铃时刻则蜂鸣器响

DSPDKQ:

判断是不是应该进行按不时刻的判断

MOVA,3CH;

3CH是引入的判断因子,当其为0时不对按不时刻是不是到0进行判断,从而不开启蜂鸣器

JNZDSPD2;

当3CH不是0时,跳转到按时判断程序

AJMPMAIN

MOVA,R4;

MOVA,R3;

DSTZ:

AJMPDSTZ1;

DATETZ:

AJMPDATETZ1;

SHENGYIN1:

MOV3CH,#1

SETB

ZSTZ1:

MOV35H,#60;

MOV36H,#10;

ZSTZ2:

DJNZ35H,ZSTZ2;

JNB,H_T;

JNB,M_T;

DJNZ36H,ZSTZ2;

H_T:

INCHOUR;

CJNEA,#24,ZSTZ1;

AJMPZSTZ1;

M_T:

INCMINUTE;

CJNEA,#60,ZSTZ1;

NLTZ1:

DEC38H

MOV35H,#100;

NLTZ2:

ACALLONE;

ACALLTWO;

DJNZ35H,NLTZ2;

JNB,NLXS2;

JNB,NLXS1;

DJNZ36H,NLTZ2;

NLXS1:

MOVDPTR,#LEDTAB;

INCR0;

MOV37H,R0;

CJNER0,#60,NLTZ2;

AJMPNLTZ2;

ONE:

MOVA,R0;

MOVB,#10;

MOVCA,@A+DPTR;

MOVP1,A;

CLRMIN_S;

MOVA,B;

CLRMIN_G;

SETBMIN_G

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2