基于单片机的简易电子时钟单片机的科研实践学位论文Word文件下载.docx
《基于单片机的简易电子时钟单片机的科研实践学位论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易电子时钟单片机的科研实践学位论文Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
5.2硬件调试17
5.3实物调试17
结论19
参考文献20
附录1元件清单21
附录2实物图22
附录3程序代码23
基于单片机的简易电子钟设计
摘要:
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以STC89C51单片机为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。
数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
数字钟的精度、稳定度远远超过老式机械钟。
在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。
在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。
数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
关键词:
单片机,数码管,电子时钟
第1章概述
1.1课题意义
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时、分和秒的校对,片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;
二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;
二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机STC89C51单片机和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
1.2课题内容
此设计是在数码管上显示时、分和秒,电路包括:
键盘、单片机、显示驱动电路及发生驱动。
各部分说明:
(1)键盘用于校正、调节数码管上显示的时间。
(2)单片机通过输出各种电脉冲信号开驱动控制各部分正常工作。
(3)单片机发送的信号经过显示电路通过译码最终在数码管上显示出来。
(4)整点或半点蜂鸣器响,小灯整点闪10下,半点的时候闪5下。
系统工作过程:
时间的主要处理过程是在CPU中完成的。
CPU会随时对时间进行读取数据的操作。
在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把数据显示在数码管上。
第二章单元电路方案论证
根据设计要求,本系统主要由控制器模块、显示驱动模块和输入模块构成。
为较好的实现各模块的功能,我们分别设计了以下几种方案并分别进行了论证。
2.1控制器模块
方案1:
采用51系列作为系统控制器
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。
由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。
而且抗干扰性能好。
方案2:
采用凌阳系列单片机为系统的控制器
凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。
凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。
因51单片机价格比凌阳系列低得多,且本设计不需要很高的处理速度,从经济和方便使用角度考虑,本设计选择了方案1。
2.2计时模块
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:
本方案采用Dallas公司的专用时钟芯片DS12C887。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:
本方案完全用软件实现数字时钟。
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;
若秒值达到60,则将其清零,并将相应的分字节值加1;
若分值达到60,则清零分字节,并将时字节值加1;
若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.3显示模块
采用LED数码管
显示用LED数码管。
虽然显示的内容有限,但是也可以显示数字和几个英文字母,在此设计中已经足够了,并且价格比液晶字符式要低的多,为了降低设计制作的成本,在此设计中我们选用LED数码管显示。
采用液晶字符显示器
显示用液晶,可以用软件达到很好的控制,硬件不复杂,液晶字符显示器可以显示很丰富的内容,显示清晰,但是液晶字符式价格昂贵,在本设计中不需要用到复杂的显示内容,因此我们放弃了此方案。
从经济的角度考虑,我们选择了方案1。
2.4最终方案
经过反复论证,最终确定了如下方案:
(1)采用STC89C51单片机作为主控制器。
(2)采用单片机内部定时器计时。
(3)采用LED数码管作为显示器。
第三章系统硬件介绍
本设计采用STC89C51单片机作为主控制器,外部加上74HC573驱动数码管。
系统总体框图如下:
图1系统总体框图
3.1STC89C51单片机简介
单片机是美国STC公司最新推出的一种新型51内核的单片机。
片内含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。
(一)STC89C51主要功能、性能参数如下:
(1)内置标准51内核,机器周期:
增强型为6时钟,普通型为12时钟;
(2)工作频率范围:
0~40MHZ,相当于普通8051的0~80MHZ;
(3)STC89C51RC对应Flash空间:
4KB;
(4)内部存储器(RAM):
512B;
(5)定时器\计数器:
3个16位;
(6)通用异步通信口(UART)1个;
(7)中断源:
8个;
(8)有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器\仿真器;
(9)通用I\O口:
32\36个;
(10)工作电压:
3.8~5.5V;
(11)外形封装:
40脚PDIP、44脚PLCC和PQFP等。
(二)STC89C51单片机的引脚说明
如图2所示:
图2STC89C51单片机引脚图
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)这是由于上拉的缘故。
P3.0RXD(串行输入口);
P3.1TXD(串行输出口);
P3.2/INT0(外部中断0);
P3.3/INT1(外部中断1);
P3.4T0(记时器0外部输入);
P3.5T1(记时器1外部输入);
P3.6/WR(外部数据存储器写选通);
P3.7/RD(外部数据存储器读选通);
P3口同时为闪烁编程和编程校验接收一些控制信号。
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:
来自反向振荡器的输出。
(三)STC89C51单片机最小系统:
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。
用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,原理图如图3所示。
图3单片机最小系统原理图
3.2数码管驱动模块
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;
每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
图4数码管
本设计采用共阴数码管,显示方式为动态显示,利用数码管的dp点将小时、分钟和秒分隔开。
3.374HC573芯片介绍
74HC573包含八路D型透明锁存器,每个锁存器具有独立的D型输入,以及适用于面向总线的应用的三态输出。
所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。
当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。
当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。
当OE为低时,8个锁存器的内容可被正常输出;
当OE为高时,输出进入高阻态。
OE端的操作不会影响锁存器的状态。
本设计只用到了74HC573的驱动作用,来驱动数码管的形,使得数码管更亮,单片机直接控制数码管的位,实现数码管的驱动显示,电路中的应用图5如下:
图574HC573驱动电路
3.4按键调时模块
单片机键盘有独立键盘和矩阵式键盘两种:
独立键盘每一个I/O口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;
而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。
根据本设计的需要这里选用了独立式键盘接法。
在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。
这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。
这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。
硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。
所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O口的值,这一次的值如果为1表示低电平的时间不到10~200毫秒,视为干扰信号。
当读出的值是0时则表示有按键按下,调用相应的处理程序。
硬件电路如图6所示:
图6键盘控制电路图
本设计的按键功能是:
当K1按键的时候是小时加一,当K2按下的时候分钟加一,当K3按下的时候秒清零。
就是通过这3个按键实现对时间的校正。
3.5整点提示模块
整点提示模块包括LED提示和蜂鸣器提示。
本设计中半点的时候LED小灯会闪烁5次,整点的时候会闪烁10次。
图7LED提示电路
设计的声音提示是用三极管驱动蜂鸣器。
利用三极管当做开关电路可以保护单片机,还可以起到放大电流的作用,当三极管基极为高电平时,发射极截止,为低电平时,发射极导通。
报警模块如图8所示。
图8蜂鸣器驱动模块
第四章.系统软件设计
4.1编程软件KeilC51
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
Keil_c软件界面如图1所示:
图1Keil_c软件界面
该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程。
4.2仿真软件proteus
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
图2proteus仿真软件
4.3程序流程图
程序流程图如图3所示:
图3程序流程图
第5章调试与实现
5.1软件调试
利用KeilC编写程序,根据4.1讲诉的方法对编写的程序进行调试,调试结果如图5-1所示。
图5-1程序调试最终结果
此次程序,先调试数码管显示程序,再调试控制按键程序:
小时加、分钟加和秒清零,最后进行整点半点提示调试。
程序调试是本次设计较为困难的一部分,需要反复的调试,才能达到理想的效果。
其中时间的准确度是本设计的重点调试对象,要反复调整定时器中断的初值,来达到设计的准确性。
5.2硬件调试
利用Proteus软件进行模拟仿真,这是实物制作很重要的一步。
主要是结合编译产生的hex文件对程序进一步调试,51单片机通过加载hex文件进行仿真,通过仿真的结果检验本次设计最终的效果。
Proteus最终调试结果如图5-2所示。
图5-2Proteus最终调试结果
5.3实物调试
经过仿真软件的成功,接下来就是实物的制作,再是程序的烧写,最后进行实物的调试。
最终调试结果如图5-3、5-4所示。
图5-3半点调试
图5-4整点调试
本次调试中应注意的事项或情况有:
线路焊接好后,不要忙于通电,首先要检测有没有短路,万一有短路又通电后,将会很麻烦,容易烧毁电路板或元器件,更容易引发安全隐患。
初次按下按键的时候,按键会加好几个数,按键的延时去抖已经加了为什么还会这样呢,经过反复的查找和更改程序,最终知道原来按键的处理程序没有加等待按键释放程序,如果不加,就在轻轻按下按键的一瞬间程序已经走了好几遍,所以会出现这个情况。
再一个遇到的问题就是整点的时候小灯会闪,但是蜂鸣器不会响。
首先检测程序发现没有问题,仿真是没问题的。
通过排除发现一定是硬件的原因,用万用表测量单片机的引脚有电平变化,那一定就是蜂鸣器驱动那里的问题了,最终发现是三极管的引脚接错了,发射极和集电极接反了,重新焊接就正常了。
结论
我在这一次数字电子钟的设计过程中,很是受益匪浅。
通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;
才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个实验十分有意义
我获得很深刻的经验。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。
我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。
这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。
.
参考文献
【1】51单片机C语言应用程序设计实例精讲/戴佳,戴卫恒编著.--北京:
电子工业出版社,2006.4(电子工程应用精讲系列)
【2】51单片机C语言程序设计经典实例/陈忠平编著.--北京:
电子工业出版社,2012.5(卓越工程师培养计划)
附录1元件清单
序号
名称
型号、参数
备注
数量
1
CPU
STC89C52
DIP40封装
2
数码管
7SEG-MPX4-CC
3
7SEG-MPX2-CC
4
驱动数码管
74HC573
5
晶振
11.0592MHz
49S型
6
元片电容
30pf
7
电解电容
470uf/16V
8
按钮
6*6按钮-4P
6mm×
6mm
9
电阻
1K/0.25W
金属膜1/4W
10
220/0.25
11
排阻
10k
12
蜂鸣器
13
三极管
8055
附录2实物图
附录3程序代码
/************************************************************
作品名字:
简易声光报时时钟
功能:
六位数码管显示时分秒,整点半点报时,夜间只有灯光提醒
二十四小时制
到整点时长鸣1次,LED闪烁10次
到半点时短促鸣响1次,LED闪烁5次
制作说明:
P0接数码管段选,P2低6位接数码管位
**************************************************************/
#include<
reg52.h>
//头文件
#defineucunsignedchar