单片机课设电子闹钟设计.docx

上传人:b****6 文档编号:6580073 上传时间:2023-01-08 格式:DOCX 页数:20 大小:341.75KB
下载 相关 举报
单片机课设电子闹钟设计.docx_第1页
第1页 / 共20页
单片机课设电子闹钟设计.docx_第2页
第2页 / 共20页
单片机课设电子闹钟设计.docx_第3页
第3页 / 共20页
单片机课设电子闹钟设计.docx_第4页
第4页 / 共20页
单片机课设电子闹钟设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单片机课设电子闹钟设计.docx

《单片机课设电子闹钟设计.docx》由会员分享,可在线阅读,更多相关《单片机课设电子闹钟设计.docx(20页珍藏版)》请在冰豆网上搜索。

单片机课设电子闹钟设计.docx

单片机课设电子闹钟设计

一概述

1.1 课程设计的目的和意义

 本文是利用AT89C51单片机结合七段显示器设计一个简易的定时闹铃时钟,可以放在计算机教室或是实验室中使用,由于用七段显示器显示数据,在夜晚或黑暗的场合中也可以使用。

可以设置现在的时间及显示闹铃设置时间,若时间到则发出一分钟闹铃响。

本课程设计主要用到AT89C51单片机定时器时间计时处理、按键扫描及七段显示器扫描的设计方法等等。

闹钟与我们的日常生活密不可分,通过闹钟的设计可以使我们进一步熟悉和掌握单片机的内部结构和工作原理,掌握单片机仿真软件Proteus的使用方法。

1.2课程设计所需元件

AT89C51×1,8255A×1,7SEG-MPX6-CC×1,AVX0402NPO33P×2,CRYSTAL×1,3WATT10K×3,BUTTON×3,10WATT1K×8,74LS00×1,SOUNDER×1,MINRES300R×1,SW-SPDT×1。

1.3设计任务

在熟练掌握单片机及其仿真系统的使用方法的基础上,综合应用单片机原理,微机原理,微机接口技术等专业知识,设计采用一个AT89C51单片机控制的定时闹钟。

二系统总体方案及硬件设计

2.1总体设计框图

该数字定时闹钟是由AT89C51单片机控制的,采用24小时制计时。

基于单片机的数字定时闹钟在设计时需要解决三个方面的主要问题:

一是LED显示模块的驱动和编程,二是有关单片机中定时器的使用,三是如何利用单片机的外中断实现时钟功能和运行模式的转化。

数字定时闹钟系统框图如图一所示,包括主电路和显示电路两大部分。

2.2主电路

主电路图如图三所示。

该电路使用P3端口的P3.0端口线实现整点报时功能;同样使用P3端口的P3.0端口实现闹钟功能。

整点报时信号用SOUNDER来模拟。

当整点时,P3.0端口所接的SOUNDER闹一分钟。

图二中的开关K4用于闹钟控制。

当K4=1时(开关处于ON的位置),打开闹钟,使之在预定时间起闹;当K4=0时(开关处于OFF的位置),则关闭闹钟。

另外,在闹钟响起时,K4也可以作为止闹开关使用,若不止闹,则闹一分钟。

闹钟信号也是用SOUNDER来模拟的。

按键Kl、K2、K3以及开关K5、K6的定义如表一所示。

 

表一按键功能

按键

键名

功能

K5

校时键

进入校时状态

K6

闹钟校时键

进入闹钟校时状态

K3

转换键

校分后切换到校时

校时后切换到时钟状态

闹钟校分后切换到校时

闹钟校时后切换到时钟状态

K1

+

校分或校时的时候使其加1递增

K2

-

校分或校时的时候使其减1递减

本设计采用的AT89C51单片机是ATMEL89系列单片机。

ATMEL89系列单片机是ATMEL公司的8位Flash单片机系列。

89系列单片机是以8031为核心构成的,它和8051系列单片机是兼容的,其最大特点是片内含有Flash存储器。

其功能特点为:

(1)由于内部含有Flash存储器,因此在系统的开发过程中可以十分容易地进行程序的修改,大大地缩短了系统的开发周期。

同时,在系统工作过程中,能有效地保存一些数据信息,即使外界电源损坏也不影响信息的保存。

(2)89系列单片机的端子和8051系列是一样的,因此,当89系列单片机取代8051系列单片机时,可以直接进行代换。

(3)89系列单片机采用静态时钟方式,可以节省电能。

这对于降低便携式产品的功耗十分有用。

(4)一般的OTP产品,一旦错误编程就成了废品。

而89系列单片机内部采用了Flash存储器。

所以,错误编程之后仍可以重新编程,直到正确为止,因此不存在废品。

(5)用89系列单片机设计的系统,可以反复进行系统试验。

每次试验可以编入不同的程序,这样可以保证用户的系统设计到最优。

而且随着用户的需要和发展,还可以进行修改,使系统能不断追随用户的最新要求。

AT89C51单片机的结构与8051系列基本相近,片内有128B的RAM,有6个中断源,有片内振荡器,只是片内有一个4KB的Flash存储器,输出端子和指令系统都与8051系列兼容。

其引脚功能见上图

AT89C51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式,即空闲方式和掉电方式。

在空闲方式中,CPU停止工作,而RAM、定时器计数器、串行口和中断系统都继续工作。

在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬单片机选择AT89C51,时钟系统通过将XTAL1与XTAL2分别接1u的电容,并将一晶振与两电容分别并联最后引出接地。

复位电路通过引脚RST接出,此系统采用上电加按钮电平复位方式。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效将EA接高电平作为掉电保护,P0、P1、P2、P3分别与外围器件相连。

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

三软件系统设计

3.1软件设计说明

数字定时闹钟的秒信号是利用单片机定时器T0产生的。

由于开发机的晶振频率为6MHz,使得T0的最大定时时间远远小于1秒,因此,在设计时采用了硬件计数与软件计数相结合的方式。

即通过T0产生一定的定时时间,然后再利用软件进行计数,从而产生1秒钟的时间信号。

在设计中,定时器T0采用了中断方式。

当定时时间到时,单片机产生中断,在T0的中断服务程序中实现时、分、秒的累加。

并且,该中断的优先级别高于其它中断,因此,保证了定时闹钟走时准确。

在设计中,利用外部中断0和外部中断1分别作为校时和闹钟校时按键的触发输入。

当需要校时时,拨动K5或K6开关,便产生外部中断,进入相应的中断服务程序。

在外部中断0和外部中断1的中断服务程序中,都只有一条“表示有按键”的标志位置1的指令,然后在主程序中用查询标志位的方式判断是否有键按下。

若查得标志位为1则进入校时子程序进行校时处理;若为0则照常进行时间显示。

当拨动K5开关时,进入校时状态,用户可以方便地校准时间。

当拨动K6开关时,便进入闹钟校时状态,这时,可以根据需要设置起闹时间。

在闹钟校时期间,时钟继续计数,即闹钟校时不影响时钟走时。

3.2定时闹钟程序流程图

合理的软件结构是设计出一个性能优良的单片机应用系统的基础,根据系统的定义,可以把整个工作分解为若干个相对独立的操作,采用模块化的设计方法,它具有便于设计和调试、容易完成、可供多个程序共享等优点。

程序设计中重新设置初值时一开始设为#0ACH,后来发现数字定时闹钟走时有点慢,所以改为#0ACH。

设计写显示数据段码程序时,向28H送的值一开始定为#1,发现LED有闪烁现象,所以后来定为#2。

8255A的控制字为80H。

数字定时闹钟的主程序流程图如图六所示,校时子程序如图七所示。

编写程序如下:

ORG0000H

LJMPMAIN

ORG0003H

SETBPSW.5

NOP;外部中断INT0,校时

RETI

ORG000BH;定时器T0,定时0.1秒中断

LJMPCLOCK

ORG0013H;外部中断INT1,闹钟校时

SETB7FH

RETI

ORG0030H

MAIN:

MOVSP,#60H

MOVTMOD,#01H;设置T0为定时器,方式1工作

MOVIE,#87H

SETBPT0;T0优先中断

MOVTL0,#0B7H;T0设置初值

MOVTH0,#3CH

MOV20H,#00H;清内存单元

MOV21H,#00H

MOV22H,#00H

MOV23H,#00H

MOV50H,#06H

MOV51H,#28H

MOV52H,#00H

MOVDPTR,#0300H;8255控制字

MOVA,#80H

MOVX@DPTR,A

CLRPSW.5;清标志位

CLR7FH

SETBTR0

SETBIT0

SETBIT1

CLRP3.0;闹钟关

SS:

LCALLCUTIN0

LCALLSSCAN

JNBPSW.5,LK

LCALLKEY0

LK:

JNB7FH,SS

LCALLKEY1

SJMPSS

CUTIN0:

PUSHPSW;显示单元译码

PUSHAcc

MOV25H,R0

MOVR0,#79H

MOVA,22H;秒单元

ACALLBCD

MOVA,21H;分单元

ACALLBCD

MOVA,20H;时单元

ACALLBCD

MOVR0,25H

POPAcc

POPPSW

RET

CUTIN1:

PUSHPSW;校时或闹钟小时显示单元译码

PUSHAcc

MOV25H,R0

MOVR0,#79H

MOVA,42H;秒单元

ACALLBCD

MOVA,41H;分单元

ACALLBCD

MOVA,40H;时单元

ACALLBCD

MOVR0,25H

POPAcc

POPPSW

RET

BCD:

MOVB,#0AH;十进制调整,转BCD码

DIVAB

MOV@R0,B

INCR0

MOV@R0,A

INCR0

RET

CLOCK:

JNBPSW.5,ZC;定时器T0中断

LJMPFH

ZC:

MOVTL0,#0B7H;重新设置初值

MOVTH0,#0ACH

PUSHPSW

PUSHAcc

INC23H

MOVA,23H

CJNEA,#10,RET0;一秒钟到了吗

MOV23H,#00H

INC22H

MOVA,22H

CJNEA,#60,RET0;一分钟到了吗

MOV22H,#00H

CLRP3.0

INC21H

MOVA,21H

CJNEA,#60,RET0;一小时到了吗

MOV21H,#00H

INC20H

MOVA,20H

CJNEA,#24,RET0;24小时到吗

MOV20H,#00H

RET0:

MOVA,21H

CJNEA,51H,B0;起闹时间,分相等吗

MOVA,20H

CJNEA,50H,B0;时相等吗

SETBP3.0;闹钟开

B0:

POPAcc

POPPSW

FH:

RETI

SSCAN:

MOVR1,#79H;显示子程序,显存起始地址

MOVR3,#06H;六位LED数码显示

MOV26H,#0FEH

DISP:

MOVA,#0FFH

MOVDPTR,#0100H

MOVX@DPTR,A

MOVDPTR,#0000H

MOVA,@R1

LCALLTABLE

MOVX@DPTR,A;写显示数据段码

MOVDPTR,#0100H

MOVA,26H

MOVX@DPTR,A

MOV28H,#2

D1MS:

MOV27H,#250

DJNZ27H,$

DJNZ28H,D1MS

RLA

MOV26H,A

INCR1

DJNZR3,DISP

MOVX@DPTR,A

RET

TABLE:

ADDA,#1

MOVCA,@A+PC

RET

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

KEY:

MOV42H,#00H;键盘扫描子程序

A0:

ACALLDELAY

MOVP1,#0FFH

JBP1.3,JJ1

INC41H

MOVR2,41H

CJNER2,#3CH,A1

MOV41H,#00H

A1:

ACALLDELAY

JNBP1.3,A1

SJMPA0

JJ1:

JBP1.4,ZHJ

DEC41H

MOVR2,41H

CJNER2,#0FFH,A2

MOV41H,#3BH

A2:

ACALLDELAY

JNBP1.4,A2

SJMPA0

ZHJ:

JBP1.5,A0

ACALLDELAY

JNBP1.5,ZHJ

SSR:

ACALLSSCAN

JBP1.3,JJ2

INC40H

MOVR2,40H

CJNER2,#18H,A4

MOV40H,#00H

A4:

ACALLDELAY

JNBP1.3,A4

SJMPSSR

JJ2:

JBP1.4,ZHH2

DEC40H

MOVR2,40H

CJNER2,#0FFH,A5

MOV40H,#17H

A5:

ACALLDELAY

JNBP1.4,A5

SJMPSSR

ZHH2:

JBP1.5,SSR

ZHH3:

ACALLDELAY

JNBP1.5,ZHH3

ACALLSSCAN

RET

KEY0:

ACALLSSCAN

JBP3.2,JZD

MOV41H,21H;校时

MOV40H,20H

CLRTR0

ACALLKEY

MOV22H,42H

MOV21H,41H

MOV20H,40H

MOVTH0,#0BCH

JZD:

CLRPSW.5

SETBTR0

RET

KEY1:

MOV41H,51H;闹钟校时

MOV40H,50H

ACALLDELAY

JBP3.3,JZD2

LCALLKEY

MOV51H,41H

MOV50H,40H

JZD2:

CLR7FH

RET

DELAY:

PUSHAcc;延时子程序

LCALLCUTIN1

LCALLSSCAN

POPAcc

RET

END

四Proteus和keil软件仿真

4.1注意事项

在Proteus7.4ISIS中进行放置元件、设置电路参数、连接各元件,经几次修改布线错误,画出数字定时闹钟总电路,并进行ERC检查。

然后加载用keil编译生成的A.HEX进行功能测试,仿真。

在仿真时注意不能用那种没有仿真功能的元器件。

比如SOUNDER,要用可以驱动发声的那种,而不能随便选用。

要注意本设计用的是7段共阴极LED数码管的驱动芯片。

在放置六位数码管LED时要选择7SEG-MPX6-CC(共阳极)而不是7SEG-MPX6-CA(共阴极)。

Keil软件是一款程序编辑软件,是目前最流行开发MCS-51系列单片机的软件,通过一个集成开发环境(uVision)将这些部份组合在一起。

运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统,本实验中需要将Proteus和keil联调,在keil上输入程序,编译并运行正确,然后将其下载到Proteus中,配合其电路图进行仿真。

4.2仿真步骤

(1)首先在Proteus上连接实验所需的电路,如下图:

 

(2)在keil上输入程序,并运行

程序正确后。

,下载到Proteus中,然后电路就可以运行了。

(3)单机Proteus中的

键,电路便开始工作了,如下图:

接下来是如何调节时间和闹钟。

(4)下面得三个开关K4、K5、K6打到左边电源边,点击开始按钮仿真,闹钟从零走时

K5打到右边接地边,点K1校分加1分,点K2校分减一分。

单击K3重新开始计时,使K3转为校时,每点K1一次计时加1小时,点K2一次计时减一小时

点K3回到时钟状态,从秒开始计时

K5打到左边电源边,K6打到右边接地边,点K1闹钟校分加1,点K2闹钟校分减1。

点K3转到闹钟校时,点K1闹钟时加1,点K2闹钟时减1

K4打到右边接地边,停止闹钟

五课程设计体会

时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机综合课程设计也在终于完成。

俗话说“好的开始是成功的一半”。

说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。

其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。

最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。

虽然这次的课程设计算起来在实验室的时间只有十六个小时,不过因为我们都有自己的电脑,所以在宿舍里做实验的时间一定不止这短短的十六个小时。

软件的编程也要我们不断的调试,由于没有方便的电路板,只能用仿真软件去仿真,当看到自己的课设有了结果的时候,我差点从床上跳起来,太兴奋了,虽然只是六个不断变换的数字,可是它背后包含的许多东西,不是几句话就能说清楚的。

当然,这其中也有很多问题,第一、由于对课本理论的不熟悉导致编程出现错误。

第二,是在学习态度上,这次课设是对我的学习态度的一次检验。

对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。

我们这次实习所遇到的多半问题多数都是由于我们不够严谨。

第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。

通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。

在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。

还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。

并且我们熟练掌握了有关器件的性能及测试方法。

再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。

课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。

参考文献

[1]冯育长.单片机系统设计与实例分析.西安电子科技大学出版社,2007,5

[2]何立民.单片机应用技术选编8.北京:

北京航空航天大学出版社,2000,10

[3]余发山.单片机原理及应用技术.中国矿业大学出版社,2003,21-30

[4]张迎新编著.单片微型计算机原理应用及接口技术.北京:

国防工业出版社,1993.67-89

[5]杨刚,周群.电子系统设计与实践.电子工业出版社.2004:

18-23341-347118-122

[6]涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:

86-87146-147

 

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

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

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

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