4位7段数码管显示计算器.docx

上传人:b****6 文档编号:4689596 上传时间:2022-12-07 格式:DOCX 页数:27 大小:790.89KB
下载 相关 举报
4位7段数码管显示计算器.docx_第1页
第1页 / 共27页
4位7段数码管显示计算器.docx_第2页
第2页 / 共27页
4位7段数码管显示计算器.docx_第3页
第3页 / 共27页
4位7段数码管显示计算器.docx_第4页
第4页 / 共27页
4位7段数码管显示计算器.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

4位7段数码管显示计算器.docx

《4位7段数码管显示计算器.docx》由会员分享,可在线阅读,更多相关《4位7段数码管显示计算器.docx(27页珍藏版)》请在冰豆网上搜索。

4位7段数码管显示计算器.docx

4位7段数码管显示计算器

1前言

随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。

电子产品的更新速度快就不足惊奇了。

计算器在人们的日常中是比较的常见的电子产品之一。

如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好的为各个行业服务,成了如今电子领域的研究课题。

一块大而复杂的模拟电路花费了巨大的精力,繁多的元器件增加了设计的成本。

而现在,只需要一块几厘米平方的单片机,写入简单的程序,就可以使您以前的电路简单很多。

计算器的未来是小型化和轻便化,如使用太阳能提供电池的计算器,使用ASIC设计的计算器,如使用纯软件实现的计算器等,随着社会的发展,知识的更新,各行各业的需要带动了电子产品的发展,未来的智能化计算器将是我们的发展方向,更希望成为现代社会应用广泛的计算工具。

本次设计采用STC89C52单片机、矩阵键盘和液晶显示器等器件实现模拟计算器硬件功能电路。

通过掌握对字符液晶显示模块工作原理的理解及运用,如初始化、清屏、显示、调用及外特性有较清楚的认识,实现运用LCD显示计算结果;掌握液晶显示模块的驱动和编程,设计LCD和单片机的接口电路,以及利用单片机对液晶模块的驱动和操作;并通过运用C语言来实现其软件部分的设计,充分分析内部逻辑的概念,进行软件和硬件调试,最终完成对电路功能的软件仿真以及硬件实现。

本系统能实现加、减、乘、清零和显示结果等功能。

 

2总体方案设计

2.1设计内容

本设计为设计一种简单计算器数字输入及显示控制电路,具体要求如下:

1、利用AT89C52单片机进行数据处理。

2、运用矩阵键盘实现数据及功能输入。

3、使用数码管模拟计算器数字的输入及结果显示。

4、计算器能进行加、减、乘、除的简单计算及显示结果。

2.2设计方案比较

方案一:

通过运用以AT89S52单片机为核心,加以外部电源供电、11.0592MHZ的晶振时钟电路、复位电路、矩阵键盘电路、4位7段数码管电路,来实现简单计算器的系统设计。

其原理框图如图2-1所示:

图2-14位7段数码管显示计算器原理框图

方案二:

通过利用STC89C52单片机为数据运算核心;外部电源电路提供+5V电源使整个硬件系统正常工作;以MAX232芯片为核心的下载电路实现程序下载到单片机;外部连接4*4矩阵键盘提供数据输入和功能键;以11.0592MHZ晶振为基准的时钟电路;使用1602LCD实现输入数据和运算结果的显示。

其原理框图如图2-2所示:

图2-21602LCD显示计算器原理框图

2.3方案论证

为了更好的实现系统的功能,硬件电路的设计应该遵循以下原则:

(1)优化硬件电路

采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。

所以,在设计本系统得时候,在满足可靠性和实时性的前提下,尽可能的通过软件来实现硬件功能。

(2)可靠性及抗干扰设计

根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。

而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。

因此,系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。

(3)灵活的功能扩展

功能扩展是否灵活是衡量一个系统优劣的重要指标。

一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。

进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。

对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。

2.4方案选择

结合以上三条原则,且LCD显示器具有以下特点:

①、低压微功耗;②、平板型结构;③、被动显示型(无眩光,不刺激人眼,不会引起眼睛疲劳);④、显示信息量大(因为像素可以做得很小);⑤、易于彩色化(在色谱上可以非常准确的复现);⑥、无电磁辐射(对人体安全,利于信息保密);⑦、长寿命(这种器件几乎没有什么劣化问题,因此寿命极长,但是液晶背光寿命有限,不过背光部分可以更换)。

最终确定了以方案二为系统硬件的设计方案。

STC89C52单片机与LCD液晶显示屏显示电路是整个电路的核心,它们实现系统的功能要求。

 

3单元模块设计

3.1各单元模块功能介绍及电路设计

由于方案二的硬件设计采用了模块化的设计方法,所以将模拟计算器的整体电路分为了以下几个模块:

STC89C52单片机模块;+5V电源电路模块;下载电路模块;4*4矩阵键盘模块;时钟电路模块;复位电路模块;1602LCD显示模块。

下面将对各个模块的功能及电路设计进行简单介绍。

3.1.1STC89C52单片机模块

8052单片机引脚图与引脚功能简:

单片机的40个引脚大致可分为4类:

电源、时钟、控制和I/O引脚。

 

电源:

 ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; 

时钟:

XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

 

控制线:

控制线共有4根  

⑴ ALE/PROG:

地址锁存允许/片内EPROM编程脉冲

① ALE功能:

用来锁存P0口送出的低8位地址

② PROG功能:

片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

⑵ PSEN:

外ROM读选通信号。

  

⑶ RST/VPD:

复位/备用电源。

  

① RST(Reset)功能:

复位信号输入端。

  

② VPD功能:

在VCC掉电情况下,接备用电源。

  

⑷ EA/VPP:

内外ROM选择/片内EPROM编程电源。

  

① EA功能:

内外ROM选择端。

  

② VPP功能:

片内有EPROM的芯片,在EPROM编程期间,施加编程电源VPP。

 

4、XTAL1:

 反向振荡放大器的输入及内部时钟工作电路的输入;

XTAL2:

来自反向振荡器的输出引脚。

5、I/O线:

80C52共有4个8位并行I/O端口:

P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

 如图3-1所示。

图3-1单片机89C52引脚图

3.1.2+5V电源模块

通用序列总线USB2.0作为一种新的PC机互连协议,使外接设备到计算机的连接更加高效、便利。

这种接口适合于多种设备,不仅具有快速、即扦即用、支持热扦拨的特点还能同时连接127个设备,解决了如资源件冲突、中断请求和直接数据通道等问题,为使用者提供更好的效能。

但随着各类数字化便携式设备及其内核电源品种的增多,这就要需要进一步开发并拓宽USB接口的电源功能以保证各类便携式设备的正常可靠运行。

本设计中使用到了一个+5V供电电源,此设计适用UBS连接器,连接电脑提供+5V电源。

如图3-2所示:

图3-2+5V供电电源图

3.1.3下载电路模块

本实验采用RS-232串口下载电路,RS-232是由美国电子工业协会(EIA)正式公布的,在异步串行通信中应用最广泛的标准总线。

RS-232标准(协议)的全称是EIA-RS-232标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,其中RS是RecommendedStandard的缩写,代表推赠标准,232是标识符。

串行通信一次只传输1位,相对来说,要处理的数据电压只有一个,因此比较不容易漏失数据,通信时候再加上一些校验防范措施后,串行通信的出错就更不容易了,串行通信端口(SerislCommunicationPort)在系统控制的范畴中一直占有极其重要的角色。

RS-232关于电气特性的要求规定,驱动器输出电压相对于信号地线在-5V~-15V之间为逻辑1电平,表示传号状态;输出电压相对于信号地线在+5V~+15V之间为逻辑0电平,表示空号状态。

在接收端,逻辑1电平为-3V~-15V,逻辑0电平为+3V~+15V,即允许发送端到接收端有2V的电压降。

该实验用一个RS-232串口:

一个串口连接到单片机,可以用他来下载单片机的程序,也可以用来做单片机的串口实验,程序打印调试信息。

如图3-3所示:

图3-3RS-232串口下载电路

3.1.44*4矩阵键盘模块

用单片机的并行口P3连接4*4矩阵键盘,并以单片机的P1.0―P1.3各管脚作输入线,以单片机的P1.4―P1.7各管脚作输出线,在数码管上显示每个按键“O―9”的序号。

矩阵键盘又称为行列键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样,在矩阵式键盘中,每条水平线和垂直线在交叉出不直接通,而是通过一个按键加以连线,这样,一个端口(如P1口)就可以构成4*4=16个按键。

如图3-4矩阵键盘电路。

矩阵键盘驱动的主要作用就是实时监测外部按键中断,一旦发现外部有按键下就向内核发送键盘消息实现键盘输入功能。

键盘驱动创建了中断服务线程和4个键盘中断事件,每行按键对应一个按键中断事件。

有按键按下时,终端服务例程得到对应的中段标识符并报告给系统任务调度进程,同时产生键盘中断事件,键盘中断服务线程相应键盘中断事件,开始扫描矩阵键盘。

根据产生的中断事件类型不同,可以首先确定被按下键的行位置。

由于键盘被按下后,该键对应的行和列被连通,因此根据判断各列对应的I/O口的电平,可以得到被按下键的列位置;得到按键的准确位置后,通过向操作系统发送键盘消息KEYBD_EVENT,实现一次键盘输入,循环扫描键盘,直接被弹起则发送KEYEVENTF_KEYUP事件。

图3-4矩阵键盘电路

3.1.5时钟电路模块

晶振是一种石英产品,使用晶振的电路可以分为石英晶体谐振器和石英晶体振荡器。

振荡器是由谐振器与IC(也可以是三极管/电阻/电容等)组成,石英晶体振荡器相当于用电阻、电容、三极管等组成的双稳态振荡器。

简单地说,晶体振荡器(有源器件)是由晶体谐振器(无源器件)和相关电路组成。

晶体谐振器只是作为输出时钟电路的一个参考频率(FrequencyReference),而晶体振荡器则可以直接输出有一定驱动能力的时钟频率(Clock)。

由于晶振的频率十分稳定,因此用来稳定振荡线路的振荡频率,这也是晶体谐振器的作用。

如图3-5时钟电路图,C1、C2为外加负载电容,R1为限流电阻。

图3-5时钟电路图

3.1.6复位电路模块

该电路用了一个手动按钮复位,在复位输入端上加入高电平。

一般采用的办法是在RST端和正电源VCC之间接一个按钮KEY4。

当按下按钮时,则VCC的+5V电平就会直接加到复位端。

C16放电结束及复位完成,断开KEY4,C16开始充电。

手动按钮复位的电路如图3-6所示。

由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

图3-6复位电路图

3.1.71602LCD显示模块

LCD(liquidcrystaldisplay)为液晶显示器,它一般不会单独使用,而是将LCD面板、驱动与控制电路组合成LCD模块(1iquidcrystaldisplaymoulde,简称为LCM)来使用。

LCM是一种很省电的显示设备,常被应用在数字或微处理器控制的系统,作为简易的人机接口,但人们一般还是习惯称之为LCD显示器。

硬件设计采用51单片机控制1602LCD显示器的电路如图3-7所示,1602引脚功能如图3-8所示:

图3-71602LCD显示模块电路

图3-81602LCD显示电路引脚功能

3.2电路参数的计算及元器件的选择

模拟数字输入计算器系统硬件设计主要包括:

键盘电路和显示电路及其他辅助电路。

下面分别进行设计。

3.2.1键盘和单片机电路的设计

键盘电路可分为两类:

编码键盘和非编码键盘。

编码键盘是较多(20个以上)和专用驱动芯片的组合,当按下某个按键时,他能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。

所以通用计算机适用的键盘就是编码键盘。

而本实验中采用的是单片机98C52芯片和矩阵键盘组成的编码键盘,同时还兼顾LCD数码显示驱动,其相关电路和芯片资料在各单元模块功能及电路设计中有详细的介绍。

本设计采用的是16个按键,故选择用非编码键盘,为了减少所占用的端口,有P1口采用4*4矩阵式键盘。

矩阵键盘、单片机与显示电路的连线如图3-9

(1)把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“4х4行列式键盘”区域中;

(2)把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的D0-D7端口上;

(3)把“单片机系统”区域中的P1.0-P1.2端口用3根导线连接到“动态数码显示”区域中的“R8、E、RW”端口上;

3.2.2复位和时钟电路设计

MCS-51单片机芯片内部有一个用于构成振荡器的高增益方相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。

当使用内部振荡电路时,XTAL1和XTAL2引脚外接石英晶体和微调电容,如图3-10所示,图中C1和C2大小一般为30PF。

还加了复位/备用电源引脚的接线方式,任何单片机在工作之前都要进行复位,以便CPU以及其他功能部件都处于一个确定的初始化状态,并从这个状态开始工作,也就是程序开始执行之前,单片机做好准备工作。

在单片机的RST引脚上保持两个机器周期(24个时钟周期)的高电平即可对单片机实现复位操作。

当主电源VCC发生掉电或者电压降低到电平规定值时,VPD上外接的备用电源自动启用,为单片机内部RAM提供电源,以保护片内RAM中的信息不丢失,使系统在恢复上电后能正常运行。

图3-9矩阵键盘、单片机与显示电路的连线

图3-10复位电路与时钟电路

 

4软件设计

4.1软件介绍

4.1.1Protuer软件介绍

Protues软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

并且Protues提供了丰富的资源:

Protues可提供的仿真元器件资源:

仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。

Protues可提供的仿真仪表资源:

示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。

理论上同一种仪器可以在一个电路中随意的调用。

除了现实存在的仪器外,Protues还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。

这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。

这些都尽可能减少了仪器对测量结果的影响。

Protues可提供的调试手段Protues提供了比较丰富的测试信号用于电路的测试。

这些测试信号包括模拟信号和数字信号。

4.1.2KeilC51软件简介

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。

是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVision)将这些部份组合在一起。

掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的最佳之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

4.2软件仿真和电路功能仿真

支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。

1)提供软件调试功能

2)提供丰富的外围接口器件及其仿真

RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

这样很接近实际。

在训练学生时,可以选择不同的方案,这样更利于培养学生。

3)提供丰富的虚拟仪器

利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。

4)具有强大的原理图绘制功能

在PROTUES绘制好原理图后,调入已编译好的目标代码文件:

*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。

PROTUES是单片机课堂教学的先进助手。

PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。

前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。

这在相当程度上替代了传统的单片机实验教学的功能,例:

元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

4.3软件设计

4.3.1KeilC51软件基本使用流程

Keilc51软件使用基本流程如下:

①打开软件KeilC51;②新建工程文件;③新建源代码文件类型为.c或.asm;④调试、编译并生成.hex文件。

4.3.2主程序流程图

主程序主要是用来进行初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在LCD上作回应,其主程序流程图如图4-1:

图4-1主程序流程图

4.3.3读键子程序设计

为实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。

为了得到被按键的键码,其程序设计构思框图如图4-2

图4-2键子程序流程图

 

5系统调试

5.1电路电源调试

电路电源主要通过USB外部供电,输入+5V电压。

提供单片机电源、MAX232芯片电源和LCD1602电源。

将数字电源通电后测试各个数字芯片的电源电压。

5.2数字电路调试

测量芯片电源电压正常后,插上数字芯片。

将LCD1602的1到16引脚通过插针引出,LCD1602的3脚直接接地,15脚背光正极接VCC,16脚背光负极接地,其它管脚插到STC89C52RC单片机对应I/O口上。

检查电路连接正确后,接上电源。

测试到LCD1602的1脚为0V,2脚为+5V,通过串口下载接口,下载LCD测试程序到单片机进行测试。

测试单片机ALE管脚有2M频率的信号输出,程序运行后LCD1602显示字符。

说明数字电路块调试通过。

5.3整体系统调试

连接上LCD1602和各个集成芯片,确定电路连接正确后,接通电源。

通过串口接口将总程序从PC机上烧写入单片机中。

然后通过对按键控制进行检测,并设置检测的时间。

观察LCD显示是否有数据变化。

然后通过按键实现数字计算功能,看LCD是否显示正确。

如果显示正确,得出整个电路基本工作正常。

 

6总结与体会

此次设计用时一个月,和以前的课程设计有很大的区别,以往的设计只要求写出报告,通过报告体现出设计思路就行了,而这次设计是要求做出实物,当然就增加了一些难度,但同时这样又会学到更多的知识,也提高了自己的实践动手能力。

由于设计课题具有一定难度,在设计过程中,也遇到很多的问题,但是在胡老师的指导帮助下,在小组成员的不懈努力和积极配合之下。

所遇到的问题都逐一得到了解决,在此对谢老师的细心指导表示衷心的感谢。

同时,也更加深刻地体会到了团队合作的力量,在合作中,增加了同学们之间的了解,提升了自己与人交流合作的能力。

这也是一笔不小的收获。

此次课程设计涉及到了很多方面的知识,在设计中,也学到了很多以前没有见到的元器件的性能参数和功能,也是对单片机的实际应用,把平时所学知识应用于实践,理论与实践的结合,我们对单片机知识的学习更加熟悉,并且有了更深刻的认识。

设计最大的收获是熟悉了整个设计的流程以及系统的工作原理,从最开始的题目下达,到最后的实物硬件调试的完成,大家都是一步一步的认真完成。

这对于平时较少接触完成整个设计流程的我们来说得到了很大的锻炼。

在设计过程我们充分认识到团队的合作精神及其重要,只有团队团结一致,相互协作,共同分工,才可把一件事情做得更好。

在设计过程中,我们也体会到了对很多以前学过的知识存在掌握不牢的问题。

设计本身也还存在一些不足,由于设计和元器件性能的限制,系统测试精度不够高,不能运用在精度要求很高的工业领域中,但是此次设计结果还是比较完美的,实物做的也不错,也完成了设计所要求的结论。

以后需要多进行此类设计训练,以进一步提高自身的实践能力,那样也可以学到很多平时接触不到但又很重要的知识。

7参考文献

[1]万福君、潘松峰.单片微机原理系统设计与应用(第二版)[M].合肥:

中国科学技术大学出版社,2001.

[2]胡汉才.单片机原理及其接口技术[M].北京:

清华大学出版社,2004.

[3]江思敏、姚鹏翼、胡荣.Protel电路设计教程[J].清华大学出版社,2002(9),

[4]张大明、刘振鹏.单片微机控制应用技术实操指导书[M].机械工业出版社,2007(5).

[5]迎春、叶湘滨.现代新型传感器原理与应用[M].北京:

国防工业出版社,1998.

[6]何希才.传感器及其应用电路[M].北京:

电子工业出版社,2001.

[7]丁镇生.传感器及传感技术应用[M].北京:

电子工业出版社,1998.

[8]张洪润、刘秀英、张亚凡等.单片机应用设计200例[M].北京:

航空航天大学出版社,2006

 

附录1:

电路总图

 

附录2:

源程序

程序如下:

#include

#include

#include

#include

#include

#include

ucharcodetable[]="xhuaelectricIF";

voidshortdelay(uchari)//短延时//

{

for(;i>0;i--);

}

//长延时

voidlongdelay(uinti)

{

uintj;

for(;i>0;i--)

{for(j=100;j>0;j--);}

}

//延时程序//

voiddelay(inti)

{intj;

for(;i>0;i--)

for(j=0;j<100;j++);

}

//----------------------------键盘扫描部分------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

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

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