单片机课设智能电子数字钟设计.docx

上传人:b****8 文档编号:10198502 上传时间:2023-02-09 格式:DOCX 页数:31 大小:314.07KB
下载 相关 举报
单片机课设智能电子数字钟设计.docx_第1页
第1页 / 共31页
单片机课设智能电子数字钟设计.docx_第2页
第2页 / 共31页
单片机课设智能电子数字钟设计.docx_第3页
第3页 / 共31页
单片机课设智能电子数字钟设计.docx_第4页
第4页 / 共31页
单片机课设智能电子数字钟设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

单片机课设智能电子数字钟设计.docx

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

单片机课设智能电子数字钟设计.docx

单片机课设智能电子数字钟设计

 

单片机课程设计报告

 

题目名称:

智能电子数字钟设计

系:

电气工程系

专业:

电气自动化

班级:

学号:

学生姓名:

指导教师:

职称:

 

目录

摘要………………………………………………………………………………

1.智能电子数字时钟总体方案的设计………………………………………………

1.1系统方案的确定…………………………………………………………………..

2.智能电子数字钟硬件系统的设计…………………………………………………….

2.1.AT89C51单片机简介………………………………………………………..

2.1.1AT89C51概述…………………………………………………………………

2.1.2主要性能特点………………………………………………………………..

2.1.3AT89C51单片机引脚功能…………………………………………………….

2.2显示电路的设计…………………………………………………………………

2.3键盘电路的设计…………………………………………………………………..

2.3.1键盘的任务………………………………………………………………….

2.3.2独立式键盘的特点及优点………………………………………………………

2.3.3中断扫描方式…………………………………………………………………….

2.3.4键盘实现的功能………………………………………………………………….

2.4晶振电路的设计…………………………………………………………………..

2.5复位电路的设计…………………………………………………………………..

2.6整点报时电路的设计……………………………………………………………

3.智能电子数字钟软件系统的设计……………………………………………….

3.1主程序…………………………………………………………………………..

3.2数码管显示子程序…………………………………………………………….

3.3定时器/计数器中断服务子程序……………………………………………….

3.4键盘处理子程序………………………………………………………………….

4.结论和总结…………………………………………………………………………..

参考文献…………………………………………………………………………………….

附录一:

智能电子数字程序………………………………………………………………

附录二智能电子数字钟电路图…………………………………………………………

 

摘要

单片机自20世纪70年代问世以来,已对人类社会产生了巨大影响。

由于其具有集成度高、处理功能强、可靠性高、系统结构简单、体积小、低功耗、易于使用等优点,在智能控制、智能仪器仪表、办公自动化、家用电器等诸多领域得到广泛的应用。

本设计介绍了一种基于AT89C51单片机设计智能电子数字钟的方法,首先概述了智能电子数字钟的总体方案,并介绍了硬件设计和软件设计以及系统的主程序流程图和中断程序流程图。

它以AT89C51单片机为核心,能通过键盘预置时间、星期;采用七段共阳数码管显示星期、时、分、秒;具有整点报时的功能;在软件方面,利用AT89C51单片机内部定时器T0的工作方式1实现定时功能,利用单片机的串口和74LS164扩展并口实现LED静态驱动,从而完成数字时钟设计。

 

 

关键词:

AT89C51单片机中断定时静态驱动74LS164扩展并口

 

1.智能电子数字钟总体方案

1.1系统方案的确定

单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。

在本次设计中采用单片机技术来实现智能电子数字钟的功能。

方案的设计可以从以下几个方面来确定:

微处理器的选择,在本次设计中采用AT89C51单片机;显示电路的设计,采用7个共阳极LED数码显示管静态显示;该设计采用独立式键盘,使用了4个按键,分别有:

调整键、加一键、整点报时键、复位键;实时控制电路是时钟电路的一个重要组成部分,采用的是AT89S51单片机内部定时器T0,还有一些其他控制电路如复位电路、晶振电路等。

通过这些控制电路的连接构成了完整的电路,系统的整体框图如图所示。

 

2.智能数字电子时钟硬件系统的设计

本设计的硬件主要包括:

单片机芯片AT89C51、晶振电路、数码管显示电路、键盘电路、整点报时电路、复位电路等,在硬件电路中采用AT89C51的串行口工作方式0发送,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出,在移位时钟的作用下,串行口发送缓冲器的数据一位一位的从P3.0移入74LS164中,并由数码管静态显示。

2.1.AT89C51单片机简介

2.1.1AT89C51概述

AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4KB的可反复擦写1000次的Flash只读程序存储器,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和Flash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用.

2.1.2主要性能特点

(1)8位微处理器(CPU):

包括运算器和控制器两大部分。

(2)

数据存储器(128BRAM):

片内为128B,片外最多可扩64KB。

(3)程序存储器(4KBFlashROM):

片内集成有4KB的Flash存储器,如片内容量不够,片外可外扩至64KB。

(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);

(5)1个全双工的异步串行口;

(6)2个可编程的16位定时器/计数器;

(7)1个看门狗定时器;

(8)中断系统具有5个中断源、5个中断向量;

(9)特殊功能寄存器(SFR)26个;

(10)低功耗模式有空闲模式和掉电模式,且具有掉电模式下的中断恢复模式;

2.1.3AT89C51单片机引脚功能

(1)电源及时钟引脚—VCC、VSS;XTAL1、XTAL2。

(2)控制引脚—PSEN、ALE、EARST。

(3)I/O口引脚——P0口:

8位,漏极开路的双向I/O口,P0口可用作通用的I/O口,需加上拉电阻。

P1口:

8位,准双向I/O口,具有内部上拉电阻。

P2口:

8位,准双向I/O口,具有内部上拉电阻。

P3口:

8位,准双向I/O口,具有内部上拉电阻。

P3口还可提供第二功能。

2.2显示电路的设计

在本次设计中采用共阳极LED数码显示管静态显示。

显示原理如下:

LED数码显示管工作于静态显示方式时,各位的共阳极连接在一起并接+5V电源,每位的断码线分别与一个8位的I/O口锁存器输出相连,如果送往各个LED数码管所显示字符的断码一经确定,则相应I/O口锁存器锁存的断码输出将维持不变,直到送入另一个字符的断码为止。

正因为如此,静态显示方式的显示无闪烁、亮度都比较高,软件控制比较容易。

2.3键盘电路的设计

2.3.1键盘的任务:

1.首先判别是否有键按下,若有进入下一步工作。

2.识别哪一个键被按下,并求出相应的键值。

3.根据键值,找到相应键值的处理程序入口。

图4

2.3.2独立式键盘的特点及优点:

本设计采用独立式键盘,它的特点是:

一键一线,各键相互独立,每个按键各接一个I/O口线,通过检测I/O输入线的电平状态,可以很容易的判断哪个按键被按下。

图中上拉电阻保证按键释放时,输入检测线上有稳定的高电平,当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,就很容易的识别出哪个键被按下。

这种键盘的优点是:

电路简单,各条检测线独立,识别按下按键的软件编写简单,适用于按键数目较少的场合。

2.3.3中断扫描方式:

为了进一步提高单片机扫描键盘的工作效率,本设计采用中断扫描方式。

图中的键盘只有在键盘有按键按下时,对应节点处为低电平,经过74LS11反相后向单片机的中断请求输入INTO发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序,识别按下的按键,并跳向该按键的处理程序。

如果无键按下,单片机将不理睬键盘。

此种方式的优点是:

只有按键按下时,才进行处理,所以其实时性强,工作效率高。

2.3.4键盘实现的功能

该设计使用了4个按键,分别有:

调整键、加一键、整点报时键、复位键。

按一下调整键第一个数码管小数点(DP位)点亮,再按一下,第二位数码管(DP位)点亮,如果想调整哪一位就按几下,这样的目的是清楚的知道正在调整哪位;加一键自动实现加一功能;当按下整点报时键时,发光二极管点亮,当到整点时蜂鸣器发出声音;再按一下此键,发光二极管熄灭,到整点时,蜂鸣器不会发声。

2.4晶振电路的设计

AT89C51单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。

石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。

从外部时钟源驱动器件,XTAL2可以不接,而从XTAL1接入,由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。

反相放大器的输入端为XTALl,输出端为XTAL2,两端连接石英晶体及两个电容形成稳定的自激振荡器。

电容通常取30PF左右。

振荡频率范围是1.2~12MHz。

本设计采用的频率是12MHz。

2.5复位电路的设计

单片机复位是使CPU和系统中的其他功能部件都处于一个确定的初始状态,并从这个状态开始工作断电后或者发生故障后都要复位。

复位电路比较简单,10uF电解电容与按键并联,+5V供电,实现复位。

2.6整点报时电路的设计

图7复位电路

整点报时是数字钟的一个重要功能,整点报时功能采用蜂鸣器来实现。

当按下整点报时键时,发光二极管点亮,当到整点时蜂鸣器发出声音;再按一下此键,发光二极管熄灭,到整点时,蜂鸣器不会发声。

3.智能数字电子钟软件系统的设计

单片机的程序设计有其自身的特点。

在单片机系统中,硬件与软件紧密结合,由于硬件电路的设计不具有通用性,所以必须根据具体的硬件电路来设计对应的软件,硬件设计的优劣直接影响到软件设计的难易,软件设计的优劣又直接影响到硬件的发挥。

在很多时候,软件可以替代硬件的功能,当然,需要付出额外占用CPU时间的代价。

软件程序的设计是根据硬件电路图的连接和各个元器件的功能进行设计。

在编写软件时,可以按各个程序的功能将软件细分为各个功能模块,再通过主程序的调用来实现整个软件系统。

而一般编写的程序都是根据事前所用的流程图来编写的,而且,流程图中也包含了对设计所得结果的要求,因此,流程图的设计直接影响到源程序的设计。

智能电子数字钟系统软件程序由主程序和子程序组成。

主程序包括:

初始化参数设置、定时器/中断服务子程序、按键处理程序、数码管显示模块等。

3.1主程序

主程序流程图如图所示,主程序先对定时器/计数器和显示单元初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。

ORG0100H

MAIN:

MOVDAY,#1

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBTR0

SETBPX0

MOVIE,#83H

MOVR7,#20

LCALLDISPLAY

WAIT:

JNBRING,WAIT

CLRP1.3

SETBEX0

SJMPWAIT

3.2数码管显示子程序

此次设计共用了7个数码管,分别显示星期、小时十位、小时个位、分十位、分个位、秒十位、秒个位。

数码管显示的信息用7个内存单元存放,这7个内存单元为显示缓冲区,其中小时十位、小时个位、分十位、分个位、秒十位、秒个位分别由小时数据、分数据、秒数据分拆得到。

采用数码管静态显示,在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息字码。

DISPLAY:

MOVR0,#SEC

MOVR1,#BUFF

MOVR2,#4

DISPL1:

MOVA,@R0

MOVB,#10

DIVAB

MOV@R1,B

INCR1

MOV@R1,A

DISPL1

MOVR0,#BUFF

MOVR2,#7

MOVDPTR,#SEGTAB

DISPL2:

MOVA,@R0

MOVCA,@A+DPTR

MOVSBUF,A

DISPL3:

JNBTI,DISPL3

CLRTI

INCR0

DJNZR2,DISPL2

RET

3.3定时器/计数器中断服务子程序

定时器/计数器T0用于时间计时。

选择工作方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元到60则对分单元加1,同时秒单元清零;分单元加到60则对时单元加1,同时分单元清零;时单元加到24则对星期单元加一,同时时单元清零;星期单元加到7则自动清零。

在对各单元计数的同时,把它们的值放到存储单元的指定位置。

中断程序流程图如图所示。

SECINC:

INCSEC

MOVA,SEC

CJNEA,#60,SECRET

MOVSEC,#0

LCALLMININC

SECRET:

RET

;***********************************************************************

MININC:

INCMIN

MOVMIN,#0

LCALLHOUINC

MINRET:

RET

;***********************************************************************

HOUINC:

JNBRIN,HOUINC1

SETBRING

HOUINC1:

INCHOU

MOVA,HOU

CJNEA,#24,HOURET

MOVHOU,#0

LCALLDAYINC

HOURET:

RET

;***********************************************************************

DAYINC:

INCDAY

MOVA,DAY

CJNEA,#8,DAYRET

MOVDAY,#1

DAYRET:

RET

3.4键盘处理子程序

按键处理设置为:

如没有按键,则时钟正常走时。

按一下调整键第一个数码管小数点(DP位)点亮,再按一下,第二位数码管(DP位)点亮,如果想调整哪一位就按几下,这样的目的是清楚的知道正在调整哪位;加一键自动实现加一功能;当按下整点报时键时,发光二极管点亮当到整点时蜂鸣器发出声音;再按一下此键,发光二极管熄灭,到整点时,蜂鸣器不会发声。

INTO:

LCALLDELAY

JBP3.2,INT0RET2

JNBP1.0,KEYSWI

JNBP1.1,KEYINC

JNBP1.2,KEYRIN

INT0RET2:

RETI

;***********************************************************************

KEYSWI:

PUSHPSW

PUSHAcc

KEYSWIW:

JNBP3.2,KEYSWIW

JBBAL,STATEON

MOV20H,#81H

SETBP2.7

CLRP2.0

SJMPINT0RET

STATEON:

MOVA,20H

RLA

MOV20H,A

CLRBSL

CPLBAL

MOVA,P2

RLA

MOVP2,A

SJMPINT0RET

;***********************************************************************

KEYINC:

PUSHPSW

PUSHAcc

KEYINCW:

JNBP3.2,KEYINCW

JNBBAL,INT0RET

JBBSL,KEYBSL

JBBSH,KEYBSH

JBBML,KEYBML

JBBMH,KEYBMH

JBBHL,KEYBHL

JBBHH,KEYBHH

JBBDA,KEYBDA

KEYBSL:

LCALLKEYBSLC

KEYBSH:

LCALLKEYBSHC

SJMPINT0RET

KEYBML:

LCALLKEYBMLC

SJMPINT0RET

KEYBMH:

LCALLKEYBMHC

SJMPINT0RET

KEYBHL:

LCALLKEYBHLC

SJMPINT0RET

KEYBHH:

LCALLKEYBHHC

SJMPINT0RET

KEYBDA:

LCALLKEYBDAC

SJMPINT0RET

;***********************************************************************

KEYRIN:

PUSHPSW

PUSHAcc

KEYRINW:

JNBP3.2,KEYRINW

JNBRING,RING1

CLRRING

SETBP1.3

SJMPINT0RET

RING1:

CPLRIN

CPLP1.4

;***********************************************************************

INT0RET:

POPAcc

POPPSW

INT0RETI:

RETI

 

 

 

4.结论和总结

通过这段时间的课程设计,我学会了很多。

起初对单片机这门课,一点都不了解,后来经过慢慢看书,才发现这门课很有意思。

我这次设计的课题是智能电子数字钟,它的基本功能是能显示星期、小时、分钟、秒;能通过键盘预置时间、星期;具有整点报时的功能。

本次设计采用单片机作为核心控制器,实现具有定时、校时功能的数字钟。

课程设计任务布置后,我首先学习了AT89S51单片机的硬件组成,各引脚的基本功能,还自学了课本上有关数码管显示、键盘的有关内容。

在学习的过程中,有很多不会的地方,通过同学之间的相互交流和上网查资料,基本上弄懂了。

大学不光是为了学知识,还要练习实践能力,只有理论和实践相结合,才能把知识彻底学懂、学透。

单片机课程设计是对单片机这门课所学知识的验证,可以帮助我们更好的学习和巩固所学知识。

激发我们对单片机这门课的兴趣,更锻炼了我们独立思考、遇到问题知道寻求答案、不断创新的能力。

在这次课程设计中,我首先自学了PROTEUS软件,一步步的画出了硬件接线图,虽然以前从未学过这个软件,只听同学说这个软件很好用,怀着浓厚的兴趣,学习它,最后真的学会了。

后来自己编写了中断和定时程序,选择了定时器0的工作方式1,它的最大定时时间为65.536毫秒,我设定了50毫秒,进行20次中断实现1秒的定时。

然后设计了系统总的流程图,接着中断流程图,再然后就是编写了主程序。

经过这一步步的设计,使自己的思维整体化,慢慢的有条不絮。

我课程设计的最大收获是发现带着问题去学习效率很高。

 

参考文献

[1]张毅刚.单片机原理及应用.北京:

高等教育出版社,2009

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

北京航空航天大学出版社,1994

[3]孙育才,王荣兴,孙化芳.新型AT89S52系列单片机及其应用.北京:

清华大学出版社,2005

[4]蒋延彪.单片机原理及应用(MCS-51).重庆:

重庆大学出版社,2003

[5]李云刚,龙志强.单片机原理与应用系统设计.北京:

中国水利水电出版社,2008

[6]龙威林,胡山.单片机应用入门:

AT89S51和AVR.北京:

化学工业出版社,2008

[7]张虹.单片机原理及应用.北京:

中国电力出版社,2009

[8]王幸之.AT89系列单片机原理与接口技术.北京:

北京航空航天大学出版社,2004

[9]谢维成,杨家国.单片机原理与应用及C51程序设计.北京:

清华大学出版社,2006

[10]李光飞.单片机课程设计实例指导.北京:

北京航空航天大学出版社,2005

[11]张培仁.基于C语言编程MCS-51单片机原理与应用.北京:

清华大学出版社,2003

 

附录一:

智能电子数字钟程序如下:

SECEQU30H;秒寄存器

MINEQU31H;分寄存器

HOUEQU32H;时寄存器

DAYEQU33H;星期寄存器

BUFFEQU40H;串行发送缓冲器

BSLBIT00H;秒低位调整标志

BSHBIT01H;秒高位调整标志

BMLBIT02H;分低位调整标志

BMHBIT03H;分高位调整标志

BHLBIT04H;时低位调整标志

BHHBIT05H;时高位调整标志

BDABIT06H;星期位调整标志

BALBIT07H;总调整标志

RINBIT08H;整点报时标志位

RINGBIT09H;响铃标志位

ORG0000H

LJMPMAIN

ORG0003H

LJMPINTO

ORG000BH

LJMPIT0P

;***********************************************************************

ORG0100H

MAIN:

MOVDAY,#1

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBTR0

SETBPX0

MOVIE,#83H

MOVR7,#20

LCALLDISPLAY

WAIT:

JNBRING,WAIT

CLREX0

CLRP1.3

SETBEX0

SJMPWAIT

;*******************

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

当前位置:首页 > 高等教育 > 文学

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

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