基于51单片机的数字时钟的设计本科学位论文.docx
- 文档编号:5484153
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:43
- 大小:519.52KB
基于51单片机的数字时钟的设计本科学位论文.docx
《基于51单片机的数字时钟的设计本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字时钟的设计本科学位论文.docx(43页珍藏版)》请在冰点文库上搜索。
基于51单片机的数字时钟的设计本科学位论文
青岛农业大学
毕业论文(设计)
题目:
基于51单片机的数字时钟的设计
姓名:
学院:
专业:
班级:
学号:
指导教师:
2011年6月18日
毕业论文(设计)诚信声明
本人声明:
所呈交的毕业论文(设计)是在导师指导下进行的研究工作及取得的研究成果,论文中引用他人的文献、数据、图表、资料均已作明确标注,论文中的结论和成果为本人独立完成,真实可靠,不包含他人成果及已获得青岛农业大学或其他教育机构的学位或证书使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
论文(设计)作者签名:
日期:
年月日
毕业论文(设计)版权使用授权书
本毕业论文(设计)作者同意学校保留并向国家有关部门或机构送交论文(设计)的复印件和电子版,允许论文(设计)被查阅和借阅。
本人授权青岛农业大学可以将本毕业论文(设计)全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业论文(设计)。
本人离校后发表或使用该毕业论文(设计)或与该论文(设计)直接相关的学术论文或成果时,单位署名为青岛农业大学。
论文(设计)作者签名:
日期:
年月日
指导教师签名:
日期:
年月日
基于51单片机的数字时钟的设计
电子信息科学与技术专业
摘要:
自诞生以来,单片机的应用日趋广泛,应用领域日趋扩展,而MCS-51系列单片机是各单片机中最为典型的一种。
这次毕业设计,以AT89C51芯片为核心,通过必要的电路,构成简单的电子时钟。
数字时钟系统的主要任务是:
采用单片机为核心器件产生24h(24小时)时间,并用LED显示器将他显示出来。
另外本设计具有闹铃的功能,通过拉蜂鸣器来做提醒。
这样简单的设计,直观反映单片机的应用。
软件和硬件的开发是这次设计必不可少的。
关键词:
AT89C51;数字时钟;LED数码显示管;C语言
DesignofDigitalClockSystemBasedonMSC-51Singlechip
ElectronicInformationScienceandTechnologySunBin
TutorCheXiaoYan
Abstract:
Theapplicationsofsingle-chiphavebeenspreadwidely,andtheareasofitsapplicationhavebeenexpandingincreasinglysinceitsinception.andMCS-51seriessingle-chipmicrocontrolleristhemosttypicalone.Inthegraduation-design,AT89C51chipisthecoreofthenecessarycircuitrytoformasimpleelectronicclock.Herearethemaintasksofthedigitalclocksystem:
asthecoredevice,Single-chipcreates24h(24hour)timewhichwillhedisplayedbytheLED.Inaddition,thisdesignhasthefunctionofalarmbymakingthebuzzertodoasareminder.Thissimpledesigncanreflecttheintuitiveapplicationsofthemicrocontroller.Softwareandhardwaredevelopmentisessentialtothisdesign.
Keywords:
SCM;TheLEDdisplay;Adigitalclock;Assemblylanguage
1绪论
数字时钟作为人们日常生活中的必需品,给人们的学习、工作、生活带来极大的便利。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域[1]。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。
在这里我们将已学过的专业知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片机具有体积小、功能强可靠性高、价格低廉、走时准确、性能稳定、携带方便等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
2硬件总体设计方案
本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:
键盘、芯片、扬声器、显示屏即可满足设计要求。
2.1系统功能实现总体设计思路
此设计原理框图如图2-1所示,此电路包括以下四个部分:
单片机,键盘,闹铃电路及显示电路。
图2-1设计原理框图
2.2各部分功能实现
(1)单片机发送的信号通过程序控制最终在数码管上显示出来。
(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。
(3)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。
(4)单片机通过控制闹铃电路来完成定时闹钟的功能。
2.3系统工作原理
设计的电路主要由四模块构成:
单片机控制电路,显示电路、闹铃电路以及校正电路。
详细电路功能图下图所示:
图2-2详细电路功能图
本设计采用C语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。
时、分、秒的计数结果经过数据处理可直接送显示器显示。
当计时发生误差的时候可以用校时电路进行校正。
设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示。
2.4电路功能使用说明
(1)各个控制键的功能:
可对时间进行校准调节(只能加1);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加1、分加1键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。
(2)AT89C51单片机,通过编写程序对数码显示进行控制。
(3)八个7段数码管显示时钟和秒表信号。
2.5系统的设计方案
2.5.1系统的电路图和原理图
图2-3数字时钟电路图
图2-4数字时钟电路原理图
2.5.2单片机概述
(1)单片机型号的选择:
AT89C51
图2-5AT89C51引脚图
(2)单片机的主要特点
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机[2]。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
·与MCS-51兼容
·4K字节可编程FLASH存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
(3)管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写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)这是由于上拉的缘故。
也可作为AT89C51的一些特殊口,如下表所示:
表2-1:
P3口的功能
口管脚
备选功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
/INT1(外部中断1)
P3.4
T0(记时器0外部输入)
P3.5
T1(记时器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出
2.5.3键盘电路
(1)键盘电路的描述:
作为整个系统中最简单的部分,可以根据功能要求,进行时间设置键、闹钟设置键、时间加键、时间减键等操作,并采用独立式按键。
(2)键盘电路图:
图2-6键盘电路
(3)键盘的工作原理:
键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。
可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms[3]。
独立式按键的软件常采用查询式结构。
诸位查询每根I/O口线的输入状态,如某一根I/O线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。
连击功能的实现:
按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我们采用软件延时250ms,当按键没释放则执行下一条对应程序。
利用连击功能,能实现快速调时操作。
(4)键盘电路应注意的问题:
1)开关状态的可靠输入,必须消除键抖动,可以采用硬件和软件两种方法,硬件方法就是在按键输入通道上贴加去抖动电路,软件方法采用延迟10-20MS。
2)键盘状态的检测方法——中断方式还是查询方式。
3)键盘编码方法。
4)键盘控制程序的编制。
2.5.4显示电路
(1)LED数码显示管简介
数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极。
通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理。
基本的半导体数码管是由7个条状的发光二极管(LED)排列而成的,可实现数字"0~9"及少量字符的显示。
另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成[5]。
(2)数码管的分类:
数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种。
7段共阳极LED数码管是由7个条形发光二极管和一个小数点位构成,其引脚配置,如图所示,其内部结构,如图所示。
从图中可以看出,其中7个发光二极管构成字形“8”,可以用来显示数字,另一个发光二极管构成小数点。
图2-7共阳极7段LED引脚设置和内部结构
共阴极7段LED数码管和共阳极LED数码管结构类似,其引脚配置,如图所示。
从图中可以看出7段LED数码管同样由8个发光二极管组成,其中7个发光二极管构成字形“8”,另一个发光二极管构成小数点。
共阴极7段LED数码管的内部结构,如图所示。
其中所有发光二极管的阴极为公共端,接GND[6]。
如果发光二极管的阳极极为高电平的时候,发光二极管导通,该字段发光;反之,如果发光二极管的阳极为低电平的时候,发光二极管截止,该字段不发光。
图2-8共阴极7段LED引脚设置和内部结构
(3)数码管的显示方式:
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类[7]。
1)动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2)静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个。
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性[8]。
(4)LED数码管的选择:
四位一体共阴数码管。
2.6硬件焊接准备
2.6.1电路板的布线
图2-9电路板的布线
通过电路板的布线设计,初步掌握焊接硬件的必要准备,也能够在实际的数字时钟焊接中,做好元器件的布局,使更美观。
2.6.2硬件电路元件明细表
表3-1硬件电路原件
编号
元件
参数
1
单片机
AT89C511只
2
40PIC座
1只
3
万用板
7cm*9cm1片
4
LED数码管
四位一体共阴0.36寸2只
5
排阻
1K1只
6
晶振
12M1只
7
电容
22P2只
8
蜂鸣器
1个
9
三极管
S85501只
10
电阻
4.7K2只
11
按键
5个
12
DC座
1个
13
USB电源线
1条1
3软件总体设计方案
单片机软件的设计也是工具系统功能的设计,对于数字时钟的实现和正常运行也是非常重要的[9]。
为提高软件的可行性,可以根据各部分的功能件软件划分为若干相对独立的部分,使软件开发结构更合理,流程更清晰。
建立正确的数学模型,绘制流程图对软件工程的实施会有很大帮助。
3.1程序流程图
3.1.1主程序流程图
主程序是先开始,然后启动定时器,再进行检测,完成之后,就能显示时间。
图3-1主程序流程图
3.1.2按键处理流程图
按键处理时先检测秒按键是否按下,如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分加1;如果没有就检测时按键,如果按下就加1,如果没有,时间显示。
流程图如图3-1所示。
3.1.3定时器中断流程图
定时器中断时是先检测1秒是否到,1秒如果到,秒单位就加1;如果没有到,就检测1分钟是否到,1分钟如果到,分单元就加1.如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。
流程图如3-2示。
N
图3-2按键处理流程图图3-3定时器中断流程图
3.1.4时间显示流程图
时间显示是先秒个位计算显示,然后是秒十位计算、依次分个位计算、分十位计算、时个位计算、时十位计算。
图3-4时间显示流程图
3.2调试结果说明
在调试的过程中出现拉很多的问题,真对这些问题我进行拉系统的分析。
(1)数据与代码转换。
由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。
但P0口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。
可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元数据的段选代码送入P0口,给CD4511译码后去驱动数码管显示[10]。
具体转换过程如下:
先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位的BCD码,再放回A中,然后将A中的值输出。
如:
有一个单元存储了45这样一位数,则需转换成四位的BCD码:
(0100)(0101)然后放入A中。
A中BCD码,高位四位代表4低四位代表5同时送给两个译码器中,译码后45字就在两个LED中显示出来。
(2)计时功能的实现与中断服务程序
时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。
计数器T0打开后,进入计时,满100毫秒后,重装定时。
中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。
这样然后根据进率,得到时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,实现时钟计时功能。
累加是用指令INC来实现的。
进入中断服务程序以后,执行PUSHPSW和PUSHA将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的保护现场,以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。
在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作要遵循后进先出的原则。
(3)时钟误差分析
开启定时器/计数器0,使之开始计时,中断后进入中断程序。
自停止计数到、计数又开始,中间执行了7条指令,也就是延迟了13个单周期共用时间26us,这样,每个中断的总时间应为为100.026sm,而原来定时是100ms,所以,也就是说每次中断定时多了26um。
这样,可改变计数重装值,使每次中断定时时间为99.974sm,加上原来的7条指令所用的时间,正好100sm.计数10次得1s.这样就可得到较精确的计时秒数,然后根据进率,得到时、分的值。
(4)时间控制功能与比较指令
系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:
先将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3置低电位,二极管截止,。
实现此控制功能用到的比较指令为CJNEA,#direct,rel,其转移条件是累加器A中的值与立即数不等则转移。
4总结
这次对数字钟的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字钟的原理与设计理念。
在此次的数字钟设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。
在连接单片机与其他外部电路的实验中,要求熟悉逻辑电路及其芯片各引脚的功能,那么在电路出错时便能准确地找出错误所在并及时纠正了。
在设计电路中,对单片机的编程的进一步的熟悉与学习让我明白拉许多自己没有掌握的功能,对单片机有拉更深刻的理解。
再就是电路的连接中的一些小的的注意的问题像极性电容器其“+”与“-”极不能接错,例如电容器上的标记方向要易看可见。
在设计电路的连接图中出错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的。
接线的时候一定要细心,不要接错,同时也要学会如何判别芯片的好坏,要是芯片坏了即使接线再正确也出不来结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 数字 时钟 设计 本科 学位 论文