模拟计算器数字输入及显示课程设计
简易计算器的课程设计

简易计算器的课程设计一、课程目标知识目标:1. 学生能理解简易计算器的内部工作原理,掌握其基本功能操作。
2. 学生能运用计算器进行基本的算术运算,包括加、减、乘、除以及百分比计算。
3. 学生理解并掌握计算器上各个按键的功能及其在数学运算中的应用。
技能目标:1. 学生能够使用计算器辅助解决实际问题,如购物找零、面积计算等。
2. 学生通过计算器的使用,提高数据输入、结果读取和运算过程纠错的能力。
3. 学生能够结合数学知识,利用计算器进行数据的简单统计分析。
情感态度价值观目标:1. 培养学生对待科学技术的积极态度,认识到计算器在日常生活和学习中的便捷性。
2. 增强学生的团队协作意识,通过小组活动,学会分享和交流使用计算器的经验。
3. 培养学生遵守计算器使用的规则,养成良好的计算器使用习惯,珍惜公共资源。
本课程设计针对的学生群体为小学高年级学生,他们已经具备了一定的数学基础和操作简单电子设备的能力。
课程性质为实用技能型,旨在通过简易计算器的教学,将理论知识与实践操作相结合,提高学生解决实际问题的能力。
在教学要求上,注重培养学生的动手操作能力和创新思维,同时强调情感态度的培养,使学生在学习技能的同时,也能形成正确的价值观。
通过具体学习成果的分解,教师可进行有针对性的教学设计和学习效果评估。
二、教学内容本章节教学内容依据课程目标,结合教材内容,科学系统地组织以下部分:1. 简易计算器基础知识:介绍计算器的发展历程、种类及简易计算器的结构组成,对应教材第二章第一节。
2. 计算器按键功能:详细讲解各按键的功能及其在数学运算中的应用,对应教材第二章第二节。
3. 基本运算操作:教授如何使用计算器进行加、减、乘、除以及百分比计算,对应教材第二章第三节。
4. 计算器在实际应用中的使用:结合实际案例,如购物找零、面积计算等,展示计算器的实用性,对应教材第二章第四节。
5. 数据的简单统计分析:利用计算器进行数据输入、处理和简单统计分析,对应教材第二章第五节。
模拟计算器课程设计报告

合肥学院计算机科学与技术系课程设计报告2009~2010学年第二学期课程JAVA语言课程设计课程设计名称模拟计算器专业班级07网络工程(1)姓名舒业超指导教师许强张贯虹2010年9月一、需求分析程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入‘=’ 符号后,窗口显示出结果。
故需先定义一个类,继承Frame类,来实现一个窗口的显示,还需添加两个文本框,一个用于输入运算表达式,另一个显示运算结果,并以等‘=’号为表达式结束符,并触发运算的开始,所以还需设置一个键盘监听器,监听‘=’号的输入。
该计算器还要两个C(清除)、A(全清除)按钮,并予以监听,触发后进行相应操作。
如果用户输入的表达式不合法,需判别出来并给出相应的错误提示。
二. 设计1.设计思想:该程序有较好的用户操作界面,组件布局采用手动布局,并对相应组件设置监听器,触发后执行相应操作。
该程序主要的算法功能是如何利用栈实现运算符优先级的比较。
先是定义申请两个堆栈,一个作为运算数栈,另一个作为运算符栈,这两个堆栈是扫描表达式时的存储容器,在扫描过程中,扫描的单位是一个字符,扫描到的运算数入数栈,运算符入运算符栈,待比较优先级后,运算数出栈进行运算。
对于表达式的非法性判断,通过捕获异常来处理,捕获到异常后,弹出一个错误提示对话框,提示表达式的非法,并要求用户全清除后重新输入正确并完整的表达式。
2.功能设计定义一个myframe类来继承Frame类,实现窗口的显示,并在其中进行手动布局,即添加一个表达式输入文本框、一个结果显示文本框、C(清除)以及A(全清除)按钮。
在表达式文本框中输入完整表达式之后按下‘=’号后,通过键盘监听器的监听,开始进行运算。
运算过程如下:先在窗口类中将表达式提取出来,此时表达式为串字符串,需通过一个方法将其进行切割,切割成字符数组形式,然后将字符数组传递给一个Calculator类中的Calculator1方法(即运算引擎)进行表达式的计算,在这个方法执行结束时可返回运算的结果,接着将结果显示在结果文本框中即可。
proteus仿真计算器课程设计

proteus仿真计算器课程设计一、课程目标知识目标:1. 学生能理解Proteus仿真软件的基本原理和操作流程;2. 学生能掌握利用Proteus进行简单计算器电路设计与仿真;3. 学生能了解并描述计算器电路中的基本电子元件及其功能;4. 学生掌握基本的数字电路知识,如逻辑门、触发器等。
技能目标:1. 学生能独立使用Proteus软件进行电路设计;2. 学生能通过Proteus软件进行电路仿真,并对结果进行分析;3. 学生能运用已学知识解决实际计算器电路设计中遇到的问题;4. 学生能通过团队协作,共同完成一个具有基本功能的计算器电路设计。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和实践欲望;2. 学生在团队合作中学会沟通、协作,培养团队精神和责任感;3. 学生通过动手实践,体验成功的喜悦,增强自信心;4. 学生树立正确的价值观,认识到科技发展对国家和社会的重要性。
本课程针对高年级学生,结合电子技术课程内容,以Proteus仿真软件为载体,使学生掌握基本电子元件和数字电路知识。
课程注重实践操作和团队协作,旨在提高学生的实际动手能力和创新能力,为后续深入学习电子技术打下坚实基础。
通过本课程的学习,学生将能够独立完成一个简单计算器电路的设计与仿真,并在过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器电路设计基础理论:- 简介计算器电路的组成和原理;- 学习基本电子元件:电阻、电容、二极管、三极管等;- 了解并掌握数字电路基础知识:逻辑门、触发器、计数器等。
2. Proteus仿真软件操作:- 学习Proteus软件的基本界面和功能;- 掌握Proteus软件的电路设计、仿真和调试方法;- 学习如何利用Proteus软件绘制电路图、设置元件参数等。
3. 计算器电路设计与仿真:- 根据计算器功能需求,设计电路原理图;- 利用Proteus软件进行电路仿真,观察并分析仿真结果;- 针对仿真过程中出现的问题,进行调试和优化。
模拟计算器数字输入及显示课程设计

摘要本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。
显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。
按键部分:采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。
注:结果不能超出65535。
(具体操作见后面仿真图)目录1 概述1.1MCS-51单片机在自动化仪表中的作用 (3)1.2掌握单片机仿真软件Proteus的使用方法 (3)1.3设计方法 (3)1.4基本功能 (4)2 系统总体方案及硬件设计2.1计算器总体思想 (5)2.2硬件的选择与连接 (6)3 软件设计3.1显示程序设计 (7)3.2键盘识别程序设计 (8)3.3运算程序设计 (10)3.4风鸣器程序设计 (10)4 Proteus软件仿真 (12)5课程设计体会 (16)参考文献 (18)附1:源程序代码 (19)附2:计算器模拟系统电路图 (31)1 概述1.1MCS-51单片机在自动化仪表中的作用单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
简易的计算器课程设计

简易的计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本功能,掌握开关机、数字输入、基本运算符号的使用。
2. 学生能掌握计算器上各按键的功能,如清除、撤销等操作。
3. 学生了解计算器的类型,如简单计算器、科学计算器等。
技能目标:1. 学生能熟练操作计算器,完成基本的数学运算,如加减乘除、百分比等。
2. 学生能运用计算器解决实际生活中的数学问题,如购物找零、计算面积等。
3. 学生能通过计算器进行简单的数据统计和分析。
情感态度价值观目标:1. 学生培养对数学的兴趣和好奇心,认识到计算器在生活中的重要性。
2. 学生养成良好的计算习惯,尊重数学知识,注重实际应用。
3. 学生在小组合作中,学会分享和倾听,培养团队协作精神。
本课程针对小学四年级学生设计,结合学生的认知特点,注重培养实际操作能力和解决问题的能力。
课程以计算器为工具,引导学生运用数学知识解决实际问题,提高学生对数学学科的兴趣和自信心。
通过分解课程目标,教师可以更好地进行教学设计和评估,确保学生达到预期学习成果。
二、教学内容本章节教学内容主要包括以下三个方面:1. 计算器的基本操作与功能- 认识计算器的各部分名称和功能- 学习开关机、数字输入、基本运算符号的使用- 掌握清除、撤销等操作教学内容关联课本第四章第一节数学工具的使用。
2. 基本数学运算- 加减乘除四则运算- 百分数、乘方运算- 混合运算顺序与计算教学内容关联课本第四章第二节数学运算的应用。
3. 计算器在实际生活中的应用- 解决购物找零问题- 计算简单图形的面积和周长- 数据的统计与处理教学内容关联课本第四章第三节数学与生活。
教学大纲安排如下:第一课时:认识计算器及其基本操作第二课时:基本数学运算与计算器操作第三课时:计算器在实际生活中的应用教学进度根据学生的掌握情况灵活调整,确保学生充分理解和掌握教学内容。
三、教学方法针对本章节内容,采用以下教学方法:1. 讲授法:教师通过生动的语言和形象的表达,向学生介绍计算器的基本操作与功能,以及基本数学运算的规则。
c设计计算器课程设计

c 设计计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本原理和功能,掌握计算器的基本操作方法。
2. 学生能够运用计算器解决基本的数学运算问题,如加减乘除、百分比计算等。
3. 学生能够理解并运用计算器上的科学计算功能,如平方根、指数运算等。
技能目标:1. 学生能够熟练操作计算器,快速进行数值输入、计算和结果读取。
2. 学生能够运用计算器进行实际问题的计算,如购物找零、时间计算等。
3. 学生能够通过计算器解决一些简单的数学问题,培养解决问题的能力和逻辑思维能力。
情感态度价值观目标:1. 学生培养对计算器的正确使用态度,明白计算器是辅助工具,提高计算效率的同时,不应过度依赖。
2. 学生在合作交流中使用计算器,培养团队合作意识和分享精神。
3. 学生通过计算器的运用,增强对数学学科的兴趣,认识到数学与生活的紧密联系。
课程性质:本课程属于实践操作类课程,注重培养学生的动手操作能力和实际问题解决能力。
学生特点:学生处于小学高年级阶段,对计算器有一定了解,好奇心强,喜欢动手操作。
教学要求:教师应引导学生通过实践操作,掌握计算器的使用方法,将计算器与实际生活问题相结合,提高学生的数学应用能力。
同时,注重培养学生的团队合作意识和正确使用计算器的态度。
在教学过程中,关注学生的学习成果,及时进行教学评估和调整。
二、教学内容1. 计算器的基本结构:介绍计算器的各个部分及其功能,如显示屏、键盘、电源等。
教材章节:《计算器与计算法则》第一章内容列举:计算器按键的功能及操作方法。
2. 计算器的基本操作:教授加减乘除、百分比、平方根、指数等基本运算。
教材章节:《计算器与计算法则》第二章内容列举:各类运算的操作步骤及注意事项。
3. 计算器在生活中的应用:通过实例教授计算器解决实际问题,如购物找零、时间计算等。
教材章节:《计算器与计算法则》第三章内容列举:实际案例及解决方法。
4. 科学计算器的使用:针对高年级学生,介绍科学计算器的拓展功能,如三角函数、对数等。
微机课设(模拟计算器运算)

一、设计题目及要求:模拟计算器运算(加,减,乘)设计要求:1.通过小键盘做加、减、乘、括号运算。
数码管显示输入数据和计算结果数据。
2.按键规定:(1)数字用小键盘0~9输入。
(2)功能按键设定:“A”——“+”“D”——“-”“B”——“*”“F”——“括号”“E”——“=”“C”——输入过程中撤消当前运算,此时屏幕显示“0”。
3.其它要求:(1)输入计算数据时,数码管应跟随显示。
若超出显示范围则不响应超出部分。
(2)按“+”、“-”、“*”或“括号”对应按键时,数码管当前显示内容不变。
(3)按“=”时,显示器显示最终计算结果。
若结果超出显示范围时,则显示“F”。
(4)按“C”时,屏幕显示“0”。
(5)需要考虑运算的优先级问题。
(6)只考虑正整数运算,不考虑负数和实数运算。
二、设计思想:调用键盘扫描子程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,并将输入的数字通过调用显示子程序显示到LED显示器上。
利用汇编的程序核对输入键的数值,并把输入的表达式存储为中缀表达式,之后转化为后缀表达式,通过调用加,减,乘,括号,子程序实现后缀表达式的加、减、乘运算。
运算完成后将运算的结果储存并显示到LED显示器上。
简要流程中五大步骤的具体描述步骤(一):从小键盘输入合法中缀算术表达式,并将其存储到S1中此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1中,然后在判断此字符是否为等号,如果不是,则循环,继续输入字符,否则,程序往下执行。
步骤(二):调用子程序CHANGE将中缀式转化为后缀式此处最核心的就是中缀表达式转化为后缀表达式的算法。
具体思路为:用一个栈来存储与运算符号.先将字符’@’压入栈中,并假设其优先级为0.然后遍历S1中的字符,遇到数字直接存入S2中并且输完数字后向S2中输入一空格以备计算结果时用。
遇到运算符则先判断其与栈顶运算符的优先级谁大。
如果S1中运算符号优先级大,则此运算符号直接入栈;否则栈顶符号先出栈到S2,待栈顶符号优先级小于S1中符号时,S1中元素入栈。
课程设计 简易计算器设计与实现

课程设计简易计算器设计与实现长江职业学院工学院毕业实践报告课题名称:简易计算器设计与实现专业班级:计算机控制技术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和功能键与清零键的代号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。
显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。
按键部分:采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。
注:结果不能超出65535。
(具体操作见后面仿真图)目录1 概述1.1MCS-51单片机在自动化仪表中的作用 (3)1.2掌握单片机仿真软件Proteus的使用方法 (3)1.3设计方法 (3)1.4基本功能 (4)2 系统总体方案及硬件设计2.1计算器总体思想 (5)2.2硬件的选择与连接 (6)3 软件设计3.1显示程序设计 (7)3.2键盘识别程序设计 (8)3.3运算程序设计 (10)3.4风鸣器程序设计 (10)4 Proteus软件仿真 (12)5课程设计体会 (16)参考文献 (18)附1:源程序代码 (19)附2:计算器模拟系统电路图 (31)1 概述1.1MCS-51单片机在自动化仪表中的作用单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。
近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
1.2 掌握单片机仿真软件Proteus的使用方法Proteus 软件具有强大的多窗口、多文件的编辑器、微控制器的集成开发环境、一系列的集成开发工具、图形界面调试器、混合模式的模拟及数字电路仿真器、代码质量检查器等。
硬件和应用软件能进行并发仿真。
最主要的一点是它能以单片机为核心仿真出包括模拟元器件在内的一些动态外设(按键,LED ,液晶显示器等) ,具有图形显示和波形显示的功能。
因此,Proteus 不仅仅是一个微处理器的仿真软件,它所支持的大量常用芯片模型为单片机和其他芯片协同仿真复杂的完整系统提供了极大的方便。
Proteus 在完整的系统仿真方面是其他单片机仿真软件所不能独立完成的。
这时,Proteus 为我们提供的不仅仅是一个单片机的仿真环境,称其为一个虚拟的单片机实验室是完全合适的,只要我们能充分的利用Proteus提供的实验器件就可以完成一个具有相当集成性的单片机系统。
1.3设计方法本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。
采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就会认为数码管是同时点亮的,就可以达到动态显示的效果。
采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
这样循环执行。
1.4基本功能1.计算器可显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;2.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音,并且返回初始显示状态。
2 系统总体方案及硬件设计2.1计算器总体思想很高兴做这个课程设计,因为学了半学期的单片机终于可以练练手了,我特别喜欢单片机,特喜欢编程,一直很向往编程,这是我编的第一个程序,我想这将是我编程生涯的开始,在编这个程序时,遇到了很多麻烦,我没有气馁过,因为我对自己有信心,终于如愿完成了课程设计。
总结自己的编程思想是这样的,首先得设计一个显示程序,这个显示程序应是动态显示,思路有两个:(1)让P2口做位扫描,P0口做段码输出,在调用显示程序时,P2口循环选通数码管每一位的,P0口也依次循环输出相对应位的代码。
如何控制数字显示呢?可先将0-9、熄灭,11个段码放入列表中,在设置八个显示缓冲区,数码管要显示的数字就存放在这八个单元中,通过控制八个缓冲区的内容来控制输出的数字。
如:要显示的是1234则将缓冲区从低位开始依次放入04H、03H、02 H、01H剩余四位放入11H(代表数码管熄灭的代码),要注意的是,当调用显示程序时,通过程序根据八个数码管缓冲区的数字调用相对应的代码就可以循环输出,但是我们看到的是同时显示1234,因为视觉停留的原故。
当它的循环频率大于人的视觉停留时间,人们就认为它是同时显示的。
虽然八个数码管都输出了,但是高四位送的代码是熄灭,即不显示,当不输入数字时使八个缓冲区初始化为,第一位放00H,其余放11H,就可以只显示0,等待输入数据,这样就控制了显示位数实现了动态显示。
(2)让P2口做位扫描,P0口做段码输出,设置一个单元用来记录输入数字的位数,这样可以不用循环扫描每一位,而是根据输出位数判断扫描哪些位。
如上面的例子,当显示1234时,不用在向高四位送入11H,也不需要熄灭的代码了。
调用显示程序时先选通第一位(最低位),送出代码1,然后判断是否显示完毕,(通过记录数字个数单元的内容减一是否得0来判断),如没显示完则显示下一位,如显示完则跳出。
在本设计中选用后者。
其次是设计键盘扫描程序,这里采用4*4矩阵键盘,通过软件识别,行和列可接在同个端口上,也可接在不同端口上,本设计行接在P3口的高四位,列接在P1口的低四位,通过循环扫描行,读取列的数据判断是否有键按下,如果有则调用按键识别程序识别是哪个键,执行相应的操作,按键识别是根据按键时得到的列代码与行代码组合,来判断是哪个键的。
按键识别后,如果是数字键则直接放入数码管显示缓冲区,如果再次有数字键按下,则应将缓存区的数字向高位移一位,将刚输入的数放入最低位,并且记录按键次数,每输入一个键值都调用显示程序显示出来,如果是运算符,则执行相应的运算,然后在调用显示程序显示结果。
最后是运算程序的加入,运算程序很简单,只要把+、-、*、/分别做成模块,用到时即可调用,本设计的难点是键盘识别和数值显示,因为这里边涉及到键盘输入的数值在内部要转换成10进制运算,运算结果要转换成各个位的显示数字输出。
2.2硬件的选择与连接单片机选择AT89C51,数码管选择共阳机八位数码管,键盘4*4矩阵键盘,P0口接上拉电阻,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0. 7管脚相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7管脚相连,键盘的第0行到第3行依次与单片机的P3.4—P3.7,键盘的第0列到第3列依次与单片机的P1.0—P1.3,AT8 9C51接12MHZ晶振。
P3.0接风鸣器。
3 软件设计3.1显示程序设计显示程序流程图如图1。
我的显示程序是这样设计的,因为考虑到显示程应具有通用性,在不进行输入时显示0,输入时显示输入的数字或运算结果,而且要使8个数码管同时显示不同的数字,选用动态显示应是最佳的。
将30H-37H单元设置成数码管显示缓冲区,分别存放数码管各个位要显示的数据,40H单元作为输入数据的计数单元。
因为运算结果超出范围时应报错,使数码管显示“ERROR”即可,将数码管的0-9的代码和“ERROR”代码存于LABL E1列表中。
当调用显示程序时,显示程序根据40H单元的记录的个数决定数码管显示的位数。
如果输入错误将在数码管上显示“ERROR”。
这样就得到了显示程序的入口:30H-37H,依次存放个位-千万位。
40H,存放输出的数字位数。
出口:数码管,P0输出字段码 P2输出位选码。
图1数码管显示流程图3.2键盘识别程序设计:键盘识别是这样设计的,首先将P3口送0EOH,将P1口先送1在读P1口的数据当P1口低四位全一时说明没有键按下,在扫描下一行,如果P1口不全一,则有键按下,将P3口高四位与P1口低四位组合成一个字节,放入R5寄存器中,按键去抖,判键是否松开,如松开则将得到的键值判别是哪个键,如果是数字键则首先将其对应的数字(按键代码对应如下表)放入缓冲区30H,同时将将键值放入结果缓冲区,并调用显示程序,显示键值,在调用扫描键盘程序,如果在有键值输入则将原来的数值在数码管显示缓冲区向高位依次移一位,将刚键入的数值放入最低位,并将原来的数值乘十加上刚键入的数放人结果缓冲区,然后调用显示程序,如果是运算符,则记录运算符标志,加法用01H表示,减法用02H表示,乘法用03H表示,除法用04H表示,并将结果缓冲区的数转移到中间结果缓冲区,将结果缓冲区清零,等待输入运算数据,当按等号时,根据记录的运算符标志,判断是那种运算,执行运算将结果依次除10取余数放入结果显示缓冲区,调用显示程序。