基于51单片机的简易计算器时间显示lcd1602显示_第1页
基于51单片机的简易计算器时间显示lcd1602显示_第2页
基于51单片机的简易计算器时间显示lcd1602显示_第3页
基于51单片机的简易计算器时间显示lcd1602显示_第4页
基于51单片机的简易计算器时间显示lcd1602显示_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计(论文)说明书题 目:基于单片机简易计算器的设计院 (系):信息与通信学院 专 业: 电子信息工程 学生姓名: 丘 译 庆 学 号: 0800220223 指导教师: 袁 华 职 称: 讲 师 2011 年 12 月 18 日桂林电子科技大课程设计(论文)专用纸 第 1 页 共 34 页第 1 页 共 34 页 摘 要简易计算器是一种非常广泛日常工具,对现代社会越来越流行。它可以进行一些简易的计算。本系统提供详细的时、分、秒、年、月、日的时间信息,同时还可进行简易的计算信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。本系统硬件部分由AT89S52单片机、LCD1602液晶屏、键盘、指示灯系统等部分构成。软件部分在keil环境下用C51语言编写,包括时间设置、时间显示、简易计算显示等。关键字:AT89S52;液晶屏LCD1602;键盘AbstractSimple calculator is a very broad everyday tool for modern society is more and more popular. It can carry on some simple calculation. This system provides detailed, minutes and seconds, year, month, day time information, and at the same time but also for simple calculation information, but also has time calibration etc. Function. This circuit AT89S52 SCM as the core, power consumption is small, can be in 3 V of low-pressure work, voltage can choose 3 5 V voltage power supply. This system hardware part AT89S52 SCM by LCD1602 LCD screen, keyboard, indicator system, part. Software in under the environment of keil with C51 language, including time set, time display, simple calculation shows, etc. In the programming process found on existing knowledge to finish writing task difficult, the teachers and students of help to finish the program part of the code.Keyword:AT89S52;AT89S52 devices; LCD1602 LCD screen; keyboard目 录桂林电子科技大课程设计(论文)专用纸 第 2 页 共 34 页第 2 页 共 34 页 摘要1引言 .31 单片机及其应用.31.1单片机介绍31.2单片机的应用41.3 AT89S52单片机42 液晶屏 LCD1602原理及应用 72.1液晶屏 LCD1602介绍及工作原理 72.2 液晶屏 LCD1602的功能及应用73 设计思路、仿真及调试.12 3.1设计方法123.2硬件设计. .123.2.1 按键调整电路123.2.2 复 位 电 路 .133.2.3 液 晶 屏 LCD1602 显 示 电 路 .133.2.4 LED 指 示 电 路 .133.2.5 4*4 键 盘 的 设 计 .143.2.6 简 易 计 算 器 的 总 电 路 143.3软件设计 153.4软件仿真153.5硬件调试164 结束语 17谢辞.18参考文献.19附件.20桂林电子科技大课程设计(论文)专用纸 第 3 页 共 34 页第 3 页 共 34 页 引言众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本设计要制作的就是单片机于生活中最为常见的异种应用简易计算器。本简易计算器AT89S52 单片机作为核心,可以显示简易的计算和时间,时间可以人为设定;另外还可以显示当前的日历,显示格式为年(四位),月(两位),日(两位)。设置时间时的位切换、设定数值、启动定时器、切换日历通过外部中断来实现。简易计算器不仅可以进行简易的计算还可以显示时间。简易计算器显示电路由 LCD1602 组成, 制作一个单片机计时装置需要的材料需要有软硬件的支持,硬件方面 AT89C51 单片机,晶振,电源,液晶屏 LCD1602。1 单片机及其应用单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。1.1 单片机介绍:单 片 微 型 计 算 机 简 称 单 片 机 , 是 典 型 的 嵌 入 式 微 控 制 器 ( Microcontroller Unit) , 常 用 英 文 字 母 的 缩 写 MCU 表 示 单 片 机 , 它 最 早 是 被 用 在 工 业 控 制 领 域 。 单片 机 由 芯 片 内 仅 有 CPU 的 专 用 处 理 器 发 展 而 来 。 最 早 的 设 计 理 念 是 通 过 将 大 量 外 围桂林电子科技大课程设计(论文)专用纸 第 4 页 共 34 页第 4 页 共 34 页 设 备 和 CPU 集 成 在 一 个 芯 片 中 , 使 计 算 机 系 统 更 小 , 更 容 易 集 成 进 复 杂 的 而 对 体 积要 求 严 格 的 控 制 设 备 当 中 。 INTEL 的 Z80 是 最 早 按 照 这 种 思 想 设 计 出 的 处 理 器 , 从此 以 后 , 单 片 机 和 专 用 处 理 器 的 发 展 便 分 道 扬 镳单 片 机 是 靠 程 序 运 行 的 , 并 且 可 以 修 改 。 通 过 不 同 的 程 序 实 现 不 同 的 功 能 , 尤其 是 特 殊 的 独 特 的 一 些 功 能 , 这 是 别 的 器 件 需 要 费 很 大 力 气 才 能 做 到 的 , 有 些 则 是花 大 力 气 也 很 难 做 到 的 。 一 个 不 是 很 复 杂 的 功 能 要 是 用 美 国 50 年 代 开 发 的 74 系列 , 或 者 60 年 代 的 CD4000 系 列 这 些 纯 硬 件 来 搞 定 的 话 , 电 路 一 定 是 一 块 大 PCB板 ! 但 是 如 果 要 是 用 美 国 70 年 代 成 功 投 放 市 场 的 系 列 单 片 机 , 结 果 就 会 有 天 壤 之别 ! 只 因 为 单 片 机 的 通 过 你 编 写 的 程 序 可 以 实 现 高 智 能 , 高 效 率 , 以 及 高 可 靠 性 !单 片 机 的 硬 件 特 性 : 单 片 机 集 成 度 高 。 单 片 机 包 括 CPU、 4KB 容 量 的ROM( 8031 无 ) 、 128 B 容 量 的 RAM、 2 个 16 位 定 时 /计 数 器 、 4 个 8 位 并 行 口 、全 双 工 串 口 行 口 。 系 统 结 构 简 单 , 使 用 方 便 , 实 现 模 块 化 。1.2 单片机的应用目 前 单 片 机 渗 透 到 我 们 生 活 的 各 个 领 域 , 几 乎 很 难 找 到 哪 个 领 域 没 有 单 片 机 的踪 迹 。 导 弹 的 导 航 装 置 , 飞 机 上 各 种 仪 表 的 控 制 , 计 算 机 的 网 络 通 讯 与 数 据 传 输 ,工 业 自 动 化 过 程 的 实 时 控 制 和 数 据 处 理 , 广 泛 使 用 的 各 种 智 能 IC 卡 , 民 用 豪 华 轿车 的 安 全 保 障 系 统 , 录 像 机 、 摄 像 机 、 全 自 动 洗 衣 机 的 控 制 , 以 及 程 控 玩 具 、 电 子宠 物 等 等 , 这 些 都 离 不 开 单 片 机 。 更 不 用 说 自 动 控 制 领 域 的 机 器 人 、 智 能 仪 表 、 医疗 器 械 了 。 因 此 , 单 片 机 的 学 习 、 开 发 与 应 用 将 造 就 一 批 计 算 机 应 用 与 智 能 化 控 制的 科 学 家 、 工 程 师 。 单 片 机 广 泛 应 用 于 仪 器 仪 表 、 家 用 电 器 、 医 用 设 备 、 航 空 航 天 、专 用 设 备 的 智 能 化 管 理 及 过 程 控 制 等 领 域 , 大 致 可 分 如 下 几 个 范 畴 : ( 1) 在 智 能 仪 器 仪 表 上 的 应 用 ( 2) 在 工 业 控 制 中 的 应 用 ( 3) 在 家 用 电 器 中 的 应 用 ( 4) 在 计 算 机 网 络 和 通 信 领 域 中 的 应 用 ( 5) 单 片 机 在 医 用 设 备 领 域 中 的 应 用 ( 6) 在 各 种 大 型 电 器 中 的 模 块 化 应 用 ( 7) 单 片 机 在 汽 车 设 备 领 域 中 的 应 用 此 外 , 单 片 机 在 工 商 , 金 融 , 科 研 、 教 育 , 国 防 航 空 航 天 等 领 域 都 有 着 十 分广 泛 的 用 途 。1.3 AT89S52单片机AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品桂林电子科技大课程设计(论文)专用纸 第 5 页 共 34 页第 5 页 共 34 页 指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 具有以下标准功能: 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。主要性能1、与 MCS-51 单片机产品兼容2 、8K 字节在系统可编程 Flash 存储器3 、1000 次擦写周期4 、全静态操作:0Hz33Hz5 、三级加密程序存储器6 、32 个可编程 I/O 口线7 、三个 16 位定时器/计数器8、八个中断源9、全双工 UART 串行通道10、 低功耗空闲和掉电模式l 1、掉电后中断可唤醒l 2、看门狗定时器l3、 双数据指针l4、 掉电标识符引脚结构桂林电子科技大课程设计(论文)专用纸 第 6 页 共 34 页第 6 页 共 34 页 P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2 的触发输入(P1.1/T2EX) ,具体如下表所示。在 flash 编程和校验时,P1 口接收低 8 位地址字节。引脚号第二功能P1.0 T2(定时器/计数器 T2 的外部计数输入) ,时钟输出P1.1 T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8 位地址(如 MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内桂林电子科技大课程设计(论文)专用纸 第 7 页 共 34 页第 7 页 共 34 页 容。在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。在 flash 编程和校验时,P3 口也接收一些控制信号。引脚号第二功能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 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为 8EH 的 SFR的第 0 位置“1” ,ALE 操作将无效。这一位置“1” ,ALE 仅在执行 MOVX 或 MOVC 指令时有效。否则,ALE 将被微弱拉高。这个 ALE 使能标志位(地址为 8EH 的 SFR 的第 0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA 必须接 GND。为了执行内部程序指令,EA 应该接 VCC。在 flash 编程期间,EA 也接收 12 伏 VPP 电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2 LCD1602的原理及其应用2.1 液晶屏 LCD1602的介绍:LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于桂林电子科技大课程设计(论文)专用纸 第 8 页 共 34 页第 8 页 共 34 页 HD44780液晶芯片的,控制原理是完全相同的,因此 HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型 LCD 通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线 GND(16脚),其控制原理与14脚的LCD 完全一样。2.2 液 晶 屏 LCD1602 的 功 能 及 应 用1602LCD 采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号 符号 引脚说明 编号 符号 引脚说明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 背光源负极表10-13:引脚接口说明表第1脚:VSS 为地电源。第2脚:VDD 接5V 正电源。第3脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一个10K 的电位器调整对比度。第4脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。桂林电子科技大课程设计(论文)专用纸 第 9 页 共 34 页第 9 页 共 34 页 第6脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。10823 1602LCD 的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D01 清显示 0 0 0 0 0 0 0 0 0 12 光标返回 0 0 0 0 0 0 0 0 1 *3 置输入模式 0 0 0 0 0 0 0 1 I/D S4 显示开/关控制 0 0 0 0 0 0 1 D C B5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *6 置功能 0 0 0 0 1 DL N F * *7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址8 置数据存贮器地址 0 0 1 显示数据存贮器地址9 读忙标志或地址 0 1 BF 计数器地址10写数到 CGRAM 或DDRAM) 1 0要写的数据内容11 从 CGRAM 或 DDRAM 读数 1 1 读出的数据内容表10-14:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H 位置。指令2:光标复位,光标返回到地址00H。桂林电子科技大课程设计(论文)专用纸 第 10 页 共 34 页第 10 页 共 34 页 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器 RAM 地址设置。指令8:DDRAM 地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与 HD44780相兼容的芯片时序表如下:读状态 输入 RS=L,R/W=H,E=H 输出 D0D7=状态字写指令 输入 RS=L,R/W=L,D0 D7=指令码,E=高脉冲输出 无读数据 输入 RS=H,R/W=H,E=H 输出 D0D7=数据写数据 输入 RS=H,R/W=L,D0 D7=数据,E=高脉冲输出 无表10-15:基本操作时序表读写操作时序如图10-55和10-56所示:桂林电子科技大课程设计(论文)专用纸 第 11 页 共 34 页第 11 页 共 34 页 图10-56 写操作时序10824 1602LCD 的 RAM 地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。桂林电子科技大课程设计(论文)专用纸 第 12 页 共 34 页第 12 页 共 34 页 图10-57 1602LCD 内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H) ,显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”桂林电子科技大课程设计(论文)专用纸 第 13 页 共 34 页第 13 页 共 34 页 图10-58 字符代码与图形对应图3 设 计 思 路 、 仿 真 及 调 试3.1 设 计 方 法本 电 路 设 计 采 用 AT89S52 单 片 机 为 核 心 , 利 用 晶 振 产 生 频 率 为 1HZ 的 时 钟 脉 冲 信号 , 利 用 液 晶 屏 LCD1602 显 示 计 算 及 其 时 间 信 息 , 通 过 对 AT89S52 单 片 机 的 编 程控 制 液 晶 屏 LCD1602 的 显 示 。 显 示 计 算 和 简 易 计 算 的 信 息 同 在 LCD1602, 通 过 按键 切 换 选 择 。 外 部 按 键 可 及 时 设 定 或 调 整 时 间 或 计 算 的 信 息 。3.2 硬 件 设 计本系统以AT89S52单片机为核心,本系统选用12MHZ的晶振, ,使得单片机有合理的运行速度。起振电容30pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。3.2.1 按键调整电路桂林电子科技大课程设计(论文)专用纸 第 14 页 共 34 页第 14 页 共 34 页 S0 为 调 秒 的 按 键 , 当 按 下 S0 时 秒 加 1, S1 为 调 分 的 按 键 , 当 按 S1 时 分 加 1, S2按 键 为 调 时 , 当 按 下 S2 时 , 时 加 1, S3 按 键 为 调 日 , 当 按 下 S3 时 日 加 1, S4 为调 月 , 当 按 下 S4 时 月 加 1, S5 为 调 年 , 当 按 下 S5 时 年 加 1; S6 为 时 间 显 示 建 ,S7 为 计 算 显 示 键 。3.2.2 复 位 电 路3.2.3 液 晶 屏 LCD1602 显 示3.2.4 LED 指 示 电 路当 单 片 机 通 电 时 LED 亮桂林电子科技大课程设计(论文)专用纸 第 15 页 共 34 页第 15 页 共 34 页 3.2.5 4*4 键 盘 的 设 计键盘功能如下:3.2.6 简 易 计 算 器 的 总 电 路硬 件 设 计 中 用 Protel99se 画 原 理 图 和 PCB 图 如 图 1 所 示 原 理 图 :桂林电子科技大课程设计(论文)专用纸 第 16 页 共 34 页第 16 页 共 34 页 图 13.3 软 件 设 计本 电 路 软 件 设 计 采 用 C 语 言 编 写 程 序 ( 具 体 程 序 在 附 件 中 给 出 ) 。 程 序 设 计 主要 包 括 简 易 计 算 的 编 程 , 按 键 编 程 , 时 间 控 制 编 程 , 液 晶 屏 LCD1602 的 显 示 编 程 。3.4 软 件 仿 真在 硬 件 设 计 完 成 后 , 利 用 软 件 对 其 进 行 仿 真 , 以 尽 可 能 的 减 少 做 板 的 次 数 。 本次 我 采 用 Proteus 软 件 仿 真 。如 图 2 所 示 , 简 易 计 算 器 的 时 间 显 示如 图 3 所 示 简 易 计 算 器 的 计 算 显 示 软 件 仿 真 正 常 , 可 进 行 硬 件 制 作 。桂林电子科技大课程设计(论文)专用纸 第 17 页 共 34 页第 17 页 共 34 页 图 2图 33.5 硬 件 调 试做 好 电 路 板 , 按 键 使 用 正 确 , 时 间 显 示 正 常 , 计 算 功 能 也 正 常 ! 如 下 图 :桂林电子科技大课程设计(论文)专用纸 第 18 页 共 34 页第 18 页 共 34 页 4 结 论在用单片机实现简易计算的设计中使用到了AT89s52、LCD1602及其4*4键盘的使用。在设计过程中我通过在网上和图书馆查阅资料,收集了关于单片机和液晶屏LCD1602显示方面的资料,通过对这些资料的学习,我了解了单片机的基本结构和单片机在生活和生产中所发挥的作用;液晶屏LCD1602的原理和使用。本次课程设计完成的主要工作和任务如下:对设计方案的理论研究,单片机的合理选型,硬件电路的设计,电路板的制作,元器件的焊接,软件的编写和调试以及课设论文的制作。通过设计简易计算器的过程中我掌握了单片机的基本原理及其各种应用,对它的各种硬件接口与软件设计方法有较深入的认识。通过对电路原理图、pcb图的绘制,电路仿真、电路板的制作掌握了对proteus仿真软件的使用。桂林电子科技大课程设计(论文)专用纸 第 19 页 共 34 页第 19 页 共 34 页 谢 辞本论文是在袁华老师悉心指导下完成的。袁华老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。本课设论文从选题到完成,每一步都是在袁华老师的指导下完成的,倾注了袁华老师大量的心血。在此,谨向袁华老师表示崇高的敬意和衷心的感谢!在此也感谢大学的老师教育我,使我完成本次课设,感谢他们带给我知识,同时也感谢我的同学们,对我的支持!桂林电子科技大课程设计(论文)专用纸 第 20 页 共 34 页第 20 页 共 34 页 参考文献:1 余锡存,曹国华,单片机原理及接口技术. 西安:西安电子科技大学出版社,20002 郭天祥,新概念51单片机c语言教程。北京:电子工业出版社,20093 马忠梅,单片机的C语言应用程序设计.北京:北京航空航天大学出版社,1997。4张毅刚著,单片机原理及应用,北京,高等教育出版社,20085 谭浩强,C程序设计(第二版)M.北京:清华大学出版社,2003。桂林电子科技大课程设计(论文)专用纸 第 21 页 共 34 页第 21 页 共 34 页 附 件硬件电路原理图:软件编程程序:#include #define uchar unsigned char#define uint unsigned intsbit rs=P00;sbit rw=P01;sbit e=P02;桂林电子科技大课程设计(论文)专用纸 第 22 页 共 34 页第 22 页 共 34 页 sbit k0=P10;sbit k1=P11;sbit k2=P12;sbit k3=P13;sbit k4=P14;sbit k5=P15;sbit k6=P16;sbit k7=P17;unsigned char code digit =“0123456789“; /定义字符数组显示数字unsigned char s,m,h,day,month,year,count;void write_dat(uchar dat); void write_com(uchar com);void keyscan();/* 功能说明:显示编码,加上0x30,分别为1,2,3,+,4,5,6,-,等*/uchar code table1=1,2,3,0x2b-0x30,4,5,6,0x2d-0x30,7,8,9,0x2a-0x30,0,0x3d-0x30,0x01-0x30,0x2f-0x30;uchar k=0,flag=0,num,fuhao,i;long a,b,c;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*函数功能:指定字符显示的实际地址入口参数:x*/void WriteAddress(unsigned char x)write_com(x|0x80); /显示位置的确定方法规定为“80H+地址码x“/*函数功能:显示小时 */void DisplayHour()unsigned char i,j;i=h/10; /取整运算,求得十位数字j=h%10; /取余运算,求得各位数字WriteAddress(0x45); /写显示地址,将十位数字显示在第2行第0列write_dat(digiti); /将十位数字的字符常量写入LCDwrite_dat(digitj); /将个位数字桂林电子科技大课程设计(论文)专用纸 第 23 页 共 34 页第 23 页 共 34 页 的字符常量写入LCD/*函数功能:显示分钟 */void DisplayMinute()unsigned char i,j;i=m/10; /取整运算,求得十位数字j=m%10; /取余运算,求得各位数字WriteAddress(0x48); /写显示地址,将十位数字显示在第2行第3列write_dat(digiti); /将十位数字的字符常量写入LCDwrite_dat(digitj); /将个位数字的字符常量写入LCD/*函数功能:显示秒 */void DisplaySecond()unsigned char i,j;i=s/10; /取整运算,求得十位数字j=s%10; /取余运算,求得各位数字WriteAddress(0x4b); /写显示地址,将十位数字显示在第2行第6列write_dat(digiti); /将十位数字的字符常量写入LCDwrite_dat(digitj); /将个位数字的字符常量写入LCD/*函数功能:显示小时 */void DisplayYear()unsigned char i,j;i=year/10; /取整运算,求得十位数字j=year%10; /取余运算,求得各位数字WriteAddress(0x07); /写显示地址,将十位数字显示在第2行第0列write_dat(digiti); /将十位数字的字符常量写入LCD桂林电子科技大课程设计(论文)专用纸 第 24 页 共 34 页第 24 页 共 34 页 write_dat(digitj); /将个位数字的字符常量写入LCD/*函数功能:显示分钟 */void DisplayMonth()unsigned char i,j;i=month/10; /取整运算,求得十位数字j=month%10; /取余运算,求得各位数字WriteAddress(0x0a); /写显示地址,将十位数字显示在第2行第3列write_dat(digiti); /将十位数字的字符常量写入LCDwrite_dat(digitj); /将个位数字的字符常量写入LCD/*函数功能:显示秒 */void DisplayDay()unsigned char i,j;i=day/10; /取整运算,求得十位数字j=day%10; /取余运算,求得各位数字WriteAddress(0x0d); /写显示地址,将十位数字显示在第2行第6列write_dat(digiti); /将十位数字的字符常量写入LCDwrite_dat(digitj); /将个位数字的字符常量写入LCDvoid keyscan2()if(k0=0)delay(5);if(k0=0)s+;if(s=60)s=0;if(k1=0)delay(5);if(k1=0)m+;if(m=60)m=0;if(k2=0)delay(5);桂林电子科技大课程设计(论文)专用纸 第 25 页 共 34 页第 25 页 共 34 页 if(k2=0)h+;if(h=60)h=0;if(k3=0)delay(5);if(k3=0)day+;if(day=30)day=0;if(k4=0)delay(5);if(k4=0)month+;if(month=13)month=0;if(k5=0)delay(5);if(k5=0)year+;if(year=99)year=0;void keyscan()uchar temp;P3=0xfe;temp=P3;temp=tempwhile(temp!=0xf0)delay(5);temp=P3;temp=tempwhile(temp!=0xf0)temp=P3;switch(temp)case 0xee:num=0;break; case 0xde:num=1;break;case 0xbe:num=2;break;case 0x7e:num=3;break; while(temp!=0xf0) temp=P3;temp=temp/*当按下1,2,3,松手后执行下面这段语句*/if(num=0|num=1|num=2)桂林电子科技大课程设计(论文)专用纸 第 26 页 共 34 页第 26 页 共 34 页 if(flag=0)a=a*10+table1num;/如果没有按符号键,符号前

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论