基于51单片机的简易计算器设计报告

您所在的位置:网站首页 51简易计算器加温度显示 基于51单片机的简易计算器设计报告

基于51单片机的简易计算器设计报告

2024-01-13 20:05| 来源: 网络整理| 查看: 265

网盘链接: https://docs.qq.com/doc/DS1FHaVdPY3FyU1NX

2023新资料清单

以下是设计报告

本设计以STC89C52RC单片机作为计算器的微处理器;采用4*4矩阵按键作为数据输入,以LCD1602实现信息交互。矩阵按键的设计:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。采用低功耗的字符型液晶作为显示器件,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。显示更为直观。该系统基于可靠地硬件设计和稳定的软件算法实现题目的基本要求。

关键词:STC89C52RC**;矩阵按键;LED1602液晶**

Design of Simple Calculator Based on 51 Single Chip Microcomputer

Absrtact

In this design, stc89c52rc is used as the microprocessor of calculator, 4 * 4 matrix key is used as data input and LCD1602 is used to realize information exchange. Matrix key design: when there are many keys in the keyboard, in order to reduce the occupation of I / O port, the keys are usually arranged in matrix form. In matrix keyboard, each horizontal line and vertical line are not directly connected at the intersection, but are connected by a key. In this way, a port (such as P1 port) can form 4 * 4 = 16 keys, which is twice as many as using the port line for the keyboard directly. The more lines, the more obvious the difference is. For example, adding another line can form a keyboard with 20 keys, while using the port line directly can only generate one more key (9 keys). Therefore, it is reasonable to use matrix method to do keyboard when there are many keys needed. The character LCD with low power consumption is used as the display device. 1602 LCD is also called 1602 character LCD. It is a kind of dot matrix LCD module specially used to display letters, numbers, symbols, etc. The display is more intuitive. The system is based on reliable hardware design and stable software algorithm to achieve the basic requirements of the topic.

Keywords: reaction speed, clock circuit, register, LED.

*前言*

众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。本设计要制作的就是单片机于生活中最为常见的一种应用——简易计算器。本简易计算AT89S52单片机作为核心,可以显示简易的计算,硬件方面由AT89C52单片机,晶振,电源,液晶屏LCD1602。

*1**.**单片机及其应用*

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

img

单片机实物图

*1.1单片机介绍:*

单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳,单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板,但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别,只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性。

单片机的硬件特性:单片机集成度高。单片机包括CPU、4KB容量的ROM、128B容量的RAM、2个16位定时/计数器、4个8位并行口、全双工串口行口。系统结构简单,使用方便,实现模块化。

*1.2单片机的应用*

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

(1)在智能仪器仪表上的应用

(2)在工业控制中的应用

(3)在家用电器中的应用

(4)在计算机网络和通信领域中的应用

(5)单片机在医用设备领域中的应用

(6)在各种大型电器中的模块化应用

(7)单片机在汽车设备领域中的应用

此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着广泛的用途。

*1.3 AT89S52单片机*

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和系统可编程Flash,使AT89S52为众多嵌入式控制应用系统提供高灵活、超级有效的解决方案。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

img

引脚结构

主要性能:

1、与MCS-51单片机产品兼容

2、8K字节在系统可编程Flash存储器

3、1000次擦写周期

4、全静态操作:0Hz~33Hz

5、三级加密程序存储器

6、32个可编程I/O口线

7、三个16位定时器/计数器

8、八个中断源

9、全双工UART串行通道

10、低功耗空闲和掉电模式

11、掉电后中断可唤醒

12、看门狗定时器

13、双数据指针

14、掉电标识符

P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1口:P1口是一个具有内部上拉电阻的位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。

引脚号第二功能

P1.0T2(定时器/计数器T2的外部计数输入)、时钟输出;

P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制);

P1.5MOSI(在系统编程用);

P1.6MISO(在系统编程用);

P1.7SCK(在系统编程用);

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。

引脚号第二功能

P3.0RXD(串行输入);

P3.1TXD(串行输出);

P3.2INT0(外部中断0);

P3.3INT0(外部中断0);

P3.4T0(定时器0外部输入);

P3.5T1(定时器1外部输入);

P3.6WR(外部数据存储器写选通);

P3.7RD(外部数据存储器写选通);

RST:复位输入;

晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PRO:G地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来做为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时, ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:是外部程序存储器选通信号(PSEN)是内部程序存储器选通信号。

*2**.**LCD1602的原理及其应用* *2.1液晶屏LCD1602的介绍:*

LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。

*2.2液晶屏LCD1602的功能及应用*

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:

编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源正极

表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.3* *1602LCD**的指令说明及时序*

1602液晶模块内部的控制器共有11条控制指令,如表2所示:

序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存储地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容

表2:控制命令表

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令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输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H, E=H输出D0—D7=数据写数据输入RS=H,R/W=L, D0—D7=数据, E=高脉冲输出无 *3设计思路* *3.1 设计方法*

本电路设计采用AT89S52单片机为核心,利用晶振产生频率为1HZ的时钟脉冲信号,利用液晶屏LCD1602显示计算信息,通过对AT89S52单片机的编程控制液晶屏LCD1602的显示。显示简易计算的信息在LCD1602。

*3.2 硬件设计*

本系统以AT89S52单片机为核心,本系统选用12MHZ的晶振,使得单片机有合理的运行速度。起振电容30pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。

*3.2.1* *键盘设计**电路*

img

键盘原理图

本设计选用的是非编码键盘。键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖时,应用软件延时方法消除按键抖动影响;当有多个键同 时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某个键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。

本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。

img

键盘功能图

矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某个键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。

*3.2.3 液晶屏LCD1602显示*

img

*3.2.4**单片机下载电路*

img

*4**简易计算器的总电路*

仿真图:

img

原理图:

img

PCB图:

*5软件设计* *5.1汇编语言和C语言的特点及选择*

本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。

由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。

*5.2**单片机**程序**开发环境*

本文设计开发环境是Keil uVision4,是目前嵌入式比较流行的开发环境,Keil uVision4美国Keil Software公司开发的集成开发环境(IDE)集齐编译、连接和调试一体化软件。Keil uVision4不仅提供了完整的Windows开发环境界面,支持C/C++语言开发,而且其C语言编辑效率很高,能够使开发者非常便利地利用C语言进行研发。如图4-1 Keil uVision4开发界面图。其中Keil有以下特点:

Keil同时支持WINXP和WIN7等多种操作系统,提供了丰富的库函数和功能强大的开发工具;

Keil可以完成从编辑、编译、连接、调试和最后进行仿真的一整套研发过程;

img

*5.3 C51**软件开发流程*

C51开发首先需要建立“Project”工程,点击Keil uVision4界面中菜单中“Project”,选择“New uVision Project”,为新建的工程命名后点击保存;然后选择开发单片机芯片的型号,本工程选择AT89C51,这样就完成了“Project”的建立;当工程建立完毕后,点击“Source Group”,可以往里面添加.c文件,点击Add就可以编辑了该文件了,也可以把常用的.c文件拷贝到建立的“Project”目录下面,最后一个完成的工程软件就建立完毕了。具体工程开发如下图所示。

img

6 仿真现象

(2) 打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。通过矩阵键盘输入数字和运算符,按=键结束并显示运算的结果。

(3) 可以进行简单的加减乘除运算。

加法演示123+456=579

img

减法验证789-456=333img

除法演示9999÷9=1111

img

乘法99999*99999=99980001

img

*致谢*

首先,感谢学校和老师安排这一次的单片机课程设计,在大学期间,做这类的课程设计是非常有必要的,特别是对我们大三的学生,有利于我们将理论与实践联系起来。在两周的课程设计时间里,经过努力拼搏,查阅了很多资料和文献,终于完成了基于单片机的计算器的设计。在设计的过程中,不仅巩固了以前学过的理论知识,而且还学会了很多书本上没有的知识,最重要的是把理论和实际结合起来,提高了自己的动手和独立思考的能力。在本设计中,由于时间和能力有限,难免会有不足的地方还望老师批评指正,以便在以后的设计中改正。这次课程设计得以顺利完成,少不了老师的指导和周围同学的指教,在此表示深切的感谢!

* **参考文献*

[1]杨欣.电路设计与仿真[M].清华大学出版社.2006

[2]谭浩强.从语言程序设计(第三版).北京:清华大学出版社.2005 [3]康光华.电子技术基础-数字部分[M].5版.北京;高等教育出版社;1997 [4]康光华.电子技术基础-模拟部分[M].5版.北京;高等教育出版社;1997 [5]陈瑜.电子技术应用实验教程[M].成都;电子科技大学出版社;2011 [6]左现刚、刘艳昌、贾蒙等.[M].西安;西安电子科技大学出版社;2016



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3