基于51单片机、时钟芯片、语音芯片的数字时钟设计与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于51单片机、DS1302和ISD1420数字时钟设计说明书09级通信工程罗强胡自健覃咏辉2012年5月4日LOGO目录一、引言二、总体设计三、硬件设计四、软件设计五、数字钟制作过程中遇到的问题六、总结附录Ⅰ:作品图片展示附录Ⅱ:DS1302时钟芯片的工作原理和使用方发附录Ⅲ:参考资料LOGO一、引言此次是科技学院举办的首届“电子设计与程序设计”大赛,我们班的同学积极参加,设计出属余自己的满意作品。为了进一步熟悉51单片机的编程以及学习数字钟的相关设计方法,我们进行了本次数字钟的设计。我们在规定的一个多星期时间里,基于51单片机——STC89C52单片机、时钟芯片DS1302及语音芯片ISD1420设计并实现了数字时钟。在硬件焊接完成并且调试成功之际,为了进一步提高自己动手能力和编程能力,对这次数字钟的设计和制作的过程中遇到的问题及设计思路做一总结。随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。现在,最具代表性的计时产品就是电子万年历除了原有的显示时间、日期等基本功能外,还具有闹铃,语音报时、报警等功能。其利用STC89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。在21世纪的今天,单片机仍然有着它不可替代的地位和独,为了进一步学习51单片机的控制和编程,我们利用51单片机自己设计并制作数字钟。LOGO二、总体设计此数字钟主要利用单片机STC89C52、时钟芯片DS1302和语音芯片ISD1420设计完成。2.1设计与运行环境数字钟的程序设计和调试均在KeiluVision2环境下完成的。设计并完成的程序下载至STC89C52单片机后,即可初始化时钟芯片DS1302从而开始计时,系统开始正常运行。2.2硬件功能描述数字钟能够完成24小时制计时,计时初始化值设为12:30:30,用户可以通过按键调整时钟的初值实现校时功能,可以通过软件设定3个24小时以内任意时刻的闹铃,且能进行语音报时,用户可以手动选择闹铃的开或者关两种状态。LOGO三、硬件设计3.1系统硬件框图80c52DS1302ISD142074ls234共阳数码管闹铃LM386speakerMICLOGO3.2、硬件设计数字钟的电路主要有电源模块、显示模块、按键模块、复位电路模块、时钟芯片模块、语音芯片模块、主控芯片STC89C52模块和闹铃模块等大模块组成。3.2.1、电源电源模块采用7805进行稳压,保证+5V电压的稳定输出,进一步提高系统的抗干扰能力和稳定性。7.4vcc+-+-+电源稳压芯片+-LOGO3.2.2、独立按键模块系统有6个独立按键,独立按键S1、S2、S3分别接至单片机P3.2、P0.0、P0.3口,S4、S5、S6分别接至语音芯片P27、P25、P24。s1s2s3s4s5s6调时按键语音芯片录放音按键P3.2P0.0P0.3P27P25P24LOGO3.2.3、显示模块一个良好的显示模块对一个系统非常重要,所有操作结果和计时结果,都要通过显示模块来显示出来。常用的显示模式有LED7段数码管显示、点阵显示和液晶显示。液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,可视面积大,分辨率高,抗干扰能力强等特点。但由于液晶其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片。鉴于LED7段数码管成本低,也比较容易实现的特点,最终确定使用共阴极数码管来显示。本系统显示模块电路由一块74ls245、和两个四位一体7段数码管组成。74ls245用来驱动数码管,74ls245的A0~A7分别接四位一体数码管的段选。74LS245P2LOGO3.2.4、复位电路模块复位电路主要的功能是是整个系统初始化,在每次上电时系统自动初始化,如果在程序运行的过程中程序没有响应或者需要进行一次初始化,这是可以通过按复位开关来实现需要的有效操作。LOGO3.2.5时钟芯片模块DS1302时钟芯片是本系统实现高精度计时的关键。利用DS1302时钟芯片独立于单片机来计时,在提高计时进度的同时也提高了整个系统的抗干扰能力。DS1302通过SCLK、I/O、RES端口和单片机STC90C52进行通信。SCLK接至单片机P3.4口,在读写操作时给DS1302提供相应的时钟脉冲;I/O接至P3.5用来传送所有的数据;RES接至单片机P3.6上用来控制单片机与时钟芯片间的数据传送的开始与结束。DS1302的工作原理及使用方法见附录Ⅰ。LOGO3.2.6语音芯片模块ISD1420模块单片录放时间20秒,音质好。芯片采用CMOS技术,内含振荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。最小的录放系统仅需麦克风、喇叭、两个按钮、电源及少数电阻和电容。其性能特点如下:(1)使用方便的单片20秒语音录放(2)高质量、自然的语音还原技术(3)边沿/电平触发放音(4)自动节电,维持电流0.5μA(5)不耗电信息保存100年(典型值)(6)100,000次录音周期(典型值)(7)多段信息处理,可分1至160段(8)片内免调整时钟,也可选用外部时钟(9)无需开发系统(10)5V单电源工作LOGOISD1420的内部结构框图LOGOISD1420固定地址录放音电路LOGO3.1.7、主控模块主控模块的核心组成部分是单片机STC89C52,承担着所有操作任务的调控与分派工作。LOGO3.2.8、闹铃模块闹铃模块由蜂鸣器和蜂鸣器的驱动(三极管)组成。在有闹铃发生的时候,蜂鸣器的驱动电路驱动蜂鸣器发声,产生闹铃的效果。LOGO四、软件设计4.1、程序设计流程图4.1.1、主程序流图开始DS1302初始化读一次DS1302计数值判断闹铃是否发生?闹铃响Y语音报时动态显示扫描NINTO是否中断?中断校时YNLOGO4.1.2、DS1302读写流程图结束结束写DS1302读DD1302LOGO4.2、源程序本程序主要实现的功能:利用时钟芯片DS1302、语音芯片ISD1420和STC89C52进行高精度计时,能够实现时、分、秒的显示,具有校时、定时、闹铃和语音报时的功能。#includereg52.h#includestdio.htypedefunsignedcharuchar;//驱动程序定义#defineWRITE_SECOND0x80#defineWRITE_MINUTE0x82#defineWRITE_HOUR0x84#defineREAD_SECOND0x81#defineREAD_MINUTE0x83#defineREAD_HOUR0x85#defineWRITE_PROTECT0x8Eucharsecond,minute,hour;//定义三个全局量ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳h-a//位寻址寄存器定义sbitACC_7=ACC^7;sbitSCLK=P3^4;//DS1032时钟信号sbitDIO=P3^5;//DS132数据信号sbitCE=P3^6;//DS1032片选sbitP2_0=P1^0;sbitP2_1=P2^1;sbitP2_2=P2^2;sbitP2_3=P2^3;sbitP2_4=P2^4;LOGOsbitP2_5=P2^5;sbitP2_6=P2^6;sbitP2_7=P2^7;sbitP0_0=P0^0;sbitP0_1=P0^1;sbitP0_2=P0^2;sbitP0_3=P0^3;sbitP0_4=P0^4;sbitP0_5=P0^5;sbitP0_6=P0^6;sbitP0_7=P0^7;sbitP3_0=P3^0;sbitP3_1=P3^1;sbitP3_3=P3^3;sbitP3_7=P3^7;//地址、数据发送子程序voidWrite1302(ucharaddress,uchardat){uchari,temp;CE=0;//数据传送终止SCLK=0;//清零时钟总线CE=1;//发送地址for(i=8;i0;i--)//循环8次移位{SCLK=0;temp=address;DIO=(bit)(temp&0x01);//每次传送低字节address=1;//右移一位SCLK=1;}LOGO//发送数据for(i=8;i0;i--){SCLK=0;temp=dat;DIO=(bit)(temp&0x01);dat=1;SCLK=1;}CE=0;}//数据读取子程序ucharRead1302(ucharaddress){uchari,temp,data1,data2;CE=0;SCLK=0;CE=1;//读取数据for(i=8;i0;i--){ACC_7=DIO;SCLK=1;ACC=1;SCLK=0;}LOGOCE=0;data1=ACC;data2=data1/16;//数据进制的转换data1=data1%16;//16进制转换10进制data1=data1+data2*10;return(data1);}//初始化DS1302voidDS1302Initial(){Write1302(WRITE_PROTECT,0x00);//禁止写保护Write1302(WRITE_SECOND,0x30);//秒初始化Write1302(WRITE_MINUTE,0x30);//分初始化Write1302(WRITE_HOUR,0x12);//小时初始化Write1302(WRITE_PROTECT,0x80);//允许写保护}//定时器延时voiddelay(uchardelaytime){uchari;TMOD=0X02;//T0定时器,方式2,自动重装初值TL0=0XA3;//每次0.1msTH0=0XA3;TR0=1;//启动T0for(i=delaytime;i0;i--){while(!TF0);TF0=0;//溢出标志清零}TR0=0;}LOGO//加一操作ucharINC(uchartime){uchardata1,data2;time++;data1=time%10;data2=time/10;data1=data2*16+data1;//10进制转16进(逆)return(data1);}//语音芯片地址voidIDS1420_add(uchara0,uchara1,uchara2,uchara3,uchara4,uchara5,uchara6,uchara7){P0_4=a0;P0_5=a1;P0_6=a2;P0_7=a3;P0_1=a4;P0_2=a5;P3_1=a6;P3_7=a7;}LOGOvoidIDS1420_play(){P3_3=0;delay(20);P3_3=1;}//数码管显示voiddisplay(ucharsec,ucharmin,ucharhou){P2_7=1;P1=table[sec%10];delay(30);P2_7=0;P2_6=1;P1=table[sec/10];//显示秒delay(30);P2_6=0;P2_5=1;P1=table[min%10];delay(30);P2_5=0;P2_4=1;P1=table[min/10];//显示分delay(30);LOGOP2_4=0;P2_3=1;P1=table[hou%10];delay(30);P2_3=0;P2_2=1;P1=table[hou/10];//显示时delay(30);P2_2=0;P2_0=1;P1=table[0];//显示余2位为0delay(30);P2_2=0;P2_1=1;P1=table[0];//显示余2位为0delay(30);P2_1=0;}LOGO//主函数voidmain(){uchari;P0_4=1;P0_5=1

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功