基于51单片机的计算器和万年历设计毕业论文.doc

上传人:h**** 文档编号:130982 上传时间:2018-07-09 格式:DOC 页数:60 大小:580.50KB
下载 相关 举报
基于51单片机的计算器和万年历设计毕业论文.doc_第1页
第1页 / 共60页
基于51单片机的计算器和万年历设计毕业论文.doc_第2页
第2页 / 共60页
基于51单片机的计算器和万年历设计毕业论文.doc_第3页
第3页 / 共60页
基于51单片机的计算器和万年历设计毕业论文.doc_第4页
第4页 / 共60页
基于51单片机的计算器和万年历设计毕业论文.doc_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、1 引言 1.1 概述 众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器 /计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、 A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本设计要制作的就是单片机于生活中最为常见的 几 种应用 简易计算器。本简易计算器 以 AT89S52 单片机作为核心,可以显示简易的计算和时间,时间可以人为设定;另外还可以显示当前的日历,显 示格式为年(四位),月(两位),日(两位)。设置时间的位切换、设

2、定数值、启动定时器、切换日历通过外部中断来实现。简易计算器不仅可以进行简易的计算还可以显示时间。简易计算器显示电路由 LCD1602 组成, 制作 该 装置的材料需要有软硬件的支持,硬件方面 AT89C51 单片机,晶振,电源,液晶屏 LCD1602。 1.2 设计思路 1、 本课题 设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果, 所以 采用 LCD 显示数据和结果 ; 2、 计算器部分: 键盘包括数字键 (0-9)、符号键 (+、 -、 *、 /)、清除键 (ON/C)和等号键 (=),故需要 16个按键,设计中采用矩阵键盘 ; 3、 时间显示的部分,有年、月、日、时、分、

3、秒、时间显示和计算器控制键的分别设置,故需要 8 个独立的按键; 3、执行程序:开机显示零,等待键入数值,当键入数字,通过 LCD 显示出来,当键入 +、 -、 *、 /运算符,计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在 LCD 上输出运算结果 ; 4、错误提示:当单片机执行程序中有错误时,会在 LCD 上显示相应的提示,如:当输入的数值或计算器得到的结果大于计算器的显示范围时,计算器会在 LCD 上提示溢出;当除数为 0 时,计算器会在 LCD 上提示错误,显示“ error”。 2 单片机及其应用 单片机是一种集成在电路芯片,是采用超大规模集成电路技

4、术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器 /计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 图 2.1 AT89S52 2.1 单片机介绍 单片微型计算机简称单片机,是典型的嵌入式 微控制器 ( Microcontroller Unit),常用英文字母的缩写 MCU 表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有 CPU 的专用 处理器 发展而来。最早的设计理念是通过将大量外围设备和CPU 集成在一个芯片中,使计算机

5、系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 INTEL 的 Z80 是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国 50 年代开发的 74 系列,或者60 年代的 CD4000 系列这些纯硬件来搞定的 话,电路一定是一块大 PCB 板!但是如果要是用美国 70 年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能

6、,高效率,以及高可靠性! 单片机的硬件特性 : 单片机集成度高。单片机包括 CPU、 4KB 容量的 ROM( 8031 无)、 128 B 容量的 RAM、 2 个 16 位定时 /计数器、 4 个 8 位并行口、全双工串口行口 。 系统结构简单,使用方便,实现模块化 。 2.2 单片机的应用 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。 导弹 的导航装置,飞机上各种仪表的控 制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能 IC 卡 ,民用豪华轿车的安全保障系统, 录像机 、 摄像机 、全自动洗衣机的控制,以及程控玩具、电

7、子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: ( 1) 在 智能仪器 仪表上的应用 ( 2) 在工业控制中的应 用 ( 3) 在家用电器中的应用 ( 4) 在计算机网络和通信领域中的应用 ( 5) 单片机在医用设备领域中的应用 ( 6) 在各种大型电器中的模块化应用 ( 7) 单片机在汽车设备领域中的应用 此外,单片机在工商,金融,科研、教育,国防航空航天等领域

8、都有着十分广泛的用途。 2.3 AT89S52 单片机 AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序 存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节 Flash, 256 字节 RAM, 32 位 I/O 口线,看门狗定时器, 2 个

9、数据指针, 3 个 16 位定时器 /计数器, 1 个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下, CPU 停止工作,允许 RAM、定时器 /计数 器、串口、中断继续工作。掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 主要性能 : 1、 与 MCS-51 单片机产品兼容 2、 8K 字节在系统可编程 Flash 存储器 3、 1000 次擦写周期 4、 全静态操作: 0Hz 33Hz 5、 三级加密程序存储器 6、 32

10、个可编程 I/O 口线 7、 三个 16 位定时器 /计数器 8、 八个中断源 9、 全双工 UART 串行通道 10、 低功耗空闲和掉电模式 l1、 掉电后中断可唤醒 l2、 看门狗定时器 l3、 双数据指针 l4、 掉电标识符 图 2.2 AT89S52 引脚结构 P0 口: P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个TTL 逻辑电平。对 P0 端口写 “1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时, P0口也被作为低 8 位地址 /数据复用。在这种模式下, P0具有内部上拉电阻。在 flash 编程时, P0口也用来接收指令字节;在程序校

11、验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口: P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P1 输出缓冲器能驱动 4 个 TTL 逻辑电平。 对 P1 端口写 “1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外, P1.0 和 P1.2 分别作定时器 /计数器 2 的外部计数输入( P1.0/T2)和 定时器 /计数器 2 的触发输入( P1.1/T2EX),具体如下表所示。在 flash 编程和校验时,P1 口接收低 8 位地址字节。 引脚号第二功能 P1.0 T2(定时器 /计数器

12、 T2 的外部计数输入),时钟输出 P1.1 T2EX(定时器 /计数器 T2 的捕捉 /重载触发信号和方向控制) P1.5 MOSI(在系统 编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口: P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写 “1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用 16位地址读取外部数据存储器(例如执行 MOVX DPTR)时, P2 口送出高八位地址

13、。在这种应用中, P2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 MOVX RI)访问外部数据存储器时, P2口输出 P2锁存器的内容。在 flash 编程和校验时, P2 口也接收高 8 位地址字节和一些控制信号。 P3 口: P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P3 端口写 “1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。在 flash编程和校验时, P3

14、口也接收一些控制信号。 引脚号第二功能 : P3.0 RXD(串行输入) P3.1 TXD(串行输出) P3.2 INT0(外部中断 0) P3.3 INT0(外部中断 0) P3.4 T0(定时器 0 外部输入) P3.5 T1(定时器 1 外部输入) P3.6 WR(外部数据存储器写选通 ) P3.7 RD(外部数据存储器写选通 ) RST: 复位输入。晶振工作时, RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后, RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址8EH)上的 DISRTO 位可以使此功能无效。 DISRTO 默认状态下,复 位高电

15、平有效。 ALE/PROG: 地址锁存控制信号( ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在 flash 编程时,此引脚( PROG)也用作编程输入脉冲。在一般情况下, ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时, ALE 脉冲将会跳过。如果需要,通过将地址为 8EH 的 SFR 的第 0 位置 “1”, ALE 操作将无效。这一位置 “1”,ALE 仅在执行 MOVX 或 MOVC 指令时有效。否则, ALE 将被微弱拉高。这个 ALE 使能标志位(地址为 8EH 的 SFR 的第 0 位)的设置

16、对微控制器处于外部执行模式下无效。 PSEN:外部程序存储器选通信号( PSEN)是外部程序存储器选通信号。 当 AT89S52 从外部程序存储器执行外部代码时, PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时, PSEN 将不被激活。 EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的外部程序存储器读取指令, EA 必须接 GND。为了执行内部程序指令, EA 应该接 VCC。在 flash编程期间, EA 也接收 12 伏 VPP 电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 3 LC

17、D1602 的原理及其应用 3.1 LCD1602 的介绍 LCD1602 已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780 液晶芯片的,控制原理是完全相同的,因此 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背光电源线 VCC(15 脚 )和地线 GND(16 脚 ),其控制原理与 14 脚的 LCD 完全一样。 3.2 LCD1602 的 引脚 1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明如表 3.1所示 :

18、 表 3.1 LCD1602 的引脚说明 编号 符号 引脚说明 编号 符号 引脚说明 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 背光源负极 表 3.1:引脚接口说明表 第 1脚: VSS 为地电源。 第 2脚: VDD 接 5V 正电源。 第 3脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对

19、比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 第 4脚: RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5脚: R/W 为读写信号线,高电平时 进行读操作,低电平时进行写操作。当 RS 和R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。 第 6脚: E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7 14脚: D0 D7为 8位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。 3.3 LCD1

20、602 的指令 1602液晶模块内部的控制器共有 11条控制指令,如表 3.2所示: 表 3.2 LCD1602 的指令说明 编号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开 /关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生

21、存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器 地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到 CGRAM 或 DDRAM) 1 0 要写的数据内容 11 从 CGRAM 或 DDRAM 读数 1 1 读出的数据内容 表 3.2:控制命令表 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明: 1为高电平、 0为低电平) 指令 1:清显示,指令码 01H,光标复位到地址 00H 位置。 指令 2:光标复位,光标返回到地址 00H。 指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者

22、 右移。高电平表示有效,低电平则无效。 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令 6:功能设置命令 DL:高电平时为 4位总线,低电平时为 8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7的点阵字符,高电平时显示 5x10的点阵字符。 指令 7:字符发生器 RAM 地 址设置。 指令 8: DDRAM 地址设置。 指令 9:读忙信

23、号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据。 指令 11:读数据。 与 HD44780相兼容的芯片时序表如下: 表 3.3 LCD1602 基本操作时序说明 读状态 输入 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=高脉冲 输出 无 3.4 LCD1602 的 RAM 地址映射及标准字

24、库表 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图 3.1是 1602的内部显示地址。 图 3.1 LCD1602的内部地址 例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最 高位 D7恒定为高电平 1所以实际写入的数据应该是 01000000B( 40H) +10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602液晶模块内部的字符发生存储器( CGROM)已经存储了 160个不同的点阵字符图形,如 表 3.4所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“ A”的代 码是 01000001B( 41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“ A” 。 表 3.4 CGROM 和 CGRAM 中字符代码与字符图形对应关系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。