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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于51单片机的万年历Word格式.docx

1、万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LCD1602显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合,显示器使用1片LCD1602。软件方面主要包括日历程序、时间调整程序,显示程序等。本设计直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。程序采用C语言编写,所有程序编写完成后,在Keil uVision3软件中进行调试,确定没有问题后,用STC_ISP_V4.80下载到单片机内进行检验。最后在老师同学网络的帮助以及自己的努力下完成了此次电子万年历

2、的设计。二、系统的硬件设计与实现洞洞板/万能板成品图片左下角有地址-有录像2.1电路设计框图2.2 系统硬件概述本电路是由AT89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;本设计直接采用单片机定时计数器提供秒信号,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。显示部份由LCD1602完成。2.3 主要单元电路的设计2.3.1单片机主控制模块的设计 AT89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地

3、作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,X1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,X2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如下图所示2.3.2键盘电路模块的设计 键盘模块由四个独立键盘组成,每个按键的一钟脚接地,另一种脚接一个单片机I/O口。如下图所示。2.3.3 显示模块的设计 显示模块通过一块16脚的LCD1602组成。其中1、3脚接地,4、5、6分别接一个I/O口用于控制液晶的显示,7-14接P2的8个I/O

4、口用于数据传输。15、16脚用于控制液晶的背光,可不接。液晶1602的简介及驱动原理1602LCD主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D33VL液晶显示偏压11D44RS数据/命令选择12D55R/W读/写选择13D66E使能信号14D77D015BLA背光源正极8D116BLK背光源负极表10-13:引

5、脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数

6、据线。第15脚:背光源正极。第16脚:背光源负极。10823 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:序号指令清显示光标返回*置输入模式I/DS显示开/关控制DCB光标或字符移位S/CR/L置功能DLNF置字符发生存贮器地址字符发生存贮器地址置数据存贮器地址显示数据存贮器地址读忙标志或地址BF计数器地址写数到CGRAM或DDRAM)要写的数据内容从CGRAM或DDRAM读数读出的数据内容表10-14:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01

7、H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时

8、显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令RS=L,R/W=L,D0D7=指令码,E=高脉冲无读数据RS=H,R/W=H,E=HD0D7=数据写数据RS=H,R/W=L,D0D7=数据,E=高脉冲表10-15:基本操作时序表读写操作时序如图10-55和10-56所示:图10

9、-55 读操作时序图10-56 写操作时序10824 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。10825 1602LCD的一般初始化(复位)过程延时15mS 写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令0

10、6H:显示光标移动设置写指令0CH:显示开及光标设置三、系统的软件设计3.1 程序流程框图否 否 否 是 是 是四、总结 在整个设计过程中,遇到了很多问题,但在自己的努力和同学的帮助下得到了解决,较好的完成了作品,勉强达到了预期的目的。并且在这一过程中也学到了许多之前没学过的知识。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,对电路的设计、布局要先有一个好的构思,然后再焊才可以使电路板美观并且可以减少飞线的使用,并且最好焊接一部分测试一部分。通过这次设计,特别是通过程序的编写,更深入地了解了单片机的内部结构和外围器件的应用。参考文献:1.郭天祥十天叫你学会单片机2.C5

11、1入门教程3.8051系列单片机C语言编程完全手册附录一:系统电路图附录二:系统程序清单#include#include sbit LCD_RS = P15;sbit LCD_RW = P14;sbit LCD_EN = P13;sbit s1=P23;sbit s2=P22;sbit s3=P20;unsigned char tt,s1num;char miao,fen,shi,yue=1,ri=1,week,nian;unsigned char a= 2000-01-01 MON;char b= 00:00:00void delay(int ms) int i; while(ms-) fo

12、r(i = 0; i0;x-) for( y=110;yy-);bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; result = (bit)(P3 & 0x80); LCD_EN = 0; return result;void write_com(unsigned char com) while(lcd_busy(); LCD_RW = 0; P3 = com;void write_date (unsigned char date) LCD_RS = 1; P3 = date;void write_sfm(unsig

13、ned char add,unsigned char date) unsigned char shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);void write_nyr(unsigned char add,unsigned char date) unsigned char gw,sw; gw=date%10; sw=date/10; write_com(0x80+add); write_date(0x30+sw); write_date(0

14、x30+gw);void write_week(unsigned week) write_com(0x80+0x0d); switch(week) case 0:write_date(M); write_date(O write_date(N break; case 1:TUE case 2:WD case 3:H case 4:FRI case 5:SA case 6:void init() unsigned int i; write_com(0x38); delay(5); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for( i=0;i12) yue=1; write_nyr(7,yue); write_com(0x80+7); if(s1num=1) nian+; if(nian99) nian=0; write_nyr(4,nian); write_com(0x80+4); if(s3=0) if(s3=0)s3); miao-; if(miao=-1) miao=59; fen-; if(fen=-1) fen=59;

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

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