基于AT89C51的简单计算器设计.doc

上传人:h**** 文档编号:130688 上传时间:2018-07-09 格式:DOC 页数:19 大小:979KB
下载 相关 举报
基于AT89C51的简单计算器设计.doc_第1页
第1页 / 共19页
基于AT89C51的简单计算器设计.doc_第2页
第2页 / 共19页
基于AT89C51的简单计算器设计.doc_第3页
第3页 / 共19页
基于AT89C51的简单计算器设计.doc_第4页
第4页 / 共19页
基于AT89C51的简单计算器设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、 1 设计题目: 基于单片机的简易计算器设计与仿真 凌阳, 拇指 凌阳 一、设计实验条件 : 凌阳, 拇指 凌阳 地 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 点: 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 实验设备: PC 机 ( 凌阳, 拇指 凌阳 装有 Keil; Protues; Word 凌阳, 拇指 凌阳 ; Visio 凌阳, 拇指 凌阳 ) 凌阳, 拇指 凌阳 二、设计任务 : 凌阳, 拇指 凌阳 本系统选用 AT89C51 单片机为主控机 。 食指 通过扩展必要的外围接口电路 , 拇指 实现对计算器的设计 , 拇指 具体设计如下: 凌阳, 拇

2、指 凌阳 ( 1)由于设计的计算器要 进行四则运算 , 拇指 为了得到较好的显示效果 , 拇指 经综合分析后 , 拇指 最后采用 LCD 凌阳, 拇指 凌阳 显示数据和结果 。 食指 凌阳, 拇指 凌阳 ( 2)采用键盘输入方式 , 拇指 键盘包括数字键( 0 9)、符号键( +、 -、)、清除键 (onc)和等号键( =) , 拇指 故只需要 16 凌阳, 拇指 凌阳 个按键即可 , 拇指 设计中采用集成的计算键盘 。 食指 凌阳, 拇指 凌阳 ( 3)在执行过程中 , 拇指 开机显示零 , 拇指 等待键入数值 , 拇指 当键入数字 , 拇指 通过 LCD 显示出来 , 拇指 当键入 +、

3、-、 *、 /运算符 , 拇指 计算器在内部执行数值转换和存储 , 拇指 并等待再次键入数值 , 拇指 当再键入数值后将显示键入的数值 , 拇指 按等号就会在 LCD 上输出运算结果 。 食指 凌阳, 拇指 凌阳 ( 4)错误提示:当计算器执行过程中有错误时 , 拇指 会在 LCD 上显示相应的提示 ,如:当输入的数值或计算得到的结果大于计算器的表示范围时 , 拇指 计算器会在 LCD上提示 overflow;当除数为 0 时 , 拇指 计算器会在 LCD 上提示 error。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 设计要求:分别对 键盘输入检测模块; LCD 显示模块;算术运算模块;

4、错误处理及提示模块进行设计 , 拇指 并用 Visio 画系统方框图 , 拇指 keil 与 protues 仿真分析其设计结果 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 三 、设计时间与设计时间安排 : 凌阳, 拇指 凌阳 1、设计时间: 6 月 27 日 7 月 8 日 凌阳, 拇指 凌阳 2、设计时间安排: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 熟悉课题、收集资料: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌

5、阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 3 天( 6 月 27 日 凌阳, 拇指 凌阳 6 月 29 日 ) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 具体设计(含上机实验): 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 6 天( 6 月 30 日 凌阳, 拇指 凌阳 7 月 5 日 )凌阳, 拇指 凌阳 编写课程设计说明书: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指

6、凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 2 天( 7 月 6 日 凌 阳, 拇指 凌阳 7 月 7 日 )凌阳, 拇指 凌阳 答辩: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳

7、凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 1 天( 7 月 8 日) 凌阳, 拇指 凌阳 2 四 、设计说明书的内容 : 凌阳, 拇指 凌阳 1、前言 : (自己写 , 拇指 组员之间不能相同 , 拇指 写完后将 红字 删除 , 拇指 排版时注意对齐 )凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 本设计是基于 51 系列单片机来进行的数字计算器系统设计 , 拇指 可以完成计算器的键盘输入 , 拇指 进行加、减、乘、除基本四则运算 , 拇指

8、并在 LCD 上显示相应的结果;设计电路采用 AT89C51 单片机为主要控制电路 , 拇指 利用 MM74C922 作为计算器 4*4 键盘的扫描 IC 读取键盘上的输入;显示采用字符 LCD 静态显示;软件方面使用 C语言编程 , 拇指 并用 PROTUES 仿真 。 食指 凌阳, 拇指 凌阳 2、设计题目与设计任务 : 凌阳, 拇指 凌阳 现实生活中人们熟知的计算器 , 拇指 其功能主要如下: ( 1) 键盘输入; ( 2) 数值显示; ( 3) 加、减、乘、除四则运算; (4)对错误的控制及提示 。 食指 凌阳, 拇指 凌阳 针对上述功能 , 拇指 计算器软件程序要完成以下模块的设计:

9、 (1)键盘输入检测模块;( 2) LCD 显示模块;( 3)算术运算模块;( 4)错误处理及提示模块 。 食指 凌阳, 拇指 凌阳 3、主体设计部分 : 凌阳, 拇指 凌阳 ( 1)、 系统模块图: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 单片机运算模块显示模块输入模块凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 ( 2)、算术运算程序流程图: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 加开 始判 断 运 算 符 ?乘 除 减判 断 结 果 溢 出 ? 除 数 为 0 ?错 误 信 息 送 显 示 缓 冲数 值 送 显 示 缓 冲YNNY凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指

10、凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 3 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 ( 3)、 系统总流程图: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 开 始初 始 化 参 数初 始 化 L C D 显 示本 次 功 能 键 ?读 取 键 码数 字 键 清 零 键 功 能 键键 入 数 值 状 态 清 零根 据 上 次 功 能 键 和 输 入的 数 据 计 算 结 果结 果 送 显 示

11、 缓 冲L C D 显 示有 否 有 键 值 ?数 值 送 显 示 缓 冲结 果 送 显 示 缓 冲等 待 数 值 键 入 等 待 数 值 键 入结 果 送 显 示 缓 冲等 待 数 值 键 入YNYN凌阳, 拇指凌阳 凌 阳, 拇指 凌阳 ( 4)、硬件设计: 凌阳, 拇指 凌阳 (一)、 总体硬件设计: 凌阳, 拇指 凌阳 本设计选用 AT89C51 单片机为主控单元; 凌阳, 拇指 凌阳 显示部分:采用 LCD 静态显示;按键部分:采用 4*4 键盘;用 MM74C922 为 4*4 键盘扫描 IC, 拇指 读取输入的键值 。 食指 凌阳, 拇指 凌阳 总体设计效果如下图: 凌阳, 拇指

12、 凌阳 (二)、单片机接口电路说明: 凌阳, 拇指 凌阳 1、手动上电复位电路: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 当 VCC 上电时 , 拇指 C充电 , 拇指 在 10K 电阻上出现电压 , 拇指 使得单片机复位;几个毫秒 后 ,拇指 C充满 , 拇指 10K 电阻上电流降为 0, 拇指 电压也为 0, 拇指 使得单片机进入工作状态 。 食指 工作期间 , 拇指 按下 S, 拇指 C放电 。 食指 S松手 , 拇指 C又充电 , 拇指 在 10K 电阻上出现电压 , 拇指 使得单片机复位 。 食指 几个毫秒后 , 拇指 单片机进入工作状态 。 食指 凌阳, 拇指 凌阳凌阳, 拇指 凌

13、阳 2、内部时钟模式电路: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 当单片机工作于内部时钟模式的时候 , 拇指 只需在 XTAL1 和 XTAL2 引脚连接一个晶体振荡器或者陶瓷振荡器 , 拇指 并接两个电容后接地即可 , 拇指 在使用时对于电容的选择有一定的要求: 凌阳, 拇指凌阳 当外接晶体振荡器的时候 , 拇指 电容值一般选择 C1=C2=30+10pF 或 30-10pF; 凌阳, 拇指 凌阳 4 当外接陶瓷振荡器的时候 , 拇指 电容值一般选择 C1=C2=40+10pF 或 40-10pF; 凌阳, 拇指 凌阳 3、 AT89C51 单片机引脚介绍: 凌 阳, 拇指 凌阳 VCC:

14、 凌 阳, 拇指 凌阳 供电电压 。 食指 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 GND:接地 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P0 口 : P0 口为一个 8 位漏级开路双向 I/O 口 , 拇指 每脚可吸收 8TTL 门电流 。 食指当 P0 口的管脚第一次写 1 时 , 拇指 被定义为 高阻 输入 。 食指 P0 能够用于外部程序数据存储器 , 拇指 它可以被定义为数据 /地址的第八位 。 食指 在 FIASH 编程时 , 拇指 P0 凌阳, 拇指 凌阳口作为原码输入口 , 拇指 当 FIASH 进行校验时 , 拇指 P0 输出原码 , 拇指 此时 P0 外部必须被拉高

15、 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P1口 : P1口是一个内部提供上拉电阻的 8 位双向 I/O 口 , 拇指 P1 口缓冲器能接收输出 4TTL 门电流 。 食指 P1 口管脚写入 1 后 , 拇指 被内部上拉为高 , 拇指 可用作输 入 ,拇指 P1 口被外部下拉为低电平时 , 拇指 将输出电流 , 拇指 这是由于内部上拉的缘故 。 食指 在FLASH 编程和校验时 , 拇指 P1 口作为第八位地址接收 。 食指 凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 P2口 : P2 口为一个内部上拉电阻的 8 位双向 I/O 口 , 拇指 P2 口缓冲器可接收 ,拇指 输出 4 个

16、 TTL门电流 , 拇指 当 P2 口被写“ 1”时 , 拇指 其管脚被内部上拉电阻拉高 ,拇指 且作为输入 。 食指 并因此作为输入时 , 拇指 P2口的管脚被外部拉低 , 拇指 将输出电流 。食指 这是由于内部上拉的缘故 。 食指 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时 , 拇指 P2 口输出地址的高八位 。 食指 在给出地址“ 1”时 , 拇指 它利用内部上拉优势 , 拇指 当对外部八位地址数据存储器进行读写时 , 拇指 P2 口输出其特殊功能寄存器的内容 。 食指 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号 。 食指 凌 阳, 拇指

17、凌阳 凌阳, 拇指 凌阳 P3口 : P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口 , 拇指 可接收输出 4 个 TTL门电流 。 食指 当 P3 口写入“ 1”后 , 拇指 它们被内部上拉为高电平 , 拇指 并用作输入 。 食指作为输入 , 拇指 由于外部下拉为低电平 , 拇指 P3 口将输出电流( ILL)这是由于上拉的缘故 。 食指 凌阳 , 拇指 凌阳凌阳, 拇指 凌阳 P3口也可作为 AT89C51 的一些特殊功能口: 凌阳, 拇指 凌阳 P3.0 凌阳, 拇指 凌阳 RXD(串行输入口) 凌阳, 拇指 凌阳 P3.1 凌阳, 拇指 凌阳 TXD(串行输出口) 凌阳, 拇指

18、 凌阳 P3.2 凌阳, 拇指 凌阳 /INT0(外部中断 0) 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 P3.3 凌阳, 拇指 凌阳 /INT1(外部中断 1) 凌阳, 拇指 凌阳 P3.4 凌阳, 拇指 凌阳 T0(记时器 0 外部输入) 凌阳, 拇指 凌阳 P3.5 凌 阳, 拇指 凌阳 T1(记时器 1外部输入) 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 P3.6 凌阳, 拇指 凌阳 /WR(外部数据存储器写选通) 凌阳, 拇指 凌阳 P3.7 凌阳, 拇指 凌阳 /RD(外部数据存储器读选通) 5 凌 阳, 拇指 凌阳凌阳, 拇指 凌阳 P3口同时为闪烁编程和编程校验接收一些控制信号

19、。 食指 凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 RST:复位输入 。 食指 当振荡器复位器件时 , 拇指 要保持 RST 脚两个机器周期的高电平时间 。 食指 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 ALE/PROG:当访问外部存储器时 , 拇指 地址锁存允许的输出电平用于锁存地址的地位字节 。 食指 在 FLASH 编程期间 , 拇指 此引脚用于输入编程脉冲 。 食指 在平时 , 拇指 ALE端 以不变的频率周期输出正脉冲信号 , 拇指 此频率为振荡器频率的 1/6。 食指 因此它可用作对外部输出的脉冲或用于定时目的 。 食指 然而要注意的是:每当用作外部数据存储器时 , 拇指 将跳过一个

20、 ALE 脉冲 。 食指 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 食指 此时 , 拇指 凌阳, 拇指 凌阳 ALE 只有在执行 MOVX, 拇指 MOVC 指令是 ALE 才起作用 。 食指 另外 , 拇指 该引脚被略微拉高 。 食指 如果微处理器在外部执行状态 ALE 禁止 , 拇指 置位无效 。 食指 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 /PSEN:外部程序存储器的选通信号 。 食指 在由外部程序存储器取 指期间 , 拇指 每个机器周期两次 /PSEN 有效 。 食指 但在访问外部数据存储器时 , 拇指 这两次有效的 /PSEN信号将不出现 。 食指 凌 阳, 拇指

21、凌阳 凌阳, 拇指 凌阳 /EA/VPP:当 /EA 保持低电平时 , 拇指 则在此期间外部程序存储器( 0000H-FFFFH) ,拇指 不管是否有内部程序存储器 。 食指 注意加密方式 1 时 , 拇指 /EA 将内部锁定为 RESET;当 /EA 端保持高电平时 , 拇指 此间内部程序存储器 。 食指 在 FLASH 编程期间 , 拇指 此引脚也用于施加 12V 编程电源( VPP) 。 食指 凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 XTAL1:反向振荡放大器 的输入及内部时钟工作电路的输入 。 食指 凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 XTAL2:来自反向振荡器的输出 。 食指

22、 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 4、单片机与复位、时钟电路连接电路图: 凌 阳, 拇指 凌阳 凌阳, 拇指 凌阳 (三)、键盘接口电路: 凌阳, 拇指 凌阳 计算器输入数字和其他功能按键要用到很多按键 , 拇指 如果采用独立按键的方式 , 拇指在这种情况下 , 拇指 编程会很简单 , 拇指 但是会占用大量的 I/O 凌阳, 拇指 凌阳 口资源 , 拇指 因此在很多情况下都不采用这种方式 , 拇指 而是采用矩阵键盘的方案 。 食指 矩阵键盘采用四条 I/O 凌阳, 拇指 凌阳线作为行线 , 拇指 四条 I/O 凌阳, 拇指 凌阳 线作为列线组成键盘 , 拇指 在行线和列线的每个交叉点

23、上设置一个按键 。 食指 这样键盘上按键的个数就为 4 4 个 。 食指 这种行列式键盘结构能有效地6 提高单片机系统中 I/O 凌阳, 拇指 凌阳 口的利用率 。 食指 凌阳, 拇指 凌阳 矩阵键盘的工作原理: 凌阳, 拇指 凌阳 计算器的键盘布局如图 1所示:一般有 16个键组成 , 拇指 在单片机中正好可以用一个 P 口实现 16 个按键功能 , 拇指 这种形式在单片机系统中也最常用 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 凌阳, 拇指 凌阳 1 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 矩阵键盘布局图 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 矩阵键盘内

24、部电路图如图 2 所示: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 为了进一步节省单片机 I/O 口资源 , 拇指 我们在设计中使用了 MM74C922 芯片 。 食指MM74C922 是一款 4*4 键盘扫描 IC, 拇指 它可检测到与之相连的 4*4 键盘的按键输入 ,拇指 并通过数据输出口将按键相应的编码输出 。 食指 其引脚图如图 3 所示: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 3 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 MM94C22 硬件图 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 MM74C922 引脚说明: 凌阳, 拇指 凌阳 (1) 凌阳, 拇指 凌阳 Y1Y4(脚 1脚

25、 4): 4*4 键盘第一列至第四 。 食指 凌阳, 拇指 凌阳 (2) 凌阳, 拇指 凌阳 X1X4(脚 11、 10、 8、 7): 4*4 键盘第一行至第四行 。 食指 凌阳, 拇指 凌阳 (3) 凌阳, 拇指 凌阳 DOA 凌阳, 拇指 凌阳 DOD( Dataout 凌阳, 拇指 凌阳 AD, 拇指 脚 1417):按键之 BCD 码输出 , 拇指 其中 DOA 为 LSB,拇指 DOD 为 MSB。 食指 凌阳, 拇指 凌阳 (4) 凌阳, 拇指 凌阳 VCC(脚 18):电源脚 , 拇指 +3V+15V。 食指 ab126 计算公式大全 凌阳, 拇指 凌阳 (5) 凌阳, 拇指

26、凌阳 GND(脚 9):接地管脚 。 食指 新艺图库 凌阳, 拇指 凌阳 (6) 凌阳, 拇指 凌阳 OSC( Oscillator, 拇指 脚 5):键盘扫描电路之频率所需外加电容的连 引脚 。 食 指 凌阳, 拇指 凌阳 (7) 凌阳, 拇指 凌阳 KBM( Keyboard 凌阳, 拇指 凌阳 Mask, 拇指 脚 6):内部消除开关弹跳电路所外加电容的 引脚 。食指 凌阳, 拇指 凌阳 (8) 凌阳, 拇指 凌阳 OE( Output 凌阳, 拇指 凌阳 Enable, 拇指 脚 13):芯片使能脚 , 拇指 接低电位可使芯片使能 。 食指 凌阳, 拇指 凌阳 (9) 凌阳, 拇指 凌

27、阳 DA( Data 凌阳, 拇指 凌阳 Available, 拇指 脚 12):数据有效输出脚 。 食指 任一按键按下时 , 拇指 此脚位会输出高 电位 , 拇指 按键释放后此脚又会恢复为低电位 。 食指 凌阳, 拇指 凌阳 MM74C922 对各按键的响应如下表所示: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 7 如下图 4 所示 , 拇指 在本设计中 , 拇指 计算器输入键盘的 4 条行线、列线分别连接到MM74C922 的 X1-X4、 Y1-Y4 引脚 , 拇指 MM74C922 的数据输出口与单片机的 P2 口相连 ,拇指 MM74C922 的 DA 引脚经过一个

28、非门连接到单片机的 /INT0 脚 , 拇指 当 MM74C922 检测到键盘输入时 , 拇指 DA 产生高电平 , 拇指 与之相连的 /INT0 检测到低电平 , 拇指 给单片机一个 中断 , 拇指 单片机从 P2口的低四位读入键盘上按下的键的值 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 4 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 键盘接口电路图 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 (四)、 LCD 显示模块: 凌阳, 拇指 凌阳 本设计采用 LCD 液晶显示器来显示输出数据 。 食指 通过 D0-D7 引脚向 LCD 写指令字或写数据以

29、使 LCD 实现不同的功能或显示相应数据 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 5 凌阳, 拇指 凌阳 LCD 凌阳, 拇指 凌阳 模块 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 (五)运算模块(单片 机控制): 凌阳, 拇指 凌阳 MCS-51 凌阳, 拇指 凌阳 单片机是在一块芯片中集成了 CPU、 RAM、 ROM、定时器 /计数器和多功能I/O 等一台计算机所需要的基本功能部件 。 食指 如果按功能划分 , 拇指 它由如下功能部件组成 , 拇指 即微处理器( CPU)、数据存储器( RAM)、程序存储器( ROM/EPROM)、并行 I/O 凌阳, 拇指 凌阳 口、串行口

30、、定时器 /计数器、中断系统及特殊功能寄存器( SFR) 。 食指 凌阳, 拇指 凌阳 单片机是靠程序运行的 , 拇指 并且可以修改 。 食指 通过不同的程序实现不同的功能 , 拇指 尤其是特殊的独特的一些功能 , 拇 指 通过使用单片机编写的程序可以实现高智能 , 拇指 高效率 ,拇指 以及高可靠性!因此我们采用单片机作为计算器的主要功能部件 , 拇指 可以很快地实现运算功能 。 食指 凌阳, 拇指 凌阳 3.5、软件编程: 凌阳, 拇指 凌阳 1、主函数设计: 凌阳, 拇指 凌阳 /*函数声明 */凌阳, 拇指 凌阳 #include凌阳, 拇指 凌阳 #include凌阳, 拇指 凌阳

31、#define 凌阳, 拇指 凌阳 uchar 凌阳, 拇指 凌阳 unsigned 凌阳, 拇指 凌阳char凌阳, 拇指 凌阳 #define 凌阳, 拇指 凌阳 uint 凌阳, 拇指 凌阳 unsigned 凌阳, 拇指 凌阳 int 凌阳, 拇指 凌阳 8 char 凌阳, 拇指 凌阳 translate(int 凌阳, 拇指 凌阳 keycode);凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 arithmetic();凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 init_LCM();凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 write_data(char 凌阳,

32、 拇指 凌阳 ddata);凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 write_com(char 凌阳, 拇指 凌阳 command);凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 check_BF();凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 clearLCD();凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 display(long 凌阳, 拇指 凌阳 a);凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 dealerror(); 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 void 凌阳, 拇指 凌阳 dataoverflow();凌阳, 拇指 凌阳 /*定义变量和

33、数组 */凌阳, 拇指 凌阳 long 凌阳, 拇指 凌阳 x=0,y=0,num=0;凌阳, 拇指 凌阳 int 凌阳, 拇指 凌阳 operators,input,iny=0;凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 key;凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 error5=“error“;凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 overflow8=“overflow“;凌阳, 拇指 凌阳 sbit 凌阳, 拇指 凌阳 EN=P34;凌阳, 拇指 凌阳 sbit 凌阳, 拇指 凌阳 R_W=P35;凌阳, 拇指 凌阳 sbit 凌阳, 拇指 凌阳 RS=P3

34、6;凌阳, 拇指 凌阳 /*主函数 */凌阳, 拇指 凌阳 main()凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 EA=1;凌阳, 拇指 凌阳 EX0=1;凌阳, 拇指 凌阳 IT0=1;凌阳, 拇指 凌阳 P2=0xff;凌阳, 拇指 凌阳 display(0);凌阳, 拇指 凌阳 init_LCM();凌阳, 拇指 凌阳 write_data(0x30);凌阳, 拇指 凌阳 while(1)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 9 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 2、分块程序设计: 凌阳, 拇指 凌阳 ( 1)、键盘输入检测程序设计: 凌阳, 拇指 凌阳 有键按下时 , 拇指 单

35、片机响应外部中断 0, 拇指 转入外部中断 0中断处理函数 , 拇指 在中断处理函数中完成对按键的判断 , 拇指 以进行下一步的程序处理 。 食指 凌阳, 拇指 凌阳 /*键值转化为键盘上按键值函数 */凌阳, 拇指 凌阳 char 凌阳, 拇指 凌阳 translate(int 凌阳, 拇指 凌阳 keycode)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 switch(keycode)凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳0:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 7;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳

36、1:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 4;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 2:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 1;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 3:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 c;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳4:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 8;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 5:凌阳, 拇指 凌阳 r

37、eturn 凌阳, 拇指 凌阳 5;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 6:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 2;凌阳, 拇指 凌阳 10 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 7:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 0;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 8:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 9;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 9:凌阳, 拇指 凌阳 return 凌阳,

38、 拇指 凌阳 6;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 10:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 3;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 11:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 =;凌阳, 拇指 凌阳 break;凌 阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 12:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 /;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 13:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 *;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 14:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 -;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 case 凌阳, 拇指 凌阳 15:凌阳, 拇指 凌阳 return 凌阳, 拇指 凌阳 +;凌阳, 拇指 凌阳 break;凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 /*外部中断 0处理函数 */凌阳, 拇指 凌阳

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

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

Copyright © 2018-2021 Wenke99.com All rights reserved

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

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

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