基于系列单片机及DS时钟芯片的电子钟设计报告I.docx
《基于系列单片机及DS时钟芯片的电子钟设计报告I.docx》由会员分享,可在线阅读,更多相关《基于系列单片机及DS时钟芯片的电子钟设计报告I.docx(20页珍藏版)》请在冰豆网上搜索。
基于系列单片机及DS时钟芯片的电子钟设计报告I
基于单片机的电子时钟
姓名:
班级:
112
专业:
电子科学与技术
学号:
指导教师:
完成日期:
2014/5/20
目录
摘要
一、引言………………………………………………………………………1
二、硬件电路设计……………………………………………………………2
2.1主要芯片……………………………………………………2
2.1.1微处理器……………………………………………………2
2.1.2DS1302简介………………………………………………4
2.1.3DS1302引脚说明…………………………………………5
2.1.474ls245简介及引脚说明…………………………………5
2.2时钟硬件电路设计………………………………………6
2.2.1时钟电路设计………………………………………………7
2.2.2整点报时功能………………………………………………8
2.2.3硬件原理图…………………………………………………9
三、proteus和keil软件仿真及调试…………………………………9
3.1电路的仿真………………………………………………9
3.2软件调试…………………………………………………9
四、C语言程序……………………………………………………………10
五、参考文献………………………………………………………………13
基于单片机及时钟芯片DS1302的电子时钟设计
摘要
电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。
本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。
本设计应用AT89C52芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。
这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。
本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。
该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
关键词:
电子钟;多功能;AT89C52;时钟芯片
一、引言
时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。
从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步。
致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。
1.1多功能电子时钟研究的背景和意义
20世纪末,电子技术获得了飞速的发展。
在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间。
然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。
平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。
所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的[1]。
电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品。
由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
1.2电子钟的功能
电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
当今市场上的电子时钟品类繁多,外形小巧别致。
也有体型较大的,诸如公共场所的大型电子报时器等。
电子时钟首先是数字化了的时间显示或报时器,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他功能,比如定时闹铃,万年历,环境温度、湿度检测,环境空气质量检测,USB扩展口功能等。
本设计电子时钟主要功能为:
1.具有时间显示和手动校对功能,24小时制;
2.具有年、月、日显示和手动校对功能;
3.具有整点报时功能
二、电子时钟硬件分析
考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本设计的硬件基础。
2.1主要芯片选择
2.1.1微处理器选择
目前在单片机系统中,应用比较广泛的微处理器芯片主要为8XC5X系列单片机。
该系列单片机均采用标准MCS-52内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。
例如比较常用的AT89C2052单片机,带有2KBFlash可编程、可擦除只读存储器(E2PROM)的低压、高性能8位CMOS微型计算机。
拥有15条可编程I/O引脚,2个16位定时器/计数器,6个中断源,可编程串行UART通道,并能直接驱动LED输出。
仅仅是为了完成时钟设计或者是环境温度采集设计,应用AT89C2052单片机完全可以实现。
但是将两种功能结合在一片单片机上,就需要更多的I/O引脚,故本设计采用具有32根I/O引脚的AT89C52单片机。
AT89C52单片机是一款低功耗,低电压,高性能CMOS8位单片机,片内含4KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEI公司的高密度、非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS-52兼容。
片内的FLASH存储器允许在系统内可改编程序或用常规的非易失性存储器编程器来编程。
因此,AT89C52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域[6]。
AT89C52具有以下主要性能:
1.4KB可改编程序Flash存储器;
2.全静态工作:
0——24Hz;
3.128×8字节内部RAM;
4.32个外部双向输入/输出(I/O)口;
5.6个中断优先级;2个16位可编程定时计数器;
6.可编程串行通道;
7.片内时钟振荡器。
此外,AT89C52是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式——空闲方式(IdleMode)和掉电方式(PowerDownMode)。
在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。
在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。
图2.1AT89C52芯片PDIP封装引脚图
AT89C51为适应不同的产品需求,采用PDIP、TQFP、PLCC三种封装形式,本系统采用双列直插PDIP封装形式。
2.1.2DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。
有主电源和备份电源双引脚,而且备份电源可由大容量电容(>1F)来替代。
需要强调的是,DS1302需要使用32.768KHz的晶振。
2.1.3DS1302引脚说明
图2.2DS1302芯片引脚图
其的引脚功能参照表2.1。
表2.1DS1302引脚功能说明
引脚号
名称
功能
1
VCC1
备份电源输入
2
X1
32.768KHz晶振输入
3
X2
32.768KHz晶振输出
4
GND
地
5
RST
控制移位寄存器/复位
6
I/O
数据输入/输出
7
SCLK
串行时钟
8
VCC2
主电源输入
2.1.474ls245简介及引脚说明
总线驱动器74LS245经常用作三态数据缓冲器,74LS245为双向三态数据缓冲器。
双向的有16个三态驱动器,每个方向8个。
在控制端,有效时(为低电平),由DIR端控制驱动方向:
DIR为“1”时方向从左到右(输出允许),DIR为“0”时方向从右到左(输入允许)。
74LS245的引脚图如下所示
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。
2.2电子时钟硬件电路设计
电子闹钟至少要包括秒信号发生器、时间显示电路、按键电路、供电电源、闹铃指示电路等几部分。
硬件电路框图参照图2.3。
该系统使用AT89C51单片机作为核心,通过读取时钟日历芯片DS1302数据,完成此电子时钟的主要功能——时钟。
使用比较通用的8段共阳数码管,做7位显示,分别显示时、分、秒。
键盘是为了完成时钟/日历的校对和日历/温度的显示功能。
由于此电子时钟要求具有闹铃功能,所以设计有闹铃电路,进行声音响铃。
整个电路使用了两种电源,+5V电源将为整个电路供电。
而+3V电源仅作为DS1302的备用电源。
当+5V电源被切断后,DS1302启用+3V电源,可以保持DS1302继续工作。
当+5V电源恢复供电,LED依旧显示当前时间,而不会因为断电使系统复位到初始化时间,避免了重新校时的麻烦。
2.2.1时钟电路设计
系统时钟应用了实时时钟芯片DS1302,其连接如图2.4。
该硬件电路设计简单,抗干扰能力强。
如图,AT89C51单片机P1.7直接接DS1302的RST端,上电后,AT89C51的P1.7脚自动输出高电平。
P1.5作为串行时钟接口,P1.6作为时钟数据的I/O。
DS1302采用双电源供电,平时由+5V电源供电,当+5V掉电之后,由图中BT1(+3V备用电池)供电。
特别需要注意X1和X2两端连接的晶振Y1,该晶振频率为32.768KHz。
图2.4系统时钟电路
2.2.2整点报时功能
采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。
也可以在编程的时候编写一段音乐程序,待闹铃时间到时,调用该音乐程序给扬声器,便响起音乐。
不过该方法只能做一些简单音乐,并且音乐程序会占用很多单片机存储资源。
还有一种方法是采用录音放音芯片1420做闹铃,先对录放音设备录入一段音乐,当到设定时间时,单片机控制录放音设备放音。
采用录放音电路,铃声可以是预先设定的一段自己喜欢的音乐,符合电器设备人性化的要求。
且1420芯片可以分段录音,还具有语音报时功能。
另外,也可以购置一块音乐集成电路,加置在单片机和蜂鸣器之间,当单片机连接闹铃电路的管脚送出高电平时,音乐集成电路会给蜂鸣器特定脉冲,使蜂鸣器发声。
此类集成电路体积较小,使用方便,不足的是音乐简单、单一。
闹铃的闹钟不是本设计中的重点,故采用最简单的方法,占用单片机一根I/O口P1.7,中间用PNP型三极管S9012连接P1.7和蜂鸣器。
当P1.7引脚为低电平时,S9012的发射极和集电极导通,使蜂鸣器发声。
当响铃标志位为“1”时,P1.7送一定频率脉冲,使蜂鸣器U11发出声音。
如图所示
2.2.3Protues—ISISPROFESSIONAL软件画原理图
原理图
三、proteus软件仿真及调试
3.1电路板的仿真
利用keil软件编写源程序。
在protues中画好其电路图如下图4.1所示:
3.2软件调试
在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段。
在本设计中,软件调试主要分两大部分:
实时时钟日历子程序调试、按键子程序调试。
将这两部分调试成功,那么整个设计的软件部分也就基本完成了。
图4.1数字钟仿真图
按键说明:
在protues调试时第一个按键是校准小时的也就是数码管前两位,第二个按键是校准分钟的,第三个按键是校准秒的
用C语言编写:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
uchardata_7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
ucharhour,min,sec;
sbitshi=P1^0;
sbitfen=P1^1;
sbitmiao=P1^2;
sbitrst=P1^4;
sbitsck=P1^5;
sbitio=P1^6;
sbitfm=P1^7;
/*函数声明:
*/
voidwrite_ds1302_byte(uchardat);
voidwrite_ds1302(ucharadd,uchardat);
ucharread_ds1302(ucharadd);
voidread_rtc();
voidset_rtc();
voiddisplay();
voiddelay(intn);
voidshow();
voidfmzz();
/*DS1302单字节写入:
*/
voidwrite_ds1302_byte(uchardat)
{
uchari;
for(i=0;i<8;i++)
{
sck=0;
io=dat&0x01;
dat=dat>>1;
sck=1;
}
}
/*DS1302多字节写入:
*/
voidwrite_ds1302(ucharadd,uchardat)
{
rst=0;_nop_();
sck=0;_nop_();
rst=1;_nop_();
write_ds1302_byte(add);
write_ds1302_byte(dat);
rst=0;_nop_();
io=1;
sck=1;
}
/*DS1302读取:
*/
ucharread_ds1302(ucharadd)
{
uchari,value;
rst=0;_nop_();
sck=0;_nop_();
rst=1;_nop_();
write_ds1302_byte(add);
for(i=0;i<8;i++)
{
value=value>>1;
sck=0;
if(io)value=value|0x80;
sck=1;
}
rst=0;_nop_();
sck=0;_nop_();
sck=1;
io=1;
returnvalue;
}
/*调整时间:
*/
voidset_rtc()
{
if(shi==0)delay(100);
if(shi==0)
{
hour=(hour>>4)*10+(hour&0x0f);
hour++;
if(hour==24)hour=0;
hour=((hour/10)<<4)+(hour%10);
write_ds1302(0x84,hour);
}
if(fen==0)delay(100);
if(fen==0)
{
min=(min>>4)*10+(min&0x0f);
min++;
if(min==60)min=0;
min=((min/10)<<4)+(min%10);
write_ds1302(0x82,min);
}
if(miao==0)delay(100);
if(miao==0)
{
sec=(sec>>4)*10+(sec&0x0f);
sec++;
if(sec==60)sec=0;
sec=((sec/10)<<4)+(sec%10);
write_ds1302(0x80,sec);
}
}
/*读取时间:
*/
voidread_rtc()
{
hour=read_ds1302(0x85);
min=read_ds1302(0x83);
sec=read_ds1302(0x81);
}
/*显示时间:
*/
voiddisplay()
{
unsignedinta=1;
P2=0x01;P0=data_7seg[hour/16];delay(a);
P2=0x02;P0=data_7seg[hour%16];delay(a);
P2=0x04;P0=data_7seg[min/16];delay(a);
P2=0x08;P0=data_7seg[min%16];delay(a);
P2=0x10;P0=data_7seg[sec/16];delay(a);
P2=0x20;P0=data_7seg[sec%16];delay(a);
}
/*蜂鸣:
*/
voidfmzz()
{
uinti;
for(i=0;i<100;i++)
{
fm=!
fm;
delay
(2);
}
}
/*延时程序:
*/
voiddelay(intn)
{
unsignedinti,j;
for(i=0;i{
for(j=0;j<121;j++)
{;}
}
}
/*显示学号:
*/
voidshow()
{
unsignedintm;
for(m=0;m<20;m++)
{
uinta=10;
P2=0x01;P0=data_7seg[7];delay(a);
P2=0x02;P0=data_7seg[2];delay(a);
P2=0x04;P0=data_7seg[4];delay(a);
P2=0x08;P0=data_7seg[1];delay(a);
P2=0x10;P0=data_7seg[1];delay(a);
P2=0x20;P0=data_7seg[8];delay(a);
}
}
/*主程序:
*/
voidmain()
{
show();
write_ds1302(0x84,0x12);//初始化
write_ds1302(0x82,0x00);
write_ds1302(0x80,0x00);
while
(1)
{
set_rtc();
read_rtc();
display();
if(min==0)
{if(sec==0)
{fmzz();}
}
}
}
五、参考文献
1、倪晓军章韵等.单片机原理与接口技术教程.北京:
清华大学出版社,2009
2、DS1302中文手册
3、谭浩强等.C程序设计.北京:
清华大学出版社,2005
4、王守忠聂元铭.51单片机开发入门与典型实例.北京:
人民邮电出版社,2009