电子数字时钟Word文档格式.docx
《电子数字时钟Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子数字时钟Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
3、高吉祥《全国大学生电子设计大赛培训教程》电子工业出版社2007.5
4、DS1302DATASHEET
5、DS18B20DATASHEET
摘要
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑和时序电路。
我设计的多功能数字时钟系统是由中央控制器、时钟系统、报警系统、温度检测器、显示器与键盘部分组成。
控制器采用单片机AT89C51,温度检测部分采用DS18B20温度传感器,时钟系统用时钟芯片DS1302,用LCD液晶1602A作为显示器。
单片机通过时钟芯片DS1302获取时间数据,对数据处理后显示时间;
温度传感器DS18B20采集温度信号送给单片机处理,单片机再把时间数据和温度数据送液晶显示器1602显示;
本系统共设置4个功能按键,其中一个为整机复位按键,另外三个用于时钟的各种操作。
关键词:
单片机AT89C51LCD1602液晶显示器DS18B20DS1302
Abstract
Adigitalclockisakindofdigitalcircuittechnologyimplementation,minutesandsecondstimingdevice,andthemechanicalclockcomparedwithhigheraccuracyandintuitive,andwithoutamechanicaldevice,havingalongerservicelife,hasbeenwidelyused.Adigitalclockfromprinciplespeakingisakindoftypicaldigitalcircuits,includingcombinationlogicandsequentialcircuits.
Thismulti-functionaldigitalclocksystemiscomposedofacentralcontroller,clocksystem,alarmsystem,temperaturedetectors,monitorandkeyboardparts.ControllerusingSCMAT89C51,temperaturedetectionpartisDS18B20temperaturesensor,clocksystemwithclockchipDS1302,withthe1602AasaliquidcrystaldisplayLCD.MicrocontrollerthroughtheclockchipDS1302-timedataacquisition,dataprocessingrightaftertheshowtime;
temperaturesensorDS18B20collectingtemperaturesignalsenttoMCUprocessing,microcontrollertimedataandtemperaturedatathensend1602LCDdisplay;
ofthissystemweresetfourfunctionkeys,Oneoftheresetbuttonforthemachineandanotherthreeforavarietyofclockoperation.
Keywords:
AT89C51;
LCD1602Display;
DS18B20;
DS1302
第一章概述
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
本方案设计的多功能电子钟除了传统的显示时间功能之外还可以测试温度、电网频率、电压、并提供了过压报警、非接触止闹等功能。
其中温度采用AD590温度传感器电路测得,非接触止闹则采用红外控制技术实现。
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
数字钟已成为人们日常生活中:
必不可少的必需品,广泛用于个人家庭以与车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、集成电路有体积小、功耗小、功能多、携带方便等优点,,因此在许多电子设备中被广泛使用。
电子钟是人们日常生活中常用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间与星期的显示功能。
本次设计以数字电子为主,分别对1S时钟信号源、秒计时显示、分计时显示、小时计时显示、整点报时与校时电路进行设计,然后将它们组合,来完成时、分、秒的显示并且有整点报时和走时校准的功能。
并通过本次设计加深对数字电子技术的理解以与更熟练使用计数器、触发器和各种逻辑门电路的能力。
第二章设计方案论证
方案一
用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。
显示时间和温度使用数码管显示。
方案1系统结构框图如图1.1所示。
图1.1方案1系统结构框图
方案二
用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键蜂鸣器提示,温度传感器使用普通的温度传感器,由于温度传感器采集的数据为模拟量,又因为单片机AT89C51内部没有集成模数转换器,需要在控制系统的外部使用A/D转换装置,另外系统还应该把采集来的数据进行信号处理,显示温度和时间使用LCD1602显示。
方案2系统结构框图如图1.2所示。
图1.2方案2系统结构框图
方案三
用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS公司生产的单总线式数字温度传感器。
显示时间和温度使用LCD1602显示。
方案3系统结构框图如图1.3所示。
图1.3方案3系统结构框图
方案选择
方案一直接使用单片机内集成的定时器,产生定时节拍,编制软件计数器,进行节拍技术,理论上讲,不但能够完成秒表设计,还能够实现分钟、刻钟、小时的实时计时功能,在此基础上,如果加上足够精确的误差时间补偿处理,甚至可以实现日、星期、月、年等日历功能。
但使用片内定时器有以下几个问题:
1、时间补偿
片内定时器采用中断方式提供计时节拍,中断的实质是随机程序切换,那么,中断响应时间是不可精确预测的。
这样,必然会导致计时节拍的时间误差,在计时时间较短的情况下,比如1~99s计时,可以采用一些软件措施进行误差补偿,但当系统所需要的计时时间较长时,比如进行年、月、日的日历计时,定时中断误差扥积累就会很大,无法满足时间精度的要求。
因此,在需要日历、时钟的场合,片内定时器的作用有限。
片内定时器只适合于单片机短时间计时的要求。
2、时钟维持
使用片内定时器进行计时的时候,单片机始终要处于工作状态。
才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。
在单片机系统中,有时,需要维持一个时钟,对控制工作进行时间标定。
不管单片机系统开机、关机还是待机,系统时钟要始终维持。
为了满足单片机系统的实时钟需求,最可靠的方法是采用实时钟芯片DS1302。
温度的数据采集如果是一般的温度传感器,需要对信号进行处理,另外还需要模数转换装置,如果采用的是数字温度传感器18B20,可以直接将采集的信号转化为数字信息供单片机控制,这样不仅节约了成本,还提高了系统的可靠性和稳定性。
所以本设计采用的是方案三。
第三章电路硬件设计与分析
3.1时钟电路
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
51单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以与电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
时钟电路如图2.1所示。
图2.1时钟电路图
3.2复位电路
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通常采用上电自动复位和按键手动复位两种方式,此电路系统采用的是按键手动复位电路,高电平时复位,如图所示。
当时钟频率选用12MHz时,C取22μF,R约为1K。
复位电路如图2.2所示
图2.2复位电路图
3.3DS1302时钟电路
本设计中的采用的时钟芯片是DS1302
DS1302的结构与工作原理
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
DS1302这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32.768kHz晶振。
引脚功能与结构
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>
2.0V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK为时钟输入端。
下图2.3为DS1302的引脚功能图2.3:
图2.3DS1302封装图
DS1302的控制字节
DS1302的控制字如图2.4所示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1指示操作单元的地址;
最低有效位(位0)如为0表示要进行写操作,为图表示进行读操作,控制字节总是从最低位开始输出。
图2.4DS1302的控制字
DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器与其控制字见表1此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器与与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;
另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:
复位(RST)、I/O数据线、串行时钟(SCLK)。
DS1302时钟电路如图2.5所示。
图2.5DS1302时钟电路图
3.4DS18B20温度计电路
DS18B20它具有3引脚TO-92小体积封装形式,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
以上特点使DS18B20非常适用于远距离多点温度检测系统。
电路图如图2.4所示。
图2.6DS18B20温度计电路
3.5键盘电路
键盘接口是单片机应用系统中最常用的接口之一,键盘的类型很多,常用的有独立式键盘和矩阵式键盘,因为本设计需要的键盘比较少,所以采用独立式键盘。
在键盘的应用中,需要解决键盘消抖的问题,一般使用的是软件消抖的方法。
键盘的电路图如图2.5所示。
图2.6键盘电路图
3.6显示电路
显示器是单片机常用的功能单元之一,显示器的主要功能是为单片机系统使用者提供必要的单片机工作信息,或者提供工作状态的提示信息,显示器的工作是由单片机通过显示接口驱动的。
本设计采用的是LCD1602显示电路图如图2.6所示。
图2.7LCD1602显示电路图
3.7按键提示电路
本设计具有按键蜂鸣器响的功能,使得按键可靠工作。
按键提示电路如图2.7所示。
图2.7按键提示电路如图
第四章软件设计
4.1主函数流程图
主函数流程图如图3.1所示。
图3.1主函数流程图
4.2DS18B20温度计程序流程
DS1820温度计程序流程图如图3.2所示。
图3.2DS1820温度计程序流程图
4.3按键程序流程图
按键程序流程图如图3.3所示。
图3.3按键程序流程图
4.4定时器T0中断服务程序流程图
定时器T0中断服务程序流程图如图3.4所示。
图3.4定时器T0中断服务程序流程图
4.5电路图
4.6Proteus仿真效果图
带时钟显示的温度计Proteus仿真效果图如图4.1所示。
图4.1带时钟显示的温度计Proteus仿真效果图
参考文献
[1]陈梓城《实用电子电路设计与调试》中国电力出版社2006
[2]曹薇《单片机原理与应用》中国实力水电出版社2004.8
[3]高吉祥《全国大学生电子设计大赛培训教程》电子工业出版社2007.5
[4]DS1302DATASHEET
[5]DS18B20DATASHEET
[6]郭天祥,《新概念51单片机C语言教程——入门、提高、开发、拓展全攻略》;
北京:
电子工业出版社;
2009
[7]宋戈、黄鹤松、员玉良、蒋海峰,《51单片机应用开发范例大全》;
人民邮电出版社;
2010
[8]阎石,《数字电子技术基础(第四版)》;
高等教育出版社;
1998
[9]邹显圣,《基于AT89C51单片机数字时钟的研究》,机电产品开发与创新;
2009,(5)
[10]刘伏文、王春华,《MCS-51单片机存储器结构详解》;
电子制作;
2007,(10).
[11]卢旭锦,《基于KeilC的AT24C02串行E~2PROM的编程》;
现代电子技术;
2007,(8)
致谢
这款多功能计数器采用了现在广泛使用用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用大屏幕液晶显示、红外遥控装置和电压报警装置使人机交互简便易行,较为有效地完成了题目的要求。
本次毕业设计得到得到了于祯老师的大力支持,他提出了许多的意见和建议,他的指导是我受益匪浅,在此表示衷心的感谢。
由于本人能力有限,在设计中难免会出现错误与不足,希望各位老师与读者给予批评指正并提出宝贵意见。
附录1主程序清单
#include<
reg51.h>
#include"
DS18B20_3.H"
#defineuintunsignedint
#defineucharunsignedchar
uchara,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;
#defineyh0x80//LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)
#defineer0x80+0x40//LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)
sbitrs=P2^0;
sbiten=P2^2;
sbitrw=P2^1;
//如果硬件上rw接地,就不用写这句和后面的rw=0了
sbitled=P2^6;
//LCD背光开关
sbitIO=P1^1;
sbitSCLK=P1^0;
sbitRST=P1^2;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
sbitkey1=P1^5;
//设置键
sbitkey2=P1^6;
//加键
sbitkey3=P1^7;
//减键
sbitbuzzer=P1^3;
//蜂鸣器,通过三极管9012驱动,端口低电平响
ucharcodetab1[]={"
20--"
};
//年显示的固定字符
ucharcodetab2[]={"
:
"
//时间显示的固定字符
voiddelay(uintxms)//延时函数,有参函数
{
uintx,y;
for(x=xms;
x>
0;
x--)
for(y=110;
y>
y--);
}
write_1602com(ucharcom)//****液晶写入指令函数****
rs=0;
//数据/指令选择置为指令
rw=0;
//读写选择置为写
P0=com;
//送入数据
delay
(1);
en=1;
//拉高使能端,为制造有效的下降沿做准备
en=0;
//en由高变低,产生下降沿,液晶执行命令
write_1602dat(uchardat)//***液晶写入数据函数****
rs=1;
//数据/指令选择置为数据
P0=dat;
//en置高电平,为制造下降沿做准备
//en由高变低,产生下降沿,液晶执行命令
lcd_init()//***液晶初始化函数****
write_1602com(0x38);
//设置液晶工作模式,意思:
16*2行显示,5*7点阵,8位数据
write_1602com(0x0c);
//开显示不显示光标
write_1602com(0x06);
//整屏不移动,光标自动右移
write_1602com(0x01);
//清显示
write_1602com(yh+1);
//日历显示固定符号从第一行第1个位置之后开始显示
for(a=0;
a<
14;
a++)
{
write_1602dat(tab1[a]);
//向液晶屏写日历显示的固定符号部分
//delay(3);
}
write_1602com(er+2);
//时间显示固定符号写入位置,从第2个位置后开始显示
8;
write_1602dat(tab2[a]);
//写显示时间固定符号,两个冒号
voidwrite_byte(uchardat)//写一个字节
ACC=dat;
RST=1;
for(a=8;
a>
a--)
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC>
>
1;
ucharread_byte()//读一个字节
ACC7=IO;
return(ACC);
voidwrite_1302(ucharadd,uchardat)/