多功能数字钟设计报告中国计量学院2010年5月3日目录摘要1.设计任务1)基本要求2)发挥部分2.方案论证与比较1)显示部分2)数字时钟3)温度采集4)闹铃部分5)电源模块3.总体方案1)工作原理2)总体设计4.系统硬件设计1)STC89C52RC单片机最小系统2)测温模块3)时钟模块4)存储器模块5)LCD显示模块6)电源模块5.单片机程序部分1)程序编写6.测试与结果分析1)基本部分测试与分析2)发挥部分测试与分析3)创新部分测试与分析7.设计总结摘要本设计采用LCD液晶屏幕显示系统,以STC89C52RC单片机为核心,由键盘、温度采集、定时闹铃、日期提醒等功能模块组成。基于题目基本要求,本系统对时间显示、闹铃方式进和温度采集系统行了重点设计。此外,扩展了整点报时、非易失闹铃信息存储、国内外重要节日提醒等功能。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,多数发挥部分也得到了实现,而且还具有一定的创新功能。关键字:STC89C52RC单片机、LCD液晶显示、双电源供电、温度采集、非易失定时闹铃、生日提醒、重要节日提醒、整点报时1、任务设计1)基本要求(1)具有时间设置(小时和分钟)、闹钟时间设置、闹钟开、闹钟关功能。(2)数字显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器。(3)利用键盘或其它方式切换,数字显示年、月、日、周次。(4)利用键盘或其它方式切换,数字显示当前环境温度(0~60℃0.2℃)。(5)利用手势或其它任意方式非接触停止闹钟。2)发挥部分(1)220VAC供电,具有测量、显示电网频率、电压有效值功能。(2)产生0-100k方波,频率10Hz步进可调,峰峰值〉20V(100欧姆负载),频率可以键盘控制。(3)断电后,可保存电压、频率测量值,断电时间,闹钟设置值等参数,可自动保存20次,系统来电后,无需手动设置,即可恢复正常工作。(4)遥控设置闹钟、时间等参数。2、方案论证1)显示部分:显示部分是本次设计的重要部分,一般有以下两种方案:方案一:采用LED显示,分静态显示和动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。而对于动态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。方案二:采用LCD显示。LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。鉴于上述原因,我们采用方案二。2)数字时钟数字时钟是本设计的核心的部分。根据需要可采用以下两种方案实现:方案一:方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。而且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。方案二:方案采用Dallas公司的专用时钟芯片DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,可使系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。3)温度采集由于现在用品追求多样化,多功能化,给系统加上温度测量显示模块,能够方便人们的生活,使该设计具有人性化。方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测小于1摄氏度的信号是不适用的。方案二:采用温度传感器DS18B20。DS18B20可以满足从-55摄氏度到+125摄氏度测量范围,且DS18B20测量精度高,增值量为0.5摄氏度,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。基于DS18B20的以上优点,我们决定选取DS18B20来测量温度。4)闹铃部分一般的时钟都带有闹铃,实现闹铃方式可采用以下两种:方案一:将闹钟信息存放在单片机自带的存储器中。该方案成本低而且易于实现,但是一但掉电会造成之前信息的丢失。方案二:将闹钟信息存放在非易失储存器AT24C02中。该方案即使在完全的掉电的情况下也不会造成闹钟信息的丢失,可避免方案一带来的麻烦。5)电源模块方案一:采用干电池作为系统电源。但需经常换电池,不符合节约型社会的要求。方案二:采用直流稳压电源作为系统主电源,干电池作为辅助电源。不仅不需要经常更换电源,并且当市电停止时能够采用干电池做为系统电源,使用更加安全可靠。基于以上分析,我们决定采用方案二3、总体方案1)工作原理:本设计采用STC89C52RC单片机作为本系统的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。2)总体设计:总体框架图如图1设图1总体框架4、系统硬件设计(单元电路设计及分析)1)STC89C52RC单片机最小系统:最小系统包括晶体振荡电路、复位开关和电源部分。图2为STC89C52RC单片机的最小系统。2)温度测量模块:温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。接口电路如图3所示。图3DS18B20测量电路3)时钟模块:时钟模块采用DS1302芯片,DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:RST复位、I/O数据线、SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW,其接线电路如4图2最小系统电路图图4时钟电路4)存储器模块:存储器采用Atmel公司的AT24C02芯片。该芯片带有2KB的串行COMSEEPROM,内部含有256个8位字节,可通过I2C总线对其接口进行读写操作,而且带有写保护功能。其接线图如图5所示。图5AT24C02存储器电路5)LCD液晶显示模块:LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作时电流仅2.0mA/5.0V。通过编程实现自动关闭屏幕能够更有效的降低功耗。LCD1602分两行显示,每行可显示多达16个字符。LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。其接线如图6图6LCD显示电路6)系统电源:双电源设计是本设计的重点。220V交流转5V直流稳压电源会更加安全、实用。当没有交流电时,系统采用干电池供电;当接通交流电时,则电路自动切换到交流电供电,并且对干电池进行慢性充电。电路图如图7:5、单片机程序部分1)程序编写#includereg51.hsbitled=P3^7;//电源指示sbitkey1=P2^0;sbitled6=P2^1;//模拟灯指示sfrsmdis=0x80;sbitweishuang0=P2^6;//数码管第一个位选sbitweishuang1=P2^7;//数码管第二个位选unsignedcharshu0,shu1,tc=0;unsignedinttimes;unsignedcharcodemd[]={0x7d,0x18,0xb5,0xb9,0xd8,0xe9,0xed,0x38,0xfd,0xf9,0x7f,0x1a,0xb7,0xbb,0xda,0xeb,0xef,0x3a,0xff,0xfd,0x40,0x00};//0,1,2,3,4,5,6,7,8,9,1.,2.,3.,4.,5.,6.,7.,8.,9.,-,灭,voiddelayt(unsignedintt){unsignedinti,j;for(i=t;i0;i--)for(j=0;j10000;j++);}voidint00()interrupt0{EX0=0;IE0=0;if(key1==0){led=1;led6=0;times=3200;while(times){shu1=(times/200)%10;shu0=(times/200)/10;图7电源电路}delayt(2);shu0=shu1=21;}//IE0=0;EX0=1;}voidint_t0()interrupt1{TR0=0;times--;tc++;if(tc=2){tc=0;}TH0=0xee;TL0=0x00;if(tc==0){smdis=md[shu0];weishuang0=0;weishuang1=1;}elseif(tc==1){smdis=md[shu1];weishuang0=1;weishuang1=0;}TR0=1;}voidmain(){TMOD=0x01;//定时器0方式1TH0=0xee;//0xa6;//25ms定时常数TL0=0x00;EA=1;ET0=1;TR0=1;EA=1;EX0=1;IT0=1;PT0=1;PX0=0;tc=0;shu0=shu1=21;//7;times=0;while(1){key1=1;led=0;led6=1;}}6、测量及其结果分析1)基本部分测试与分析1测试仪器:秒表、温度表、万用表2基本要求部分的测试与分析:(1)系统上电后,首先显示欢迎词,接着进入显示时间和温度。按各功能键执行相应的功能(时钟操作方法详见附录中的附二)。(2)显示时间时通过与秒表对比,测试的系统时钟走时准确,误差很小。(3)设定闹铃时间,当闹铃时间到时响铃。响铃长度为1分钟,期间按除E键(屏幕背光键)外的任意一键退出响铃。(4)显示温度与温度计对比,测试系统温度的精度。将温度传感器DS18B20和温度计放入不同的测试环境中进行测试,所得测试结果如表1所示。表1数字温度计与标准温度计测量值比较表温度计示值(摄氏度)28.730.733.545.0温度输出(摄氏度)29.030.833.345.1由测试知,数字钟的输出与温度计值基本上相等,误差不大于0.5度。(5)上电后记录下时间,去掉220V和干电池电源,隔5分钟过再次通电,测得系统时钟仍旧走时准确。经测试,本系统的时钟掉电保护时间长达9分钟。2)发挥部分测试与分析:(1)系统可显示温度00.0~99.9摄氏度。(2)拔掉交流电,装上干电池系统工作,说明干电池作为电源为系统供电;卸掉干电池接上交流电系统也工作,表明交流电也能适合系统使用。同时装上干电池,测得干电池回路中的二极管压降为0,表明二极管截止,干电池不作为系统的电源工作;同时测得对干电池的充电电流约为10mA,即交流电对充电池进行慢性充电。(3)当生日和闹铃设置为开时,主显单上有标志显示(闹铃为‘A’,