基于单片机的数字电子钟.docx

上传人:b****8 文档编号:10041620 上传时间:2023-02-08 格式:DOCX 页数:22 大小:263.43KB
下载 相关 举报
基于单片机的数字电子钟.docx_第1页
第1页 / 共22页
基于单片机的数字电子钟.docx_第2页
第2页 / 共22页
基于单片机的数字电子钟.docx_第3页
第3页 / 共22页
基于单片机的数字电子钟.docx_第4页
第4页 / 共22页
基于单片机的数字电子钟.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于单片机的数字电子钟.docx

《基于单片机的数字电子钟.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电子钟.docx(22页珍藏版)》请在冰豆网上搜索。

基于单片机的数字电子钟.docx

基于单片机的数字电子钟

 

《单片机原理及应用》

课程设计报告

 

课题名称:

基于单片机的电子钟的设计

姓名:

石有霞

院系:

应用技术学院

专  业:

07电子信息工程(仪器仪表)

学号:

200715190125

指导教师:

谢辉

 

完成时间:

2009年12月28日

目录

摘要…………………………………………………………………...............................1

第一章方案论证………………………………………………………………..............2

1.1设计目的……………………………………………………………………................2

1.2设计任务……………………………………………………………………………....2

1.3设计思路……………………………………………………………………………....2

1.3.1方案论证……………………………………...………………………………...…….2

1.3.2芯片的选择…………………………………………………………………………...2

1.3.3显示模块选择方案和论证…………………………………………………...............2

1.3.4时钟信号的选择方案和论证………………………………………………………...2

1.3.5最终方案决定………………………………………………………………………...2

第二章硬件系统的设计……………………………………………………………….3

2.174LS164相关的参数和功……………………………………………………….........3

2.1.174LS164的管脚图………………………………………………………………......3

2.1.274LS164逻辑符合表………………………………………………………………..4

2.1.3芯片功能……………………………………………………………………………..4

2.2七段数码管....................................................................................................................4

2.2.1LED数码管简介…………………………………………………………………….4

2.2.2常见LED数码管的外形及内部结构........................................................................5

2.3AT89C51.......................................................................................................................5

2.3.1AT89C51的原理及说明.............................................................................................5

2.3.2主要性能参数..............................................................................................................6

2.3.3引脚功能......................................................................................................................6

2.4PCB图........................................................................................................................7

第三章软件系统的设计................................................................................................8

第四章系统调试............................................................................................................10

4.1软件调试........................................................................................................................10

4.2硬件调试........................................................................................................................10

第五章设计心得.............................................................................................................11

第六章参考文献.............................................................................................................12

附录.......................................................................................................................................12

基于电子数字时钟的设计

重庆三峡学院应用技术学院石有霞

摘要

数字钟是对.年、月、日、时、分、秒,数字显示及到时提醒的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便。

最常见的数字钟通常使用单片机模块控制,一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

本次设计就是通过用单片机为主控制,通过电路仿真而实现。

首先使用Proteus7Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生成hex文件,传入单片机内部,从而实现仿真效果。

此次设计的多功能数字时钟具有显示时、分、秒及对时间的调整、校正功能,界面简洁、直观、易于操作。

关键词:

数字钟、仿真、单片机

第一章方案论证

1.1设计任务

(1)根据具体题目要求,设计以单片机为控制核心的测量系统或控制系统,完成对指定目标或对象的测量及控制。

(2)设计单片机与测量及控制对象的接口并进行硬件调试。

(3)针对要求测量或控制的对象完成程序的编制。

(4)硬件软件联调,完成题目所要求的功能。

(5)设计能支持时、分、秒的时钟,时钟要具有时间调整功能。

1.2设计目的

(1)通过课程设计,使我们能够深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力。

(2)使用AT89C51芯片的串口功能,利用六片8位并行输出串行移位寄存器74LS164,实现时,分,秒的显示。

(3)用keil软件进行编程与调试,利用Proteus7Professional软件进行绘制硬件电路图且进行仿真。

1.3设计思路

1.3.1方案论证

本时钟的设计具体有两种方法。

一是通过单纯的数字电路来实现;二是使用单片机来控制实现。

本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。

以下是我在这次设计中所用的方案。

1.3.2芯片的选择

采用AT89C51芯片,其为高性能CMOS8位单片机,该芯片内含有4kbytes的可反复擦写的只读程序存储器(PEROM)、128bytes的随机存取数据存储器(RAM)、32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式。

因此,我们选用AT89C51。

1.3.3显示模块选择方案和论证

采用LED数码管显示,显示较为清楚直观,便于观察和调试

1.3.4时钟信号的选择方案和论证

直接采用单片机定时计数器提供的秒信号,使用程序实现时、分、秒计数。

采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小。

1.3.5最终方案决定

综上方案所述,对此次数字时钟的方案选定为:

采用AT89C51通过串行输出静态显示作为主控制系统,来实现时、分、秒的显示。

电路原理图如下:

注:

由于采用数码管显示,电路图中涉及到的连线比较多,故通过引脚标示,相同的引脚表示两个管脚相连。

 

第二章硬件系统的设计

2.174LS164相关的参数和功能:

2.1.174LS164的管脚图:

74ls164是一个串入并出的8位移位寄存器,它常用于单片机系统中,其主要电特性的典型值如下:

54/74164185mW54/74LS16480mW

引脚功能:

CLOCK:

时钟输入端

CLEAR:

同步清除输入端(低电平有效)

A,B:

串行数据输入端

Q0-Q7:

输出端

2.1.274LS164逻辑符合表:

2.1.3芯片功能

当清除端(CLEAR)为低电平时,输出端(Q0-QH7)均为低电平。

串行数据输入端(A,B)可控制数据。

当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。

当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。

1.串行输入带锁存2.时钟输入,串行输入带缓冲

3.异步清除4.最高时钟频率可高达36Mhz

5.功耗:

10mW/bit6.74系列工作温度:

0°Cto70°C

7.Vcc最高电压:

7V8.输入最高电压:

7V

9.最大输出驱动能力:

高电平:

-0.4mA,低电平:

8mA

2.2七段数码管

2.2.1LED数码管简介

LED数码管是由发光二极管构成的,亦称半导体数码管。

将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。

若按规定使某些笔段上的发光二极管发光,就能显示从0~9的…系列数字。

它具有:

体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。

2.2.2常见LED数码管的外形及内部结构

图1(b)属于共阳极结构,图1(c)采用共阴极结构。

+、一分别表示公共阳极和公共阴极。

a~g是7个笔段电极,DP为小数点

2.3AT89C51

2.3.1AT89C51的原理及说明

AT89C51是美国Intel公司生产的低电压,高性能CHMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和蔼可亲128bytes的随机存取数据存储器(RAM),器件采用Intel公司的高密度、非易失性存储技术生产,片内置通用4位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机适合于许多较为复杂控制应用场合。

AT89C51引脚图

2.3.2主要性能参数:

与MCS-51产品指令和引脚完全兼容

4k字节可重擦写Flash闪速存储器

1000次擦写周期

全静态操作:

0Hz—24MHz

三级加密程序存储器

128×8字节内部RAM

32个可编程I/O口线

2个16位定时/计数器

5个中断源

可编程串行UART通道

低功耗空闲和掉电模式

2.3.3引脚功能

Vcc(40):

电源电压GND(20):

接地

P0口(32-39):

P0口是一个8位双向I/O接口,也即地址/数据总线复用口。

作为输出口用时,每位吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用。

P1口(1-8):

P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”通过内部的上拉电阻把端口拉到高电平时,此时可作输入口。

作为输入品使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。

RST(9):

复位信号输入端。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG(30):

地址锁存有效信号输出端。

当访问片外程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节,一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的,要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

XTAL1(19):

振荡器反相放大器的及内部时钟发生器的输入端。

XTAL1(18):

振荡器反相放大器的输出端。

通过XTAL1、XTAL2外接晶振后,即可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。

2.4PCB图

此次单片机数字时钟的设计采用AT89C51为主控制芯片,并由其定时器提供时钟,利用七段数码管进行时间显示。

PCB图顶层:

PCB图底层:

第三章软件系统的设计

主程序:

显示子程序:

 

定时中断子程序:

第四章系统调试

4.1软件调试

1.双击桌面“KeiluVision3”快捷方式图标,打开KeiluVision3IDE。

单击菜单“Project->NewProject”后,出现对话窗口,在对话框内选择工程目录,并将此工程命名为“CLOCKJT.uv2”,点击保存。

2.在建立工程以后,还应该为工程选择合适的目标器件选择目标器件方法为:

点击菜单“Project->SelectDeviceforTargect”,弹出对话框,我们选择AT89C51。

选择目标器件完毕后可以看到在Project窗口出现了一个Target1的工程点,右击Target1,选择“OptionsforTarget‘Target1’”,在弹出的对话框单击Output,勾选CreateHEX复选框。

该目录里面还会有“SourceGroup1”的分组名,可以在该组下放置源程序文件。

用鼠标右键点击“SourceGroup1”,在弹出的菜单中选择“AddfilestoGroupSourceGroup1”。

在弹出的对话窗口中选择待添加的程序文件,点击“Add”即可将此文件增加到源文件组内,点击“Close”返回。

如要增加新文件到文件组“SourceGroup1”,要先使用菜单“File->New”建立文件名为“CLOCKJT.ASM”(源程序见附录),再进行“添加程序文件”。

3.编译和连接:

右击Target1,选择BuildTarget,此时将在OutputWindow显示编译连接的结果,若有错,单击错误提示即可在源程序里定位错误的位置,修改完毕,再次编译,知道没有错误为止,编译连接正确后,会生成“CLOCKJT.HEX”文件。

4.调试:

点击菜单Debug->Start/StopDebugSession将进入调试状态,单击Peripheral->Serial;单击Peripheral->Timer->Timer0。

在Keil中有以下几种运行方式:

(1)Run全速运行遇到断点停下或用户按动Stop按钮或RSTCPU按钮停止。

(2)Stepinfo单步跟踪运行一条指令,如果该语句为C中的调用子程序语句或汇编中的CALL指令,Stepinfo指令将跟踪进入子程序内部。

(3)Stepover单步运行完一条指令,如果该语句为C中的调用子程序语句或汇编中的CALL指令,Stepover指令将全速完成该子程序的运行,停在下一指令处。

(4)RuntillCursorLine从当前位置运行到光标处。

4.2硬件调试

打开Proteus7.5Professional软件,按照方案所选的电路元件来设计整体电路,线把个芯片按一定的位置放好,然后对相应的对象进行连接,连接时需仔细,以免调试时发生错误。

做好之后把编程所生成的。

HEX文件加载到AT89C51中,运行仿真软件,查看运行效果。

如果运行出错那么就根据他相应的提示来修改错误,直到仿真成功为止。

打开Topwin软件,装载CLOCKJT.HEX,通过编程器将该文件烧写入AT89C51中。

将AT89C51插入实验仪相应的插座上,在实验仪上按照电路原理图连线。

打开电源,观察数码管的变化。

第五章设计心得

通过两个星期的课程设计,我的理论知识和动手能力在一定程度上都得到了提高,也学到很多新知识。

此次实训主要是让我们进一步深入理解单片机系统的工作原理,对接口电路的设计及调试方法;理论联系实际,结合专业知识来分析解决问题;掌握用单片机进行实际产品开发的基本过程,加强模块化设计思想的培养,增加对专业的兴趣,从而为我们以后的工作打下基础。

课程设计中最主要的部分就是程序。

对于单片机我们都还是初学者,只懂得一点最基本的东西,对更深层次的理解还有一定的困难,因此程序是在老师的帮助下完成的,大部分都是老师给我们写的,我们主要是读懂程序,理解程序的运行过程,进而分析电子钟是如何工作的。

时、分、秒的加1程序段比较难理解,分和秒是在计数到59的时候加1,而时则是计数到23的时候就清零,故在设计程序的时候一定要注意到这一点。

显示子程序这部分也有一定的难度。

实验箱上只有四位数码管,而设计要求是六位,故在实验箱上验证的时候要对程序进行修改,主要就是将显示位数改为四位,这一点在主程序和显示子程序上都要改。

由于加上小数点能更好的区分时、分、秒,故对于小数点的显示程序也要修改。

还有一点比较重要的就是数码管的代码,一定要先检验数码管是共阴极的还是共阳极的,这对后面的写程序和焊接都很重要。

程序设计好以后就对其进行编译仿真,这通过keil软件来完成。

我们根据相应的提示对程序进行修改,当编译不再出错就可以进行仿真。

仿真时需将相应的对话框调出来,程序一步步执行,我们观察对话框中内容的变化,从而更好的理解程序。

软件通过后就是硬件的焊接,这一过程我们已经做过很多遍了,从我们大一的时候就开始练习,虽然有了一定经验,但是仍然比较麻烦,很容易出现虚焊,还有就是连线太多,布线也是一个难题,所以焊接这部分要很仔细。

总的来说这次课程设计比较成功,我们的软件通过了,但是硬件部分还是有问题,但还算可以。

在整个过程中,我们得到了老师的很大帮助,老师每天都会准时到实验室跟每一组同学指导,讲解,受益很多。

我们这组很团结,大家分工合作,都把自己负责的部分做的很好,真正体现了团队合作精神。

 

 

第六章参考文献

1.《单片机的C语言应用程序设计马忠梅》马忠梅主编北京航空航天大学出版社

2.《单片机原理及接口技术(第2版)》李全利主编高等教育出版社

3.《C语言程序设计(第三版)》谭浩强主编清华大学出版

4.《ProtelDXP从入门到精通》

 

附录

1.元器件清单表

名称

数量

名称

个数

七段数码管

6个

10uF电解电容

1个

74LS164

6个

AT89C51芯片

1块

1K电阻

6个

发光二极管

1个

10K电阻

1个

40管脚座子

3个

6M晶振

1个

14管脚座子

6个

30pF瓷片电容

2个

微动开关

1个

印制电路板

1块

导线

若干

2.实训产品照片

3.程序代码

ORG0H

LJMPMAIN

ORG000BH

LJMPPIT0

ORG0100H

MAIN:

MOVSP,#60H;确立堆栈区

MOVR0,#79H;显示缓冲区首地址

MOVR7,#06H;显示位数

ML1:

MOV@R0,#00H;显示缓冲单元清0

INCR0

DJNZR7,ML1

;-----------------------

MOVSCON,#00H;串行口方式0

;-----------------------------

MOVTMOD,#02H;定时器0,工作方式2

MOVTH0,#06H;定时器定时500μs

MOVTL0,#06H

MOV30H,#100;1s=100×20×500μs

MOV31H,#20

SETBEA;EA置1,中断总允许

SETBET0;ET0置1,定时器0中断允许

SETBTR0;TR0置1,定时开始

ML0:

SJMPML0

;---------1s定时中断子程序(包括调时及显示子程序)----------

PIT0:

PUSHPSW;中断服务程序,现场保护

PUSHACC;

SETBPSW.3;RS1RS0=01,选1组通用寄存器

MOVA,30H;循环次数减1

DECA

MOV30H,A

JNZRET0;不满100次,转RETO返回

MOV30H,#20

MOVA,31H

DECA

MOV31H,A

JNZRET0;1s时间到否?

;----------------------------------

LCALLDISP;调显示子程序

;----------调时程序----------------

MOV31H,#20;满20次,1s时间到,开始计时操作

MOVR0,#7AH;移显示缓冲单元地址

ACALLDAAD1;移加1

MOVA,R2;加1后秒值在R2中

XRLA,#60H;判是否到60秒

JNZRET0;不到,转RETO返回

ACALLCLR0;到60,秒显示缓冲单元清0

MOVR0,#7CH;分显示缓冲单元地址

ACALLDAAD1;分加1

MOVA,R2;

XRLA,#60H;判是否到60分

JNZRET0

ACALLCLR0;判60,分显示缓冲单元清0

MOVR0,#7EH;时显示缓冲单元清0

ACALLDAAD1;时加1

MOVA,R2

XRLA,#24H;判是否到24时

JNZRET0

ACALLCLR0;判24时,时显示缓冲单元清0

RET0:

CLRPSW.3;RS1RS0=00,恢复0组通用寄存器

POPACC;现场恢复

POPPSW

RETI

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

当前位置:首页 > 自然科学 > 数学

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

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