ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:47.39KB ,
资源ID:9828627      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9828627.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的万年历设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的万年历设计.docx

1、基于单片机的万年历设计 基于单片机的万年历设计 二、实验要求设计一个万年历,将时钟显示在LCD1602的显示屏上并且可以进行年、月、日以及时、分、秒的设置。此外还可以通过按键进行闹钟设置以及事件提醒功能,用蜂鸣器进行闹铃提醒。最后附加一个温湿度检测的功能,用温湿度传感器检测室内的温湿度并将温湿度数据在显示屏上显示出来。三、实验设备和仪器1.用 STC89C52芯片作为系统板的主控芯片温湿度传感器时钟芯片显示屏四、实验各模块原理介绍 STC89C52单片机STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的M

2、CS-51内核,具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。(1)主要特性8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载;(2)器件参数1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。2. 工作电压:(5V单片机)/(3V 单片机)3.工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4. 用户应用程序空间为8K字节5. 片

3、上集成512字节RAM6. 通用I/O 口(32个),复位后为:P1/P2/P3 是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/,TXD/)直接下载用户程序,数秒即可完成一片。8. 具有EEPROM 功能9. 共3个16位定时器/计数器。即定时器T0、T1、T2。10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒。11. 通用异步串行口(UART),还可用定时器软件实现

4、多个UART。12. 工作温度范围:-40+85(工业级)/075(商业级)13. PDIP封装1、STC89C52单片机引脚图图 STC89C52单片机引脚图 主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外

5、部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。PO口(Pin39Pin32):8位双向I/O口线,名称为 P1口(Pin1Pin8):8位准双向I/O口线,名称为 P2口(Pin21Pin28):8位准双向I/O口线,名称为 P3口(Pin10Pin17):8位准双向I/O口线,名称为。2、STC89C52单片机最小系统STC89C52单片机最小系统主要由复位电路和时钟电路组成。复位功能通过外部电路来实现,按下按键K

6、1控制单片机的复位。时钟电路主要通过晶振来实现,为单片机提供运行时钟。根据不同的需求选用的晶振频率会有差异,在本次课程设计中采用的晶振频率。单片机复位电路如图所示,晶振电路如图所示。图 复位电路图晶振电路 DS1302芯片DS1302是DALLAS公司出的一款实时时钟芯片,它广泛应用于电话、传真、便携式仪器等产品领域,主要性能指标如下:1、DS1302是一个实时时钟芯片,可以提供秒、分、小时、日期、月、年等信息,具有软件自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。2、拥有31字节数据存储RAM。3、串行I/O通信方式。4、DS1302的工作电压比较宽,在范围内

7、均可正常工作。采用双电源供电,当主电源比备用电源高时,由主电源供电,否则采用备用电源,一般是一个纽扣电池。5、DS1302实时时钟芯片的功耗很低,当工作电压为时,工作电流小于300nA。6、DS1302共有8个引脚,有两种封装形式,一种是DIP-8封装,芯片宽度(不含引脚)是300mil,一种是SOP-8封装,有两种宽度,一种是150mil,一种是208mil。(1) DS1302引脚及其功能图 DS1302芯片引脚图(1)Vcc2:主电源引脚,当Vcc2比Vcc1高以上时,DS1302由Vcc2供电,当Vcc2低于Vcc1时,由Vcc1供电。(2、3)X1、X2:这两个引脚需要接一个的晶振,

8、为了给DS1302提供一个基准。但是该晶振的引脚负载电容必须为6pF,若使用有源晶振,接到X1上即可,X2则悬空。(4)GND:接地(5)CE:DS1302的输入引脚。该引脚内部有一个40k的下拉电阻,当该引脚为高电平,对DS1302进行读写。(6)I/O:该引脚是一个双向通信引脚,且内部含有一个40k的下拉电阻,可进行数据的读写。(7)SCLK:该引脚是输入引脚,且内部含有一个40k的下拉电阻,作为通信的时钟信号。 (8)Vcc1:备用电源引脚。(2) DS1302与单片机接线图DS1302引脚与单片机接线图如图所示,从图可看出,引脚X1与X2之间接一个的晶体正振荡器,Vcc1通过一个纽扣能

9、电池再接地。图 DS1302与单片机连接图 LCD1602液晶显示屏LCD1602液晶屏能够能够同时显示32个字符,价格便宜,编程简单而且稳定可靠。LCD1602液晶屏是一种图形点阵显示器,显示原理简单易懂,都是液晶屏内部的液晶材料变化而显示不同的字符,因为液晶是具有流动特性的物质,所以只需外加很微小的力量即可使液晶分子运动。(1)LCD1602引脚1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口图如图所示:图 LCD1602引脚图(a) 各个引脚说明1脚:VSS为地电源2脚:VDD接5V正电源 3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比对比

10、度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整。4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSR/W共同为低电平时可以写入指令或者显示地址,当RS为低电平,R/W为高电平;RS为高电平,R/W为低电平时可以写入数据。 6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 714脚:D0D7为8位双向数据线。 15脚:背光源正极16脚:背光源负极 (b)LCD1602主要技术参数:显示容量:32个字符;芯片工作电压:;工作电流:();模块最佳工作电压:;(2)LCD160

11、2与单片机接线图图 LCD1602与单片机接线图LCD1602与单片机接线图如所示,背光源正极(5)与VDD(2)均接电源,将液晶显示器接地保证对比度最强,可使用一个10K的电位器进行调整。 温湿度传感器DHT11DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它采用专用的数字模块采集技术、温湿度传感技术,确保产品的可靠性、长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OT

12、P内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装,连接方便,特殊封装形式可根据用户需求而提供。(1)DHT11引脚及其功能DHT11的引脚图如图所示,一般情况下它有四个引脚,分别为:VCC、DOUT、NC、GND。各引脚以及功能如表4-1所示。图 DHT11引脚图表4-1 DHT11引脚及其功能pin名称注释1VDD供电2DATA串行数据,单总线3NC空脚,请悬空4GND接地,电源负极1.电源引脚DHT11的供电电压为

13、。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,作用在于去耦滤波。2.串行接口(单线双向)DATA是用于微处理器与DHT11之间的通信和同步的串行双向接口,采用单总线数据格式。每次通信都是以高位先出的顺序传输40位数据,用时约为4 ms。数据格式为:8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据+8位校验和数据。数据分小数部分和整数部分,当前小数部分用于以后扩展,现读出为零。数据传送正确时,校验和数据等于“8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据”所得结果的

14、末8位。(2)DHT11与单片机接线图DHT11与单片机的接线图如图所示,由图中可看出,DHT11第三个引脚接单片机的引脚,第一个引脚接电阻和发光二极管。图 DHT11与单片机接线图 蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器可分为无源蜂鸣器和有源蜂鸣器两种,此处我们用到的是有源蜂鸣器。有源蜂鸣器工作的理想信号是直流电,通常标示为VDC、VDD等。因为蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从而带动钼片振动发音。有源蜂鸣器主要靠压电效应

15、的原理来发声的,且内部带有多谐振荡器,可产生 的电压信号。由此有源蜂鸣器才能发声。有源蜂鸣器在单片机中的电路图较为简单,图为蜂鸣器与单片机的接线图。图 蜂鸣器与单片机的接线图有源蜂鸣器直接接上额定电源就可连续发声,I/O口输出后接一个1K的电阻,目的在于基极限流,以低电平方式,启动蜂鸣器发声。五、流程图(1) 主程序流程图图是系统主程序流程图,系统开始时先进行初始化,然后再调整时间和闹钟,再通过串口屏将时间显示出来。图 主程序流程图(2)子程序流程图系统从主程序开始执行,分别调用各个子程序,其中子程序包括DS1302子程序,DHT11子程序和LCD1602子程序等。(1)DS1302芯片子程序

16、流程图DS1302为实时时钟芯片,可以提供秒、分、时、日、月、年及星期等信息,具有软件自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。从DS1302中可以读出年、月、日、时、分、秒等信息。图为DS1302芯片的子程序流程图:图 DS1302子程序流程图(2)DHT11子程序流程图DHT11为温湿度传感器,可以实时显示环境中的温湿度。其数据由8位湿度整数数据,8位湿度小数数据,8位温度整数数据和8位温度小数数据以及8位校验和数据。DHT11子程序流程图如所示:图 DHT11子程序流程图(3)LCD1602子程序流程图LCD1602显示时,也要先进行初始化,紧接着读指

17、令,读完之后写指令,再对数据进行读写,然后显示出来,其流程图如图所示。图 LCD1602显示屏子程序流程图六、实验目的1.学会并掌握可keil软件的使用;2.学会并掌握Altium Designer软件的使用;3.实现万年历的基本功能;4.通过实验巩固单片机相关知识和检验自身动手能力七、实验内容本次实验使用STC89C52单片机作为主控芯片,使用DS1302芯片作为时钟芯片,在LCD1602显示屏上显示,并可以设置闹钟和事件提醒功能,此外还可以进行室内温湿度的检测和显示,最终完成万年历的设计。八、实验步骤1.查询资料,确定主控芯片、温湿度传感器、时钟芯片以及LCD1602显示屏的使用说明。2.

18、根据功能要求进行硬件电路的设计,使用Altium Designer软件设计电路。整个电路分为主控芯片控制模块、LCD1602显示模块、按键设置模块、蜂鸣器电路模块以及DHT11温湿度传感器模块。硬件电路图如图1所示:图:硬件电路图3.根据电路图编写C语言代码:代码如下:#include #define uchar unsigned char#define uint unsigned int#define lcddata P0#define readalarmsecond 0xc7 char second,minute,hour,year,month,day,week;uchar inittim

19、e7=0x59,0x59,0x11,0x05,0x07,0x04,0x18; break; case 5: writecom(0x80+7); break; case 6: writecom(0x80+4); break; case 7: writecom(0x80+1); break; case 8: kmenunum=0; writecom(0x0c); if(kup=0) delay(5); if(kup=0) while(!kup); di(); switch(kmenunum) case 2: minute+; if(minute=60) minute=0; writetime(6,

20、minute); writecom(0x80+0x40+7); break; case 3: hour+; if(hour=24) hour=0; writetime(3,hour); writecom(0x80+0x40+4); break; case 4: week+; if(week=8) week=1; writeweek(week); writecom(0x80+11); break; case 5: day+; if(day=32) day=1; writenyr(6,day); writecom(0x80+7); break; case 6: month+; if(month=1

21、3) month=1; writenyr(3,month); writecom(0x80+4); break; case 7: year+; if(year=100) year=0; writenyr(0,year); writecom(0x80+1); break; if(kdown=0) delay(5); if(kdown=0) while(!kdown); di(); switch(kmenunum) case 1: second-; if(second=-1) second=59; writetime(9,second); writecom(0x80+0x40+10); break;

22、 case 2: minute-; if(minute=-1) minute=59; writetime(6,minute); writecom(0x80+0x40+7); break; case 3: hour-; if(hour=-1) hour=23; writetime(3,hour); writecom(0x80+0x40+4); break; case 4: week-; if(week=0) week=7; writeweek(week); writecom(0x80+11); break; case 5: day-; if(day=0) day=31; writenyr(6,d

23、ay); writecom(0x80+7); break; case 6: month-; if(month=0) month=12; writenyr(3,month); writecom(0x80+4); break; case 7: year-; if(year=-1) year=99; writenyr(0,year); writecom(0x80+1); break; if(kalarm=0) 样设置 dsclk 刚好满足要求。 dsclk=0; return ACC;void dswrite(uchar add,uchar dat) uchar dat; dsrst=0; dscl

24、k=0; dsrst=1; dswritebyte(add); /* 先写入地址 ,命令字节 */ dat=dsreadbyte(); /* 再读 1Byte 数据 */ dsclk=1; dsrst=0; return dat;void init1302time(uchar *pClock) uchar i; uchar add=0x80; dswrite(0x8e,0x00); /* 允许写操作 */ for(i=7;i0;i-) dswrite(add,*pClock); /* 依次写入秒 分 时 日 月 星期 年 */ pClock+; add+=2; 以 add 加 2. dswri

25、te(0x8e,0x80); /* 禁止写操作 */void init() flagset=0; flagalarm=0; kmenunum=0; lcdrw=0; temp=dsread(0x83); minute=temp/16*10+temp%16; temp=dsread(0x85); hour=temp/16*10+temp%16; temp=dsread(0x87); day=temp/16*10+temp%16; temp=dsread(0x89); month=temp/16*10+temp%16; temp=dsread(0x8b); week=temp/16*10+temp

26、%16; temp=dsread(0x8d); year=temp/16*10+temp%16; ; writedata(T_data_L%10+0); 物验证结果验证根据硬件电路图进行实物搭建与焊接,并对硬件进行调试。将写好的程序烧录到单片机中,得到硬件实物图如图所示:图 硬件实物图从上图中可以看出,LCD1602第一行显示年、月、日,及当下环境中的湿度;第二行显示时、分、秒及当下环境的温度。此外,依据功能键、加一键、减一键、闹钟键及事件键的组合使用,可实现对闹钟的设置、事件的提醒设置、时间的设置以及温湿度的显示这四种功能。九、心得体会通过本次实验培养了我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,回顾此次单片机实验,我们感觉受益良多,其中编程,仿真,调试开发板等步骤。这次课程设计使我们懂得理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学知识和实践相结合起来,从理论中得出结论,才能真正让所学的知识服务于我们的生活,服务于我们的社会,从而提高我们的实际动手能力和独立思考的能力,同时加强了与同学的合作和与老师的沟通,收获很多大!这次实验也让我们发现了自身的不足,在以后学习研究中我们会巩固加强专业知识的学习,为今后的研究工作打下坚实的基础。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1