简易电子钟的设计.docx
《简易电子钟的设计.docx》由会员分享,可在线阅读,更多相关《简易电子钟的设计.docx(34页珍藏版)》请在冰点文库上搜索。
简易电子钟的设计
简易电子钟的设计
摘要
近年来随着计算机在社会领域的渗透和大规模集成电路地发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,一次特别适合于与控制有关的系统,越来越广泛地应用于各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及正对具体应用对象特点的软件结合,以作完善。
本次做的电子时钟是以89C51为核心,结合相关的元器件(LED数码显示器、锁存/译码/驱动器等),再配以相应的软件,达到制作简易数字钟的目的,其硬件部分难点在于元器件的选择、布局及焊接。
关键词单片机89C51软件硬件LED数码显示器锁存/译码/驱动器
Abstract
Withthecomputerinthesocialsphereinrecentyears,thepenetrationanddevelopmentoflargescaleintegratedcircuits,microcontrollerapplicationsarecontinuallydeepening,becauseofitspowerfulfunction,smallsize,lowpowerconsumption,cheap,reliable,easytouseandsoon,oneparticularlysuitedtoandcontrolofthesystem,moreandmorewidelyusedinvariousfields,oftenmicrocontrollerasacorecomponenttouse,inaccordancewiththespecifichardwarearchitecture,andistheobjectofthecharacteristicsofthespecificapplicationsoftwarecombinetomakeperfect.Theelectronicclockisdone89C51core,combinedwiththecomponents(LEDdigitaldisplay,latch/decoder/driver,etc.),whichtogetherwiththecorrespondingsoftware,tocreatesimpledigitalclockpurposes,thehardwareThedifficultyisthechoiceofcomponents,layout,andwelding.
Keywordsmicrocontroller89C51hardwaresoftwareLEDdigitaldisplay
latch/decoder/driver
1引言
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快,工作的忙碌和繁杂很容易让人们忘记当前的时间,一时的耽误可能会酿成大错。
目前,单片机正朝着高性能和多品种方向发展,进一步向着CMOS化、低功耗、小体积、大容量、高新能、低价格等几个方面发展。
单片机的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
之前必须通过数字电路、模拟电路实现的大部分功能,现在已能用单片机来实现。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且具有更长的使用寿命,因此得到了广泛的使用。
数字钟是采用数字电路实现对时、分、秒、数字显示的计时装置,广泛应用于各个私人、公共场所,成为人们日常生活中必不可少的必需品。
由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟地精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且扩展了钟表原先的报时功能,如:
定时自动报警、时间程序自控制、秒表功能等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
2题目
2.1课程设计要求
系统共有3个大功能:
时钟、秒表和2个闹铃。
2.1.1功能定义
时钟:
系统启动后,直接处于时钟状态下,默认初始时间:
12:
00(为小时和分
钟)。
时钟自然运行,自动刷新。
调整时间:
按Key2键,小时+1,满24回零;按Key3键,分钟+1,满60
回零。
功能切换:
按Key1键,进入设闹铃1状态,显示“ON01”。
无按键,继续刷新显示时间。
秒表:
显示:
高2位显示秒,低2位显示百分之一秒(即10ms),超过60秒不处
理。
暂停:
在秒表运行时,按Key2键;
继续:
在秒表暂停或停止时,按Key2键;
复位:
在秒表运行或暂停时,按Key3键,秒表停止,秒数清零。
退出:
在秒表状态下,按Key1键,退出秒表,回到时钟状态,显示时钟。
2.1.22段闹铃设置:
进入:
在时钟状态下,按Key1键,进入设闹铃1状态,显示“ON01”。
在设闹铃1状态下,按Key1键,进入设闹铃2状态,显示“ON02。
退出:
在设闹铃2状态下,按Key1键,进入秒表状态,显示秒表。
设置:
在设置闹铃状态下,按key2键,对应的闹铃时间的小时+1,按key2
键,对应的闹铃时间的分钟+1,每次按键后都必须刷新显示设置的时间。
无按键:
刷新显示“ON01”或“ON02”或正在设置的闹铃时间。
响应:
在任何状态下,只要预设的2个闹铃时间中的任何一个到了,蜂鸣器报警5秒钟,5秒钟后停止。
2.2课程设计目的
(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制能力;
(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3)通过对课题设计方案的分析、选择、比较,熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤;
(4)掌握计数器、加法器、半导体数码管显示器与译码器的使用;
(5)了解数字钟的工作原理。
3单片机的发展历史
3.1三大阶段
单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。
1、SCM即单片机微型计算机(SingleChipMicrocomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。
在开创嵌入式系统独立发展道路上,Intel公司功不可没。
2、MCU即微控制器(MicroControllerUnit)阶段,主要的技术发展方向是:
不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家、从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。
在发展MCU发展,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。
因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
3、单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,寻求应用系统在芯片上的最大化解决;因此专用单片机的发展自然形成了SoC化趋势。
随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。
因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片机应用系统。
单片机作为微型计算机的一个重要分支,应用面很广,发展很快。
自单片机诞生至今,已发展为上百种系列的近千个机种。
3.2单片机的发展历程
3.2.1第一阶段(1976-1978):
单片机的控索阶段
以Intel公司的MCS-48为代表。
MCS-48的推出实在工控领域的控索,参与这一控索的公司还有Motorola、Zilog等,都取得了满意的效果。
这就是SCM的诞生时代,“单片机”一词即由此而来。
3.2.2第二阶段(1978-1982):
单片机的完善阶段
Intel公司在MCS-48基础上推出了完善的、典型的单片机系列MCS-51。
它在以下几个方面奠定了典型的通用总线型单片机体系结构。
(1)完善的外部总线。
MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。
(2)CPU外围功能单元的集中管理模式。
(3)体现工控特性的位地址空间及位操作方式。
(4)指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
3.2.3第三阶段(1982-1990):
单片机向微控制器发展的阶段
Intel公司推出的MCS-96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。
随着MCS-51系列的广泛应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路功能,强化了智能控制的特征。
3.2.4第四阶段(1990-):
微控制器的全面发展阶段
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
4单片机的应用
下面大致介绍一些51单片机典型的应用领域和应用特点。
4.1单片机的应用领域
4.1.1家用电器领域
目前国内各种家用电器已普遍采用单片机控制取代传统的控制电路,如洗衣
机、电冰箱、空调机、微波炉、电饭煲、电视机、录像机及其他视频音像设备的控制器。
4.1.2办公自动化领域
现代办公室中所使用的大量通信、信息产品多数都采用了单片机,如通用计算机系统中的键盘、磁盘驱动器、打印机、绘图仪、复印机、电话、传真机及考勤机等。
4.1.3智能产品领域
单片机微处理器与传统的机械产品相结合,使用传统机械产品结构简化、控制智能化,构成新一代的机电一体化的产品。
例如传真打字机采用单片机,可以取代近千个机械器件;缝纫机采用单片机控制,可执行多功能自动操作、自动调速,控制缝纫花样的选择。
51单片机还可以应用于智能仪表,用单片机微处理器改良原有的测量、控制仪表,能使仪表数字化、智能化、多功能化、综合化,而测量仪器中的误差修正、线性化等问题也可迎刃而解。
4.1.4测控系统
使用单片机微处理器可以设计各种工业控制系统、环境控制系统、数据控制系统,例如温室人工气候控制、水闸自动控制、电镀生产线自动控制、汽轮机电波调节系统等。
在目前数字控制系统的简易控机中,采用单片机可提高可靠性,增强其功能,降低成本。
4.1.5智能接口
微电脑系统,特别是较大型的工业测控系统中,除外围装置(打印机、键盘、磁盘、CRT)外,还有许多外部通信、采集、多路分配管理、驱动控制等接口。
这些外围装置与接口如果完全由主机进行管理,势必造成主机负担过重,降低执行速度,而如果采用单片机进行接口的控制和管理,单片机微处理器与主机可以并行工作,这样就大大地提高了系统的执行速度。
在大型数据采集系统中,用单片机对模拟/数字转换接口进行控制不仅可提高采集速度,还可对数据进行预先处理,如数字滤波、线性化处理、误差修正等。
在通信接口中采用单片机可对数据进行编码译码、分配管理、接受/发送控制等。
4.1.6商业营销领域
在商业营销系统中广泛使用的电子秤、收款机、条形码阅读器、仓储安全检测系统、商场保安系统、空气调节系统、冷冻保鲜系统等,目前已纷纷采用单片机构成专用系统,主要由于这种系统有明显的抗病菌侵害、抗电磁干扰等高性能的保证。
4.1.7工业自动化
工业过程控制、过程监测、工业控制器及几点一体化控制系统等,这些系统除一些小型工控制器外,许多都是以单片机为核心的单机或多机网络系统,如工业机器人的控制系统就是由中央控制器、感觉系统、行走系统、擒拿系统等节点构成的多机网络系统。
4.1.8汽车电子与航空航天电子系统
通常这些电子系统中的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统以及运行监视器等,都要构成冗余的网络系统。
4.2单片机的特点
单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。
就其组成和功能而言,一块单片机芯片就是一台计算机。
5数字钟的构成
5.1数字钟的构成
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHZ时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成数字钟。
(1)晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的12MHZ的方波信号,可
保证数字钟的走时准确及稳定,不管是指针式的电子中还是数字显示的电子钟都使用了晶体振荡器电路。
(2)时间计数器电路
时间计数器电路由分个位和分十位计数器,时各位和时十位计数器电路构
成,分个位和分十位计数器为60进制计数器,时各位和时十位计数器为24位进制计数器。
(3)译码驱动器
译码驱动器电路将计数器输出的8421BCD码转换为数码管需要的逻辑状
态,并且为保证数码管正常工作提供足够的工作电流。
(4)数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提
供的为LED数码管。
数字钟的工作原理图如图1所示:
图1数字钟的工作原理图
5.289C51单片机的简介
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内
含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能加大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
5.2.1主要性能参数:
·与MCS-51产品指令系统完全兼容
·4k字节可重擦写Flash闪速存储器
·1000次擦写周期
·全静态操作:
0Hz-24MHz
·三级加密程序存储器
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式
5.2.2管脚说明
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口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
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:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
5.3LED数码管
图27段数码管
数码管(如图2所示)使用条件:
a、段及小数点上加限流电阻
b、使用电压:
段:
根据发光颜色决定;小数点:
根据发光颜色决定
c、使用电流:
静态:
总电流80mA(每段10mA);动态:
平均电流4-5mA峰值电流100mA上面这只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。
数码管使用注意事项说明:
(1)数码管表面不要用手触摸,不要用手去弄引角;
(2)焊接温度:
260度;焊接时间:
5S
(3)表面有保护膜的产品,可以在使用前撕下来。
6电路设计
6.1晶体振荡器与AT89C51的接法
晶体振荡器与89C51的接法如图3所示,XTAL1和XTAL2脚接到12MHZ的晶体振荡器上,与两个10PF的电容并联,并接低电平。
图3晶体振荡器与89C51的连接
6.2数码管显示电路
数码管与89C51的接法如图4所示,数码管的A、B、C、D、E、F、G分别连接到89C51的P0.0~P0.6引脚上,P0.7控制数码显示管上中间的两亮点。
图4数码管与89C51的连接
6.3按键功能的实现
用AT89C51的并行口P3.2、P3.3、P3.4分别接K1、K2、K3三个控制按钮,
具体如图5所示。
图5按键与89C51的连接
7程序设计内容
7.1程序设计方案
本系统共有3大功能,考虑定义4种状态,可以用枚举类型来定义,便于
将来扩展。
如
typedefenum//枚举类型:
4种状态//
{
CLOCK,//时钟状态//
SET_RING1,//设置闹铃1状态//
SET_RING2,//设置闹铃2状态//
MIAOBIAO_RUN,//秒表状态//
}STATE;//定义了枚举类型名称
STATEstatus//定义了变量
在这4种状态下,不同按键动作,代表不同的操作。
4种状态之间用Key1
键负责切换。
7.2C语言设计流程
7.2.1主流程
主程序如下:
voidmain(void)
{sound=1;
TH0=0x3c;
TL0=0xb4;
TMOD=0x11;
TR0=1;
ET0=1;
TR1=0;
ET1=1;
EA=1;
status=CLOCK;
dingshi_time[0].hour=0;
dingshi_time[0].min=0;
dingshi_time[1].hour=0;
dingshi_time[1].min=0;
while
(1)//程序循环
{
switch(status)
{
caseCLOCK:
key_process_clock();//处理时钟状态下的按键和显示//
break;
caseSET_RING1:
caseSET_RING2:
key_process_set_dingshi();//处理设置定时状态下的按键和显示//
break;
caseMIAOBIAO_RUN:
key_process_miaobiao_run();//处理秒表状态下的按键和显示//
break;
}
if(
((hour==dingshi_time[0].hour)//定时响铃//
&&(min==dingshi_time[0].min)
&&(sec<5))
||
((hour==dingshi_time[1].hour)//定时响铃//
&&(min==dingshi_time[1].min)
&&(sec<5))
)
sound=0;
elsesound=1;
}
}
7.2.2CLOCK状态下的按钮处理模块
以下程序能够实现状态的判断:
voidkey_process_clock()//处理时钟状态下的按键和显示//
{
switch(get_key())
{
caseKEY_1:
status=SET_RING1;;//切换状态
show_on_flag=1;
show_on
(1);
break;
caseKEY_2:
hour++;
if(hour==24)hour=0;
show(hour,m