简易计算器系统设计
- 格式:doc
- 大小:376.50 KB
- 文档页数:18
1. 方案根据计算器的功能要求,选择AT89C51为主控机,通过扩展必要的外围接口电路,实现对计算器的设计。
外部主要由4*4矩阵键盘和一个液晶显示屏构成,内部由一块AT89C51单片机构成。
计算器电路包括四个部分:选用LCD作为显示部分,矩阵键盘作为输入部分,运算模块,单片机控制部分。
模块图如图1.2所示。
图1.2 方案二模块图1.1整体设计根据简易计算器的功能和指标要求,本设计系统选用MCS-51系列单片机AT89C51为主控机。
通过扩展必要的外围接口电路,实现对简易计算器的设计。
计算器电路包括三个部分:显示电路、4*4键扫描电路、单片机微控制电路。
具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用七段数码管显示数据和结果。
(2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可。
(3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在七段数码管上提示错误。
线路原理框图如图1.3所示。
图1.3 线路原理框图2电路设计原理2.1键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
目录第一章:设计目的11.1课程设计目的.................................................................................. 错误!未定义书签。
1.2简易计算器设计的意义 (1)1.3系统的基本要求 (1)1.4功能设计 (3)第二章:功能描述 (3)2.1功能模块框图 (3)2.2相关功能介绍.................................................................................. 错误!未定义书签。
2.1系统模块机构框图 (4)第三章:总体设计 (5)3.1系统流程图 (3)3.2模块描述 (5)3.3函数声明 (5)第四章:程序实现 (5)4.1界面设计 (10)4.2计算界面 (11)4.3退出界面 (12)第五章:课程设计的结果展示 (13)第六章:参考文献................................................................................................. - 15 -第七章:课程设计总结......................................................................................... - 16 -第一章课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。
特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。
通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。
2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函等。
计算器模拟系统设计学生:XXX 指导教师:XXX内容摘要:本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。
设计过程在硬件与软件方面进行同步设计。
硬件选择AT89C51单片机和74lS164,输入用4×4矩阵键盘。
显示用5位7段共阴极LED静态显示。
软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
选用编译效率最高的Keil 软件用汇编语言进行编程,并用proteus仿真。
关键词:LED 计算器 AT89C51芯片 74LS164Calculator simulation system desig nAbstract:The design is a simple calculator based on 51 series microcontroller system design, to complete the calculator keyboard input, add, subtract, multiply, and in addition to three unsigned numeric simple four operations, and the corresponding result will be displayed on the LED.The design process of hardware and software aspects of the synchronous design. Hardware choose AT89C51 microcontroller and 74ls164--enter the 4 × 4 matrix keyboard. Static display with five 7-segment common cathode LED display. Software calculator function from the analysis, flow charts, design, and then program the preparation of system design. Selected to compile the most efficient Keil software in assembly language programming, and with proteus simulation.Keywords: LED calculator AT89C51 chip 74LS164目录前言 (1)1 设计任务和要求 (1)1.1 设计要求 (1)1.2 设计方案的确定 (2)2 单片机简要原理 (2)2.1 AT89c51介绍 (2)2.2 芯片74LS164介绍 (5)3 硬件设计 (6)3.1 键盘电路的设计 (6)3.2 显示电路的设计 (7)3.3 其他电路设计 (7)3.3.1 复位、时钟电路设计 (7)3.3.2 多位数码管电路显示的驱动电路 (8)4 软件设计 (9)4.1 主程序的设计 (9)4.2 显示、读键模块的设计 (10)4.3 其他内容说明 (11)4.3.1 定时查键的程序设计 (11)4.3.2 软件的可靠性设计 (12)4.4 源程序代码(见附录) (12)5 调试与仿真 (12)5.1 Keil C51单片机软件开发系统 (12)5.2 proteus的操作 (12)5.2.1 硬件电路图的接法操作 (12)5.2.2单片机系统PROTEUS设计与仿真过程 (13)6 结束语 (13)附录:计算器程序代码 (15)参考文献: (23)计算器模拟系统设计前言近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
AT89C51单片机简易计算器的设计单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除六位数范围内的基本四则运算,并在LCD上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入。
显示采用字符LCD静态显示。
软件方面使用C语言编程,并用PROTUES仿真。
一、总体设计根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计。
具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。
》(2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。
(3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。
系统模块图:二、硬件设计(一)、总体硬件设计/本设计选用AT89C51单片机为主控单元。
显示部分:采用LCD 静态显示。
按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。
总体设计效果如下图:(二)、键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
简易计算器的设计与实现设计一个简易计算器涉及以下几个方面:1.需求分析:-定义计算器的功能-确定计算器支持的数学运算,如加法、减法、乘法、除法等2.用户界面设计:-设计计算器的界面布局,包括数字按键、运算符按键、等号按键等-考虑使用框架或库来构建用户界面3.输入处理:-设计解析用户输入的算式-处理用户点击按键时的输入4.运算处理:-实现各种数学运算的算法-将用户输入的算式传入运算处理函数进行计算5.显示结果:-将计算结果显示在计算器的界面上下面是一个简易计算器的实现示例,使用Python语言和PyQt库来构建:```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QGridLayout, QPushButton, QLineEdit class Calculator(QWidget):def __init__(self):super(.__init__self.setWindowTitle("简易计算器")yout = QVBoxLayoutself.input_box = QLineEdityout.addWidget(self.input_box)self.buttons =['7','8','9','/'],['4','5','6','*'],['1','2','3','-'],['0','.','=','+']self.grid_layout = QGridLayoutfor i in range(4):for j in range(4):button = QPushButton(self.buttons[i][j])button.clicked.connect(self.button_clicked)self.grid_layout.addWidget(button, i, j)yout.addLayout(self.grid_layout)self.setLayout(yout)self.equal_clicked = Falsedef button_clicked(self):button = self.sendertext = button.textif text == '=':self.calculateelse:self.input_box.setText(self.input_box.text( + text) def calculate(self):expression = self.input_box.texttry:result = eval(expression)self.input_box.setText(str(result))except Exception as e:self.input_box.setText("错误:{}".format(e))if __name__ == '__main__': app = QApplication(sys.argv) calculator = Calculator calculator.showsys.exit(app.exec_()。
简易计算器设计范文首先,我们需要决定计算器的基本功能。
一个简易计算器通常应该具备加法、减法、乘法和除法的功能。
此外,我们还可以添加开方、求平方以及取模等功能。
在设计计算器之前,我们需要确定用户界面。
对于一个简易计算器来说,我们可以使用命令行界面或者图形用户界面。
在本文中,我们将使用命令行界面。
接下来我们需要设计计算器的算法。
为了实现加、减、乘、除这些基本运算,我们可以编写四个函数来完成。
比如,加法函数可以接收两个数并返回它们的和,减法函数可以接收两个数并返回它们的差,乘法函数可以接收两个数并返回它们的乘积,除法函数可以接收两个数并返回它们的商。
同时,我们还需要添加一些辅助函数来处理开方、求平方以及取模等功能。
比如,开方函数可以接收一个数并返回它的平方根,求平方函数可以接收一个数并返回它的平方,取模函数可以接收两个数并返回它们的余数。
在设计计算器时,我们还要考虑到用户输入的错误处理。
如果用户输入无效的操作或者除数为零,我们需要给出错误的提示信息。
接下来,我们来设计主要的程序流程。
首先,我们需要显示一个欢迎信息,告诉用户如何使用计算器。
然后,在一个循环中,我们会要求用户输入要执行的操作,然后读取用户输入的操作和操作数。
根据用户的选择,我们会调用相应的函数来执行计算,并输出结果。
接着,我们会继续询问用户是否要继续进行计算。
如果用户选择退出,我们会结束循环并显示一个退出信息。
最后,我们需要编写测试用例来确保计算器的功能正常。
我们可以输入一些固定的操作和操作数,然后验证计算器返回的结果是否正确。
如果测试用例中出现错误,我们需要进行修复。
在编写代码之前,我们还需要选择一个编程语言。
对于一个简易计算器来说,Python是一个非常适合的选择。
Python具有简单易读的语法,能够轻松地实现我们的设计。
下面是本文的设计示例:```python#导入所需的库import math#加法函数def add(x, y):return x + y#减法函数def subtract(x, y):return x - y#乘法函数def multiply(x, y):return x * y#除法函数def divide(x, y):if y == 0:raise ValueError("除数不能为零") return x / y#开方函数def square_root(x):if x < 0:raise ValueError("不能对负数开方") return math.sqrt(x)#求平方函数def square(x):return x ** 2#取模函数def modulo(x, y):if y == 0:raise ValueError("除数不能为零") return x % y#欢迎信息print("欢迎使用简易计算器!")print("请按以下方式输入操作:")print("加法:'a 数1 数2'")print("减法:'s 数1 数2'")print("乘法:'m 数1 数2'")print("除法:'d 数1 数2'")print("开方:'r 数'")print("求平方:'q 数'")print("取模:'o 数1 数2'")#主程序循环while True:#用户输入operation = input("输入操作:")data = operation.splitif data[0] == "a":result = add(float(data[1]), float(data[2])) print("结果为:", result)elif data[0] == "s":result = subtract(float(data[1]), float(data[2])) print("结果为:", result)elif data[0] == "m":result = multiply(float(data[1]), float(data[2])) print("结果为:", result)elif data[0] == "d":try:result = divide(float(data[1]), float(data[2])) print("结果为:", result)except ValueError as e:print("错误:", str(e))elif data[0] == "r":try:result = square_root(float(data[1]))print("结果为:", result)except ValueError as e:print("错误:", str(e))elif data[0] == "q":result = square(float(data[1]))print("结果为:", result)elif data[0] == "o":try:result = modulo(float(data[1]), float(data[2]))print("结果为:", result)except ValueError as e:print("错误:", str(e))else:print("无效的操作")#判断是否继续计算choice = input("是否继续计算?(y/n)")if choice == "n":breakprint("谢谢使用,再见!")```通过以上设计,我们可以在命令行中使用这个简易计算器来执行加、减、乘、除、开方、求平方和取模等操作。
基于单片机的简易计算器设计引言:计算器是一种广泛应用的电子设备,可以进行各种数学计算。
基于单片机的计算器是一种使用单片机作为核心处理器的计算器。
本文将介绍如何设计一个基于单片机的简易计算器。
一、设计思路:1.硬件设计:选择适合的单片机,LCD显示屏,按键开关和电源电路,将它们连接在一起组成计算器的硬件。
2.软件设计:使用单片机的编程语言编写程序,实现计算器功能,如加法、减法、乘法、除法等运算,以及清零、退格、等号等功能。
二、硬件设计:选择单片机:在设计单片机计算器时,我们可以选择MCU,如STC89C52、ATmega32等。
这些单片机性能稳定,功能强大,适合用于计算器的设计。
LCD显示屏:选择合适尺寸和接口的LCD显示屏,用于显示计算结果和输入的数字。
按键开关:选择合适的按键开关,用于接收用户的按键输入,如数字、运算符等。
电源电路:设计适合的电源电路,为计算器提供稳定的电源。
三、软件设计:1.初始化功能:启动计算器时,进行相关初始化操作,如清屏、设置计算器状态等。
2.数字输入功能:通过按键输入,将数字输入到计算器中,同时刷新LCD显示屏上的内容。
3.运算功能:根据用户输入的数字和运算符,进行相应的运算操作,如加法、减法、乘法、除法等。
4.清零功能:按下清零按钮时,将计算器的状态重置为初始状态。
5.退格功能:当用户输入错误时,可以通过按下退格按钮,删除最后一个输入的数字或运算符。
6.等号功能:用户按下等号按钮时,计算器将完成运算,并将结果显示在LCD屏上。
7.错误处理功能:当用户输入错误时,计算器应该给出合适的错误提示。
四、程序实现:1.确定单片机的引脚分配,将LCD显示屏、按键开关和单片机的引脚连接起来。
2.使用单片机的编程语言编写程序,实现计算器的功能。
3.根据运算符和数字的不同,确定相应的运算方法,并在LCD显示屏上显示结果。
4.使用条件语句和循环结构,实现计算器的控制逻辑。
5.通过编程实现按键响应功能,当用户按下相应按键时,执行相应的操作。
微型计算机原理与接口技术简易计算器系统设计计算器是一种能够进行基本算术运算的设备,它通常包括数字输入、运算功能、显示屏和输出等部分。
在设计计算器系统时,我们首先需要确定计算器的硬件结构和组成,然后再考虑如何实现各个功能模块之间的接口。
首先,我们需要确定计算器的硬件结构,包括中央处理器(CPU)、存储器、输入设备、输出设备和控制器等。
其中,CPU负责执行计算器的运算逻辑,存储器用于存储运算过程中的数据,输入设备用于接收用户的输入,输出设备用于显示计算结果,控制器用于控制各个部件之间的数据传输和协调工作。
接下来,我们需要考虑如何实现输入设备和CPU之间的接口。
常见的计算器输入设备有键盘和按钮,这些设备通常以二进制码的形式将输入的数字和操作符传输给CPU。
在接口设计中,我们可以使用行列扫描和键盘编码等技术,将键盘上每个按钮与一个独立的编码对应,通过扫描键盘的行和列,可以确定用户按下的是哪个按钮,并将对应的编码传输给CPU。
接着,我们需要考虑如何实现CPU和存储器之间的接口。
存储器通常分为寄存器和内存两部分,寄存器用于存储CPU运算过程中的中间结果,内存用于存储用户输入的数据和计算结果。
在接口设计中,我们可以使用地址线和数据线来实现CPU与存储器之间的数据传输。
通过选择不同的地址线,CPU可以读取和写入不同的数据,从而实现数据的存储和读取等操作。
最后,我们需要考虑如何实现CPU和输出设备之间的接口。
输出设备通常是液晶显示屏或数码管等,它们用于显示计算结果。
在接口设计中,我们可以使用数据线和控制线来实现CPU与输出设备之间的数据传输和控制。
通过向输出设备发送指定的数据和控制信号,CPU可以控制输出设备实现相应的显示功能。
综上所述,微型计算机原理与接口技术是一个涉及计算机硬件结构、工作原理和接口设计的重要课程。
在本简易计算器系统设计中,我们考虑了计算器的硬件结构和组成,以及输入设备、存储器、CPU和输出设备之间的接口。
实验1简易计算器设计一、实验目的1、掌握事件结构的编程2、掌握字符串与数字的相互转化3、掌握条件结构的编程4、生成exe文件二、实验要求利用LabVIEW的事件结构编写一个简单的计算器程序,实现加、减、乘、除等运算,并能对计算结果进行清除,前面板按钮及布局如下图所示。
图1 计算机界面要求最后创建项目,生成exe可执行文件。
三、实验设备1、计算机2、安装LabVIEW软件(版本不限,本实验指导书以2018版为例)四、实验说明1、程序流程图图2 程序流程图2、设计思路计数器界面中每个按键相当于一个布尔输入控件,共17个;计算结果的显示为一个字符串显示控件。
每次按键触发一个按键事件,利用LabVIEW的事件响应结构对每个按键进行响应,实现要求的简易计算器功能。
表1 布尔输入控件的说明前面板除了17个布尔输入控件外,还包含输入数据的输入临时值控件、输入1、输入2、存储操作运算符的运算符临时值控件、运算结果和过程显示,过程显示充当计算器的显示器。
3、算法流程图包括程序初始化、运算符判断、数据存储与运算、显示等。
图3 算法流程图五、实验过程1、前面板设计打开IabVIEW2018软件,新建一个VI,并命名为虚拟计算器。
在前面板上右击,在布尔控件中选择“确定按钮”;右击,打开显示项,去掉标签;调整按键到合适的大小;再拷贝16个按键,排列好,C键和±键还需要调整一下大小;修改各按键的布尔文本;双击各按键到后面板中修改各自的标签,例如将布尔文本为1的按键标签改为“数字1”,将布尔文本为+的按键标签改为“加”,以方便编程时识别各按键。
再设置一个字符串显示控件,用来显示运算数值、运算符号和运算结果,修改标签为“过程显示”;还需要设置5个字符串显示控件,标签分别为“输入临时值”、“输入1”、“输入2”、“运算符临时值”、“运算结果”。
得到如下图所示的计算器前面板、后面板。
图4 前面板布局图图4 后面板2、初始化将前面板中的各个显示控件初始化,如图5所示。
(此文档为word格式,下载后您可任意编辑修改!) 湖南文理学院芙蓉学院嵌入式系统课程设计报告题目简易计算器系统设计学生姓名刘胜凯专业班级计算机科学与技术指导老师娄小平组员李阳、杨帆、曾家俊目录一、摘要 (3)二、原理与总体方案 (3)三、硬件设计 (6)四、调试 (10)五、测试与分析 (12)六、心得体会 (14)七、参考文献 (15)八、附录 (15)一、摘要计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。
对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。
本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。
最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。
二、原理与总体方案主程序在初始化后调用键盘程序,再判断返回的值。
若为数字0—9,则根据按键的次数进行保存和显示处理。
若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。
程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。
最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。
电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。
而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而让ARM芯片接收。
2.1 系统整体流程图2.2 程序运行流程图2.3 仿真电路图设计2.4 仿真图形2.4.1 计算加法2.4.2 计算减法(结果为负数) 2.4.3 计算减法(结果为正数)2.4.4 计算乘法2.4.5 计算除法注:本设计不能进行连续运算,只能进行当次运算,且只能进行单行显示。
进行除法时会自动取整,无小数。
显示器上不会显示加减乘除等运算符号,只有操作数和操作结果。
三、硬件设计3.1元件清单计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
矩阵键盘的工作原理:计算器的键盘布局如图3-1所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
图3-1 矩阵键盘布局图电路中采用4*4键盘作为输入电路模块的话,电路连线会比较简单,而且这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
但是在硬件电路设计的过程中,实验室没有提供矩阵键盘,所以我们将4*4的矩阵键盘换成了16个独立按键。
采用独立按键的方式的话,会占用大量的I/O 口资源,但是在这种情况下,编程会很简单。
矩阵键盘内部电路图如图3-2所示。
图3-2 矩阵键盘内部电路图3.3显示模块:本设计采用LCD1液晶显示屏来显示输出数据。
通过D0-D7引脚向LCD1写指令字或写数据以使LCD1实现不同的功能或显示相应数据。
LCD1管脚图如图3-3所示。
图3-3 LCD1管脚图3.4各模块的特性与作用3.4.1 LPC2106的特性及引脚功能LPC2106 是基于一个支持实时仿真和跟踪的32 位ARM CPU 的微处理器,并带有256kB 嵌入的高速Flash 存储器。
128 位宽度的存储器接口和独特的加速结构使32 位代码能够最大时钟速率下运行,并具有广泛应用。
含向量中断控制器,多个串行接口,两个三十二位定时器,片内晶振的操作频率范围:10MHZ-25MHZ,两个低功耗模式:空闲和掉电.CPU操作电压范围:1.65V-1.95V图3-4 LPC2106管脚图管脚说明:V3、V18:供电电压Vss、DBGSEL:接地XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
P0.0-P0.14作为GPIO接口,P0.15作为EINT2接口。
3.4.2 LCD的特性LCD 显示屏可以采用字符显示,当使用字符显示方式时,可以直接用外码作为输入数据,由显示屏自动给出显示字模数据,而无需由微处理器提供字模。
3.4.3 数字式键盘的特性数字式键盘的实质仍是行列式键盘,4 根行线和 4 根列线通过下拉电阻接地,在其表面贴有标示对应按键的膜,使得易于观察和操作,更加贴近使用者的需求。
3.4.4 MM74C922的特性及其引脚功能:MM74C922具有功耗低,电压为3-5V,三态门输出,与LPTTL兼容,输出锁存按下最后的键,用一个电容器就可以消除键盘抖动,两键轮回,行具有上拉功能,具有芯片内或芯片外时钟,最大开关电阻为管脚说明:A-D为行键扫描电平输出端,1-4为列键输入读取端;OSC为振荡器的外接引线端,可用外部的输入脉冲或电容器;OE为数据输出端,低电平有效;DAV为数据输出有效,高电平有效;VCC为电源端,接3-5V;GND为接地端。
本设计中选用LPC2106的P0.0~P0.10 与LCD 显示屏相连,它们所输出信号控制显示屏上的显示,其中P0.0~P0.7 分别接显示屏的D0~D7,P0.8~P0.10分别接显示屏的RS、RW、E 接口;选用LPC2106的P0.11~P0.14 连续4 个IO 口与芯片MM74C922和计算器键盘相连,可通过反转法检测到按下按键的键码,再通过查键盘对应的字符编码使LCD 显示,其中A~D依次接键盘的4 根行线,1~4依次接键盘的4 根列线。
管脚说明:A-D为行键扫描电平输出端,1-4为列键输入读取端;OSC为振荡器的外接引线端,可用外部的输入脉冲或电容器;OE为数据输出端,低电平有效;DAV为数据输出有效,高电平有效;VCC为电源端,接3-5V;GND为接地端。
本设计中选用LPC2106的P0.0~P0.10 与LCD 显示屏相连,它们所输出信号控制显示屏上的显示,其中P0.0~P0.7 分别接显示屏的D0~D7,P0.8~P0.10分别接显示屏的RS、RW、E 接口;选用LPC2106的P0.11~P0.14 连续4 个IO 口与芯片MM74C922和计算器键盘相连,可通过反转法检测到按下按键的键码,再通过查键盘对应的字符编码使LCD 显示,其中A~D依次接键盘的4 根行线,1~4依次接键盘的4 根列线。
四、调试4.1 GPIO:LPC2000系列ARM的GPIO具有如下特性:1)可以独立控制每个GPIO口的方向(输入/输出模式);2)可以独立设置每个GPIO的输出状态(高/低电平);3)所有GPIO口在复位后默认为输入状态。
每个作为GPIO功能的引脚受到四个寄存器控制,分别为控制方向的IOxDIR、控制输出电平状态的IOxSET和IOxCLR、反映引脚电平状态的IOxPIN。
这四个寄存器构成一组,而一组寄存器控制着一个端口(P0、P1、P2或P3)。
注意事项:引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定。
LPC2000系列ARM大部分的I/O引脚为推挽方式输出,但是具有总线功能的I/O引脚为开漏输出(P0.2/3和P0.11/14)。
使用这些开漏输出的引脚作为GPIO功能,并用于高电平输出或者引脚状态输入时,要接上拉电阻才能正常使用。
推挽输出的I/O引脚正常拉出/灌入电流均为4mA,短时间极限值为40mA。
复位后,大部分引脚默认作为GPIO功能,并且均为输入状态。
但是,有部分引脚在复位后默认作为第二功能(如:P0.27~P0.30在复位后默认为A/D输入引脚)。
4.2硬件和程序原理在键盘按键后,产生一个中断,mcu对键盘进行扫描,确定按下的键,如果不是等号,就把按下的字符依次存入数组,并在lcd显示表达式,如果是等号,就计算出数组中存入的表达式的值,并显示在lcd中。
计算表达式值的方法:把表达式中的表示数值的字符转成数值存入一个数值数组,把表达式中的表示运算符的字符存入运算符数组;关于四则运算优先级算法:依次检索运算符数组,当遇到 * 号或者 / 号的时候,就先计算乘法或除法,算出结果后存入数值数组相应位置,然后删除此运算符和多余的数值,再重复检索,直到数值数组中只有一个数值为止,这个数值即是运算结果。
调用stdio.h库里的sprintf函数,把数值转化成字符数组,然后显示到lcd中。
五、测试与分析5.1 ADS1.2新建工程5.2 Proteus实时仿真六、心得体会本学期为期一周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处。
一周的课程设计,一周的实训,让我明白计算机这个博大深奥的领域我感觉自己还有好多东西要学,还有好多的东西不懂,嵌入式软件开发应用广泛而且前景很好,目前正处于人才紧缺的关口,嵌入式技术在未来能够得到更加广泛的应用。
学好嵌入式,C语言很重要,所以感觉自己有必要在学习、积累一下这方面的知识。
要想学好还必须下大力气,还必须坚持。
这次的课程设计让我明确了一点:嵌入式开发对于提升我们的系统知识有很大的帮助,尤其是操作系统的知识。
嵌入式系统开发对于我们的知识面要求非常的广,且要有一定的深度。
这次的课程设计因为是一个有针对性的训练,所以记的会非常牢固。
跟平时上课不太一样,平时上完理论课很少有时间上机进行时间或者隔几天才上机练习,等到上机时一些东西可能遗忘了,比较耗费时间。
在课上,有老师在前面演示我们感觉看得懂或感觉没问题,可轮到我们独立完成的时候,因为实际操作的少,跟中问题就来了!我很感谢学校特别是学院老师有实训这样的安排,把我们这一学期学的东西系统的集中的进行训练,让我们深刻明确的体验了一下软件开发的流程!经过这次的实训,我真真确确的感受到了计算机在我们生活中工作中的运用,这些软件、程序能让我们提高工作的效率,更直观更便捷的切入主题。
当然,在学习的过程中并不是一帆风顺的,在这之中,因为要操作的东西很多,有时错一步,后面的结果就无法显示,而自己的计算机水平还有待提高,根本检查不出来是哪里出了错!在平时我们就需要好好的查阅书籍或者上网搜集相关资料去解决问题。