毕业设计(论文)-基于单片机的计算器设计.DOC_第1页
毕业设计(论文)-基于单片机的计算器设计.DOC_第2页
毕业设计(论文)-基于单片机的计算器设计.DOC_第3页
毕业设计(论文)-基于单片机的计算器设计.DOC_第4页
毕业设计(论文)-基于单片机的计算器设计.DOC_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的计算器设计 全套设计加扣全套设计加扣 30122505823012250582 课题名称 课题名称 基于单片机的计算器设计 姓姓 名 名 学学 号 号 班班 级 级 电子1401班 专专 业 业 应用电子技术 院院 系 系 电子工程学院 指导教师 指导教师 基于单片机的计算器设计 毕毕业业设设计计 基于单片机的计算器设计 年年 月月 日日 基于单片机的计算器设计 湖南信息职业技术学院毕业设计 诚 信 声 明 本人郑重声明 所呈交的毕业设计文本和成果 是本人在指导老 师的指导下 独立进行研究所取得的成果 成果不存在知识产权争议 本毕业设计不含任何其他个人或集体已经发表过的作品和成果 本 人完全意识到本声明的法律结果由本人承担 毕业设计者签名 年 月 日 目 录 基于单片机的计算器设计 第一章 绪论 1 1 1 前言 1 第二章 方案设计 2 2 1功能要求 2 2 2方案论证 2 2 3 单片机简介 2 2 4 管脚说明 3 第三章 系统硬件的设计 5 3 1系统总体方案设计 5 3 2 矩阵键盘介绍 6 3 3串口调试 7 3 4液晶显示模块 9 3 5独立按键 12 第四章 系统软件设计 14 4 1软件系统介绍 14 4 2 主程序介绍 14 4 3 主流程图 14 结论 15 致谢 16 参考文献 17 附录 18 附录一 原理图 仿真图 18 附录二 实物图 上位机图 21 附录三 运行效果图 21 附录四 程序 22 基于单片机的计算器设计 1 摘 要 本设计以STC89C52RC单片机作为计算器的微处理器 采用4 4矩阵按键作为数 据输入 以LCD1602实现信息交互 矩阵按键的设计 在键盘中按键数量较多时 为了减少I O口的占用 通常将按键排列成矩阵形式 在矩阵式键盘中 每条水平 线和垂直线在交叉处不直接连通 而是通过一个按键加以连接 这样 一个端口 如P1口 就可以构成4 4 16个按键 比之直接将端口线用于键盘多出了一倍 而且 线数越多 区别越明显 比如再多加一条线就可以构成20键的键盘 而直接用端口 线则只能多出一键 9键 由此可见 在需要的键数比较多时 采用矩阵法来做 键盘是合理的 采用低功耗的字符型液晶作为显示器件 1602液晶也叫1602字符型 液晶 它是一种专门用来显示字母 数字 符号等的点阵型液晶模块 显示更为直 观 该系统基于可靠地硬件设计和稳定的软件算法实现题目的基本要求 关键词关键词 STC89C52RC 矩阵按键 LCD1602 液晶 基于单片机的计算器设计 2 Abstract The design of STC89C52RC single chip calculator processor using 4 4 matrix keys as a data input LCD1602 interaction Design of matrix keys when there are number of keys in the keyboard in order to reduce the I O port use usually buttons arranged in a matrix form Matrix keyboard each intersection of horizontal and vertical lines not directly connected but a key to be connected In this way a port such as the P1 can constitute a 4 4 16 key than the port lines directly to the keyboard 1 time more and more lines more obvious difference added a line for example can constitute a 20 key keyboard and directly with the port lines can only be extra keys 9 Therefore comparison of number of keys required for quite some time making the keyboard matrix method is reasonable Low power consumption character can be used as a display device 1602 LCD also called 1602 character it is a specifically designed to display letters numbers symbols such as the dot matrix LCD modules Show more intuitive The system is based on reliable hardware design and the basic requirements of stable software topics Keywords STC89C52RC Matrix keypad LCD1602 LCD 基于单片机的计算器设计 1 第一章 绪论 1 1 前言 计算器是日常工作和学习生活中的常用工具 人们利用它代替了许多复杂 计算 包括加减乘除和其他运算 尤其是小型计算器 它携带方便 在生活中 用起来方便快捷 成为了财政 学习 生意上都青睐的必需品 它的需求广泛 在计算器的发展上存在很大的空间和市场意义 单片机在我国的各行各业得 到了广泛使用 单片机的出现是计算机制造技术高速发展的产物 它是嵌入式 控制系统的核心 如今 它已经广泛应用到我们生活中的各个领域 如 电子 科技 通信 汽车 工业等 一般只需几块钱 有着经济廉价的优势 用单 片机可以很方便的实现计算器的设计 使用单片机来设计计算器有以下优点 1 能明显地降低控制器硬件成本 速度更快 功能更新的新一代微处理机不断 涌现 硬件费用会变得很便宜 体积小 重量轻 耗能少是它们的共同优点 2 可显著改善控制的可靠性 集成电路和大规模集成电路的平均无故障时大大 长于分立元件电子电路 3 硬件电路易标准化 在电路集成过程中采用了一些屏蔽措施 可以避免电力 电子电路中过大的瞬态电流 电压引起的电磁干扰问题 因此可靠性比较高 4 采用微处理机的数字控制 使信息的双向传递能力大大增强 容易和上位系 统机联接 可随时改变控制参数 5 可以设计适合于众多电力电子系统的统一硬件电路 其中软件可以模块化设 计 拼装构成适用于各种应用对象的控制算法 以满足不同的用途 软件模 块可以方便地增加 更改 删减 或者当实际系统变化时彻底更新 基于单片机的计算器设计 2 第二章 方案设计 2 1功能要求 能够读取矩阵按键的数据输入 并对输入数据进行存储 通过单片机实 现对储存数据的数学运算 并通过LCD1602液晶与用户实现信息交互 软件 对数学运算的支持包括负数 小数的计算 对不符合要求的输入数据 能通 过LCD1602实现报错功能 2 2方案论证 方案一 采用独立按键实现数据输入 软件编写简便 但需要大量可用IO口 占用了大量资源 方案二 采用矩阵按键实现数据输入 软件编程稍复杂 但是16个按键仅仅 只需要八个IO口 相比独立按键 节约了一半的硬件资源 方案三 信息交互采用数码管 数码管由多个发光二极管封装在一起组成 8 字型的器件 多用于显示数字 笔画等 方案四 信息交互采用LCD 它是一种专门用来显示字母 数字 符号等的点阵型液晶模块 显示更为直 观 以上4种方案都可以实现本次毕业设计的基本硬件需求 出于综合考虑 我们 采用方案二实现数据输入 节约硬件IO资源 采用方案四实现信息交互 显 示更加直观 2 3 单片机简介 STC89C52RC是STC公司生产的一种低功耗 高性能CMOS8位微控制器 具有 8K字节系统可编程Flash存储器 使用经典的MCS 51内核 但做了很多的改进使得芯片具有传统51单片机不具备的功能 在单 基于单片机的计算器设计 3 芯片上 拥有灵巧的8 位CPU 和在系统可编程Flash 使得STC89C52为众多嵌入式控制应用系统提供高灵 活 超有效的解决方案 1 增强型8051单片机 6 时钟 机器周期和12 时钟 机器周期可以任意 选择 指令代码完全兼容传统8051 1 2 工作电压 5 5V 3 3V 5V单片机 3 8V 2 0V 3V 单片机 3 工作频率范围 0 40MHz 相当于普通8051 的0 80MHz 实际工作 频率可达48MHz 4 用户应用程序空间为8K字节 5 片上集成512 字节RAM 6 通用I O 口 32 个 复位后为 P0 P1 P2 P3 是准双向口 弱上拉 P0 口是漏极开路输出 作为总线扩展用时 不用加上拉电阻 作为 I O 口用时 需加上拉电阻 7 ISP 在系统可编程 IAP 在应用可编程 无需专用编程器 无 需专用仿真器 可通过串口 RxD P3 0 TxD P3 1 直接下载用户程 序 数秒即可完成一片 8 具有EEPROM 功能 9 共3 个16 位定时器 计数器 即定时器T0 T1 T2 10 外部中断4 路 下降沿中断或低电平触发电路 Power Down 模式可 由外部中断低电平触发中断方式唤醒 11 通用异步串行口 UART 还可用定时器软件实现多个UART 12 工作温度范围 40 85 工业级 0 75 商业级 13 PDIP封装 2 4管脚说明 1电源 VCC 芯片电源 接 5V VSS 接地端 2 时钟 XTAL1 XTAL2 晶体振荡电路反相输入端和输出端 3 控制线 控制线共有4根 RST Reset 功能 复位信号输入端 基于单片机的计算器设计 4 VPD功能 在Vcc掉电情况下 接备用电源 EA Vpp 内外ROM选择 片内EPROM编程电源 EA功能 内外ROM选择端 Vpp功能 片内有EPROM的芯片 在EPROM编程期间 施加编程电源Vpp 4 I O口线 P0 P1 P2 P3共四个八位口 P0口是三态双向口 通称数据总线口 因为只有该口能直接用于对外部 存储器的读 写操作 P0口也用以输出外部存储器的低8位地图1址 由 于是分时输出 故应在外部加锁存器将此地址数据锁存 地址锁存 信号 用ALE P1口是专门供用户使用的I O口 是准双向口 P2口是从系统扩展时作高8位地址线用 不扩展外部存储器时 P2口也 可以作为用户I O口线使用 P2口也是准双向口 P3口是双功能口 该口的每一位均可独立地定义为第一I O功能或第二 I O功能 作为第一功能使用时操作同P1口 主要特性 8K字节程序存储空间 512字节数据存储空间 内带4K字节EEPROM存储空间 可直接使用串口下载 基于单片机的计算器设计 5 图图2 12 1 单片机引脚图单片机引脚图 第三章 系统硬件的设计 3 1系统总体方案设计 硬件设计 由矩阵按键实现数据输入 LCD1602实现信息交互 经 过C语言编程 使硬件实现简单的计算器功能 本设计通过使用STC89C 51单片机芯片来设计电路 编制程序 仿真 调试 完成整个系统的 功能 整个控制系统主要包括三个模块 矩阵按键模块 LCD1602显示 模块 串口调试模块 基于单片机的计算器设计 6 图图3 13 1 系统模块组成图系统模块组成图 3 2 矩阵键盘介绍 矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组 矩阵 键盘程序则实现了矩阵键盘的功能 矩阵键盘减少了I O的占用 在需要的 键数比较多时 采用矩阵法是很合理的 结构组成 在键盘中按键数量较多时 为了减少I O口的占用 通常将按 键排列成矩阵形式 在矩阵式键盘中 每条水平线和垂直线在交叉处不直接 连通 而是通过一个按键加以连接 这样 一个端口 如P1口 就可以构成 4 4 16个按键 比之直接将端口线用于键盘多出了一倍 而且线数越多 区 别越明显 比如再多加一条线就可以构成20键的键盘 而直接用端口线则只 能多出一键 9键 识别方法 矩阵式结构的键盘显然比独立按键要复杂一些 识别也要复 杂一些 列线通过电阻接正电源 并将行线所接的单片机的I O口作为输出 端 而列线所接的I O口则作为输入 这样 当按键没有按下时 所有的输 入端都是高电平 代表无键按下 行线输出是低电平 一旦有键按下 则输 入线就会被拉低 这样 通过读入输入线的状态就可得知是否有键按下了 行扫描法 行扫描法又称为逐行 或列 扫描查询法 是一种最常用的按键识别方法 介绍过程如下 基于单片机的计算器设计 7 1 判断键盘中有无键按下 将全部行线置低电平 然后检测列线的状态 只要有一列的电平为低 则表 示键盘中有键被按下 而且闭合的键位于低电平线与4根行线相交叉的4个按 键之中 若所有列线均为高电平 则键盘中无键按下 2 判断闭合键所在的位置 在确认有键按下后 即可进入确定具体闭合键的过程 其方法是 依次将行 线置为低电平 即在置某根行线为低电平时 其它线为高电平 在确定某根 行线位置为低电平后 再逐行检测各列线的电平状态 若某列为低 则该列 线与置为低电平的行线交叉处的按键就是闭合的按键 软件编程 第一步 使行线为编程的输入线 列线是输出线 拉低所有的列线 判断行线的变化 如果有按键按下 按键按下的对应行线被拉低 否则所有的行线都为高电 平 第二步 在第一步判断有键按下后 延时10ms消除机械抖动 再次读取行值 如果此行线还处于低电平状态则进 入下 一步 否则返回第一步重新判断 第三步 开始扫描按键位置 采用逐 行扫描 每间隔1ms的时间 分别拉低第一列 第二列 第三列 第四 列 无论拉低哪一列其他三列都为高电平 读取行值找到按键的位置 分别 把行值和列值储存在寄存器里 第四步 从寄存器中找到行值和列 值并把其合并 得到按键值 对此按键值进行编码 按照从第一行第一个一 直到第四行第四个逐行进行编码 编码值从 0000 至 1111 再进行译码 最后显示按键号码 图图3 23 2 矩阵按键电路图矩阵按键电路图 基于单片机的计算器设计 8 3 3串口调试 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行 数据流发送出去 同时可将接受的串行数据流转换为并行的数据字符供给CP U的器件 一般完成这种功能的电路 我们称为串行接口电路 串口通信最重 要的参数是波特率 数据位 停止位和奇偶校验 串口通信 Serial Communications 的概念非常简单 串口按位 bit 发送和接收字节 串 口通信是指外设和计算机间 通过数据信号线 地线 控制线等 按位进行传输数据的一种通讯方式 通信原理 串口通信 Serial Communications 的概念非常简单 串口按位 bit 发送和接收字节 尽 管比按字节 byte 的并行通信慢 但是串口可以在使用一根线发送数据的 同时用另一根线接收数据 它很简单并且能够实现远距离通信 比如IEEE48 8定义并行通行状态时 规定设备线总长不得超过20米 并且任意两个设备 间的长度不得超过2米 而对于串口而言 长度可达1200米 典型地 串口 用于ASCII码字符的传输 通信使用3根线完成 分别是地线 发送 接收 由于串口通信是异步的 端口能够在一根线上发送数据同时在另一根线上接 收数据 其他线用于握手 但不是必须的 串口通信最重要的参数是波特率 数据位 停止位和奇偶校验 对于两个进行通信的端口 这些参数必须匹 配 a 波特率 这是一个衡量符号传输速率的参数 指的是信号被调制以后 在单位时间内的变化 即单位时间内载波参数变化的次数 如每秒钟传送24 0个字符 而每个字符格式包含10位 1个起始位 1个停止位 8个数据位 这时的波特率为240Bd 比特率为10位 240个 秒 2400bps 一般调制速率 大于波特率 比如曼彻斯特编码 通常电话线的波特率为14400 28800和 36600 波特率可以远远大于这些值 但是波特率和距离成反比 高波特率 常常用于放置的很近的仪器间的通信 典型的例子就是GPIB设备的通信 b 数据位 这是衡量通信中实际数据位的参数 当计算机发送一个信息 包 实际的数据往往不会是8位的 标准的值是6 7和8位 如何设置取决于 你想传送的信息 比如 标准的ASCII码是0 127 7位 扩展的ASCII码 是0 255 8位 如果数据使用简单的文本 标准 ASCII码 那么每个数据包使用7位数据 每个包是指一个字节 包括开始 基于单片机的计算器设计 9 停止位 数据位和奇偶校验位 由于实际数据位取决于通信协议的选取 术 语 包 指任何通信的情况 c 停止位 用于表示单个包的最后一位 典型的值为1 1 5和2位 由 于数据是在传输线上定时的 并且每一个设备有其自己的时钟 很可能在通 信中两台设备间出现了小小的不同步 因此停止位不仅仅是表示传输的结束 并且提供计算机校正时钟同步的机会 适用于停止位的位数越多 不同时 钟同步的容忍程度越大 但是数据传输率同时也越慢 d 奇偶校验位 在串口通信中一种简单的检错方式 有四种检错方式 偶 奇 高和低 当然没有校验位也是可以的 对于偶和奇校验的情况 串 口会设置校验位 数据位后面的一位 用一个值确保传输的数据有偶个或 者奇个逻辑高位 例如 如果数据是011 那么对于偶校验 校验位为0 保 证逻辑高的位数是偶数个 如果是奇校验 校验位为1 这样就有3个逻辑高 位 高位和低位不真正的检查数据 简单置位逻辑高或者逻辑低校验 这样 使得接收设备能够知道一个位的状态 有机会判断是否有噪声干扰了通信或 者是否传输和接收数据是否不同步 通讯结构 串口通信是指外设和计算机间 通过数据信号线 地线 控制线等 按位进行传输数据的一种通讯方式 这种通信方式使用 的数据线少 在远距离通信中可以节约通信成本 但其传输速度比并行传输 低 串口是计算机上一种非常通用的设备通信协议 大多数计算机 不包括笔记 本电脑 包含两个基于RS 232的串口 串口同时也是仪器仪表设备通用的通信协议 很多GPIB兼容的 设备也带有RS 232口 同时 串口通信协议也可以用于获取远程采集设备的数据 RS 232 ANSI EIA 232标准 是IBM PC及其兼容机上的串行连接标准 可用于许多用途 比如连接鼠标 打印机 或者Modem 同时也可以接工业仪器仪表 用于驱动和连线的改进 实际应 用中RS 232的传输长度或者速度常常超过标准的值 RS 232只限于PC串口和设备间点对点的通信 RS 232串口通信最远距离是50英尺 基于单片机的计算器设计 10 图图3 33 3 串口调试电路图串口调试电路图 3 4液晶显示模块 LCD1602A 是一种工业字符型液晶 能够同时显示16x02 即32个字符 在日常生活中 我们对液晶显示器并不陌生 液晶显示模块已 作为很多电子产品的通过器件 如在计算器 万用表 电子表及很多家用电 子产品中都可以看到 显示的主要是数字 专用符号和图形 在单片机的人 机交流界面中 一般的输出方式有以下几种 发光管 LED数码管 液晶显 示器 发光管和LED数码管比较常用 软硬件都比较简单 在单片机系统中应用晶液显示器作为输出器件有以下几个优点 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度 恒 定发光 而不像阴极射线管显示器 CRT 那样需要不断刷新新亮点 因此 液晶显示器画质高且不会闪烁 基于单片机的计算器设计 11 液晶显示器都是数字式的 和单片机系统的接口更加简单可靠 操作更 加方便 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的 在重量上比相同显示面积的传统显示器要轻得多 相对而言 液晶显示器的 功耗主要消耗在其内部的电极和驱动IC上 因而耗电量比其它显示器要少得 多 1 引脚说明 第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端由高电平跳变成低电平时 液晶模块执行命令 第7 14脚 D0 D7为8位双向数据线 第15脚 背光源正极 第16脚 背光源负极 2 1602LCD的RAM地址映射以及标准字库表 LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图 形 这些字符图有 阿拉伯数字 英文字母的大小写 常用的符号 和日文 假名等 每一个字符都有一个固定的代码 比如大写的英文字母 A 的代码 是01000001B 41H 显示时模块把地址41H中的点阵字符图形显示出来 我们就能看到字母 它的读写操作 屏幕和光标的操作都是通过指令编程来实现的 说明 1为高 电平 0为低电平 指令1 清显示 指令码01H 光标复位到地址00H位置 指令2 光标复位 光标返回到地址00H 指令3 光标和显示模式设置 I D 光标移动方向 高电平右移 低电平左移 基于单片机的计算器设计 12 S 屏幕上所有文字是否左移或者右移 高电平表示有效 低电平则无效 指令4 显示开关控制 D 控制整体显示的开与关 高电平表示开显示 低电平表示关显示 C 控制光标的开与关 高电平表示有光标 低电平表示无光标 B 控制光标是否闪烁 高电平闪烁 低电平不闪烁 指令5 光标或显示移位 S C 高电平时移动显示的文字 低电平时移动光标 指令6 功能设置命令 DL 高电平时为4位总线 低电平时为8位总线 N 低电平时为单行显示 高电平时双行显示 F 低电平时显示5X7的点阵字符 高电平时显示5x10的点阵字符 有些模块是 DL 高电平时为8位总线 低电平时为4位总线 指令7 字符发生器RAM地址设置 指令8 DDRAM地址设置 指令9 读出忙信号和光标地址 BF为忙标志位 高电平表示忙 此时模块不能接收命令或者数据 如果为低 电平表示不忙 模块就能接收相应的命令或者数据 指令10 写数据 指令11 读数据 液晶显示模块是一个慢显示器件 所以在执行每条指令之前一定要确认模块 的忙标志为低电平 表示不忙 否则此指令失效 要显示字符时要先输入显 示字符地址 也就是告诉模块在哪里显示字符 本设计的灰度调节是采用10k电阻和1 5k电阻分压的形式 灰度适中 液晶 显示电路如下 基于单片机的计算器设计 13 图图3 43 4 液晶显示电路液晶显示电路 3 5独立按键 单片机键盘有独立键盘和矩阵式键盘两种 独立键盘每一个I O 口上只接一个按键 按键的另一端接电源或接地 一般接地 这种接法程 序比较简单且系统更加稳定 而矩阵式键盘式接法程序比较复杂 但是占用 的I O少 根据本设计的需要这里选用了独立式键盘接法 独立式键盘的实现方法是利用单片机I O口读取口的电平高低来判断是否 有键按下 将常开按键的一端接地 另一端接一个I O 口 程序开始时将此I O口置于高电平 平时无键按下时I O口保护高电平 当有键按下时 此I O 口与地短路迫使I O 口为低电平 按键释放后 单片机内部的上拉电阻使I O口仍然保持高电平 我们所要做的就是在程序中查寻此I O口的电平状态就可以了解我们是否 有按键动作了 在用单片机对键盘处理的时候涉及到了一个重要的过程 那就是键盘的 去抖动 这里说的抖动是机械的抖动 是当键盘在未按到按下的临界区产生 的电平不稳定正常现象 并不是我们在按键时通过注意可以避免的 这种抖 动一般10 200毫秒之间 这种不稳定电平的抖动时间对于人来说太快了 而 对于时钟是微秒的单片机而言则是慢长的 硬件去抖动就是用部分电路对抖 动部分加之处理 软件去抖动不是去掉抖动 而是避抖动部分的时间 等键 盘稳定了再对其处理 所以这里选择了软件去抖动 实现法是先查寻按键当 有低电平出现时立即延时10 200毫秒以避开抖动 经典值为20毫秒 延时 结束后再读一次I O 口的值 这一次的值如果为1 表示低电平的时间不到10 200 毫秒 视为干扰信号 当读出的值是0时则表示有按键按下 调用相应的处理 程序 硬件电路如图所示 基于单片机的计算器设计 14 图图3 53 5 按键控制电路按键控制电路 基于单片机的计算器设计 15 第四章 系统软件设计 4 1软件系统介绍 软件的编程设计是单片机系统设计的核心部分 也是能否实现预定功能 的关键 单片机编程常用的语言是C语言和汇编语言 最终都要转为Intel HEX格式或二进制格式 Binary 文件拷入单片机芯片内 这里我们使用的是C 语言进行编程设计 4 2 主程序介绍 主程序如图4 1所示 本程序运行于Rtx51 Tny实时系统上 它是一种实时操作系统 RTOS 可以用它来建立多个任 务 函数 同时执行的应用 初始化函数包括IO初始化 LCD1602液晶显示 模块初始化 完成初始化任务 程序执行线程1 并删除线程0任务 线程1 为设计者基本信息 执行一次 启动线程2 删除本线程 线程2计算器的基 本功能 除此外 本程序对应多个驱动程序作为子程序 4 3 主流程图 图图4 14 1程序流程图程序流程图 基于单片机的计算器设计 16 结论 经过一段时间的努力 在黄亚辉老师和同学们的帮助及指导下基本完成 了本次设计的工作 在本次毕业设计中 我通过基于单片机的设计和应用 对于单片机工作原理 功能有了宏观的了解 并对单片机C语言程序的应用有 了更进一步的认识 在利用单片机设计简易LCD液晶显示屏的整个设计过程 中 从电路的设计 元器件的选用 电路的调试 我都能独立的设计与制作 这让我对于理论和实际相结合有了新的认识 本次课题的任务是使用STC89C52RC单片机实现一个简单的计算器设计 根据实际情况 从系统的稳定性 方案实施的难易度等多方面考虑 硬件设 计中我采用了STC89C52RC单片机来作为控制的核心 用矩阵按键作为数据输 入 LCD1602用于信息交互 具有电路简单 成本低 实用性高等特点 软 件设计上 以Rtx51 Tny实时系统为平台 多个驱动程序作为子程序 代码简介明了 便于调试 修改 运行稳定 除此外 通过C 程序语言设计了一个针对于本课题的上位机程序 实现 多种程序语言之间的相互交流 同时也极大地提升了自我的技术能力 完成这次毕业设计后 我发现对单片机原理有了更新的认识 懂得了这 些器件在实际生产中的最基础的应用 掌握计算机的一些画图软件的应用 基于单片机的计算器设计 17 致谢 经过一段时间的努力 在黄亚辉老师和同学们的帮助及指导下基本完成 了本次设计的工作 本课题在选题及研究过程中得到黄亚辉老师的悉心指导 黄亚辉多次询问研究进程 并为我指点迷津 帮助我开拓研究思路 精心 点拨 热忱鼓励 黄亚辉老师一丝不苟的作风 严谨求实的态度 踏踏实实 的精神 不仅授我以文 而且教我做人 虽历时三载 却给以终生受益无穷 之道 对黄亚辉的感激之情是无法用言语表达的 在此 我还要感谢为我提供帮助的同学们 正是由于你们的帮助和支持 我才能克服一个一个的困难和疑惑 直至本文的顺利完成 基于单片机的计算器设计 18 参 考 文 献 1 查兵 崔浩 单片机原理 J 中国高新技术 2011年1期 2 金仁贵 单片机应用系统的开发方法 J 电脑知识与技术 学术交流 2006年12期 3 严怀龙 基于单片机的数据采集系统 J 广西轻工业 2006年6期 4 杨美仙 单片机的发展及其应用 J 科技信息 学术研究 2007 5 张志利 基于RS232协议的单片机多机通信网络研究 J 自动化技术与应用 2009 基于单片机的计算器设计 19 附 录 附录一 原理图 仿真图 图图1 1 AltiumAltium designerdesigner设计的电路原理图设计的电路原理图 图图2 2 PROTUESPROTUES仿真运行图仿真运行图 基于单片机的计算器设计 20 附录二 实物图 上位机图 图图3 3 实物图实物图 基于单片机的计算器设计 21 图图4 4 基于单片机的计算器设计上位机基于单片机的计算器设计上位机 基于单片机的计算器设计 22 附录三 运行效果图 图图5 5 运行效果图运行效果图 基于单片机的计算器设计 23 附录四 程序 Main c include LCD1602显示模块驱动程序 include 按键扫描处理函数 include rtx51tny实时系统驱动文件 void main task void task 0 进程0 IO Init 初始化IO口 LCD init 初始化LCD1602 os create task 1 启动线程1 LCD DISPLAY task os wait K TMO 2 0 延时20毫秒 os delete task 0 删除本线程 void LCD DISPLAY task void task 1 进程1 uchar Temp for Temp 1 Temp 基于单片机的计算器设计 24 LCD My LCD write command 0 x01 显示我的学号 os wait K TMO 2 0 延时20毫秒 os create task 2 启动线程2 Key Switch task os delete task 1 删除本线程 void Key Switch task void task 2 进程2 while 1 Key Switch Num 进入矩阵按键扫描 lcd1602 c include uchar LCD addr 0 函数名 LCD init 基于单片机的计算器设计 25 功能 LCD1602的初始化 void LCD init void LCD RW 0 LCD write command 0 x38 设置1602的显示光标功能 Delay xMs 1 LCD write command 0 x0e 显示开及光标设置 Delay xMs 1 LCD write command 0 x06 显示光标移动设置 Delay xMs 1 LCD write command 0 x01 显示清屏 Delay xMs 1 函数名 LCD write command 行参 command 要定入的指令 功能 向LCD1602的写1个指令 基于单片机的计算器设计 26 void LCD write command uchar command LCD RS 0 选择写指令 LCD EN 0 使能初使化 LCD DB command 发送指令 LCD EN 1 开使能 Delay xMs 1 延时 LCD EN 0 关使能 函数名 LCD write data 行参 dat 要写入的数据 功能 向LCD1602的写1个数据 void LCD write data uchar date LCD RS 1 选择写数据 LCD EN 0 使能初使化 LCD DB date 发送指令 LCD EN 1 开使能 基于单片机的计算器设计 27 Delay xMs 1 延时 LCD EN 0 关使能 函数名 LCD write data 行参 功能 显示我的学号 void LCD My void uchar code ttt Xie Chen Jun 13 uchar code kkk 201415030115 12 uint i 0 LCD write command 0 x80 0 x80第一行从顶头开始显示 加n 后移n位显示 for i 0 i 12 i LCD write data ttt i Delay xMs 50 基于单片机的计算器设计 28 Delay xMs 20 LCD write command 0 x80 64 0 x80 64 第二行从顶头开始显 示 加64再加n 第二行从n开始显示 for i 0 i 12 i LCD write data kkk i Delay xMs 50 LCD write data 0 x80 Delay xMs 20 Switch c include uint Num flag 0 Math flag 0 SUM flag 0 double SUM Vualt1 Vualt2 void Key Switch Num void uchar Key Num 基于单片机的计算器设计 29 double Vualt buff uchar i uchar code limit Date Limit 13 char sx 20 if P1 0 xf0 Delay xMs 1 if P1 0 xf0 if SUM flag 1 LCD write command 0 x01 Delay xMs 10 SUM flag 0 P1 0 xfe switch P1 检测第一行按键状态 case 0 xee Key Num break case 0 xde Key Num break 基于单片机的计算器设计 30 case 0 xbe Key Num 0 Vualt buff 0 break default P1 0 xf0 break P1 0 xfd switch P1 检测第二行按键状态 case 0 xed Key Num break case 0 xdd Key Num 3 Vualt buff 3 break case 0 xbd Key Num 2 Vualt buff 2 break case 0 x7d Key Num 1 Vualt buff 1 break default P1 0 xf0 break P1 0 xfb switch P1 检测第三行按键状态 case 0 xeb Key Num break case 0 xdb Key Num 6 Vualt buff 6 break case 0 xbb Key Num 5 Vualt buff 5 break case 0 x7b Key Num 4 Vualt buff 4 break default P1 0 xf0 break 基于单片机的计算器设计 31 P1 0 xf7 switch P1 检测第四行按键状态 case 0 xe7 Key Num break case 0 xd7 Key Num 9 Vualt buff 9 break case 0 xb7 Key Num 8 Vualt buff 8 break case 0 x77 Key Num 7 Vualt buff 7 break default P1 0 xf0 break else if Clear Key 0 Key Num C 清除所有信息 else if Beep Key 0 Key Num B 使用蜂

温馨提示

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

评论

0/150

提交评论