基于单片机的电子钟设计.doc
本 科 课 程 设 计 题 目: 高仿真数码管电子钟 院 系: 管理科学与工程学院 专 业: 电子信息工程 学生: * 学 号: * 指导教师: * 二一 年 十月高仿真数码管电子钟2摘要21 引言31.1 本系统研究的背景和意义31.2 本系统主要研究内容42 系统总体设计42.1 系统设计方案与论证42.11 FPGA设计方案52.12 NE555时基电路设计方案5单片机设计方案5最终设计方案62.2 系统总体结构图63 系统硬件设计63.1 芯片介绍63.11 8051单片机简单介绍63.12 74LS138 3-8译码器介绍93.2 系统硬件原理图11复位模块11按键模块12显示驱动模块134 系统软件设计134.1 系统软件总体设计134.2 中断子程序13按键扫描子程序145 系统调试155.1 硬件调试155.2 软件调试156 结论15参考文献17附录18致谢23高仿真数码管电子钟摘要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可拓展性能强等特点,被广泛应用于生活和工作当中。 本文主要为实现一款可正常显示时间、带有制调整、带有显示以及时间校准功能的一款基于单片机仿真的多功能电子钟。 本文对当前的电子钟开发手段进行了比较与分析,最终确定了采用单片机技术实现高仿真电子钟的设计。本设计采用芯片作为核心,采用外部时钟脉冲定时,用软件自带的电子钟组件实现高度仿真的显示效果。软件部分主要采用简单且流通性强的语言编写实现。这种高度仿真的电子钟具有电路简单,读取方便、显示直观、功能多样、时间精度较高、操作简单、编程容易成本低廉等诸多优点。 本次设计主要是用电路软件实现了高仿真数码管电子钟的仿真。稍加改装,增加部分功能所生产出的实际产品即可应用于一般的生活和工作中,从而给人们的生活和生产带来便利,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:电子钟、单片机、1 引言 时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的铜壶滴漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现了时间的重要,同时也代表着科技的进步。致力于计时器的研究和充分发挥时钟的作用,将有着主要的意义。 本系统研究的背景和意义20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有利的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。时间对人们来说总是那么珍贵,工作的忙碌性和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。平时我们要求上班准时,约会或召开会议要提前时间;火车要准时到达,航班准时起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确知道时间并利用时间,是我们生活和工作中必不可少的。电子钟是采用电子电路实现对时分秒进行数字显示的及时装置,广泛应用于个人家庭,车站,码头办公室等办公场所。由于数字集成电路的发展,使得数字钟的精度远远超过老式机械钟表,钟表的数字化给人们的生产生活带来了极大的方便,而且大大的扩展了原先钟表的功能。诸如定时自动报警、0按时自动打铃、定时广播、自动启闭路灯、定时开关烘箱、通断电力设备,设置各种定时电气的自动启用等,所有这些都已钟表数字化为基础的,因此,研究数字电子钟及扩大其应用,有着非常现实的意义。1.2 本系统主要研究内容本设计采用芯片作为核心,采用外部时钟脉冲定时,用软件自带的电子钟组件实现高度仿真的显示效果。本次设计的电子钟主要研究内容:1研究电子时钟的原理与实现方法251单片机的原理与应用3构思基于单片机的高仿真电子时钟的实现方案4熟悉运用C51单片机语言编写软件系统5熟悉运用Keil C软件与Proteus软件仿真和调试系统2 系统总体设计2.1 系统设计方案与论证 电子时钟既可以通过纯硬件实现,也可以通过软硬件结合实现,根据电子时钟里的核心部件秒信号的产生原理,通常有以下三种形式:2.11 FPGA设计方案现场可编程门阵列即FPGA是20世纪70年代发展起来的一种可编程逻辑器件,是目前数字系统设计的主要硬件基础。FPGA在设计过程中方便、快捷,而且FPGA技术功能强大,能够应用其制作诸如基代码发生器、数字频率计、电子琴、电梯控制器、自动售货机控制系统、多功能波形发生器、步进电机定位控制系统、电子时钟等。应用FPGA能够将时钟设计为四种类型:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统能够包括上述四种时钟类型的任意组合。2.12 NE555时基电路设计方案采用NE555时基电路或其他振荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或为处理器的外部中断输入信号,可构成电子钟。通过调整相关参数可使输出的频率为精确的1HZ。 图2.12 基于 NE555的秒信号发生器采用NE555定时器设计电子时钟,成本低,容易实现。但是受芯片引脚数量和功能的限制,不容易实现电子时钟的多功能性。2.13单片机设计方案 利用单片机的智能性,可方便的实现具有智能的电子钟设计。单片机具有时钟振荡系统,利用系统时钟借助微处理器的定时器/计数器可实现电子钟功能。然而系统时钟误差较大,电子钟的积累误差也可能较大,所以通过误差修改软件加以修正,或者在设计高精度的时钟日历芯片,以精确时间,另外很多功能不同的单片机是兼容的,这就更便于实现产品的多功能性。2.14最终设计方案 在比较了三种方案之后,考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本次设计的硬件基础。 本次设计用Proteus软件本身的50HZ激励源作为时钟脉冲,接入单片机的外部中端口来仿真是想基准时钟信号输入。2.2 系统原理及总体结构图本系统采用51单片机中芯片控制整个系统,连接各部分模块,下面为系统的设计原理组成框图: 图2.2 系统原理组成框图本系统主要采用单片机作为主控芯片,外接复位模块、调整校时模块、驱动显示模块和外部时钟脉冲。本设计采用50HZ激励源仿真时钟脉冲,P2.7接到8片74100的输入端,采取动态扫描原理来驱动显示。由于50HZ激励源仿真时钟脉冲接在AT89C51芯片的中断端口,激励源时钟脉冲周期为0.02秒,在每一个时钟脉冲上升沿触发中断,调用中断子程序。中断子程序主要为每0.5秒使显示组件中的LED:点亮,每1秒LED:关闭且秒递增,满60秒加分,同时每秒刷新时分秒显示。系统设置了显示缓冲disp_Buffer,共有7位,前6位为时分秒显示缓冲各占两位,第7位控制AM、PM、SET标志以及LED发光管闪光显示。disp_Buffer6从低位到高位,第1位为0时AM显示,为1时PM显示;第2位为0时12h制,为1时24h制,仅当第2位为1时,第1位才有效;第3位为SET标志位,为1时处于设置状态,发光管亮,为0时处于显示状态,发光管灭;第4位为LED闪烁控制位,为0时亮,为1时灭。系统在显示状态时,中断开,循环执行中断子程序,秒递增,刷新显示,将当前时间current_Time中的相应位装入disp_Buffer中相应位,再从单片机P2端口输出驱动显示。当系统处于设置状态时,关闭中断,显示暂停,执行调整与设置时钟程序。3 系统硬件设计3.1 芯片介绍3.11 8051单片机简单介绍 AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦除的只读程序存储器PEROM和128B随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准MCS-51指令系统,片内置通用8位中央处理器CPU和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合。主要性能参数:与MCS-51产品指令系统完全兼容4K字节可重擦写FLASH闪速存储器1000次擦写周期全静态操作:0HZ-24MHZ三级加密程序存储器1288字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源可编程串行UART通道 图 3.111 AT89C51 引脚封装图芯片引脚介绍:1主电源引脚 VCC:+5 V电源 VSS:地线。2时钟电路引脚 XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。3控制信号引脚 RST/VPD:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作;当单片机掉电时,此引脚上可接备用电源,由VPD向片内RAM提供备用电源,一保持片内RAM中的数据不丧失。 ALE/PROG:地址锁存控制信号。在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。 对于EPROM型单片机,在EPRAM编程期间,此引脚接收编程脉冲。 PSEN:片外程序存储器读选通信号输出端。 EA/VPP:访问程序存储控制信号。当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。对于EPROM型单片机,在EPRAM编程期间,此引脚接上加21V EPROM编程电源VPP。(4)I/O引脚P0.0 : P0口8位双向口线。P1.0 P1.7 :P1口8位双向口线。P2.0 P2.7 :P2口8位双向口线。P3.0 P3.7 :P3口8位双向口线。 P3口线的第二功能。P3的8条口线都定义有第二功能,详见表3-1。表3-11 P3口各引脚与第二功能表引脚第二功能信号名称RXD串行数据接收TXD串行数据发送INT0外部中断0申请INT1外部中断1申请T0定时/计数器0的外部输入T1定时/计数器1的外部输入WR外部RAM写选通RD外部RAM读选通以上把8051单片机的全部信号引脚分别以第一功能和第二功能的形式列出。对于各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。对于9、30和31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。但是P3口的情况却有所不同,它的第二功能信号都是单片机的重要控制信号。因此,在实际使用时,都是先按需要选用第二功能信号,剩下的才以第一功能的身份作数据位的输入/输出使用。3.12 74LS138 3-8译码器介绍 74LS138为3线8线译码器,其管脚图如下: 3.121 74LS138管脚图引脚端符号: A、B、C 译码地址输入端 G1 选通端 、 选通端低电平有效 Y0Y7 译码输出端低电平有效当一个选通端G1为高电平,另两个选通端和为低电平时,可将地址端A、B、C的二进制编码在一个对应的输出端以低电平译出。利用G1、和可级联扩展成24线译码器;假设外接一个反相器还可级联扩展成32线译码器。假设将选通端中的一个作为数据输入端时,138还可作为数据分配器。功能表: 表312 74LS138功能表其中 ,H=高电平,L=低电平,X=任意。74LS138的逻辑图为: 图 3.122 74LS138逻辑结构图3.2 系统硬件原理图下面为系统的硬件原理图 图3.2 系统硬件电路图3.3复位模块关于单片机的复位主要有三种方法:上电复位、按键电平复位、按键脉冲复位,各自的电路搭建方法如下: 图3.31 上电复位和按键复位电路本次设计主要采取上电复位接法,电路原理如下: 3.4按键模块按键模块为系统制调整,校时、校分部分,具体电路原理图如下: 其中K1按键为制调整按键,当K1处于开启状态时,为12h小时制,AM/PM显示标志亮,当K1处于闭合状态时,为24h小时制。K2按键为时间设置按键,只有K2处于闭合状态时,K3、K4按键才有效。K3为加时按键,K4为加分按键。 3.5显示驱动模块本模块主要利用AT89C51的P2端口连接74LS138 38译码器依次选通8个74100电子钟显示组件驱动芯片,来显示驱动的。限于篇幅,具体电路图请看附件。4 系统软件设计4.1 系统软件总体设计系统主源程序流程图如下列图所示,源程序见附件。 图4.1 系统主程序流程图4.2 中断子程序MCS-51系列单片机有五个中断源,中断分为2个中断优先级,即高优先级和低优先级,每个中断源的优先级都可以由软件来设定。中断地址表如表4-2所示。表4-2中断地址表本次设计主要通过将50HZ外部时钟基准脉冲接在端口,以此来不断产生中断的,中断子程序的流程图如下列图所示。源程序见附件。 图4-2 中断子程序的流程图4.3按键扫描子程序按键扫描子程序流程图如下列图所示,该部分源程序见附件。5 系统调试5.1 硬件调试硬件调试是测试焊接完成后的成品的硬件电路的功能,发现及排除相关故障,主要包括主控芯片的调试以及各模块电路的调试。由于本次设计仅仅处于软件仿真阶段,并没有去设计焊接电路,故该部分略。在不久的毕业设计论文中一定会完善该部分。5.2 软件调试本设计的软件编译是在Keil uVision3上进行的,此软件可以生成HEX文件用于下载到单片机上工作。生成HEX文件后可以在PROTEUS上进行仿真调试。6 结论本人目前在准备考研,由于时间仓促,本次设计我只是较为粗糙地实现了一个电子钟的一些基本功能,完全由软件仿真实现的,系统中有关部分是用软件中相似功能模块替代的,主要有以下两个部分:1外部时钟是由软件中激励源替代的,在真正的设计,时钟部分是很重要的,可以由石英晶振或NE555芯片产生。2电子钟的显示部分是由软件中自带的电子钟组件替代的,实际设计中可以由多位数码管显示,应用LED显示的动静态原理驱动多位LED数码管;或者用LCD液晶显示模块来显示时间。通过做这次课程设计,我学到了很多东西,首先是Proteus及Keil C软件的运用,并对多功能数字电子钟的相关原理有了更深入的理解,以前我只是对这些软件有个大概的了解,但通过这次实践,对这些软件有了更深刻的了解,在以后的毕业设计中,我将更加接近实际地来完成毕业设计,完善相关功能,出色地完成我的毕业设计。参考文献1 蔡美琴等.MCS-51系列单片机系统极其应用.北京:高等教育出版社,20042 林伸茂.8051单片机彻底研究实习篇.北京:人民邮电出版社,20043 胡学海.单片机原理极其应用系统设计.北京:电子工业出版社,2005 4 张毅刚.单片机原理极其应用.哈尔滨:哈尔滨工业大学出版社,2004 5 韩志军等.单片机应用系统设计.北京:机械工业出版社,2005 6 :华中科技大学出版社,2001 附录附件1 :源程序如下/-/名称:高度仿真数码管电子钟/-/说明本例在Proteus中选用了高仿真的电子钟元器件,并添加了时分调整/功能,闪烁显示,AM/PM切换,12h/24h制选择等。#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar tCount=0;/时钟设置开关及按键sbit K1=P00; /12h/24hsbit K2=P01; /设置sbit K3=P02; /小时加sbit K4=P03; /时钟加/当前时间:时分秒uchar current_Time =12,59,00;/时分秒显示缓冲各占两位,最后的0x00控制AM,PM及发光管闪光等uchar disp_Buffer =0,0,0,0,0,0,0x00;/12h,24h,AM,PM及SET控制标志uchar f_24=0,f_AM=0,f_set=0;/-/延时/-void DelayMS(uint x)uchar i;while(-x) for (i=0;i<120;i+); /-/加时/-void Add_Hour()/小时数累加+current_Time0;/24小时制时满24归零if (f_24 =1 && current_Time0 = 24 ) current_Time0 = 0;/12h制满13归1,且取反AM与PM标志if (f_24=0 && current_Time0=13) current_Time0=1;/将原来的AM与PM位取反disp_Buffer6=(disp_Buffer6&0xFE)|(disp_Buffer6&0x01)&0x01; /-/加分/-void Add_Miniute()/分钟数累加+current_Time1;if (current_Time1=60)current_Time1=0;Add_Hour();/-/根据当前时间刷新时分秒显示缓冲/-void Refresh_Disp_Buffer()uchar i;/刷新显示缓冲for (i=0;i<3;i+)disp_Buffer2*i = current_Timei/10;disp_Buffer2*i+1 =current_Timei%10;/-/外部中断/-void EX0_INT() interrupt 0+tCount;if (tCount=25) disp_Buffer6 &=0xF7;/每0.5秒 LED:点亮if (tCount=50) /每秒刷新显示缓冲等tCount=0;disp_Buffer6 |=0x08; /每1秒 LED:关闭if (+current_Time2 = 60) /秒递增current_Time2=0;Add_Miniute();Refresh_Disp_Buffer(); /刷新时分秒的显示缓冲 /-/显示时间/-void Display_Time()uchar i;for (i=0;i<7;i+)P2=(disp_Bufferi<<4)|i|0x08; DelayMS(5); P2=P2&0xF7; DelayMS(5);/-/时钟调整与设置/-void adjust_and_set_clock()/设置状态下,调整时与分,12h/24h制等while (K2=0)/设置12h/24h制if (K1=0) /切换12h/24h制 f_24=1;disp_Buffer6|=0x02;elsef_24=0;disp_Buffer6&=0xFD;/加小时if (K3=0) DelayMS(150);/小时增加时会影响am,pm标志,因此这里可调用数Add_Hour();/加分钟if (K4=0) DelayMS(150);/因为加分钟的函数会向小时进位,故单独增加current_Time1=(current_Time1+1)%60;Refresh_Disp_Buffer();Display_Time();/-/按键扫描子程序/-void Keyboard_scan() if (K1=0) /切换12h/24h制 f_24=1;disp_Buffer6|=0x02;elsef_24=0;disp_Buffer6&=0xFD;if (K2=0) /显示或关闭"set"EX0=0;f_set=1;disp_Buffer6 |=0x04;/调整与设置时钟,如果K2键未合上,调用将立即返回adjust_and_set_clock();elseEX0=1;f_set=0;disp_Buffer6 &=0xFB;/主程序/-void main()IE=0X81;/允许外部0中断,下降沿触发IT0=1;f_24=(K1=0);while (1)Display_Time();Keyboard_scan();附件2:系统电路仿真原理图 致谢本次设计是在高老师的悉心关心和精心指导下完成的,她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。我从课题的开始到最后完成,我不仅学到了扎实、宽广的专业知识,也学到了许多做人的道理。在我的课题开展过程中倾注着高老师辛勤的汗水和心血。老师的为人师表、渊博的知识、宽广的胸怀让我倍受教益,在此谨向老师们致以诚挚的谢意和崇高的敬意! 我能顺利地完成学业,与父母多年一如既往的支持和关心是分不开的,在此,向任劳任怨、含辛茹苦的父母致以衷心的感谢! 衷心感谢在我成长的路上指点和帮助我的前辈和朋友们! 衷心感谢在百忙之中评阅论文的各位老师!学习文档 仅供参考学习文档 仅供参考