开放性实验报告题目: 基于80C51的万年历设计_ 院系:专业班级:学号:姓名:指导老师:________________________时间:2014年9月8号摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。
本系统选用DALLAS 公司生产的日历时钟芯片DS1302来作为实时时数字万年历采用直观数字显示,可以同时显示年、月、日、周、时、分、秒等信息,还具有键盘时间校准等功能。
该电路采用AT89C52单片机作为核心,用以5V电压供电。
本系统硬件部分由AT89C52单片机、DS1302时钟芯片、LCD1602液晶显示环境下以C51语言编写,包括时间设置、时间显示、时间修正等功能。
在仿真的时候,以Proteus 与Keil uVision4软件为基础,编写了MCS-51单片机对LCD1602显示控制的软件,绘制其原理图,并使用Proteus软件与Keil uVision4软件建立联合仿真。
本设计主要论述了原理图各个模块的作用,以及控制软件的各个模块的编程。
关键词:时钟芯片DS1302;单片机AT89C52;液晶显示1602;独立键盘等目录第1章绪论 (1)1.1实时万年历的简介 (1)1.2系统所实现的功能 (3)第2章开发工具软件简介 (4)2.1K EIL U V ISION4软件简介 (4)2.2P ROTEUS软件简介 (4)2.3K EIL U V ISION4与P ROTEUS软件联合仿真 (5)第3章LCD1602显示控制技术 (6)3.11602字符型LCD简介 (6)3.2LCD1602功能 (7)3.3 LCD1602的指令说明及时序 (8)3.4LCD1602的RAM地址映射及标准字库表 (7)3.5 LCD1602的一般初始化(复位)过程 (8)第4章系统硬件概况 (13)4.1系统概况 (13)4.2 MCS-51单片机最小系统模块 (14)4.3 DS1302时钟芯片控制与键盘设置时间模块 (15)4.4 LCD1602显示模块 (16)第5章软件控制系统概况 (18)5.1程序流程概况 (18)5.2 流程图 (18)5.3 源程序代码 (19)参考文献 (25)第1章 ............................................. 绪论1.1实时万年历的简介随着电子技术的发展,人类在不断研究的过程中也在不停创造新的纪录。
万年历目前已经不再局限于以纸的形式出现。
以电脑软件或者电子产品形式出现的万年历被称为电子万年历。
与传统万年历相比,电子万年历得到了越来越得到大众的青睐,采用电子时钟作为时间显示早已成为一种时尚。
目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们多样化的需求。
本文提出了一种基于AT89C51单片机的万年历设计方案,本方案以AT89C51单片机作为主控核心,与时钟芯片DS1302、按键、LED1602显示等模块组成硬件系统。
在硬件系统中设有独立按键和LED显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点。
1.2 系统所实现的功能现在所使用的万年历,实际上就是记录一定时间围(比如100年或更多)的具体阳历或阴历日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。
而随着微电子技术的高速发展,人们发明了更加准确更加便捷的电子万年历。
因为这种万年历在日常生活中运用得越来越广泛,在现代社会也越来越流行。
它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能,而且其使用寿命更长,误差更小,有的电子万年历还具有时间以及星期的校准功能。
本文主要包括以下容:1.单片机为核心,建立以LCD1602为显示控制系统,编制各控制子程序模块,为操作人员提供灵活、准确的控制信息,实现对LCD1602液晶显示当前时间。
2.绘制整个控制系统原理图。
3.配合控制程序软件,完成对整个硬件系统的控制。
4.使用Keil uVision4进行C语言代码的编写。
5.使用Proteus进行仿真。
第2章开发工具软件简介2.1 Keil uVision4软件简介Keil是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
在开发大型软件时更能体现高级语言的优势。
Keil 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。
Keil生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
其次,该软件不但可以进行软件仿真,而且还可以通过其嵌模块Keil-Monitor-51,实现在不需要连接硬件仿真器的条件下,通过下载线连接硬件系统对项目进行实时仿真。
另外,可以与Proteus单片机仿真软件联合实现虚拟硬件仿真。
2.2 Proteus软件简介目前电子设计手段日新月异,由手工设计阶段到EDA阶段,再到虚拟设计阶段,人们不断提高设计水平与效率。
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。
Proteus嵌入式系统仿真与开发平台是一款可以实现数字电路、模拟电路、微控制器系统仿真及PCB设计等功能的EDA 软件。
从元件的选取到连线,直至电路的调试、分析和软件的编译,都是在计算机中完成,所有的工作先在虚拟环境下进行。
基于这一设计思想开发的Proteus 软件,可在原理图设计阶段对所设计的电路进行评估、验证,看是否达到设计要求的技术指标,并可以通过改变元件的参数使整个电路性能达到最优化。
这样就避免了传统电子电路设计中方案更换带来的多次重复购买元器件及制板,在节省设计时间与经费的同时,提高了设计效率与质量。
Proteus软件不仅具有其它EDA工具软件的模拟电子和数字电子的仿真功能,而且还具有其他EDA软件所没有的单片机系统硬件仿真功能。
它可以仿真MCS-51系列单片机、AVR单片机、PIC单片机和ARM7微处理器,可以直接在电路原理图上实现硬件的虚拟仿真,实现程序的调试,并提供进行测试与分析的虚拟示波器、逻辑分析仪等虚拟仪器及仿真图表。
它是目前最好的仿真单片机及外围器件的工具。
Proteus软件主要由实现原理图编辑及仿真的ISIS模块和实现PCB板设计及自动布线的ARES模块组成。
Proteus软件提供了三十多个元器件库,数千元器件。
元件涉及电阻、电容、二极管、MOS管、变压器、继电器、各种放大器、各种激励源、300多种微处理器、各种门电路和各种终端等。
提供的仪表有交直流电压表、电流表、逻辑分析仪、定时/计数器和信号发生器等虚拟仪器,Proteus 作为可视化仿真软件,提供数码管、液晶屏、LED、按钮、键盘等外设。
2.3 Keil uVision4与Proteus软件联合仿真Proteus软件与Keil uVision4软件之间的联合虚拟仿真,指Keil uVision4软件将Proteus软件打开的单片机系统看成一个虚拟的硬件电路,使用Keil uVision4软件对程序进行编译、调试时自动连接Proteus软件中的虚拟单片机系统,虚拟单片机系统的状态随Keil uVision4软件对程序调试实时变化。
这样,可实现用Proteus软件与Keil uVision4软件联合虚拟硬件仿真。
第3章LCD1602液晶显示屏3.1 1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。
1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm3.2 1602引脚功能编号符号引脚说明编号符号引脚说明1 VSS 电源地9 D2 数据2 VDD 电源正极10 D3 数据3 VL 液晶显示偏压11 D4 数据4 RS 数据/命令选择12 D5 数据5 R/W 读/写选择13 D6 数据6 E 使能信号14 D7 数据7 D0 数据15 BLA 背光源正极8 D1 数据16 BLK 背光源负极第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位第4脚:RS为寄存器选择,高电平时选数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W 为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
3.3 1602LCD的指令说明及时序芯片时序表如下:读状态输入RS=L,R/W=H,E=H 输出D0—D7=状态字输出无写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲读数据输入RS=H,R/W=H,E=H 输出D0—D7=数据写数据输入RS=H,R/W=L,D0—D7=数据,E=输出无高脉冲基本操作时序表读写操作时序如图2-7和2-8所示:图2-7读操作时序图2-8 写操作时序3.4 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认入显示字符地址,也就是告诉模块在哪里显示字符,图2-9是1602的部显示地址。
图2-9液晶部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块部的字符发生存储器(CGROM)已经存储了160个不同的点阵常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。