ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:252.72KB ,
资源ID:22534242      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22534242.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易计算器的设计与实现文档格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简易计算器的设计与实现文档格式.docx

1、 通过以上两种方案论证和比较,从设计的实用性,方便性和成本出发,选择了以STC89C51单片机作为中央处理单元进行计算器的设计,这样设计能够实现对四位加减乘除和除法四位小点数的运算。2.系统设计为了更好的实现系统得功能,硬件电路的设计应该遵循以下原则:(1)优化硬件电路采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在设计本系统得时候,在满足可靠性和实时性的前提下,尽可能的通过软件来实现硬件功能8。(2)可靠实用性根据可靠性及实用性

2、设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。(3)灵活的功能扩展功能扩展是否灵活是衡量一个系统优劣的重要指标。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展7。2.1系统组成及总体框图计算器主要由STC89C51单片机组成的最小系统、1602LCD液晶显示屏

3、及编码键盘构成。P1、P3口:做为输出口,控制LCD液晶显示屏显示数据的结果;P2口:做为输入口,与键盘连接,实现数据的输入LCD液晶显示屏显示输出,总体框图如下。 STC89C51最小系统控制模块电源模块LCD液晶显示屏模块4X4键盘模块图2-1 系统组成及总体框图2.2硬件原理硬件设计是整个计算器的设计基础,只有在硬件设计完成后,才能给整个电路下载程序,从而完成该作品的完整设计。2.2.1.单片机最小系统最小系统的设计即单片机最小系统,对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。下面给出一个51单片机的最小系统电路图。图2-2 单片机最小系统(1)复位电路:由一

4、个按键开关和一个10uf的电容并联而成,一端接+5v电源,另一端接单片机的引脚9(即RST)复位键,,如图2-2所示。一、复位电路的用途:单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。二、复位电路的工作原理在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制

5、其复位。(2)晶振电路:一般的晶振振荡电路都是在一个反相放大器的两端接入晶振,两个电容分别接到晶振的两端 每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容 请注意一般IC的引脚都有等效输入电容 ,一般的晶振的负载电容为15pF或12.5pF 如果再考虑元件引脚的等效输入电容 则两个22pF的电容构成晶振的振荡电路就是比较好的选择,晶振是给单片机提供工作信号脉冲的 这个脉冲就是单片机的工作速度,比如,12M晶振单片机工作速度就是每秒12M 当然,单片机的工作频率是有范围的,不能太大 一般24M就不上去了,不然不稳定。晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生

6、偕波(也就是不希望存在的其他频率的波) 这个波对电路的影响不大 但会降低电路的时钟振荡器的稳定性 为了电路的稳定性起见 ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响 所以晶振所配的电容在10pf-50pf之间都可以的 。此晶振电路由两个30uf的电容并联后,两端分别接一个12MHz的晶振,而晶振两端又分别接引脚18(XTAL2)、19(XTAL1)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。XTAL1,XTAL2接石英晶体振荡器。如图2-2所示外接晶体引脚图。(3)STC89C51

7、RC图2-3 单片机STC89C51A. 主要性能: 8051 CPU与MCS-51 兼容 8K字节可编程FLASH存储器(寿命:1000写/擦循环) 全静态工作:0Hz-33MHz 三级加密程序存储器 128*8位内部RAM 32条可编程I/O线 三个16位定时器/计数器 八个中断源 全双工UART串行通道 低功耗的闲置和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 片内振荡器和时钟电路 STC89C51 单片机为40 引脚芯片见图2-4B.管脚说明:VCC:供电电压。vss:接地。口线:P0、P1、P2、P3 共四个八位口。P0 口:P0口是一个8位漏极开路的双向I/O

8、口。作为输出口,每位能驱动8个TTL逻辑电平,对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外

9、部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。图2-4 STC89C51引脚图引脚第二功能: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”时,内部上拉电阻把端口拉高,此时可以作

10、为输入口使用。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。P3口是STC89C51特殊功能(第二功能)使用,如表2-5所示。 表2-5 P3口管脚 备选功能:端口引脚第二功能P3.0RXD(串行输入口

11、)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)在flash编程和校验时,P3口也接收一些控制信号。此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。其他引脚说明:RST:复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高

12、电平有效。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的11。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,欲

13、使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。 31脚EA/Vpp接电源:STC89C51/52或其他51系列兼容单片机特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行,当接低电平时,复位后直接从外部ROM的0000H开始执行。2.2.2键盘电路键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖

14、动、连击等问题,直接输出按键的编码,无需系统软件干预。通用计算机使用的标准键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口芯片HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到12。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。非编码键盘成本低廉。从成本角度出发,本设计选用的是非编码键盘。如图2-6图2-6编码键盘电路此键盘采用4*4矩阵排列,将每一行的一端接在一起构成四行,将另一端连在一起构成四列,正好与单片机的P3口的8个IO口相连,即由低位到高位依次链接P3.0-P3.7,作为单片机电路的输

15、入端。确定矩阵式键盘上任何一个键被按下通常采用行扫描法。行扫描法又称为逐行查询法它是一种最常用的多按键识别方法。因此,本设计采用以行扫描法实现按键识别操作。其工作原理为:首先,不断循环地给低四位独立的低电平,然后判断键盘中有无键按下。将低位中其中一列线(P3.0P3.3中其中一列)置低电平然后检测行线的状态(高4位,即P3.4P3.7,由于线与关系,只要与低电平列线接通,即跳变成低电平),只要有一行的电平为低就延时一段时间以消除抖动,然后再次判断,假如依然为低电平,则表示键盘中真的有键被按下而且闭合的键位于低电平的4个按键之中任其一,若所有行线均为高电平则表示键盘中无键按下。再其次,判断闭合键

16、所在的具体位置。在确认有键按下后 ,即可进入确定具体闭合键的过程。其方法是: 依次将列线置为低电平,即在置某一根列线为低电平时,其它列线为高电平。同时再逐行检测各行线的电平状态 ;若某行为低,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。2.2.3显示电路(1)1602LCD液晶显示器简介1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式式设置和数据显示等6。采用的LCD1602液晶模块是标准16针插座,接口电路如图所示:关于LCD1602的详细资料见图2-7和表2-8。图2-7 LCD接口电路 表2-8 LCD1602引脚说明第1脚VSS接地第

17、2脚Vcc接5V正电源第3脚V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。实际电路中采用2K电阻到地,比较理想。第4脚RS为寄存器选择,高电平选择数据寄存器、低电平选择指令寄存器。第5脚RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时 (00)可以写入指令或者显示地址;当RS为低电平RW为高电平时(01)可以读入盲信号;当RS为高电平RW为低电平时(10)可以写入数据。第6脚E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚D0D7为8位

18、双向数据线。第1516脚阳极和阴极。(2)与单片机的连接:单片机的P1.0-P1.7依次与LCD1602的7-14引脚相连,将从键盘读到的数据通过LCD1602显示出来。(3)工作原理:本次实训采用1602两行16个字的DM-1602液晶显示模块DM-162采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平R

19、W为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。D0D7为8位双向数据线2.3.软件流程通过软件调用,让单片机将键盘与LCD1602液晶显示器结合起来2.3.1主程序控制流程当主程序载入单片机时,开始进行判断各电路初始化程序,在单片机开始检查有没有键按下,如遇键盘按下,则执行延时程序,继续判断有无按键按下,然后进行按键识别,最后调用计算机延时子程序,实现系统初始化和其他的子程序模块的调用操作。图2-9按键流程图2.3.2键盘扫描子程序由于本设计采用行扫描方式识别按键,通过硬件电路连接及工作原理知每个按键的键码:应为用P3口的高四位输出低电平,即P3.4P3.7为输出口。低四

20、位输出高电平,即P3.0P3.3为输入口。读P3口的低四位状态为“0111”,其值为“07H”。再从P1口的高四位输出高电平,即P1.4P1.7为输入口。低四位输出低电平,即P10P13为输出口,读P1口的高四位状态为“0111”,其值为“07H”。将两次读出的P0口状态值进行逻辑或运算就得到其按键的特征编码为“77H”,其余的依次类推。键盘按键说明如下:- | 1 | 2 | 3 | + | - - - - - - - - - - - - - | 4 | 5 | 6 | - | | 7 | 8 | 9 | * | | C | 0 | = | / | -*/操作简介/ 按第一个数,再按+-*/

21、,再按=显示出结果,然后按C清屏/ 加最大9999+9999=19998/ 减最大9999-0 =9999/ 乘最大9999*9999=99980001/ 除 1/9=0.1111 保留小数点后4位想要计算器能够准确计算结果,需要按键对应相应的程序(c语言),所以我先给每个按键定义如下地址含义:case 0x77 :a=0x0d;break;/ 按键/ case 0x7b :a=0x0e; break;/ 按键= case 0x7d :a=0;/ 按键0 case 0x7e :a=0x0f;/ 按键CE case 0xb7 :a=0x0c;/ 按键 * case 0xbb :a=0x9; /

22、按键 9 case 0xbd :a=0x8; / 按键 8 case 0xbe :a=0x7; / 按键7 case 0xd7 :a=0x0b;/ 按键 - case 0xdb :a=0x6; / 按键6 case 0xdd :a=0x5; / 按键5 case 0xde :a=0x4; / 按键4 case 0xe7 :a=0x0a;/ 按键 + case 0xeb :a=3; / 按键3 case 0xed :a=2; / 按键2 case 0xee :a=1; / 按键1 default :a=0xff; return a; /* 返回按键值 */2.3.3LCD1602显示控制流程指令

23、1清显示 指令码01H, 光标复位到地址00H位置;指令2光标复位 指令码02H, 光标返回到地址00H位置 ;指令3光标和显示模式设置 I/D位 光标移动方向,高电平右移,低电平左移;S 位 屏幕上所有文字是否左移或者右移,高电平有效,低电平无效;指令4显示开关控制 D 位 控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C 位 控制光标的开与关,高电平表示有光标,低电平表示无光标; B 位 控制光标是否闪烁,高电平闪烁,低电平不闪烁 ;指令5光标或显示移位S/C位 高电平时移动显示的文字,低电平时移动光标指令6功能命令设置DL位-高电平时为4位数据总线,低电平时为8位总线;N位低

24、电平时为单行显示,高电平时为双行显示;F位低电平时显示5x7的点阵字符,高电平时为5x10的点阵字符;指令7字符发生器RAM地址设置指令8DDRAM地址设置指令9读忙信号和光标地址BF位 为忙标志位,高电平表示忙,此时模块不能接收命令或者数据指令10写数据指令11读数据(1)指令操作 表2-10指令编码(2)子程序流程:同样而言,LCD1602显示器在与单片机连接时,也需要单片机输出程序,而此程序则为1602液晶显示需要初始化显示:void init_lcd(void) /初始化液晶,及画面初始化 wela=0; /写液晶 lcden=0; /使能1602 write_(0x38); /8 位

25、总线,双行显示,5X7 的点阵字符 LCD_Delay_us(100); /延时100us write_(0x0c); /开显示,无光标,光标不闪烁 write_(0x06); /光标右移动 write_(0x01); /清屏 write_(0x80); /DDRAM 地址归01602写指令函数:void write_(uchar ) /1602液晶写指令 rs=0; /写指令 /使能1602 P0=; /写入指令com LCD_Delay_ms(1); /延时1ms lcden=1; LCD_Delay_ms(2); /延时2ms 1602写数据函数:void write_date(uchar date) /1602液晶写数据 rs=1; /写数据 P0=date

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1