单片机课程设计计算器设计
单片机课程设计计算器设计
集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]
目录 一、设计总绪 设计思想
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统
控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。? 计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89c51单片机、LCD显示器、控制按键为元件来设计的计算器。利用此设计熟悉单片机微控制器及汇编语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。掌握应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法 此设计是基于单片机技术的简易计算器的方案,本次设计所提出的一种基于单片机技术的简易计算器的方案,采用具有数据处理能力的中央处理器CPU,随机存储器ROM,多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统——单片机,配以汇编语言编写的执行程序,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它能将大量的逻辑功能集成与一个集成电路中,使用起来十分方便。
设计说明 本次课程设计讨论了单片机技术的计算器构思,设计方案,工作原理,主要系统包括单片机80C51,排阻RESPACK—8,开关,六位数码管显示器等,主要组成部分包括:键盘输入模块,运算模块,控制模块,显示模块。通过键盘输入数值,单片机进行运算后在数码管显示出结果。
关键词:矩阵键盘,单片机,数码管显示,汇编语言
设计目的
通过本次课程设计,运用《单片机微型计算机原理及应用》所学到的知识
及查询相关资料,完成简易计算器的设计,进一步提高单片机的系统设计和开 发能力,达到理论知识与实践更好的结合,提高综合运用所学知识和设计能力的目的。
设计要求 要求设计一个单片机应用系统,利用keil和proteus软件完成系统软硬件的设计及模拟调试。实现五位数(可为带小数点)的加减乘除运算,通过按键输入十进制数据。利用六位数码管显示运算结果。并实现复位操作。由于要设计的是简单的计算器,可以进行四则运算,为了得到教好的显示效果,采用LCD显示数据和结果。、另外键盘包括数字键(0-9)、符号键(+、-、*、/)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算机键盘来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果,执行程序:开机显示零,等待键入数值,当键入数字,通过LCD显示出
二、设计方案
硬件电路设计方案
计算器一般由运算器、控制器、键盘、显示器、电源和一些可选外围设备
及电子配件通过人工或机器设备组成。键盘是计算器的输入部件,一般采用接触式或传感式。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池。计算器都采用CMOS工艺制作的大规模集成电路。 本次课程设计中我是采用了以MCS—51系列的单片机AT89C51单片机为核心构成的简易计算器。该系统通过单片机控制,实现对4*4键盘进行实时扫描的按键检测,并把检测数据存储下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换成显示器显示;功能模块三,计算控制模块。功能模块四:显示模块。
图 系统总体框架图 键盘 控制 运算 显示 程图 No Yes
图 系统工作流程图
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与MCS-51 兼容 ;4K字节可编程闪烁存储器 ;1000写/擦循;数据保留时间:10年;全静态工作:0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源 ;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路 74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。 当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收) DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。
开始 初始化
键盘列扫描
有键按下 运算功能键 是” =”?
计算最后结果
数码管显示
复位键 数字键
记忆对应键值
数码管显示 其他键
记忆其运算符 由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(←D1),其它时间处于输出(→D1)。
图2 74LS245引脚图
系统功能描述 本程序有LCD动态显示,键盘输入显示功能,程序启动时默认为计算器状态。 (1)计算器状态下: 按“0”~“9”,显示相应数字; 按“复位”,恢复初始化模式; 按“加减乘除”可实现加减乘除的运算功能
三、各模块功能介绍
键盘输入模块 图 计算器键盘图 运算控制模块 图 计算器运算控制模块
控制模块控制着数字录入,数字录入是进行计算的前提,它是将从矩阵键
盘上输入的数值、运算符等录入单片机处理器进行处理,从而得出运算结果。 计算模块作为计算器的核心模块共有加、减、乘、除四个部分。其设计原理是先将键盘输入的BCD码数字转换为十进制数字,然后再对其进行运算。由于最后需要进行输出显示,所以我们的最终结果以十进制的形式显示在六位的数码显示管上。
显示模块
图 数码管显示屏
本设计采用了六位数码管,可以显示0~999999之间的任意整数,由于
LED数码管有6个,若采用静态显示,则最少需要48根数据线与6根地址线,这对只有40个引脚的单片机来说是不可能实现的。所以我采用了动态扫描的显示方法。其原理是不同时刻对不同位上的数码管进行选通,同时对其进行数码 输出。当扫描频率很高时,将不会看到数码管的闪烁。本设计应用了定时器中断来实现间时显示。
振荡电路模块 图 3,.4 振荡电路 振荡电路如图所示。 图中晶振的两端分别接单片机的19和18脚。时钟有内部电路产生,定时器件为石英晶体和电容组成的并联谐振回路。
起保护作用模块 图 限流电阻 这一排限流电阻,它们的作用是起保护作用,防止数码管的段位被烧坏。
四、仿真电路
图 系统电路仿真图 仿真运行结果 例如:运行23*2时,一次在键盘上输入数据和功能键,功能键不会再数码管上显示出来,只会显示出输入的数据和运行结果。 图 输入数据23时 图 输入数据2 图 计算23*2的运行结果
五、调试过程总结
开始在做这个单片机课设的时候,感觉无从下手,一点头绪都没有。后来上网查了好多资料,向学长请教。终于功夫不负有心人,做出了这个单片机的课设。调试过程中也遇到了一些问题,先是数码管显示数据不完整,经过仔细检查发现是线路连接的错误;后来又遇到计算时会出现运算错误,经过查找发现原来是编程的问题。在利用keil软件编程的过程中,会出现各种各样的问题,有的是由于粗心而引起的,有的是因为概念模糊而导致的。再用proteus进行仿真时,会出现的问题主要是线路连接问题,可能会不小心把线连错,其他的我觉得只要元器件选择好,各引脚的功能清楚的话一般不会有太大的问题。 在这次做课程设计的过程中我深深体会到了要独立完成一个作品的设计是多么不容易。虽然我做的只是最基础的,但是从这个最小的系统中却是利用了
单片机 简易计算器 课程设计4
河北工业大学计算机硬件技术基础(MCS-51单片机原理及应用)课程设计报告一、题目:简易计算器二、目的:培养学生综合利用汇编语言进行程序设计的能力,主要是培养学生利用DICE-598H+综合实验台的扩展部件进行应用程序设计的技能。
三、基本要求:(1)能够完成整数常数的四则运算,不要求支持运算符的优先级。
(2)计算规则为十进制,输入数字情况及计算结果均应在上方的显示部件上进行显示,输入的运算符不要求显示。
(3)用ABCD键分别代表加减乘除四则运算符。
(4)E键进行初始化,清除内存中的数(相当于计算器的ON键),F键清除当前输入的数据(相当于普通计算器的CE键)。
(5)出错处理:操作数如果不符合数学上的定义,应该给出错误信息。
例:0做除数等情况。
四、主要问题:设计键盘输入部分并转换为相应的数值,在显示的同时进行保存,碰到运算符要马上进行运算处理并将结果送显示缓冲区。
从而完成简单的数值四则运算效果。
五、总体设计:利用单片机理论设计科学的简易计算器,来完成基本的初级四则运算过程。
六、软件系统的应用:主程序流程图见下页。
主程序流程图:七、程序源代码:org 0000hop equ 20hop1 equ 21hop2 equ 22h start: mov sp,#60hmov dptr,#0ff20hmov a,#03hmovx @dptr,amov 70h,#00mov op, #00mov op1, #00mov op2, #00key1: acall ks1jnz lk1n1: acall dirajmp key1lk1: acall diracall diracall ks1jnz lk2acall dirajmp key1lk2: mov r2,#0fehmov r4,#0lk4: mov dptr,#0ff21hmov a,r2movx @dptr,ainc dptrinc dptrmovx a,@dptrjb acc.0,lonemov a,#07hajmp lkplone: jb acc.2,nextmov a,#01hajmp key1lkp: add a,r4mov 51h,acjne a,#0ah,l1mov op,aajmp key1l1: jc qqmov op,aajmp key1qq: mov a,opjnz m2m1: mov a,#10mov b,op1mul abadd a,70hmov op1,apush accajmp ppm2: mov a,#10mov b,op2mul abadd a,70hmov op2,app: mov 70h,apush acclk3: acall diracall ks1jnz lk3pop accajmp key1next: inc r4mov a,r2jnb acc.7,kndrl amov r2,aajmp lk4knd: ajmp key1ks1: mov dptr,#0ef21hmov a,#0movx @dptr,ainc dptrinc dptrmovx a,@dptrcpl aanl a,#1fhretdir: cpl p1.0mov r0,#70hmov a,@r0anl a,#0fhmov 30h,amov a,@r0swap aanl a,#0fhmov 31h,amov r0,#30hmov r3,#01hdo1: mov a,r3mov dptr,#0ef21hmovx @dptr,ainc dptrmov a,@r0add a,#0dhmovc a,@a+pcdir1: movx @dptr,aacall dlmov a,r3rl ajb acc.2,ld1mov r3,ainc r0ajmp do1ld1: retdseh: db 0f8h,99h,80h,92h,90h,82h,88h,83hdb 0f9h,0c0h,0a4h,081h,0b0h,086h,0c6h,0a1h dl: mov r7,#2dl1: mov r6,#0ffhdl2: djnz r6,dl2djnz r7,dl1retcalc: mov r7,opcjne r7,#0ah,notaddclr cmov a,op1add a,op2sjmp fcalcnotadd: cjne r7,#0bh,notsubclr cmov a,op1subb a,op2sjmp fcalcnotsub: cjne r7,#0ch,notmulclr cmov a,op1mov b,op2mul absjmp fcalcnotmul: clr cmov a,op1mov b,op2div absjmp fcalcfcalc: mov 50h,aanl a,#0fhmov 72h,amov a,50hswap aanl a,#0fhmov 73h,adisp: mov r3,#01hmov r0,#70hmov a,r3mov dptr,#0ff21hmovx @dptr,amov dptr,#0ff22hmov a,@r0add a,#03hmovc a,@a+pcmovx @dptr,aacall dlaydb 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,db 80h,90h,88h,83h,0c6h,0a1h,86h,8ehdlay: mov r7,#02hdlay1: mov r6,#0ffhdlay2: djnz r6,dlay2djnz r7,dlay1rete n d八、硬件系统应用:利用以上的键盘来完成数据的输入,用“A .B.C.D.E.F”分别代表“+.-.*./”运算符.来完成数据的四则运算过程。
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个以上)和专⽤驱动芯⽚的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,⽆需系统软件⼲预。
单片机课程设计报告(简易计算器).
简易计算器摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。
为了解和研究计算器,本次课设设计制作了一个简易计算器,能够在十四位的计算范围内进行“+”、“-”、“*”、“/”的基本运算,能进行负数以及小数点后两位的精确结果显示。
该计算器以AT89C51单片机芯片作为核心。
采用LCD1602工业字符液晶进行显示。
完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。
关键词:单片机;简易计算器;AT89C51;LCD1602Simple CalculatorAbstract:Calculator is People's Daily life is one of the most common electronic products, used very wide, developing rapidly, and constantly appear more powerful function with have calculators. In order to understand and study calculator, this class set design made a simple calculator, can the calculation in within 14 "+" and "-" and "*", "/" the basic computing, can carry out negative and two decimal places accurate results are shown. This calculator with AT89C51 chips as the core. Using liquid LCD1602 industrial characters displayed. Complete calculator after inspection can complete realization, various details preset functions to perfect, have high use value.Keywords:MCU; Simple calculator;AT89C51;LCD1602目录中文摘要............................................................1英文摘要............................................................2单片机课程设计......................................................4 1 课程设计任务.....................................................41.1 主要功能设计................................................41.2 任务目的....................................................42 整体设计方案......................................................42.1 方案论证....................................................42.2 系统框图....................................................53 硬件电路的设计...................................................63.1 计算机Protel总图............................................63.2 显示电路设计方案............................................93.3 键盘设计方案................................................93.4 复位电路设计...............................................103.5 晶振电路设计...............................................104 控制软件设计....................................................114.1 程序时序总图...............................................114.2 液晶显示软件设计...........................................124.3 键盘输入软件设计...........................................134.4 计算函数设置...............................................155 系统调试........................................................185.1 硬件调试...................................................185.2 软件调试...................................................18 参考文献...........................................................20 个人小结...........................................................21 附录...............................................................24 附录1..........................................................24 附录2..........................................................251课程设计任务1.1 主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602工业字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
51单片机简易计算器设计
51单片机简易计算器设计一、设计思路计算器的基本功能包括加法、减法、乘法和除法。
我们可以使用按键作为输入方式,将输入的数字和操作符暂时保存在内存中,然后根据操作符进行相应的运算。
最后再将运算结果显示在数码管上。
具体设计思路如下:1.确定计算器所需的硬件组件:数码管、按键、51单片机和相关电路。
2.定义按键与数字和操作符的对应关系。
3.编写51单片机的程序,实现按键输入、运算和结果显示的功能。
二、硬件设计1.数码管:使用常见的7段数码管作为显示器,通过引脚连接到51单片机的IO口。
2.按键:使用4个按键分别表示数字输入键、加法键、减法键和等于键。
三、软件设计1.初始化:将数码管引脚设为输出模式,将按键引脚设为输入模式。
2.按键处理:采用中断方式检测按键输入,通过编程判断所按的键。
3.数字输入:将按键所对应的数字保存在变量中,最多支持四位数的输入。
4.操作符输入:将按下的操作符保存在变量中。
5.运算:根据保存的操作符进行相应的运算,并将结果保存在变量中。
6.结果显示:将结果显示在数码管上。
四、代码实现下面是一个示例代码的框架,供参考:```c#include <reg52.h>sbit SDA = P0^0; // I2C总线数据线sbit SCL = P0^1; // I2C总线时钟线//定义按键的IO口sbit BUTTON0 = P1^0; // 数字输入键sbit BUTTON1 = P1^1; // 加法键sbit BUTTON2 = P1^2; // 减法键sbit BUTTON3 = P1^3; //等于键unsigned char num1 = 0; // 第一个操作数unsigned char num2 = 0; // 第二个操作数unsigned char op = 0; // 操作符unsigned char result = 0; // 运算结果//判断按键所对应的数字或操作符void buttonif (BUTTON0 == 0) // 数字输入键//将按键所对应的数字保存在变量中//显示数字}else if (BUTTON1 == 0) // 加法键//保存操作符为加号}else if (BUTTON2 == 0) // 减法键//保存操作符为减号}else if (BUTTON3 == 0) //等于键//根据保存的操作符进行相应的运算//将结果保存在变量中//显示结果}void mainwhile (1)button(; // 按键处理}```五、总结通过以上的设计思路和示例代码,我们可以轻松地实现一个简易的计算器。
c51单片机设计计算器 设计总结
c51单片机设计计算器设计总结C51单片机设计计算器是一个复杂的项目,它涉及了微控制器编程、硬件接口、输入/输出等多个方面。
下面是对此项目的总结:1. 功能需求分析:在开始设计计算器之前,首先要明确需要实现的功能。
对于这个项目,基本的计算器功能如加、减、乘、除是必须的,同时考虑到扩展性,也可以加入一些高级功能如平方、立方等。
2. 硬件选择:C51单片机是一种常用的微控制器,其优点包括低功耗、高性能以及丰富的外设接口。
此外,还需要选择合适的显示模块(如LCD)和输入设备(如键盘)。
3. 软件设计:软件设计主要涉及到单片机的编程。
需要编写程序以实现计算器的各种功能。
这包括但不限于输入处理、运算逻辑、结果显示等部分。
4. 调试与测试:在完成硬件和软件的设计后,需要进行大量的测试以确保计算器的功能正常。
这包括基本的四则运算测试,以及一些复杂的测试用例,如溢出测试、边界条件测试等。
5. 性能优化:虽然基本的计算器功能可以运行,但性能和效率方面可能还有优化的空间。
例如,可以通过改进算法或者优化代码来提高计算速度。
6. 扩展性考虑:在设计时,应考虑到未来可能的扩展需求。
例如,可以预留一些接口或者引脚以便未来添加更多功能。
7. 文档与维护:完成项目后,应编写详细的文档以方便后续的维护和修改。
这包括硬件连接图、软件代码注释、测试报告等。
8. 安全与可靠性:对于任何电子设备,安全性和可靠性都是非常重要的。
在设计时,应考虑到各种可能的异常情况,并采取相应的预防措施。
通过这个项目,我们可以更深入地理解单片机的工作原理,以及如何在实际项目中应用这些知识。
同时,这个项目也提高了我们的硬件接口能力、编程技巧以及问题解决能力。
单片机设计实验报告简单计算器的设计
目录1.总体方案选择 (2)1.1 实验要求: (2)1.2方案设计 (2)2.硬件原理电路图的设计及分析 (3)2.1主控模块 (3)2.1.1 STC89C52单片机主要特性 (3)2.1.2 STC89C52单片机管脚图 (4)2.1.3 STC89C52单片机的中断系统 (5)2.1.4 STC89C52单片机的定时/计数器 (5)2.2矩阵键盘模块设计: (5)2.2.1矩阵键盘原理介绍 (5)2.2.2矩阵键盘电路设计 (6)2.3 LCD液晶显示器简介 (7)2.3.1液晶模块简介 (7)2.3.2液晶显示部分与89S52的接口 (8)3系统软件设计 (10)3.1系统软件流程图 (10)3.2系统整体原理图 (11)4.系统调试 (12)4.1硬件调试 (12)4.2软件调试 (12)4.3调试结果 (13)5.心得体会131.总体方案选择1) 1.1 实验要求:2)通过小键盘实现数据的输入, 并在LED数码管上显示3)实现+、-、*、/4)在LED数码管上显示结果并有清零, 退出功能1.2方案设计本系统以STC89C52单片机为控制核心, 对系统进行初始化, 主要完成对键盘的响应、液晶显示灯功能的控制, 起到总控和协调各模块之间工作的作用。
单片机通过检测键盘读取使用者按下对用功能的按键, 然后通过单片机内部运放把运算的结果显示在液晶屏幕上。
图1-1系统结构框图本系统结构如图1-1所示, 本设计可分为以下模块: 单片机主控模块、键盘模块、功率放大模块、闹铃模块、按键设置模块。
下面对各个模块的设计方案逐一进行论证分析。
2.硬件原理电路图的设计及分析2.1主控模块STC89C52有40个引脚, 4个8位并行I/O口, 1个全双工异步串行口, 同时内含5个中断源, 2个优先级, 2个16位定时/计数器。
STC89C52的存储器系统由4K的程序存储器(掩膜ROM), 和128B的数据存储器(RAM)组成。
单片机 课设 简易计算器设计(减、除)
第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 家族中的一员,内置仿真程序,完全取代传统的硬件仿真器和编程器。
单片机课程设计__简易计算器范文
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接高还是低电频,低电频则结果为几点几,为高电频则几十几。
51单片机简易计算器设计
51单片机简易计算器设计一、引言计算器是一种通过输入和输出数字信号进行数学运算的电子设备。
在现代社会,人们对计算器有着广泛的需求,因此设计一款简单而实用的计算器对于我们理解计算器的工作原理和学习单片机编程非常有帮助。
本文将介绍一种基于51单片机的简易计算器设计,涵盖了相关的硬件设计和软件编程。
二、设计思路本计算器设计的主要思路如下:1.使用数码管显示输入的数字和计算结果。
2.使用按键输入数字和操作符。
3.通过软件编程实现数字的输入、运算和结果的显示。
三、硬件设计1.数码管:使用4位共阴数码管,通过BCD-7段译码器将数字信号转化为数码管显示。
2.按键:使用独立按键输入数字和操作符。
3.电源:使用适当的电源电路提供电压和电流。
四、软件设计1.初始化:设置数码管显示方式、按键输入方式和端口状态。
2.输入数字:通过按键输入数字,并将数字显示在数码管上。
可以采用按键扫描的方式实现,每次按键触发时读取按键值,并将对应的数字显示在数码管上。
3.输入操作符:通过按键输入操作符,并将操作符显示在数码管上。
同样采用按键扫描的方式实现。
4.数字运算:根据输入的操作符和数字进行相应的运算,得出结果。
5.显示结果:将运算结果显示在数码管上。
五、程序流程图具体的程序流程图如下:六、程序实现以下是51单片机计算器的简单代码实现:```C#include<reg51.h>sbit LED=P1^0;sbit KEY=P3^0;void delay(int n)int i=0, j=0;for(i=0; i<n; i++)for(j=0; j<123; j++);void mainwhile(1)if(KEY==0)LED=0;elseLED=1;delay(10);}```七、测试和结果在硬件设计完成并烧录完程序后,我们可以进行测试。
通过按下按键,观察数码管是否正确显示输入的数字和运算结果。
如果显示正确,则说明程序设计成功。
最新单片机简易计算器课程设计
最新单⽚机简易计算器课程设计最新单⽚机简易计算器课程设计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个字符的形状排列的发光⼆极管组成,因此成为七段发光⼆极管显⽰器。
