电子时钟设计.docx

上传人:b****6 文档编号:4444573 上传时间:2022-12-01 格式:DOCX 页数:22 大小:484.57KB
下载 相关 举报
电子时钟设计.docx_第1页
第1页 / 共22页
电子时钟设计.docx_第2页
第2页 / 共22页
电子时钟设计.docx_第3页
第3页 / 共22页
电子时钟设计.docx_第4页
第4页 / 共22页
电子时钟设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

电子时钟设计.docx

《电子时钟设计.docx》由会员分享,可在线阅读,更多相关《电子时钟设计.docx(22页珍藏版)》请在冰豆网上搜索。

电子时钟设计.docx

电子时钟设计

目录

前言……………………………………………………………………………………2

一、概述………………………………………………………………………………3

1.1课程设计项目名称……………………………………………………………3

1.2项目设计目的及技术要求……………………………………………………3

1.3实验使用的仪器设备…………………………………………………………3

二、整体制作思路…………………………………………………………………3

三、系统设计………………………………………………………………………4

3.1硬件框图……………………………………………………………………4

3.2电路原理与原理图…………………………………………………………8

3.2程序框图……………………………………………………………………9

四、仿真及结果……………………………………………………………………12

4.1Protues仿真图………………………………………………………………12

4.2仿真结果……………………………………………………………………13

4.3实物图片……………………………………………………………………13

五、结束语…………………………………………………………………………14

六、参考文献………………………………………………………………………15

附录(源程序)

前言

时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。

怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?

这就要求人们不断设计出新型时钟。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟有两方面的含义:

一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:

一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:

DS1302,DS12887,X1203等都可以满足高精度的要求。

本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机STC12C5A06S2芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。

 

一、概述

1.1课程设计项目名称

电子时钟设计

1.2项目设计目的及技术要求

基于51单片机,通过设计外围硬件设计和编写软件程序,完成LED七段数码管数字钟电路,数字钟显示格式为:

HH:

MM:

SS。

具有通过键盘能够调整时、分、秒的功能。

要求设计者拥有对51单片机的基本运用能力。

拥有使用计算机语言进行简单程序开发的能力。

以及对新接触电子模块的学习使用能力。

1.3实验使用的仪器设备

一块单片机STC12C5A60S2、一块74LS04芯片、3个2位数码管、4个按键、一个石英晶振、两个30pf的电容、5个发光二极管。

二、整体制作思路

首先,我们明确本设计需要解决的问题有:

(1)芯片的选择

(2)硬件的连接

(3)电子时钟的实现

然后围绕这些问题进行总体考虑并逐项解决。

通过查阅大量资料,特别是论文,我们选择了单片机STC12C5A60S2,然后搭建了最小系统,通过proteus仿真,证实我们的方案是切实可行的,能够完成电子时钟功能。

最后通过把程序烧到单片机中,实现了设计要求。

在这过程中,其实并不是一帆风顺的,首先对最小系统的搭建就经过我们的大量讨论,然后才确定了器件的选择。

由于proteus中没有STC12C5A60S2,我们用AT89C51进行仿真实验。

接着就是程序了,这也是我们头痛的地方。

通过看书并到图书馆借阅单片机编程相关资料,我们编出了程序,但仿真时却发现有错误,通过反复修改并仿真,才最终完成设计要求。

最后我们将程序烧到焊好的单片机中,完成了本次课程设计。

3、系统设计

3.1硬件框图

本设计使用单片机STC12C5A60S2作为主控芯片,通过外接按钮进行时间调整,完成时间调整,并在数码管上显示出来相应的结果。

根据本次设计的要求,在尽量要求准确精简的条件下设计了以下电路框图。

本次设计包含有四个主要的部分:

单片机的最小系统,即由单片机,时钟电路,复位电路组成;数码管显示电路和按键控制电路。

其整体设计框图如下图3.1所示:

图3.1电路框图

STC12C5A60S2单片机功能介绍:

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

1.增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;

2.工作电压:

STC12C5A60S2系列工作电压:

5.5V-3.3V(5V单片机)STC12LE5A60S2

系列工作电压:

3.6V-2.2V(3V单片机);

3.工作频率范围:

0-35MHz,相当于普通8051的0~420MHz;

4.用户应用程序空间8K/16K/20K/32K/40K/48K/52K/60K/62K字节;

5.片上集成1280字节RAM;

6.通用I/O口(36/40/44个),复位后为:

准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:

准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55Ma;7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;

8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM);

9.看门狗;

10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);

11.外部掉电检测电路:

在P4.6口有一个低压门槛比较器,5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3%;

12.时钟源:

外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内)1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟,常温下内部R/C振荡器频率为:

5.0V单片机为:

11MHz~15.5MHz,3.3V单片机为:

8MHz~12MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准;

13.共4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器再加上2路PCA模块可再实现

2个16位定时器;

14.2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟;

15外部中断I/O口7路传统的下降沿中断或低电平触发中断并新增支持上升沿中断的PCA模块,PowerDown模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2),CCP1/P1.4(也可通过寄存器设置到P4.3);

16.PWM(2路)/PCA(可编程计数器阵列,2路):

——也可用来当2路D/A使用——也可用来再实现2个定时器——也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持);

17.A/D转换,10位精度ADC共8路,转换速度可达250K/S(每秒钟25万次)

18.通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA

软件实现多串口;

19.STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3);

20.工作温度范围:

-40-+85℃(工业级)/0-75℃(商业级)

21.封装:

PDIP-40,LQFP-44,LQFP-48I/O口不够时,可用2到3根普通I/O口线外接74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双

CPU,三线通信,还多了串口。

时钟电路模块:

单片机时钟内部有一个高增益反向放大器,用于构成时钟震荡电路,XTAL1为该放大器的输入端,XTAL2为放大器的输出端,但要形成时钟还需附加其他的电路。

(1)内部时钟方式利用单片机内部的高增益反相放大器,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路便产生自激振荡。

定时元件一般采用石英晶体和电容组成的并联谐振回路。

晶体可在1.2~12MHz之间任选,电容可在5~30pF之间选择,电容C1和C2的大小可起频率微调的作用,电容大小要和晶体的容性负载阻抗相匹配,否则不易起振。

(2)外部时钟方式外部时钟方式常用于多机系统,以便各个单片机能够同步工作。

对外部振荡信号无特殊要求,但需保证脉冲宽度不小于20ns,且频率应低于单片机所支持的最高频率。

本设计采用12Mhz的晶振,30pF的电容,内部时钟电路。

如图3.2所示:

图3.2时钟电路

复位电路模块:

计算机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。

MCS-51单片机有一个复位引脚RST,采用施密特触发输入,对于CHMOS单片机,RST引脚的内部有一个低拉电路。

当振荡器起振后,只要该引脚上出现2个机器周期以上的高电平时即可确保使器件复位。

复位完成后,如果RST端继续保持高电平,单片机就一直处于复位状态,只有RST端恢复低电平后,单片机才能进入其他工作状态。

RST端的外部复位电路有两种复位操作形式:

上电自动复位和按键手动复位。

(1)上电自动复位电路对于HMOS型单片机,只要在RST复位端接一个电容至VCC和一个电阻至VSS(地),就能实现上电自动复位。

在加电瞬间,电容通过电阻充电,就在RST端出现一定宽度的高电平,只要高电平时间足够长,就可以使单片机有效复位。

RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间。

VCC上升时间约为10ms,振荡器起振时间和频率有关。

10MHz时约为1ms.1MHz时约为10ms,所以一般为了可靠的复位,RST在上电时应保持20ms以上的高电平。

当振荡频率为12MHz时,典型值为C=10Uf,R=8.2K。

(2)按键手动复位按键手动复位有电平方式和脉冲方式两种。

按键电平复位是通过使复位端经电阻与VCC接通而实现的;按键脉冲复位则是利用RC微分电路产生正脉冲来实现的。

复位电路采用手动复位和上电自动复位组合。

如图3.3所示:

图3.3复位电路

外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。

键盘控制模块:

根据题目要求及另加的一些功能要求,总共只需要4个按键(如图3.4),故选用独立按键模式。

这4个键分别为,调时选择键k0、加值键k1、减值键k2、单片机复位键k3。

下面具体介绍一下每个键的功能。

K0:

时、分、秒的调时选择键。

K1:

加值键,每按一次所选的时间值加1;K2:

减值键,每按一次所选的时间值减1;K3:

单片机手动复位键。

图3.4控制按键

3.2电路原理与电路图

3.2.1电路原理

一个AT89C51单片机做为控制电路,用P0、P2口来控制数码管的段码和位码,利用动态扫描来实现数码管的显示。

开通定时器T0中断来对数码管的查表和1秒的准确计时,然后利用P3口的低三位作为判断程序,判断是否分时秒是否溢出,若无溢出则显示当前值,若溢出则清零实现时分秒的加一。

3.2.2电路原理图

图3.1电路原理图

3.3程序框图

3.3.1系统软件设计主程序流程图

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

图3.2主程序流程图

3.3.2定时器/计数器T0中断服务程序

计数选择定时器/计数器T0.具体处理如下:

定时器/计数器T0选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清零;分单元加到60则对时单元加1,同时分单元清零;时单元加到24则对时单元清零,标志一天时间计满,这样就行成了时钟关系。

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

定时器/计数器T0中断服务的流程图如下:

图3.3定时器/计数器T0中断服务程序的流程

3.3.3按键处理模块

按键处理设置为:

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

当按K0键一次,时钟暂停走动,进入调分状态,再按K0键一次,进入调小时状态,再按K0键一次,回到正常走时;对于K1和K2按键,如果是正常走时,按K1和K2不起作用,如果进入调时或调分状态,按K1可对时或分进行加1操作,小时加到24则回到0,分加到60则回到0;按K2可对时或分进行减1操作,小时减到负责回到23,分减到负则回到59。

按键处理模块的流程如图所示:

图3.4按键处理模块的流程

四、仿真及结果

4.1Protues仿真图

通过protues建立基于AT80C51单片机仿真原理图,按键从左到右,第一个键为模式选择键,按第一次暂停设分钟,按第二次暂停,设小时,按第三次从新走动。

第二个键为加1键,第二个键为减一键。

4.2仿真结果

通过Proteus进行仿真,通过按键调整让其显示时间为12时07分。

4.3实物图片

上图是由STC12C5A06S2单片机做出的实物,可以通过按钮调整时间。

五、结束语

我在这一次数字电子钟的设计过程中,很是受益匪浅。

通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。

这为自己今后进一步深化学习,积累了一定宝贵的经验。

撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。

这个实验十分有意义我获得很深刻的经验。

通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。

我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。

学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。

这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。

 

六、参考文献

[1]曹巧媛,单片机原理及应用[M],北京:

电子工业出版社,1997.7

[2]赵秀珍,单永磊,单片微型计算机原理及其应用[M],北京:

中国水利水电出版社,2001.8

[3]张毅刚,修林成,胡振江,MCS-51单片机应用设计[M],哈尔滨:

哈尔滨工业大学出版社,1990.8

[4]张洪润,兰清华,单片机应用技术教程[M],北京:

清华大学出版社,1997.11

[5]李华,MCS-51系列单片机实用接口技术[M],北京:

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

[6]陈景初,单片机应用系统设计与实践[M],北京:

北京航空航天大学出版社

[7]马忠梅,单片机的C语言Windows环境编程宝典[M],北京:

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

[8]李光飞,单片机C程序设计指导[M],北京:

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

 

附录

源程序如下:

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharsec,min,hour;//定义时、分、秒变量

ucharcounter10ms0,counter10ms1;//定义T0和T1的10ms计数变量

ucharcounter05s0;//定义0.5秒变量

ucharKeyCounter;//定义保存功能按键计数值变量

ucharOldKey;//定义保存按键状态变量

bitAddFlag,SubbFlag;//定义加、减按键标志

bitFlashFlag;//定义闪烁标志

sbitLED1=P1^0;

sbitLED2=P1^1;

sbitLED3=P1^2;

sbitLED4=P1^3;

ucharDisbuff[8]={1,2,10,3,4,10,5,6};//定义数码管显示缓冲区单元

ucharcodeDisCode[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//共阳数码管段码,0~9及“-”“熄灭”字符的字型码

//ucharcodeDisCode[12]={0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};

//共阴数码管段码,0~9及“-”“熄灭”字符的字型码

sbitLED=P3^4;//工作指示灯

/****************************************

*延时函数Delaynms(uintdly)*

*延时时间dlyx1ms12MHz*

****************************************/

voidDelaynms(uintdly)

{

uchari;

while(dly--)

for(i=0;i<123;i++);

}

/***************************************/

/****************************************

*显示函数Display()*

*功能:

根据将8个数码管显示一遍*

****************************************/

voidDisplay(void)

{

uchari,n=0x01;

for(i=0;i<8;i++)

{

P0=DisCode[Disbuff[i]];//送段码

P2=~n;//开位选

Delaynms

(1);//延时

n=n<<1;//位选移位

P0=0xff;//段码低电平全灭

P2=0xff;//经过非门后变成高电平,使得位选关闭

}

}

/****************************************/

/****************************************

*BIN码变换成BCD码函数TimeDataBin2Bcd()*

*功能:

将时、分、秒分离出十位和个位*

****************************************/

voidTimeDataBin2Bcd()

{

Disbuff[0]=hour/10;//分离小时十位

Disbuff[1]=hour%10;//分离小时个位

Disbuff[3]=min/10;//分离分钟十位

Disbuff[4]=min%10;//分离分钟个位

Disbuff[6]=sec/10;//分离秒十位

Disbuff[7]=sec%10;//分离秒个位

}

/***************************************/

/****************************************

*读入按键函数ReadKey()*

*功能:

若有按键按下,返回按键值*

*若没有按键按下,返回255*

****************************************/

ucharReadKey()

{

ucharKey;

Key=P3&0xe0;//读入按键值P3&11100000

if(Key!

=0xe0)

{//若有键按下

Delaynms(10);

Key=P3&0xe0;//重新读入按键值

if(Key!

=0xe0)

{//若有键按下

if((Key!

=0xe0)&&(OldKey==0xe0))//判断是否下降沿?

?

{

OldKey=Key;//保存本次按键值

return(Key);//返回按键值

}

}

}

OldKey=Key;//无键按下,保存本次按键值,返回255

return(255);//不能够删,否则出错?

}

/***************************************/

/****************************************

*按键分析函数KeyAnalysis(ucharKey)*

*功能:

对功能键计数*

*对加、减键设标志*

****************************************/

voidKeyAnalysis(ucharKey)

{

if(Key!

=255)

{//有键按下

switch(Key)

{

case0x60:

KeyCounter++;//功能键按下01100000因为85行Key=P3&0xe0;//重新读入按键值

if(KeyCounter==3)KeyCounter=0;

break;

case0xa0:

if(KeyCounter!

=0)AddFlag=1;break;

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

当前位置:首页 > 高中教育 > 数学

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

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