最新单片机简易计算器课程设计

合集下载

51单片机计算器课程设计

51单片机计算器课程设计

51单片机计算器课程设计一、课程目标知识目标:1. 让学生掌握51单片机的基本原理及其在计算器中的应用。

2. 使学生理解并掌握计算器程序设计的步骤和要点,包括键盘输入、显示输出、数据处理等。

3. 帮助学生了解并掌握基本的数字逻辑运算,如加、减、乘、除等。

技能目标:1. 培养学生运用51单片机进行计算器硬件设计和程序编写的能力。

2. 培养学生运用Keil等开发工具进行51单片机程序开发的能力。

3. 培养学生通过查阅资料、团队协作解决实际问题的能力。

情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其主动学习的态度。

2. 培养学生的创新意识和动手能力,使其具备解决问题的信心。

3. 培养学生良好的团队协作精神和沟通能力,提高其综合素质。

课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际问题解决能力。

学生特点:学生具备一定的电子技术基础和编程能力,对51单片机有一定了解。

教学要求:结合学生特点,注重理论与实践相结合,以项目为导向,引导学生主动探索、实践和解决问题。

通过课程学习,使学生达到预定的知识目标和技能目标,并培养其情感态度价值观。

在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 51单片机原理回顾:涉及51单片机的内部结构、工作原理、寄存器等基础知识。

相关教材章节:第一章《51单片机概述》2. 计算器功能设计:介绍计算器的基本功能,如数字输入、运算符选择、结果显示等。

相关教材章节:第二章《51单片机I/O口应用》3. 硬件电路设计:讲解计算器硬件电路的搭建,包括键盘电路、显示电路等。

相关教材章节:第三章《51单片机硬件设计基础》4. 程序设计:分析计算器程序设计的流程,包括程序框架、各功能模块的实现等。

相关教材章节:第四章《51单片机C语言编程》5. 软件开发工具使用:介绍Keil开发环境的使用方法,编译、下载程序到51单片机。

51简易计算器课程设计

51简易计算器课程设计

51简易计算器课程设计一、课程目标知识目标:1. 学生能理解并掌握51简易计算器的基本原理和功能。

2. 学生能够运用所学的编程知识,编写出具备加、减、乘、除基本运算功能的51简易计算器程序。

3. 学生能够理解并运用51单片机的内外部中断,实现计算器按键识别与功能调用。

技能目标:1. 学生能够熟练使用51单片机的开发环境和编程工具。

2. 学生通过实践操作,掌握51单片机的I/O口编程,提高动手实践能力。

3. 学生能够通过团队协作,解决编程过程中遇到的问题,提升问题解决能力。

情感态度价值观目标:1. 学生培养对单片机编程的兴趣,增强学习计算机科学的热情。

2. 学生在课程实践中,养成动手操作、观察问题、思考问题的良好习惯。

3. 学生通过团队协作,培养沟通与协作意识,增强团队荣誉感。

本课程针对五年级学生设计,课程性质为实践性较强的信息技术课程。

结合学生特点,课程目标注重培养学生的学习兴趣和动手能力,同时考虑教学要求,将目标分解为具体的学习成果,为后续的教学设计和评估提供依据。

二、教学内容1. 51单片机基本原理与结构:介绍51单片机的组成、工作原理及特点,让学生对51单片机有整体的认识。

- 教材章节:第一章 51单片机概述2. 51单片机开发环境与编程工具:学习如何搭建51单片机开发环境,掌握编程工具的使用。

- 教材章节:第二章 51单片机开发环境与编程工具3. I/O口编程:学习51单片机I/O口的基本操作,实现计算器按键输入与LED显示。

- 教材章节:第三章 I/O口编程与应用4. 基本运算程序编写:学习编写加、减、乘、除基本运算的程序,掌握运算逻辑。

- 教材章节:第四章 算术运算程序设计5. 中断编程与应用:学习51单片机中断原理,运用外部中断实现按键识别与功能调用。

- 教材章节:第五章 中断系统及其应用6. 简易计算器程序设计与实现:将所学知识综合运用,设计并实现具备基本运算功能的简易计算器。

- 教材章节:第六章 综合应用实例教学内容根据课程目标进行科学性和系统性组织,制定详细的教学大纲,确保教学内容的安排和进度。

单片机简易计算器设计(二)2024

单片机简易计算器设计(二)2024

单片机简易计算器设计(二)引言:单片机简易计算器是一种以单片机为核心实现基本算术运算的小型电子设备。

本文继续探讨单片机简易计算器的设计方案,并详细介绍了其具体实现步骤和功能。

正文:第一大点:电路设计1. 选择适当的单片机型号2. 设计电源电路,确保稳定供电3. 搭建输入输出电路,包括按键和显示模块的连接4. 设计外部调试接口,方便程序的调试和更新5. 进行电路的模拟仿真和实际测试,确保电路的正常工作第二大点:程序编写1. 定义输入输出的数据结构2. 编写初始化程序,配置端口和寄存器3. 编写按键扫描程序,实现按键的读取和编码4. 编写基本算术运算程序,包括加法、减法、乘法和除法5. 编写显示程序,将结果显示在数码管或液晶屏上第三大点:算法优化1. 选择合适的算法,使计算速度尽可能快2. 使用位运算代替乘除法运算,提高运算效率3. 使用查表法来加速计算过程4. 增加缓存机制,优化存储空间的使用5. 对程序进行反复优化和测试,确保算法的准确性和高效性第四大点:错误处理与异常处理1. 设计输入错误的检测机制,防止用户输入无效的数据2. 处理溢出和除零等运算错误,避免程序崩溃3. 设计异常处理程序,对错误输入进行友好提示4. 进行充分的测试和调试,确保程序的稳定性5. 添加日志功能,记录错误信息和运行状态,便于排查问题第五大点:功能扩展1. 添加科学计算功能,如平方根、三角函数等2. 实现单位换算功能,方便不同单位之间的转换3. 增加储存器功能,可以保存计算结果或中间数据4. 设计菜单界面,使用户可以自由选择不同的功能5. 进行实际应用测试,检验扩展功能的可靠性和实用性总结:本文对单片机简易计算器的设计进行了全面的阐述。

通过合理的电路设计、程序编写和算法优化,以及错误和异常处理,使得计算器具备稳定高效的运算能力。

同时还介绍了功能扩展方面的设计思路,为后续的开发和升级提供了参考。

51单片机简易计算器设计-51单片机简易计算器课程设计

51单片机简易计算器设计-51单片机简易计算器课程设计

51单⽚机简易计算器设计-51单⽚机简易计算器课程设计⽬录⼀、设计任务和要求 (2)1、设计要求 (2)2、设计⽅案的确定 (2)⼆、硬件设计 (2)1、单⽚机最⼩系统 (2)2、键盘电路的设计 (3)3、显⽰电路的设计 (3)4、系统硬件电路图 (4)三、软件设计 (5)1 系统设计 (5)2 显⽰电路的设计 (6)3、程序清单 (8)四、调试与仿真 (14)五、试验箱实物图 (14)六、⼼得体会 (15)⼀、设计任务和要求1、设计要求利⽤单⽚机设计并制作简易计算器。

具体要求如下:1、4*4按键⽤于0~9的数字输⼊、加减乘除、等于、清零功能;2、能实现简单的加减乘除运算;3、输⼊数字及计算结果通过LED或LCD显⽰器显⽰。

2、设计⽅案的确定按照设计要求,本课题需要使⽤数码管显⽰和扩展4*4键盘,由于AT89C51芯⽚的I⼝不够多,⽽且为了硬件电路设计的简单化,故选择串⾏动态显⽰和⽤P1⼝扩展4*4键盘,扩展的4*4键盘定义⼗个数字键,六个功能键,使⽤串⾏动态显⽰显⽰运算结果。

主程序进⾏初始化,采⽤⾏列扫描进⾏查表得出键值,每次按键后调⽤显⽰⼦程序。

⼆、硬件设计简易数字计算器系统硬件设计主要包括:键盘电路,显⽰电路以及其他辅助电路。

下⾯分别进⾏设计。

1.单⽚机最⼩系统单⽚机最⼩系统就是⽀持主芯⽚正常⼯作的最⼩部分,包括主控芯⽚、复位电路和晶振电路。

(1)、复位电路复位电路本设计采⽤上电与⼿动复位电路,电阻分别选取100和10K,电容选取10uF,系统⼀上电,芯⽚就复位,或者中途按按键也可以进⾏复位。

(2)、晶振电路图三晶振电路晶振电路是单⽚机的⼼脏,它⽤于产⽣单⽚机⼯作所需要的时钟信号。

单⽚机的晶振选取11.0592MHz,晶振旁电容选取30pF。

2.键盘电路的设计键盘可分为两类:编码键盘和⾮编码键盘。

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

单片机课程设计计算器

单片机课程设计计算器

单片机课程设计 计算器一、课程目标知识目标:1. 学生能理解单片机的基本原理和功能,掌握计算器的设计流程。

2. 学生能运用所学知识,设计并实现一个具有基本运算功能的单片机计算器。

3. 学生了解并掌握单片机编程的基本语法和逻辑结构。

技能目标:1. 学生掌握使用单片机开发工具进行程序编写、调试和下载的方法。

2. 学生具备分析问题、设计算法和解决问题的能力,能运用单片机技术解决实际计算问题。

3. 学生能够通过小组合作,进行项目设计和实践,提高团队协作能力。

情感态度价值观目标:1. 学生培养对单片机技术及电子工程的兴趣,激发创新意识和探索精神。

2. 学生通过动手实践,体验成功解决问题的喜悦,增强自信心和自主学习能力。

3. 学生在学习过程中,树立正确的价值观,认识到科技发展对社会进步的重要性。

课程性质:本课程为实践性较强的课程,要求学生在理论学习的基础上,动手实践,完成单片机计算器的设计与制作。

学生特点:学生处于高年级阶段,已具备一定的电子技术基础和编程能力,具备独立思考和解决问题的能力。

教学要求:结合学生特点,注重理论与实践相结合,引导学生通过小组合作,完成课程任务,达到课程目标。

同时,关注学生的个性差异,提供个性化的辅导和支持。

在教学过程中,注重培养学生的创新能力、实践能力和团队协作能力,为后续学习打下坚实基础。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. 理论知识学习:- 单片机原理与结构:讲解单片机的组成、工作原理及性能特点,对应教材第1章。

- 编程语言基础:介绍单片机编程的基本语法、逻辑结构和编程规范,对应教材第2章。

2. 实践技能培养:- 硬件设计与连接:学习如何选用合适的元器件,设计计算器硬件电路,对应教材第3章。

- 软件编程与调试:掌握单片机程序编写、调试和下载的方法,对应教材第4章。

3. 项目实践:- 计算器设计与实现:结合所学知识,分组进行计算器项目设计,包括硬件选型、电路设计、程序编写和调试等,对应教材第5章。

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

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

基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
1. 研究背景
•计算器是人们日常生活和工作中常用的工具之一。

•通过设计简易计算器,可以加深学生对51单片机的理解和应用。

2. 目标和需求
•设计一个基于51单片机的简易计算器,能够进行基本的四则运算和开方运算。

•要求计算器能够显示输入和计算结果。

•要求计算器具备简单的界面和操作。

3. 设计方案
•使用51单片机作为计算器的控制核心。

•通过键盘输入数字和运算符,并显示在液晶屏上。

•根据输入的运算符,进行相应的计算,并将结果显示在液晶屏上。

4. 硬件设计
•使用51单片机作为主控芯片。

•连接液晶屏模块,用于显示输入和计算结果。

•连接键盘模块,用于输入数字和运算符。

5. 软件设计
•使用C语言进行编程。

•设计主程序,包括初始化、输入处理和计算输出等功能。

•设计函数,实现基本的四则运算和开方运算。

6. 实验结果
•成功设计并实现了基于51单片机的简易计算器。

•可以正常进行基本的四则运算和开方运算。

•输入和计算结果能够准确显示在液晶屏上。

7. 总结与展望
•通过设计这个简易计算器,学生对51单片机的理解和应用能力有了提高。

•下一步可以考虑增加更多的功能,如科学计算和数据存储等。

以上是本次基于51单片机简易计算器课程设计的报告。

通过这个实验,学生对51单片机的应用能力得到了提升,进一步增强了对计算器的理解。

在未来的课程设计中,可以进一步拓展功能,提升计算器的实用性和功能性。

单片机计算器课程设计报告

单片机计算器课程设计报告

单片机课程设计课题名称:单片机简易计算器课程设计姓名:XXXX 学号:XXXXXX 年级专业班级:XXXXXXX学院:XXXX设计时间:XXXXXXX设计地点:XXXXXX指导老师:**目录一、单片机课程设计实习目的 (2)1、增进对单片机的感性认识,加深对单片机理论方面的理解; (2)2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O口等; (2)3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。

(2)二、实习课题任务 (2)1、课题:简易计算器的设计 (2)2、设计基本要求: (2)利用单片机试验箱的键盘模块以及显示模块实现百位以内加减乘除。

(2)任选一种显示方式:即中文液晶显示屏、LED数码管可任选一种。

(2)3、功能实现: (2)4、设计任务 (2)5、设计思路 (2)三、系统分析 (4)四、硬件系统设计 (5)1、键盘接口电路 (5)2、数码管显示电路 (6)五、软件系统设计 (6)六、调试结果 (7)1)10以内计算器 (7)2)100以内计算器 (7)七、结论 (8)八、体会与收获 (8)九、附件(程序): (9)1、程序一:只能进行两位数与两位数格式的四则运算 (9)2、程序二:能进行百位以内的四则运算,但一位与两位数运算结果调试不对 (18)一、单片机课程设计实习目的1、增进对单片机的感性认识,加深对单片机理论方面的理解;2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O 口等;3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。

二、实习课题任务1、课题:简易计算器的设计2、设计基本要求:利用单片机试验箱的键盘模块以及显示模块实现百位以内加减乘除。

任选一种显示方式:即中文液晶显示屏、LED数码管可任选一种。

3、功能实现:计算器将完成的功能有两位数以内加、减、乘、除功能,并通过LED数码管显示输入值及结果。

4、设计任务1.扩展4*4键盘,其中10个数字,5个功能键,1个清零2.使用五位数码管接口电路3.完成十进制的四则运算(加、减、乘、除);4.实现低于三位小于255数字的连续运算;5.使用keil C软件编写程序;6.最后用ptoteus仿真;7.具有较强的抗干扰能力;8.体积小、功耗低,便于嵌入其他系统。

单片机 课设 简易计算器设计(减、除)

单片机 课设  简易计算器设计(减、除)

第1章.设计原理本次课程设计我用8255完成了对开关和二极发光管的控制来实现简单计算器的运算。

首先是用开关来输入数据,然后使开关发光管的相应地亮灭。

8255接法:D0接系统的D0口;CS接系统的P27;WR接系统的WR;RD接系统的RD; A口接LED;A0A1口接系统的A0,A1;C口接开关。

设计分两大部分:减法程序和除法程序。

每一部分首先输入数据,然后由控制口控制相应的二极管发光并且延时显示一段时间,然后在数据显示时间内输入第二个数据,然后由系统控制显示,显示完毕后显示计算结果,依然延时显示一段时间。

在每次的计算之前都由系统控制将第一个数据保存,以便计算。

由此,我的程序实现了简单的减、法运算。

第2章.设计方案2.1硬件部分设计方案硬件系统是指构成微机系统的实际装置,通常是由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。

单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种拓展接口电路、外部设备等才能构成一个单片机应用系统。

2.1.1 单片机部分PC机一台,TD-NMC+实验教学系统一台。

2.1.2 输入部分采用开关控制输入,电路配置灵活,软件结构简单。

2.1.3 显示部分在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)、LCD 液晶显示亲以及CRT接口。

本实验采用8个发光二极管亮灭来表示数字。

2.2软件部分设计方案软件部分的设计思路时将整个程序划分为开关输入部分、显示部分、运算程序部分。

运算程序部分包括减、除2个子程序。

软件流程大致如下:开始,然后是进行开关输入数据,b口控制输入,然后a,b口相关,即把开关和LED二极数码发光管相关,使开关控制二极管。

接下来使输入数据延时显示一段时间,然后输入下一个数据,先保存第一个输入数据后进行算术运算。

然后延时显示结果。

程序流程图如下:开始输入被减/除数延时显示被减/除数输入减/除数延时显示减/除数保存被减/除数计算结果延时显示结果图1.1第3章系统元器件简介3.1 SST89E554RC 简介SST89E554RC 具有在系统可编程(ISP)和在应用可编程(IAP)技术,该器件是 SST 公司推出的 8 位微控制器 FlashFlex51 家族中的一员,内置仿真程序,完全取代传统的硬件仿真器和编程器。

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

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

基于51单片机简易计算器课程设计报告引言:计算器是现代社会中常见的电子设备之一,它能够帮助人们进行各种数学运算,提高计算效率。

本文将介绍基于51单片机的简易计算器的设计过程及实现方法。

一、设计目标本次设计的目标是实现一个简易计算器,能够进行基本的加减乘除运算,并能够显示计算结果。

通过该设计,旨在加深学生对51单片机的理解,培养其实际操作能力。

二、硬件设计1. 电源模块:采用稳压电源模块,提供稳定的电压给单片机及其他电路模块。

2. 单片机模块:采用51单片机,作为计算器的核心控制模块,负责接收按键输入、进行运算和显示结果。

3. 按键模块:设计合适的按键电路,用于输入数字和操作符。

4. 显示模块:采用数码管或液晶显示屏,显示计算结果。

5. 连接线:将各个模块连接起来,确保信号的传输畅通。

三、软件设计1. 初始化:设置单片机的工作模式、端口方向和初始状态。

2. 按键扫描:通过轮询的方式检测按键是否被按下,若有按键按下则进行相应的处理。

3. 输入处理:根据按键的顺序和操作符的位置进行输入的处理,将输入的数字和操作符分别存储在相应的变量中。

4. 运算处理:根据输入的操作符进行相应的运算,得出计算结果。

5. 结果显示:将计算结果通过数码管或液晶显示屏进行显示。

6. 清零处理:在计算结果显示完毕后,对相关的变量进行清零处理,以便进行下一次的计算。

四、功能实现1. 加法运算:通过按下"+"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。

2. 减法运算:通过按下"-"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。

3. 乘法运算:通过按下"*"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。

单片机课程设计__简易计算器范文

单片机课程设计__简易计算器范文

4×4键盘的简易计算器和LED数码管的显示1、设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统。

2、该系统具有加减乘除等功能。

3、用Proteus 7仿真工作的全过程。

4、有相应的实物图5、掌握4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。

2、设计思想2.1 硬件设计思想用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.7各管脚作输入线,以单片机的P2.0-P2.7和P0.0—P0.7各管脚作输出线,在数码管上显示每个按键“0-9”的序号。

键盘中对应按键的序号排列如图(1)所示。

数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。

即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。

该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。

2.2 软件设计思想整个程序可以实现十进制内的加减乘除,其中包含了延时子程序(去抖动),加法、减法、除法、乘法等子程序。

(1)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。

(2)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。

(3)判别键号先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号的计算。

(4)显示结果显示器接高电频,左边显示器接P0,右边显示接P2,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。

单片机课程设计报告(简易计算机)

单片机课程设计报告(简易计算机)

专业综合课程设计任务书班级:学号:姓名:成绩:电子与信息工程学院计算机科学系图1.2 图1.3图1.42.3键盘电路这部分有16个button构成4*4矩阵,通过p1口进行行扫描方式实现按键的读取。

硬件电路图如图1.4。

2.4总体硬件图如图1.5图1.53 软件详细设计3.1键盘扫描子程序要进行数据的计算就必须进行数据的输入,也就是确定按键输入的数值是什么,这就需要对键盘进行行扫描,从而确定究竟是那个键按下。

对于键盘的扫描,既可以使用行扫描也可以使用列扫描,这里采用行扫描的方法完成对键盘的扫描行扫描就是逐行扫描键盘,看那一行有键按下,再通过返回的见马来确定究竟是哪个按键按下。

对第一行扫描就置p1.0为底电平,其余p1口为高电平,如果有按键按下,则p1口的值就会变为别的值,再由新值来确定是那个键按下。

程序流程图如图1.6图1.6dd:mov r0,#0f7h mov r1,#0cc:mov a,r0 mov p1,amov a,p1 mov r2,asetb c mov r3,#4bb:rlc a jnc aaee:inc r1 djnz r3,bbmov a,r0 setb crrc a mov r0,ajc cc ljmp ddKAOO:LJMP KAO BBB2:LJMP BB2aa:lcall mm mov a,p1xrl a,r2 nz eeff:mov a,p1 xrl a,r2jz ff MOV A,51HCJNE A,#1,BBB2RET3.4主程序及其他部分程序下图为主程序流程图:主要有:初始化子程序,清屏子程序,固定字符显示,单元定义,端口定义,字模部分。

主程序:RG 0LJMP STARTSTART:MOV SP,#60HLCALL INT ;调用初始化子程序START1:LCALL CLEAR ;调用清屏子程序初始化子程序:INT: MOV COM,#0C0H ;设置显示起始行为第一行LCALL PRM0LCALL PRR0MOV COM,#3FH ;开显示设置LCALL PRM0LCALL PRR0RET清屏子程序:CLEAR:MOV R4,#00H。

51单片机计算器课程设计

51单片机计算器课程设计

51单片机计算器课程设计1. 前言51单片机凭借其简单易用、功能强大、可靠性高等诸多特点,成为了广大电子爱好者及相关从业人员的首选芯片类型。

在本次课程设计中,我们将利用51单片机的优势,设计一个简单的计算器。

通过该计算器的实现,旨在提高学生对51单片机的掌握程度,并且让他们能够更加深入地理解单片机的中断、定时器、按键等重要功能模块的理解。

2. 计算器设计需求分析在现实生活中,计算器的实现方案有很多,例如典型的哈工大计算器,其实现原理基于双栈式逆波兰表达式求值等。

而在51单片机的实现方案中,为了简化设计难度,我们采用了两次按键计算器。

即用户需要通过按数字键,来输入计算器要计算的操作数,在输入完所有的操作数后,再按下其他的计算符键,计算器通过读取已经输入的操作数,并根据按下的计算符键,来执行计算器指定的计算操作。

3. 设计思路在上面的需求分析中,我们设计了一个基于两次按键进行计算的计算器。

如果直接采用传统数字键和计算符键按下即时执行的计算器交互方式,由于涉及到用户输入顺序的问题,将会使程序开发难度大大增加。

因此,我们可以利用中断机制,在用户按下数字键和计算符键时,分别将其存储到数组中。

等到用户完成所有操作数的输入后,再由程序根据存储在数组中的操作数,按照计算符键的指令,进行计算操作。

4. 硬件设计计算器硬件设计采用与按键通用的IO口输入输出方式。

在本例中,我们设置计算器的数字键和计算符键均为IO口输入。

鉴于本次设计旨在简化流程,我们将设计与单片机外接数码管连接的部分留给读者自行研究。

在本次课程设计中,我们将不涉及数字键和计算符键信号的去抖动处理。

5. 软件设计通过对计算器设计的需求分析、设计思路以及硬件设计的分析后,我们来设计计算器的软件部分。

5.1 端口初始化根据本次课程设计的需求,我们采用两个IO口输入来实现计算器的数字键和计算符键,因此需要对IO口进行初始化。

```void PortInit(){P1=0xff;/数字键P1.0—P1.7设定为输出P1=0xff;/计算符键P2.0—P2.7设定为输出}```5.2 按键检测监测按键是否按下需要使用到中断机制,在本次课程设计中采用P1口的0~7位和P3口的0~3位硬件中断。

单片机简易计算器课程设计报告

单片机简易计算器课程设计报告

课程设计成果说明书题目:简易计算器的设计学生姓名:向得智学号:130407132学院:船舶与海洋工程学院班级:A13船舶电子电气指导教师:目录一、课程设计目的……………………………………………………………二、硬件电路设计……………………………………………………………2.1 AT89C51的功能介绍……………………………………………………………2.1.1简单概述…………………………………………………………………………2.1.2主要功能特性·……………………………………………………………………2.1.3 AT89C51的引脚介绍………………………………………………………………2.2 显示电路·………………………………………………………………………………2.2.1 LM016L的结构及功能……………………………………………………………2.2.2 LM016L的引脚功能介绍…………………………………………………………2.2.3 LM016L的电路接线图……………………………………………………………2.3振荡电路设计………………………………………………………………………2.4键盘电路设计………………………………………………………………2.5键盘扫描子程序设计…………………………………………………………………2.6总电路……………………………………………………………………………三、程序设计与说明…………………………………………………………3.1程序主流程图………………………………………………………………四、结论……………………………………………………………………………五、体会与收获……………………………………………………………………参考文献……………………………………………………………………………一.课程设计的目的单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。

基于51单片机简易计算器课程设计报告(一)

基于51单片机简易计算器课程设计报告(一)

基于51单片机简易计算器课程设计报告(一)基于51单片机简易计算器课程设计报告1. 介绍在本次课程设计中,我设计了一个基于51单片机的简易计算器。

本报告将会详细介绍该计算器的设计思路、功能实现以及课程设计中遇到的问题与解决方法。

2. 设计思路功能需求•支持基本的加、减、乘、除运算•具备数字输入与显示功能•具备清零和等于功能•具备连续计算功能硬件设计本计算器的硬件设计主要包括51单片机、LCD显示模块以及按键输入模块。

其中,51单片机负责控制计算器的逻辑,LCD显示模块用于显示计算结果和用户输入,按键输入模块用于接收用户的输入。

软件设计计算器的软件设计主要分为以下几个部分: - 初始化:初始化51单片机、LCD模块以及按键模块。

- 按键扫描:通过扫描按键模块,获取用户的输入。

- 数字输入与显示:根据用户输入,将数字显示在LCD上。

- 运算逻辑:根据用户输入的运算符和数字,执行相应的计算操作,并将结果显示在LCD上。

3. 功能实现初始化在初始化阶段,我们需要初始化51单片机的GPIO口、LCD模块以及按键模块。

具体的初始化代码如下:// 初始化51单片机的GPIO口// 初始化LCD模块// 初始化按键模块按键扫描为了获取用户的输入,我们需要通过按键模块进行扫描。

具体的按键扫描代码如下:// 扫描按键模块// 如果检测到按键按下,则进行相应的处理数字输入与显示当用户按下数字键时,我们将获取到的数字输入缓存起来,并将其显示在LCD上。

具体的数字输入与显示代码如下:// 获取按键输入的数字// 将数字添加到输入缓存// 将输入缓存显示在LCD上运算逻辑当用户按下运算符键时,我们需要根据输入的数字和运算符执行相应的计算操作,并将结果显示在LCD上。

具体的运算逻辑代码如下:// 获取运算符输入// 根据运算符和输入的数字执行相应的计算操作// 将计算结果显示在LCD上清零和等于功能为了提升用户体验,我们还可以添加清零和等于功能。

单片机课程设计报告-简易计算器

单片机课程设计报告-简易计算器

目录一、概述 (2)二、实验内容 (2)三、硬件设计 (3)1 设计总体框图 (3)2 实际电路 (3)(1)复位电路 (4)(2)时钟电路 (5)(3)EA/VPP(31脚)的功能和接法 (6)(4)键盘输入电路 (6)(5)数码管显示电路 (7)四、软件设计 (8)1 程序内容 (8)2 C语言程序 (9)五、Protues仿真 (9)六、设计总结 (10)七、附录 (11)1 C语言程序: (11)2焊接电路板实物图 (18)3 芯片引脚图 (19)一、概述单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。

单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。

单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。

二、实验内容自制一个单片机最小系统,包括串口下载、复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。

三、硬件设计1 设计总体框图2实际电路在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。

MCS-5l 系列单片机的复位引脚RST(第9 管脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。

如果RST 持续为高电平,单片机就处于循环复位状态。

复位操作通常有两种基本形式:上电自动复位和开关复位。

上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。

随之+5V 电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。

单片机简易计算器课程设计

单片机简易计算器课程设计

单片机简易计算器课程设计一、课程目标知识目标:1. 学生能理解单片机的基本结构及其工作原理,掌握简易计算器的硬件组成。

2. 学生能掌握C语言编程的基本语法,运用其编写简易计算器的程序代码。

3. 学生能了解简易计算器的工作流程,理解其功能模块的设计与实现。

技能目标:1. 学生能够运用所学知识,设计并搭建简易计算器的硬件电路。

2. 学生能够运用C语言编写简易计算器的程序,实现加、减、乘、除等基本运算功能。

3. 学生能够对计算器程序进行调试和优化,解决实际问题。

情感态度价值观目标:1. 学生通过课程学习,培养对单片机及编程的兴趣,激发探究精神。

2. 学生在团队协作中学会沟通、分享,培养合作意识,增强团队精神。

3. 学生能够认识到所学知识在生活中的应用,体会科技改变生活的意义。

课程性质:本课程为实践性较强的课程,要求学生动手操作,结合理论知识进行实际应用。

学生特点:学生已具备一定的电子基础和编程知识,对单片机有一定了解,但实践能力有待提高。

教学要求:注重理论与实践相结合,引导学生主动参与,培养其动手能力和解决问题的能力。

通过课程学习,使学生能够将所学知识运用到实际项目中,提高其综合素质。

二、教学内容1. 硬件知识:- 单片机基本结构:介绍51单片机的内部结构、工作原理及其引脚功能。

- 硬件电路设计:讲解简易计算器的硬件组成,包括按键、显示屏、电源等模块。

2. 软件编程:- C语言基础:复习C语言基本语法,包括变量、数据类型、运算符、控制结构等。

- 编程实践:根据简易计算器的功能需求,编写程序代码,实现基本运算功能。

3. 系统设计与实现:- 系统设计:分析简易计算器的功能模块,设计程序流程图。

- 系统实现:指导学生搭建硬件电路,编写程序代码,实现简易计算器的功能。

4. 调试与优化:- 调试方法:教授程序调试方法,培养学生解决问题的能力。

- 优化策略:讨论程序优化策略,提高计算器性能。

教学内容安排与进度:1. 第1周:单片机基本结构及硬件电路设计。

单片机课程设计 简易计算器

单片机课程设计  简易计算器

目录中文摘要 (Ⅰ)英文摘要 (Ⅱ)1 任务及要求 (2)1.1设计任务 (2)1.2 设计要求 (2)2 设计思想 (2)2.1 硬件设计思想 (2)2.2 软件设计思想 (2)3 电路原理与电路图 (3)3.1 电路原理 (3)3.2 电路原理图 (3)4 流程图与算法描述 (3)4.1 流程图 (4)4.2 算法描述 (5)5 仿真结果 (6)5.1 仿真结果 (6)6 设计总结 (11)6.1 设计体会 (11)参考文献 (12)致谢 (12)附录 (13)1 任务及要求1.1设计任务设计一个4×4的键盘的简易计算器和LED数码管的显示电路的Proteus仿真及汇编程序设计。

1.2 设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统。

2、该系统具有加减乘除等功能。

3、用Proteus 7仿真工作的全过程。

4、有相应的实物图5、掌握4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。

2 设计思想2.1 硬件设计思想用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.7各管脚作输入线,以单片机的P2.0-P2.7和P0.0—P0.7各管脚作输出线,在数码管上显示每个按键“0-9”的序号。

键盘中对应按键的序号排列如图(1)所示。

数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。

即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。

该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。

2.2 软件设计思想整个程序可以实现十进制内的加减乘除,其中包含了延时子程序(去抖动),加法、减法、除法、乘法等子程序。

(1)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。

最新单片机简易计算器课程设计

最新单片机简易计算器课程设计

最新单片机简易计算器课程设计1.首先给出显示缓冲区“00”的初始值00’,并重置数据存储单元。

2.主程序调用键盘扫描子程序来确定键值。

这是第一次将该号码直接分配给23H单元。

如果第二次输入数字,第一个值乘以10,然后加到第二个值上。

结果存储在23H单元中,R4计数两次,表示已输入两位。

扫描键值时,不会分配和显示该值。

等待操作符号被按下,直接按等号计算并显示为零,如加.减.乘.除R5加1。

清除R4,表示可以输入下一个操作数,与第一个操作数相同,并等待按键。

清除键在任何情况下都会被清除,这相当于软复位。

3.扫描键盘后,调用数据显示转换子程序并选择。

由于这个任务是两个比特和四个运算,只有乘法的结果会超出FFH的范围。

这是处理方法。

如果结果超出范围,跳过数据显示转换子程序。

如果没有超出范围,调用数据显示转换子程序。

两个选项都是将值转换为七段代码。

4.调用数码管的动态显示子程序显示数值并重新循环。

硬件系统设计1 .发光二极管接口电路一个简单的计算器需要一个2位8段发光二极管显示电路。

8031单片机通过8255A扩展2位8段发光二极管显示器,8255A的端口A作为段码(字形码)数据端口,PB0和PB1作为位控制端口。

开路集电极的反相高压驱动器74LS06被加到位控制端口以提供足够的电流来驱动发光二极管显示器,然后连接到每个数字显示器的公共阴极端子。

类似地,段代码数据端口开路集电极中的正相高压驱动器74LS07提供足够的电流,然后连接到数字显示器的段。

逻辑电路结构如下:2.键盘接口电路一个简单的计算器需要一个4*4的行列式键盘。

8031单片机通过8255A扩展4*4行列式键盘。

8255A的端口B 和C用于扩展键盘接口,在端口B中高4位作为输出端口,在端口C中低4位作为输入端口。

逻辑电路结构如下:3.计算器逻辑电路图将发光二极管接口电路和键盘接口电路结合在一起,就是简单计算器的逻辑电路图,如下:3 .软件设计1 .发光二极管显示程序设计该发光二极管显示器由七段以8个字符的形状排列的发光二极管组成,因此成为七段发光二极管显示器。

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

单片机简易计算器课程设计引言说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。

中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。

这种算筹多用竹子制成,也有用木头,兽骨充当材料的。

约二百七十枚一束,放在布袋里可随身携带。

直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。

17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

本任务是个简易的两位数的四则运算,程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。

本任务重在设计构思与团队合作,使得我们用专业知识、专业技能分析和解决问题全面系统的锻炼。

随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。

在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。

这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。

80C51单片机已成为单片机发展的主流。

专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。

而个人电脑中也会有为数不少的单片机在工作。

汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。

我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。

设计方案及原理1.首先赋予显示缓冲初始值‘00 00’,并把数据存储单元清零。

2.主程序调用键盘扫描子程序,判断键值,是数字第一次直接赋予23H单元,如是第二次输入数字,则把第一次值乘十后与第二次值相加,结果存储到23H单元,并R4计数2次,表示已输入两位,扫描键值时就不在赋值和显示。

等待运算符号的按下,按下等于号就直接与零计算并显示,如加减乘除就R5加一并把R4清零,表示可以输入下一操作数,与第一次相同,并等待等于键按下。

清零键则不管在任何情况下都清零,相当与软复位。

3.在扫描完键盘后,调用数据显示转换子程序,并选择,由于本任务是两位四则运算,只有乘法中结果会超出FFH的范围,在此就是选择处理方式,超出范围则跳过数据显示转换子程序,未超出则调用数据显示转换子程序,两种选择都是要把值转换为七段码。

4.调用数码管动态显示子程序,显示数值,重新循环。

硬件系统设计1、LED接口电路简易计算器需要2位8段码LED显示电路。

用8031单片机经8255A扩展2位8段码LED显示器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作为位控制端口。

在位控制口加集电极开路的反相高压驱动器74LS06以提供驱动LED显示器所需的足够大的电流,然后接至各数码显示器的共阴极端。

同理,在段码数据口集电极开路的正相高压驱动器74LS07提供足够大的电流,然后接到数码显示器的各段。

逻辑电路结构如下:2、键盘接口电路简易计算器需要4*4的行列式键盘。

用8031单片机经8255A扩展4*4行列式键盘,8255A的B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。

逻辑电路结构如下:3、计算器逻辑电路图将LED接口电路和键盘接口电路结合到一起就是简易计算器的逻辑电路图,如下:8255APA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB4PB5PB6PB7PC0PC1PC2PC374LS373GCSA1A0D0~D7WRRDRESETWRRDRSTALEP2.78031+5VQ2~Q7Q1Q0A2~A7A1A0D0~D7A8~A11OECEP0.0~P0.7P2.0~2.3PSEN+5V2732XTAL2XTAL1晶振6MHZ8X74LS072X74LS064X4键盘三、软件设计1、LED显示程序设计LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示:为了显示数字或符号,要为LED显示器提供代码,即字形代码。

七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。

简易计算器用到的数字0~9的共阴极字形代码如下表:0~9七段数码管共阴级字形代码显示字型g f e d c b a 段码0 0 1 1 1 1 1 1 3fh1 0 0 0 0 1 1 0 06h2 1 0 1 1 0 1 1 5bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fh 2位LED显示的程序框图如下:2、读键输入程序设计为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。

为了得到被按键的键码,现使用行扫描法识别按键。

其程序框图如下:3、主程序设计(1)数值送显示缓冲程序设计简易计算器所显示的数值最大位两位。

要显示数值,先判断数值正负,如果是负值,则符号位显示“-”,然后将数值除以10,余数送显最最低位,判断商是否为0,若为0则返回,若不为0,则将商除以10,将余数送显高位。

程序框图如下:(2)运算主程序设计首先初始化参数,送LED低位显示“0”,高位不显示。

然后扫描键盘看是否有键输入,若有,读取键码。

判断键码是数字键、清零键还是功能键(“+”“-”“*”“/”“=”),是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。

运算主程序框图如下所示:4、简易计算器源程序OUTBIT equ 07FFDh ; 位控制口OUTSEG equ 07FFCh ; 段控制口IN equ 07FFEh ; 键盘读入口data1 equ 70hdata2 equ 71hdizhi1 equ 72hdizhi2 equ 73hLEDBuf equ 60h ; 显示缓冲ljmp StartLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #2 ; 共2个八段管mov r2, #00000010b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管mov a, @r0mov dptr, #OUTSEGmovx @dptr, amov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, LoopretTestKey:mov dptr, #OUTBITmov a, #0movx @dptr, a ; 输出线置为0mov dptr, #INmovx a, @dptr ; 读入键状态cpl aanl a, #0fh ; 高四位不用retKeyTable: ; 键码定义db 0dh, 0ch, 0bh, 0ahdb 0eh, 03h, 06h, 09hdb 0fh, 02h, 05h, 08hdb 00h, 01h, 04h, 07hGetKey:mov dptr, #OUTBITmov P2, dphmov r0, #Low(IN)mov r1, #00100000bmov r2, #4KLoop:mov a, r1 ; 找出键所在列cpl amovx @dptr, acpl arr amov r1, a ; 下一列movx a, @r0cpl aanl a, #0fhjnz Goon1 ; 该列有键入djnz r2, KLoopmov r2, #0ffh ; 没有键按下, 返回 0ffhsjmp ExitGoon1:mov r1, a ; 键值 = 列 X 4 + 行mov a, r2dec arl arl amov r2, a ; r2 = (r2-1)*4mov a, r1 ; r1中为读入的行值mov r1, #4LoopC:rrc a ; 移位找出所在行jc Exitinc r2 ; r2 = r2+ 行值djnz r1, LoopCExit:mov a, r2 ; 取出键码mov dptr, #KeyTablemovc a, @a+dptrmov r2, aWaitRelease:mov dptr, #OUTBIT ; 等键释放clr amovx @dptr, amov r6, #10call Delaycall TestKeyjnz WaitReleasemov a, r2retStart:mov sp, #40hmov LEDBuf+0, #0mov LEDBuf+1, #03fhmov dptr, #7FFFhmov a, #89hmovx @dptr, aMLoop:call DisplayLED ; 显示call TestKey ; 有键入?jz MLoop ; 无键入, 继续显示call GetKey ; 读入键码Jisuan:mov r3, acjne r3, #0fh, Qita ;判断是否为清零键?mov r3, #00h ;清零mov r4, #00hmov r5, #00hmov data1, #00hmov data2, #00hmov dizhi1, #00hmov dizhi2, #00hmov LEDBuf+0, #0mov LEDBuf+1, #03fhljmp MLoopQita: clr ccjne r3, #0ah ,follow ;判断是数字键还是功能键?follow:jc Shuziljmp GnShuzi: mov a, r4 ;判断是否已有运算符输入,没有就将数值存在jnz Shuzi2 data1,有就将数值存在data2mov a, r3mov data1, aljmp Xs ;显示第一次输入的数值Shuzi2:mov a, r3mov data2, aljmp Xs ;显示第二次输入的数值Gn: mov r4, #01h ;将01h给r4,说明已有运算符输入cjne r3, #0eh, Ja ;判断键值是否为“=”?mov r4, #00h ;将r4清零mov a, dizhi1 ;执行“=”mov dph, amov a, dizhi2mov dpl, amov a, #00hjmp @a+dptr ;转到本次输入的算法程序Ja: cjne r3, #0ah, Jn ;若键值为“+”则将“+”的程序首地址存在mov dptr, #Jia dizhi1和dizhi2中mov a, dphmov dizhi1, amov a, dplmov dizhi2, aljmp MLoopJn: cjne r3, #0bh, Ce ;若键值为“-”则将“-”的程序首地址存mov dptr, #Jian dizhi1和dizhi2中mov a, dphmov dizhi1, amov a, dplmov dizhi2, aljmp MLoopCe: cjne r3, #0ch, Cu ;若键值为“*”则将“*”的程序首地址存在mov dptr, #Cheng dizhi1和dizhi2中mov a, dphmov dizhi1, amov a, dplmov dizhi2, aljmp MLoopCu: cjne r3, #0dh, Zhuan ;若键值为“/”则将“/”的程序首地址存在mov dptr, #chu dizhi1和dizhi2中mov a, dphmov dizhi1, amov a, dplmov dizhi2, aZhuan: ljmp MLoopJia: mov a, data1 ;加法程序add a, data2ljmp XsJian: mov a, data1 ;减法程序subb a, data2ljmp XsCheng: mov a, data1 ;乘法程序mov b, data2mul abljmp XsChu: mov a, data1 ;除法程序mov b, data2div abXs: mov b, #10 ;显示个位数字div abmov r5, amov a, bmov dptr,#LEDMapmovc a, @a+dptrmov LEDBuf+1,amov a, r5First:cjne a,#0,Nextljmp MLoop ;运算完后继续扫描键盘Next:mov b,#10 ;显示十位数字div abmov r5, amov a, bmov dptr, #LEDMapmovc a, @a+dptrmov LEDBuf+0, amov a, r5ljmp Firstend硬件连线图总结课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

相关文档
最新文档