计算器模拟系统

合集下载

电子信息工程专业毕业论文--基于51单片机的简易计算器设计

电子信息工程专业毕业论文--基于51单片机的简易计算器设计

摘要近几年单片机技术的发展很快,其中电子产品的更新速度迅猛。

计算器是日常生活中比较的常见的电子产品之一。

如何才能使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器呢。

本设计是以AT89S52单片机为核心的计算器模拟系统设计,输入采用4×4矩阵键盘,可以进行加、减、乘、除4位带符号数字运算,并在LCD1602上显示操作过程。

科技的进步告别了以前复杂的模拟电路,一块几厘米平方的单片机可以省去很多繁琐的电路。

现在应用较广泛的是科学计算器,与我们日常所用的简单计算器有较大差别,除了能进行加减乘除,科学计算器还可以进行正数的四则运算和乘方、开方运算,具有指数、对数、三角函数、反三角函数及存储等计算功能。

计算器的未来是小型化和轻便化,现在市面上出现的使用太阳能电池的计算器,使用ASIC设计的计算器,如使用纯软件实现的计算器等,未来的智能化计算器将是我们的发展方向,更希望成为应用广泛的计算工具。

[关键词] AT89S52 LCD1602 计算器矩阵键盘目录第一章前言 (1)1.1 系统开发背景 (1)1.2 系统开发意义 (1)1.3 设计目的 (1)第二章方案论证 (2)2.1 方案构思 (2)2.2 方案比较与选择 (2)第三章系统硬件设计及说明 (3)3.1系统组成及总体框图 (3)3.2元件简介 (3)3.2.1 AT89S52特点 (3)3.2.2 LCD1602液晶显示屏 (9)第四章设计原理分析 (12)4.1 设计方案的确定 (13)4.2计算器硬件方案及硬件资源分配 (13)4.2.1 硬件资源分配 (15)4.2.2 系统的硬件设计 (13)4.2.3 键盘电路的设计 (16)4.2.4 显示电路的设计 (16)第五章计算器的软件设计 (17)5.1计算器的软件规划 (17)5.2 键盘扫描的程序设计 (16)5.3 显示模块的程序设计 (18)5.4 主程序的设计 (19)5.5 软件的可靠性设计 (19)结束语 (19)参考文献 (20)第一章前言1.1 系统开发背景随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。

电气自动化专业毕业论文题目

电气自动化专业毕业论文题目

电气自动化专业毕业论文题目1。

无线比例电机转速遥控器的设计2。

简易数字电子称设计3. 红外线立体声耳机设计4。

单片机与PC 串行通信设计5。

100 路数字抢答器设计6. D 类功率放大器设计7。

铅酸蓄电池自动充电器8。

数字温度测控仪的设计9. 下棋定时钟设计10. 温度测控仪设计11. 数字频率计12。

数字集成功率放大器整体电路设计13. 数字电容表的设计14. 数字冲击电流计设计15. 数字超声波倒车测距仪设计16。

路灯控制器17。

扩音机的设计18。

交直流自动量程数字电压表19. 交通灯控制系统设计20. 简易调频对讲机的设计21。

峰值功率计的设计22。

多路温度采集系统设计23。

多点数字温度巡测仪设计24. 电机遥控系统设计25。

由TDA2030A 构成的BTL 功率放大器的设计26. 超声波测距器设计27。

4—15V 直流电源设计28. 家用对讲机的设计29. 流速及转速电路的设计30。

基于单片机的家电远程控制系统设计31。

万年历的设计32。

单片机与计算机USB 接口通信33。

LCD 数字式温度湿度测量计34. 逆变电源设计35。

基于单片机的电火箱调温器36. 表面贴片技术SMT 的广泛应用及前景37。

中型电弧炉单片机控制系统设计38。

中频淬火电气控制系统设计39。

新型洗浴器设计40. 新型电磁开水炉设计41。

基于电流型逆变器的中频冶炼电气设计电气自动化专业毕业设计42. 6KW 电磁采暖炉电气设计43。

64 点温度监测与控制系统44. 电力市场竞价软件设计45. DS18B20 温度检测控制46。

步进电动机驱动器设计47. 多通道数据采集记录系统48。

单片机控制直流电动机调速系统49。

IGBT 逆变电源的研究与设计50。

软开关直流逆变电源研究与设计51。

单片机电量测量与分析系统52。

温湿度智能测控系统53. 现场总线控制系统设计54。

加热炉自动控制系统55。

电容法构成的液位检测及控制装置56. 基于CD4017 电平显示器57. 无线智能报警系统58。

基于51单片机计算器设计

基于51单片机计算器设计

基于51单片机计算器设计计算器是一种常见的电子设备,可以进行数学运算、数据处理等功能。

本文将基于51单片机进行计算器设计。

一、设计目标:1.实现基本的数学运算功能,如加减乘除、取余等。

2.能够进行复杂的数学运算,如平方、开方等。

3.具备记忆功能,能够存储中间结果和运算符号。

4.设置输入界面,允许用户输入数字和操作符。

5.显示运算结果和中间过程。

二、硬件系统设计:1.使用51单片机作为主控芯片,具有高集成度和处理能力。

2.连接光栅液晶显示屏,用于显示数值和操作符。

3.连接矩阵键盘,用于获取用户的输入。

4.连接电源电路,保证计算器正常运行。

三、软件系统设计:1.确定界面设计,包括数值显示区、操作符显示区和功能键区。

2.设计输入处理模块,根据用户输入获取相应的数值和操作符,并进行相应的处理。

3.设计运算模块,根据用户输入的操作符进行相应的数学运算,并将结果存储起来。

4.设计显示模块,将计算结果和中间过程显示在液晶屏上。

5.设计存储模块,用来存储中间运算结果和操作符号。

四、软件流程设计:1.系统初始化:包括设置显示模式、清零中间结果等。

2.输入处理:通过矩阵键盘输入数字和操作符,并进行相应的处理。

3.运算处理:根据用户输入的操作符,进行相应的数学运算,并将结果存储起来。

4.结果显示:将计算结果和中间过程显示在液晶屏上。

5.存储结果:将计算结果和操作符存储起来,以备后续计算。

五、测试和调试:在设计完成后,需要进行系统测试和调试,确保计算器的各项功能正常运行。

首先进行单元测试,验证各个模块的功能是否按照设计要求正确执行。

然后进行综合测试,模拟用户输入各种情况下的运算过程,检测是否能够正确进行运算并显示结果。

如果发现问题,则进行调试和修改,直到计算器满足设计要求。

六、总结:基于51单片机进行计算器设计,可以实现基本的数学运算功能,并具备记忆功能。

设计步骤包括确定硬件系统和软件系统设计,设计界面、输入处理、运算处理、显示和存储模块,进行测试和调试确保计算器功能正常运行。

可视化编程课程设计(含源码)计算器系统实现

可视化编程课程设计(含源码)计算器系统实现

设计题目:计算器系统实现1.分别用API与MFC编程来实现计算器的以下功能。

2.实现计算器的基本功能:连续数据的无优先级混合运算(加减乘除)3.可以实现其他附加功能:优先级运算,加入括号,加入其他函数运算功能等。

(不在要求范围之内)4.要求界面良好,功能完整。

一.基于MFC的简单计算器1.设计思路打开MFC应用操作界面,布局计算器界面,利用组框将计算器界面分为三个部分,一个是编辑输入,一个是数字界面,一个是功能键部分。

利用布局参考线对齐按钮,使界面美观。

然后就是对各个按钮进行属性设置,关联类设置,接着对各个按钮进行源代码编程。

最后,调试找出问题,解决问题,运行MFC成品计算器。

2.简单操作以及功能说明由于本人技术有限,所以本程序只能按照正确的计算运算顺序进行,该简单计算器能进行四则混合运算,除了加减乘除外,添加了一个括号,对于有些未知的错误,由于时间有限,并未来得及全面测试使用。

该简单计算器能实现四则运算,退格运算,清零运算,并且支持输出的结果保留给直接的下一个运算。

3.系统实现的各个模块1)编辑框模块由于编辑框模块需要连续输入字符串,所以在给编辑框建立类向导时,给编辑框定义的成员变量应该是字符串(String)变量。

编辑框模块用于运算算式的输入,以及结果的输出。

2)数字键模块数字键模块比较简单,该简单计算器数字键模块设置有0~9数字,还设置有小数点,以及正负数转换实现按钮。

数字键模块按钮在建立类向导时无需定义成员变量,但是需要定义按钮响应链接,用于实现点击按钮,在编辑框上显示点击按钮信息。

3)功能键模块功能键模块包括加减乘除基本按钮,以及一个输入错误是后能用于退格功能的退格键按钮,还有一个用于区别优先级运算的括号功能,当然有最重要的计算结果输入按钮,等于号按钮。

在编辑框附近还有一个功能键,就是清除功能键,用于清除编辑框,以便实现下一轮输入。

4.设计过程1)设计总流程图2)界面的设计3)建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION MessageHandler IDD_JISUANQI_DIALOG 简易计算器N/AIDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_OPER_ADD + OnOperAdd IDC_OPER_SUB - OnOperSub IDC_OPER_MULTI * OnOperMulti IDC_OPER_DIV / OnOperDiv IDC_ADD_SUB +/- OnAddSubIDC_POINT . OnPointIDC_EQUAL = OnEqualIDC_LBRACKET ( OnLbracket1)数字键模块void CJiSuanQiDlg::OnNum0(){if(calculated == TRUE) //已经按了等号,不让其再接受字符return;UpdateData(TRUE);//刷新编辑框界面calcutateString += "0";//存储输入的数字m_data += "0";//显示输入的数字UpdateData(FALSE);}2)功能键模块①加法功能键源程序void CJiSuanQiDlg::OnOperAdd(){if(calculated == TRUE)///其前一步按了= 号{calculated = FALSE;m_data = oldResult;double temp = atof(oldResult);//定义临时变量存储上一步结果if(temp < 0){calcutateString = "0" + oldResult;}else{calcutateString = oldResult;}calcutateString += "+";//存储做完该功能后的结果m_data += "+";//显示该步骤完成的结果UpdateData(FALSE);}else ///前一步不是={UpdateData(TRUE);calcutateString += "+";//直接存储此步操作m_data += "+";//直接显示此步操作UpdateData(FALSE);}}②退格功能键源程序void CJiSuanQiDlg::OnBackspeace(){if(calculated == FALSE){UpdateData(TRUE);int count = m_data.GetLength();if(count >= 1)//判断是否能执行退格操作{m_data = m_data.Left(count -1);count = calcutateString.GetLength();calcutateString = calcutateString.Left(count -1);UpdateData(FALSE);}}}③清除功能键源程序void CJiSuanQiDlg::OnClear(){// TODO: Add your control notification handler code herem_data = "";oldResult = "";calcutateString = "";calculated = FALSE;UpdateData(FALSE);}④括号功能键源程序void CJiSuanQiDlg::OnLbracket(){// TODO: Add your control notification handler code hereif(calculated == TRUE) ///已经按了等号,不让其再接受字符return;UpdateData(TRUE);calcutateString += "(";m_data += "(";UpdateData(FALSE);}⑤正负转换功能键源程序void CJiSuanQiDlg::OnAddSub(){// TODO: Add your control notification handler code hereif(calculated == FALSE){UpdateData(TRUE);calcutateString = calcutateString + "0" + "-";m_data += "-";UpdateData(FALSE);}}6.运行结果界面截图7.制作过程中所遇问题以及解决方法过程1)源代码编写错误通过查阅资料,请教同学,逐步一一解决。

计算器操作系统基本类型

计算器操作系统基本类型

计算器操作系统基本类型《计算器操作系统基本类型》计算器操作系统是指嵌入在计算器中的软件系统,它为计算器提供了基础的功能和操作界面。

在计算器操作系统中,有多种基本类型,它们分别为标准型、科学型和图形型。

标准型是最基本的计算器操作系统类型,它通常具有加减乘除等基本计算功能,可以执行简单的算术运算。

标准型计算器操作系统一般拥有数字键盘、运算符键以及等号键等,用户可以通过按键输入数字和运算符,完成简单的运算。

科学型是一种功能更加强大的计算器操作系统类型,它具备标准型的基本计算功能,并且增加了一些科学运算的功能。

科学型计算器操作系统能够执行三角函数、指数运算、对数运算等高级数学运算,以满足用户在工程、科学等领域的计算需求。

图形型是一种拥有图形显示界面的计算器操作系统类型。

与标准型和科学型不同,图形型计算器操作系统可以显示图形和方程,并支持相关的计算和绘图功能。

用户可以通过输入方程或者具体的数据,计算绘制出曲线、函数图像等,并对这些图形进行分析。

除了以上三种基本类型,还有一些特殊用途的计算器操作系统类型,如金融型、统计型、编程型等。

金融型计算器操作系统提供了财务和投资计算的功能,用户可以进行利息计算、贷款计算、股票收益计算等。

统计型计算器操作系统则针对统计学领域的需求,具备数据处理、统计分析和概率计算等功能。

编程型计算器操作系统则允许用户编写和执行简单的程序,以实现更复杂的计算和逻辑功能。

综上所述,计算器操作系统的基本类型包括标准型、科学型和图形型。

不同的类型适用于不同的计算需求,用户可根据具体的使用场景来选择合适的计算器操作系统类型。

这些基本类型的操作系统为用户提供了方便和灵活的计算方式,使计算器成为了人们日常学习和工作中不可或缺的工具之一。

计算器——概要设计说明书

计算器——概要设计说明书

计算器概要设计说明书1、引言1.1编写目的在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用.在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为JAVA程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。

1.2项目背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

要实现计算功能,可以用JAVA 的知识编写程序来解决此问题。

该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。

在课程设计中,系统开发平台为Windows 7,程序设计设计语言采用JAVA,在程序设计中,采用了结构化与面向对象两种解决问题的方法.1。

3定义事务流:数据进入模块后可能有多种路径进行处理。

系统:若未特别指出,统指本系统.1。

4参考资料[1]钱银中,眭碧霞。

Java程序设计案例教程[2]道客巴巴:http://www。

/p—642874533756。

html 2、运行环境操作系统:Windows 2000﹑Windows XP Professional、Windows 2000 Server或者window 7.0操作系统.3、总体设计3。

1 系统设计流程系统设计主要有五部分组成:需求分析、概要设计、详细设计、编写代码和系统测试.如下图所示:这次课程设计的题目是实现简单计算器的功能。

实现功能:加,减,乘,除,可加其它运算功能;还要实现数据的输入,输出,计算,显示及清除等功能。

⑵概要设计计算器包含的功能有:加、减、乘、除、清除。

计算器的屏显为JFrame控件,左侧的数字、操作符按键、右侧的功能为BUTTON控件. 输入的原始数据、运算中间数据和结果在顶部的TEXTBOX 控件显示.每种计算功能均为独立设计算法。

运算器名词解释

运算器名词解释运算器,也称计算器,是一种计算机系统,其中拥有一组定义的规则和指令,可以执行运算、算术运算和数据处理,用于解决特定问题的机器。

它可以使一个人、一组人或一家公司更高效地完成常见的任务,也可以使不能在短时间内完成的运算和计算得以实现。

运算器分为模拟计算器和数字计算器。

模拟计算机使用物理控制器来实现其功能,可以模拟电子元件的行为。

数字计算机则是一种数字系统,使用固定的算法来实现其功能。

其处理器使用定义的指令来执行运算,例如增加、减少、乘法或除法,以及比较和排序数据。

运算器可以为用户提供更快、更准确的计算,而不需要人为干预。

它们可以在许多领域中使用,例如教育,工程,科学,金融,数据处理,生产等。

这种仪器在游戏和手机应用程序中也很流行,尤其是在学习数学时,它可以帮助学生快速解决复杂的数学问题。

另外,运算器也可以应用于机器人,通过预先定义的程序,来操控机器人运动,实现自动操作的目的。

此外,它们还可以被用于控制现代汽车的燃料控制系统,用于实时检测发动机内部温度和或其他参数,以保证车辆运行安全性和平稳性。

运算器可以在多种形式中出现,其中包括计算器、移动计算机、工业控制器和数据处理机等。

现代计算机通常使用固件、微处理器和其他电子零件,来实现功能。

从社会发展的角度来看,运算器发挥着重要的作用,它们为人们提供更快的计算速度,使运算更准确,并且可以减少人力的需求,节省大量的时间和成本。

它们同时还帮助我们更快地发现问题,从而更好地解决问题,促进社会的发展。

总之,运算器是一种重要的科技工具,能够节省时间和成本,它们可以用于计算、算术运算和数据处理,在各行各业都发挥着重要的作用。

基于ARM的计算器设计

基于ARM的计算器设计计算器是一种非常常见且实用的电子设备,用于进行数学计算。

基于ARM(Advanced RISC Machines)的计算器设计可以使其在计算速度、功耗和功能多样性方面得到显著的改进。

本文将介绍基于ARM的计算器设计的主要原理、功能和特点。

ARM是一种32位精简指令集计算机(RISC)架构,被广泛应用于移动设备和嵌入式系统。

与传统的复杂指令集计算机(CISC)相比,ARM架构的计算器具有更高的计算效率和较低的功耗。

基于ARM的计算器设计的一个重要特点是可定制性强。

ARM架构的计算器可以根据用户需求进行软硬件定制,使其具备更多的功能和扩展性。

例如,可以添加支持复数运算、矩阵运算、统计分析等功能模块,使计算器在不同领域有更广泛的应用。

另一个重要特点是计算速度快。

ARM架构的处理器采用超标量流水线设计,具备较高的指令执行速度和并行处理能力。

这意味着计算器可以在短时间内完成复杂的数学计算,提高用户的计算效率。

基于ARM的计算器设计还可以实现更友好的用户界面和操作体验。

ARM架构的处理器具有较强的图形处理能力,可以支持高分辨率显示和流畅的图形界面操作。

这使得计算器可以具备更直观、易用的用户界面,提供更多的计算辅助功能,如历史记录、单位转换等。

基于ARM的计算器设计还可以实现更低的功耗。

ARM架构的处理器采用了低功耗设计和功耗管理技术,可以根据计算负载的需求实时调整功耗。

这使得计算器可以在具备更高计算性能的同时,减少电池消耗,并延长使用时间。

在基于ARM的计算器设计中,硬件部分主要包括处理器、存储器、输入输出接口和显示屏。

处理器可以选择ARM Cortex-A系列或Cortex-M系列。

存储器包括闪存、RAM和ROM等。

输入输出接口可以包括按键、触摸屏、USB接口等。

显示屏可以选择TFT LCD或OLED等。

软件部分主要包括操作系统、应用程序和驱动程序。

操作系统可以选择Android、Linux等。

课程设计 简易计算器设计与实现

课程设计简易计算器设计与实现长江职业学院工学院毕业实践报告课题名称:简易计算器设计与实现专业班级:计算机控制技术081班学生姓名:黄杨学号: 20082940班级序号 6实践性质:校内毕业实践实践成绩:指导老师:杜力2011年2月25日目录一、绪论1.1 计算器的历史 (5)1.2 电子计算器的特殊键 (6)1.3单片机概述 (6)1.4设计要求 (6)1.5我做简易模拟计算器的过程说明 (7)1.6系统的基本功能 (7)二、课题设计的分析与思路的确定 (7)三、芯片简介 (8)3.1MSC-51芯片简介 (8)3.2 MCS-51的引脚说明 (10)四、计算器程序设计 (12)4.1存储单元分配 (12)4.2主程序设计 (12)4.3 数码管显示数据转换子程序CONV (13)4.4 数码管动态显示子程序 (13)五、连接知识 (13)5.1键盘的连接 (13)5.2、显示器的连接 (14)六、仿真过程 (15)八、参考文献 (18)一、绪论本课题拟定以MCS-51系列单片机为控制中心,采用模块化的设计方案,运用液晶显示器或LED显示数据/键盘输入数据,以实现能够完成加、减、乘、除、数据存储等运算的简易计算器。

系统的功能是:(1)模拟的计算器能显示10位数字,开机运行时,只显示最低位为“0”,其余不显示;(2)4×4键盘分别表示:0到9,+,-,×,/,=,CL;(3)第一次按下,显示“D1”,第二次按下,显示“D1D2”,第三次按下,显示“D1D2D3”…8个全显示完毕,再次按下按键时,给出“嘀”的提示音;(4)可以对计算结果小于256的两个无符号数进行加、减、乘、除运算。

单片机程序用汇编语言编写,经过Wave软件调试,生成HEX文件,再用Proteus软件进行计算机仿真。

程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。

科学计算器(xp系统)

Backspace 删除当前输入的最后一位数。

CE (clear error )纠错;清除当前显示的数,不影响已经输入的数(代表符号Del )C (clear )清除;清除当前的计算,开始新的计算(代表符号Esc ) MC清除存储数据 (代表符号Ctrl+L ) MR调用存储数据 (代表符号Ctrl+R ) MS存储当前显示的数据 (代表符号Ctrl+M ) M+将显示的数据加到存储器,与已存入的数据相加(代表符号Ctrl+P ) F-E科学计数法开关 Exp允许输入用科学计数法表示的数字 Mod求模(即整数相除求余数) (符号%) And按位“与”(代表符号&) Or按位“或” Xor按位“异或”(代表符号 ^) Not 按位“取反”(代表符号 ~) Int 取整数 (代表符号 ;) Lsh 左移 (代表符号<) Pi 圆周率 (代表符号P )dms度分秒切换(代表符号M ) Inv (代表符号I )sin正弦(代表符号S ) cos余弦(代表符号O ) tan正切(代表符号T ) log 常用对数(代表符号L ) ln 自然对数(代表符号N ) n! 阶乘 (代表符号!)计算演示:1、sin计算正弦值(单位是角度),例如计算30度的正弦值,输入30s (或sin30),结果0.5,如果想计算反正弦,请把Inv 打勾;(如果想计算双曲正弦,请把Hyp 打勾,Inv 不用打勾,如果需要计算反双曲正弦,请把Inv 、Hyp 都打勾)2、cos 计算余弦值(单位是角度),例如计算60度的余弦值,输入60O ,结果0.5,如果想计算反余弦,请把Inv 打勾;(如果想计算双曲余弦,请把Hyp 打勾,Inv 不用打勾,如果需要计算反双曲余弦,请把Inv 、Hyp 都打勾)4、tan 计算正切值(单位是角度),例如计算45度的正切值,输入45t ,即,屏幕会显示1,如果想计算反正切,请把Inv 打勾;(如果想计算双曲正切,请把Hyp 打勾,Inv 不用打勾,如果需要计算反双曲正切,请把Inv 、Hyp 都打勾)5、x^y 即x 的y 次方。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。

与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。

影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。

其中系统的抗干扰性能是系统可靠性的重要指标计算器在人们的日常中是比较的常见的电子产品之一。

可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的八位计算器。

该设计系统是以AT89C51为单片机, P1口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,并外接驱动电路,用来保证LED的工作正常。

计算器将完成的功能有加,减,乘,除等功能。

1.2设计方法本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。

电路采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机分别相连,且数码管A,B,C,D,E,F,G分别依次与单片机的P0口相连,P0口做为字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就会认为数码管是同时点亮的,就可以达到动态显示的效果。

输入键盘采用4*4键盘。

采用软件识别键值并执行相应的操作,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。

这样循环执行。

1.3计算器基本实现功能1. 计算器可显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;2. 设计4×4键盘,分别表示0~9、+、-、×、/ 、=和清零键CL,输入的数字从设计的键盘输入;3.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音,并且输入的第九个数不接收,仍然显示原来的八位数;4.可以对计算结果小于256的两个无符号数进行加法运算,并显示计算结果。

对于×、/、和—的运算为提高部分;2 系统总体方案及硬件设计2.1 C51单片机的管脚与特点在一块芯片上集成了CPU,存储器RAM,ROM以及输入与输出接口电路,这种芯片习惯上被称为单片微型计算机,简称单片机。

MCS-51单片机是INTEL公司在1980年推出的高档8位单片机。

它的典型产品有:8051,8031,8751,80C51,80C31,87C51。

"图1 AT89C51管脚示意图AT89C51单片机由CPU,振荡器与时序电路,4个8位的I/O端口(P0,P1,P2,P3),串行口等组成。

P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口只做I/O口使用:其内部有上拉电阻。

P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由寄存器来设置,ALE 地址锁存控制信号PSEN 外部程序存储器读选通信号EA/VPP 访问和序存储器控制信号RST 复位信号XTAL1和XTAL2 外接晶振引脚VCC:电源+5V输入VSS:GND接地。

2.2 矩阵式键盘的结构与工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键。

键盘程序流程图:图2键盘流程图确定矩阵式键盘上何键被按下,用“行扫描法”。

行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法.判断键盘中有无键按下:将全部行线置低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交*的4个按键之中。

若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。

其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。

在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。

若某列为低,则该列线与置为低电平的行线交*处的按键就是闭合的按键。

把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个位,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。

图3.4×4键盘示意图2.3 LED显示原理LED 点阵显示器亦称LED 矩阵板,具有亮度高、发光均匀、可靠性好、接线简单、拼装方便等优点,能构成各种尺寸的大屏幕显示器。

因此,它被广泛应用于大型LED 智能显示屏、智能仪器仪表和机电一体化设备的显示单元中,取得了较好的效果。

由于它经济、小型的显示系统,同时要求使用方便灵活,方便地组成了由多块大屏幕LED 显示器构成的显示系统,该系统可广泛用于商场、车站、码头及其它公共场合。

LED 显示屏由ED 点阵显示器(常见型号为P2158A) 构成。

它是以发光二极管为像素,按照行与列的顺序排列而成的显示器件,采用逐行(或逐列) 扫描方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息此设计中LED数码管的显示为动态显示。

各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的。

动态显示优点是用元器件少,占I/O线少。

但缺点是有闪烁,必须扫描,花费CPU时间,编程复杂。

LED多数情况用于显示十进制数字,要将0~9的数字用7段显示,必须将数字转换为LED对应七段码的信息,比如,要显示“0”,就是让a、b、c、d、e和f段发光,显示“1”,让b和c段发光,等等如表所示。

然后根据LED是共阴极还是共阳极接法确定LED各输入端应接逻辑1还是逻辑0,我选用的是共阴接法,要显示“0” 时,a、b、c、d、e和f段就要输入逻辑1,即其段码为3F,将待显示内容“翻译”为LED段码的过程,可以由软件查表方法实现译码。

2.4晶体振荡电路MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。

这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。

图4. 晶体振荡电路3 软件设计3.1 Protues仿真电路图设计在Protues仿真中我用P1的八个管角接键盘的行和列,通过与键盘扫描程序的结合来实现其功能。

P0口通过8个上拉电阻接数码管的位选信号,P2口接数码管的片选信号。

P3口接一喇叭,当数码管显示8位数之后通过程序使其置位发出声音。

3.2 软件主要程序设计键盘扫描程序char scankey(){P1=0xff;P1_4=0;temp=P1;temp=temp & 0x0f;if (temp!=0x0f){delay(20);temp=P1;temp=temp & 0x0f;if (temp!=0x0f){temp=P1;temp=temp & 0x0f;switch(temp){case 0x0e:return(15);break;case 0x0d:return(14);break;case 0x0b:return(13);break;case 0x07:return(12);break;}/***************************************************************/temp=P1;temp=temp & 0x0f;while(temp!=0x0f){temp=P1;temp=temp & 0x0f;}}}此程序为键盘扫描中第一次扫描所用的程序,这段程序的主要过程为:初始化时,将P1.4置为低电平,通过与0x0f相与来判断所按下的键,此次为扫描位于P1.4那一行的键,若相与结果为0x0e时说明P1.0所检测出的为低电平,闭合的键应为P1.4行与P1.0列的交叉处的键。

若相与结果为0x0d则P1.1所检测为低电平,闭合的键应为P1.4行与P1.1列的交叉处的键。

若相与结果为0x0b则P1.2所检测为低电平,闭合的键应为P1.4行与P1.2列的交叉处的键。

若相与结果为0x07则P1.3所检测为低电平,闭合的键应为P1.4行与P1.3列的交叉处的键。

要把16个键盘全部扫描完需要进行4次这样的逐行扫描,所用方法相同程序类似分别另P1.5,P1.6,P1.7为低电平执行相同操作,具体程序如源程序所示。

显示程序/*码制转换:计算结果转换为显示码*/void cchange(uint cnum){uchar i,j,k;uchar n;uchar dbuffer[8]={0};for(i=0;i<8;i++){n=cnum%10;cnum=cnum/10;dbuffer[i]=n;}for(j=0;j<8;j++){if(dbuffer[7-j]!=0){for(k=0;k<=7-j;k++){dd[k]=dbuffer[k];}break;}}}/*显示数字*/void disnum(uchar unum){display(0xfe,disdata[2]);if(counter<8){change(dd,counter);if(dflag==0){indata=indata*10+unum;dd[0]=indata%10;}if(dflag==1){nextdata=nextdata*10+unum;dd[0]=nextdata%10;}}else{counter=8;alarmflag=1;}counter++;}此程序为显示程序的一部分,其同源程序代码中的数据定义部分,显示驱动程序和码制转换程序一起来实现数据在数码管中的显示。

相关文档
最新文档