已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C51课程设计基于AT89S52与C51的多功能电子时钟设计学校南京信息工程大学学院电子与信息工程学院专业信息工程年级2010级学号20121309021姓名杨峰宇指导老师夏景明2012年12月10日摘要本设计采用LCD液晶屏幕显示系统,以AT89S52单片机为核心,由键盘、温度采集、时钟等功能模块组成。本系统对时间显示和温度采集系统行了重点设计。其中时钟芯片采用了有DALLAS公司生产的DS1302时钟芯片,温度测控芯片采用的是由DALLAS公司生产的DS18B20温度测量芯片。其中时钟可以通过按键模块来进行设置,即使掉电下一次上电时也不用再设置,温度显示和温度显示通过按键切换。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。关键词AT89S52、DS1302、DS18B20、LCD1602、电子时钟、温度测量多功能电子时钟设计一、任务设计1、设计任务设计并制作一个多功能数字钟。2、设计要求设计能支持年、月、日、星期、时、分、秒的时钟,时钟有时间调整功能及闹钟功能;时钟附带有一个温度计功能,温度检测精度高于2度,显示精度为1度;时钟具有装卸电池时掉电保护功能,保护时间大于5分钟;时钟功耗小于05MA/5V。二、方案论证1显示部分显示部分是本次设计的重要部分,一般有以下两种方案方案一采用LED显示,分静态显示和动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。而对于动态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。方案二采用LCD显示。LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。鉴于上述原因,我们采用方案二。2数字时钟数字时钟是本设计的核心的部分。根据需要可采用以下两种方案实现方案一方案完全用软件实现数字时钟。原理为在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。而且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。方案二方案采用DALLAS公司的专用时钟芯片DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于10MS/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,可使系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。3温度采集由于现在用品追求多样化,多功能化,给系统加上温度测量显示模块,能够方便人们的生活,使该设计具有人性化。方案一采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测小于1摄氏度的信号是不适用的。方案二采用温度传感器DS18B20。DS18B20可以满足从55摄氏度到125摄氏度测量范围,且DS18B20测量精度高,增值量为05摄氏度,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。基于DS18B20的以上优点,我们决定选取DS18B20来测量温度。三、总体方案本设计采用AT89C52单片机作为本系统的控制模块。单片机可把由DS18B20、DS1302中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历的显示。以LCD液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化。在显示电路中,主要靠按键来实现各种显示要求的选择、设置与切换,系统框架图见图1。4、系统硬件设计(单元电路设计及分析)1AT89S52单片机最小系统最小系统包括晶体振荡电路、复位开关和电源部分。图2为AT89S52单片机的最小系统。C310PFC410PFX2CRYSTALXTAL218XTAL119ALE30EA31PSEN29RST9P00/AD039P01/AD138P02/AD237P03/AD336P04/AD435P05/AD534P06/AD63P07/AD732P10/T21P11/T2EX2P123P134P145P156P167P178P30/RXD10P31/TXD1P32/INT012P33/INT113P34/T014P37/RD17P36/WR16P35/T115P27/A1528P20/A821P21/A92P22/A1023P23/A124P24/A1225P25/A1326P26/A1427U1AT89S52C510UFR210KR120图22温度测量模块温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为55125,可编程为9位12位A/D转换精度,测温分辨率达到00625,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。接口电路如图3所示。270DQ2VCC3GND1U3DS18B20P24图33时钟模块时钟模块采用DS1302芯片,DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线RST复位、I/O数据线、SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1MW,其接线电路如图4所示P10P12P11RST5SCLK7I/O6X12X23VCC18VCC21U2DS1302C110PFC210PFX1CRYSTALVCB112V图44LCD液晶显示模块LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作时电流仅20MA/50V。通过编程实现自动关闭屏幕能够更有效的降低功耗。LCD1602分两行显示,每行可显示多达16个字符。LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。其接线如图6所示D7D0D1D2D3D4D5D6P20P21P22D714D613D512D41D310D29D18D07E6RW5RS4VS1VD2VE3LCD1LM016LVCC50RV210K图55整体电路系统整体电路如图6所示D6D01D23D457D7D01D23D456P201P2P2P201D6D01D23D457RESTP10P12P102XTAL218XTAL119ALE301PSN29RST9P0/AD0391/18P02/AD2373/36P04/AD4355/54P06/AD637/72P10/T21/EX2P12334P14556P16778P30/RXD101/TP32/IN012/IT13P34/014P37/RD176/W65/T15P27/A1528P20/A8211/9P2/A0233/14P24/A2255/1366/47U1AT89C52RST5CLK7I/O6X12X23VC1821U2DS1302270DQ2VC3GN1U3DS18B20D71463D5124D31029D1807E6RW5S4VS1D2VE3LCD1LM016LC110PFC210PFXCRYSTALVCB112VVC50RV210KC310PFC410PFX2CRYSTAL234567891RP1RESPACK8C510UFR210KR120RESTP24P24图6五、系统软件设计流程1主程序流程如图7所示图72时间设定程序流程如图8所示图83温度测量流程图如图9所示图96、系统主程序(由于篇幅关系其他驱动模块代码不再给出)INCLUDEINCLUDE“DS1302_DRIVEH“INCLUDE“LCD_DRIVEH“INCLUDE“KEY_DRIVEH“INCLUDE“DS18B20_DRIVEH“BITTEMPERATURE_FLAG/温度正负标志,0为正,1为负VOLATILEBITCHOOSE_AGAIN_FLAG/返回主界面的标志,主函数与中断函数公用这一变量,为1表示要返回,0表示不返回VOLATILEBITSET_TIME_FLAG/时间设置标志,主函数与中断函数公用这一变量,为1表示要设置,0表示不设置CODEUNSIGNEDCHARCH“0123456789“STATICVOIDDELAYUNSIGNEDCHARIFORI0I4DISPLAYYEARWRITEADDR0X09TEMPREADSET13020X89MOUTHTEMP410TEMPDISPLAYMOUTHWRITEADDR0X0CTEMPREADSET13020X87DATETEMP410TEMPDISPLAYDATEWRITEADDR0X46TEMPREADSET13020X85HOURSTEMP410TEMPDISPLAYHOURSWRITEADDR0X49TEMPREADSET13020X83MINUTETEMP410TEMPDISPLAYMINUTEWRITEADDR0X4CTEMPREADSET13020X81SECONDTEMP410TEMPDISPLAYSECOND/00101001VOIDSHOWTIMEINFO/调用函数前初始化LCDWRITEADDR0X01WRITESTRING“DATA“WRITEADDR0X41WRITESTRING“TIME“WRITEADDR0X08WRITEDATAWRITEADDR0X0BWRITEDATAWRITEADDR0X48WRITEDATAWRITEADDR0X4BWRITEDATAUNSIGNEDCHARSETTIME/时间设置函数UNSIGNEDCHARTEMP,KEY_VALUE,J0/数据转存变量、按键键值、计数器UNSIGNEDCHARADDR_LCD0X4D,0X4C,0X4A,0X49,0X47,0X46,0X0D,0X0C,0X0A,0X09,0X07,0X06UNSIGNEDCHARSECOND0,MINUTE0,HOURS0,DATE0,MONTH0,YEAR0,SECOND1,MINUTE1,HOURS1,DATE1,MONTH1,YEAR1/相关硬件操作/TEMPREADSET13020X81|0X80WRITESET13020X80,TEMP/关闭时钟WRITESET13020X8E,0X00/关闭写保护WRITECOM0X0F/打开光标/以下为给各个时间中转变量赋初值/TEMPREADSET13020X81SECOND0TEMP/TEMP410TEMP/个位SECOND1TEMP4/十位TEMPREADSET13020X83MINUTE0TEMP/TEMP410TEMPMINUTE1TEMP4TEMPREADSET13020X85HOURS0TEMP/TEMP410TEMPHOURS1TEMP4TEMPREADSET13020X87DATE0TEMP/TEMP410TEMPDATE1TEMP4TEMPREADSET13020X89MONTH0TEMP/TEMP410TEMPMONTH1TEMP4TEMPREADSET13020X8DYEAR0TEMPYEAR1TEMP4/WHILE1WRITEADDRADDR_LCDJWHILE1/等待按键,有按键按下,继续,有中断INT1,硬件恢复,返回KEY_VALUEKEYSCANIFKEY_VALUE1BREAK/有按键按下,继续IFSET_TIME_FLAG1DELAYNMS10/消抖WHILEINT10/等待释放DELAYNMS10/消抖SET_TIME_FLAG0WRITESET13020X80,SECOND13ELSEIFHOURS01ELSEIFDATE02ELSEMONTH1WRITEDATACHMONTH1BREAKCASE10IFYEAR00YEAR09ELSEYEAR0WRITEDATACHYEAR0BREAKCASE11IFYEAR10YEAR19ELSEYEAR1WRITEDATACHYEAR1BREAKIFKEY_VALUE1/KEY_VALUEKEYSCAN/接收此时按键键值,检测按键是否释放/WHILEKEY_VALUE1/等待释放按键SWITCHJCASE0SECOND0IFSECOND010SECOND00WRITEDATACHSECOND0BREAKCASE1SECOND1IFSECOND16SECOND10WRITEDATACHSECOND1BREAKCASE2MINUTE0IFMINUTE010MINUTE00WRITEDATACHMINUTE0BREAKCASE3MINUTE1IFMINUTE16MINUTE10WRITEDATACHMINUTE1BREAKCASE4HOURS0IFHOURS04IFHOURS13HOURS10WRITEDATACHHOURS1BREAKCASE6DATE0IFDATE010IFDATE14DATE10WRITEDATACHDATE1BREAKCASE8MONTH0IFMONTH010WRITEDATACHMONTH0BREAKCASE9MONTH1IFMONTH11IFMONTH12MONTH10WRITEDATACHMONTH1BREAKCASE10YEAR0IFYEAR010YEAR00WRITEDATACHYEAR0BREAKCASE11YEAR1IFYEAR110YEAR10WRITEDATACHYEAR1BREAK/以下为中断相关函数/VOIDINT0_ON/打开外部中断EX01IT00/触发类型为电平触发VOIDINT0_OFF/关闭外部中断EX00VOIDINT_0VOIDINTERRUPT0CHOOSE_AGAIN_FLAG1/把返回界面标志置位/VOIDINT1_ON/打开外部中断EX11IT10/触发类型为电平触发VOIDINT1_OFF/关闭外部中断EX10VOIDINT_1VOIDINTERRUPT2SET_TIME_FLAG1/时间设置标志置位/VOIDMAIN/相关设备初始化/UNSIGNEDCHARKEYVALUELCDINITINIT1302KEYINITDS18B20INITEA1/使能总中断WHILE1WRITEADDR0X00WRITESTRING“1TIME“WRITEADDR0X40WRITESTRING“2TEMPERATU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 织布上轴工岗前安全规程考核试卷含答案
- 收发员操作能力强化考核试卷含答案
- 细纱机操作工岗中创新意识考核试卷含答案
- 冰糖加工工岗前岗位考核试卷含答案
- (2026版)家校联系制度
- (2026版)药物临床试验运行管理制度和流程
- 2026年MBA各科试题及答案解析
- 项目部中毒事故制度
- 整体护理质量查房
- 青少年法治教育调查问卷
- 老年患者术前风险评估
- 2025河北高速恒质公路建设集团有限公司社会招聘考试参考题库及答案解析
- 压缩空气储能站安全运行方案
- 《机械制图》电子教材
- 出租车消防安全培训课件
- 第二十四届上海市青少年计算机创新应用竞赛 python校内选拔试题及答案
- 瓷砖防滑技术培训
- 2025年甘肃省行政执法人员执法证考试题库及答案
- 《诗经》原文课件
- 《数字技术应用基础模块》技工中职全套教学课件
- 1.1认识社会生活 教案 2025-2026学年统编版道德与法治八年级上册
评论
0/150
提交评论