文档库 最新最全的文档下载
当前位置:文档库 › BCD码加减法

BCD码加减法

BCD码加减法
BCD码加减法

3、BCD码的加减运算

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD

码直接交计算机去运算,由于

计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:

(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。

(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.

(3)低位修正结果使高位大于9时,高位进行加6修正。

下面通过例题验证上述规则的正确性。

用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95

用BCD码求91+83 用BCD码求94+7 用BCD码求76+45

两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。另外,BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计算机对二进制数运算处理,运算以后再将二进制数结果由程序转换为BCD码。

4、8421BCD码、余3码、格雷码

用四位二进制代码来表示一位十进制数,称为二--十进制编码,简称BCD(Binary Coded Decimal)码。根据代码的每一位是否有权值BCD码可分为有权码和无权码两类,应用最多的是8421BCD码,无权码用得较多的是余三码和格雷码,我们通常所说的BCD码指的是8421BCD码。这些编码跟十进制数对应的关系如下:十进制数 8421BCD码余3码格雷码

0 0000 0011 0000

1 0001 0100 0001

2 0010 0101 0011

3 0011 0110 0010

4 0100 0111 0110

5 0101 1000 1110

6 0110 1001 1010

7 0111 1010 1000

8 1000 1011 1100

9 1001 1100 0100

8421BCD码中的“8421”表示从高到低各位二进制位对应的权值分别为8、4、2、1,将各二进制位与权值相乘,并将乘积相加就得相应的十进制数。例如,8421BCD 码“0111”,0×8+1×4+1×2+1×1=7D,其中D表示十进制(Decimal)数。

值得特别注意的是,8421BCD码只有0000~1001共十个,而1010、1011...等等不是8421BCD码!!

余三码是在8421BCD码的基础上,把每个数的代码加上0011(对应十进制数3)后得到的。格雷码的编码规则是相邻的两代码之间只有一位二进制位不同。不管是8421BCD码还是余三码还是格雷码,总是4个二进制位对应一个十进制数,如十进制数18对应的8421BCD码就是0001 1000。

压缩的BCD码用4个二进制位来表示十进制数,上面提到的就是压缩的BCD码。而非压缩BCD码用一个字节(八个二进制位)表示一位十进制数,高4位总是0000,低4位的0000~1001表示相应的十进制数。例如,十进制数87D,采用非压缩8421BCD码表示为二进制数是00001000 00000111B。这种非压缩BCD码主要用于非数值计算的应用领域中。

利用HEX加减法计算BCD加减的方法(我的BCD算法):

加法:A+6+B:若进位,4bit计算结果不变。

若未进位,4bit计算结果减6。

减法:A-B:若未借位,4bit计算结果不变。

若借位,4bit计算结果减6。

减法的补码算法:A+1+^B:(BDC码含义为A+1-10+^B、

HEX码含义为A+1-16+^B)

BCD码的补码转换成HEX的补码^b=^(B+6)。

加法公式:A+1+^b。

若进位,4bit计算结果不变。

若未进位,4bit计算结果减6。

最新程序自动生成10以内加减法口算练习题集合(2500题)

姓名 ______ 时间 ______ 分数 ______ 7-0= 8+0= 9-2= 1+6= 8-1= 9+1= 6-2= 1+8= 8-7= 4+6= 4-2= 1+9= 5-0= 1+2= 7-4= 0+8= 7-5= 6+2= 3-1= 7+0= 7-4= 3+5= 4-0= 5+1= 7-5= 3+4= 9-0= 8+1= 4-3= 5+5= 7-2= 8+0= 5-4= 6+1= 3-2= 5+0= 9-4= 6+1= 5-3= 4+5= 8-1= 8+1= 5-2= 4+6= 8-2= 5+5= 8-2= 1+0= 4-3= 1+3=

姓名 ______ 时间 ______ 分数 ______ 4-1= 3+2= 3-2= 3+3= 9-5= 9+0= 6-3= 5+5= 4-2= 1+5= 9-4= 7+2= 1-0= 5+3= 2-1= 8+1= 9-6= 9+1= 6-0= 5+0= 9-1= 1+7= 9-7= 5+1= 3-2= 3+4= 9-3= 9+1= 7-4= 9+1= 7-3= 6+2= 7-3= 9+0= 3-1= 6+2= 9-3= 6+1= 3-0= 3+1= 9-6= 6+1= 8-7= 1+0= 8-5= 4+4= 9-7= 6+1= 3-2= 8+1=

姓名 ______ 时间 ______ 分数 ______ 8-7= 8+0= 9-7= 4+0= 9-1= 0+5= 8-4= 5+3= 3-0= 1+1= 5-2= 0+2= 3-2= 1+1= 9-1= 4+5= 3-2= 6+0= 5-0= 2+5= 9-2= 0+8= 8-1= 3+4= 7-4= 4+2= 6-1= 3+6= 7-1= 3+4= 9-2= 6+3= 3-0= 8+2= 9-7= 6+0= 8-1= 5+2= 4-2= 1+6= 7-0= 2+3= 1-0= 7+3= 4-2= 8+0= 4-3= 3+3= 9-8= 0+10=

简易加减计算器小程序

[java語言與程序設計]简易加减计算器小程序 歸真我发表于:2011/8/1922:51:21标签(TAG): 简易加减计算器小程序 在上一篇《简易计算器面板小程序》中,我已对面板部分的程序作了详细的注释,并对程序的运行过程及结果作了完整的介绍,并且是上机调试过了得到的结果。但是,那只是面板,不能运算。要想让它具有运算的功能,还得在此基础上作一些修改,加进有关按钮动作响应部分的程序。为了便于理解,便于调试,便于学习,掌握其要点,我想应该遵循循序渐进的原则,所以,先从加减运算开始,看看这个功能是怎么实现的。请看下面的小程序。从程序中可以看出,它是利用内部类ButtonAct来处理按钮的动作响应的。从总体上讲是两个按钮“运算”和“重置”,但“运算”又区分为“加”和“减”。所以,用负责实现双分支的if语句来编程。 /**C2.java简易加减计算器小程序*/ import java.applet.*; import java.awt.*; import java.awt.event.*; public class C2extends Applet{ TextField t1,t2,t3; Button btn1,btn2; CheckboxGroup select; Checkbox a,s;//分别代表加、减 Label b; public void init(){ t1=new TextField(13); t2=new TextField(13); t3=new TextField(13); btn1=new Button("等于");

btn2=new Button("重置"); select=new CheckboxGroup(); a=new Checkbox("加",true,select); s=new Checkbox("减",false,select); b=new Label("简易加法/减法计算器"); add(b); add(t1); add(a); add(s); add(t2); add(btn1); add(t3); add(btn2); btn1.addActionListener(new ButtonAct());//注册给ButtonAct对象btn2.addActionListener(new ButtonAct());//注册给ButtonAct对象} class ButtonAct implements ActionListener{//内部类,按钮处理public void actionPerformed(ActionEvent e){ int op1,op2,op3; if(e.getSource()==btn1){//等于按钮 op1=Integer.parseInt(t1.getText()); op2=Integer.parseInt(t2.getText()); if(a.getState())//以下判断计算类型并实现相应的计算 op3=op1+op2; else op3=op1-op2; t3.setText(Integer.toString(op3)); } else{//重置按钮 t1.setText(""); t2.setText(""); t3.setText(""); a.setState(true); } } }//end of ButtonAct }//*~ 运行结果为:

java编写的加法计算器

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author asus */ import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator implements ActionListener { JFrame sb; String s1,s2; int T1,T2,T3; JTextField t1,t2,t3; JLabel jl1,jl2; public Calculator() { sb=new JFrame("加法计算器"); sb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sb.setSize(260,100); Container a=sb.getContentPane(); a.setLayout(new FlowLayout()); t1=new JTextField(5); t2=new JTextField(5); t3=new JTextField(5); t1.setEditable(true); t2.setEditable(true); t3.setEditable(false); jl1=new JLabel("+"); jl2=new JLabel("="); JButton he=new JButton("求和"); he.addActionListener(this); a.add(t1); a.add(jl1); a.add(t2); a.add(jl2); a.add(t3); a.add(he);

速算,简易计算器c语言代码,可实现加减乘除

#include"stdio.h" #include"math.h" #include"stdlib.h" struct optrstyle { int top; char stack[20]; } struct opndstyle { int top; int stack[20]; } void main() { char ch; while(1) { printf("-----------------------------------------\n"); printf("|-----------欢迎来到速算24--------------|\n"); printf("|----------是否开始游戏?????------------|\n"); printf("|--------- 开始游戏请按'Y'-------------|\n"); printf("|--------- 退出游戏请按其他键-------------|\n"); printf("-----------------------------------------\n"); scanf("%c",&ch); if(ch=='Y' or ch=='y') { } else break; } } int EvaluateExpression() { // 算术表达式求值的算符优先算法。设OPTR 和OPND 分别为运算符栈和运算数栈,OP 为运算符集合。 InitStack(OPTR); Push(OPTR,'#'); InitStack(OPND); c = getchar(); while(c!='#' || GetTop(OPTR)!='#') { if(!In(c,OP))

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

数码管之简单加减法计算器--项目总结

数码管之简单加减法计算器--项目总结 总结人:徐冉1.项目使用到的硬件板载资源 1)单片机STC89C52RC作为系统的处理器 2)6位共阳极数码管作为计算器的数字显示器件 3)LCD1602液晶显示一些提示信息如计算时的符号(正/负) 4)4*4矩阵按键作为计算器的数字输入设备 5)8个贴片LED小灯,用于走马灯效果作为修饰 6)用到了单片机的内部资源定时器T0 2.项目的基本功能 通过程序的烧录,将工程中的hex文件烧录到Kingst-51开发板上。现象如下: 初始时 1)最右边的数码管上显示0,其余数码管不显示。 2)五个LED小灯像小火车一样循环跑着。 3)LCD1602液晶的左上角显示Symbol:字样,用于显示符号。 正数不显示,负数时将显示‘-’。 进行简单的加减法运算 当用户使用按键输入相应的数字时,会在数码管上显示。数字值将进行进位累加方式实现。数字键(k13 k1 ~ k3 k5 ~ k7 k9 ~ k11 0 ~ 9),k4加法功能键,k12减法功能键,k14 ESC清零键,k4和

k12是双功能键,即k4既是加法键也是计算键,k12既是减法键也是计算键。达到一键两用的效果。注意:用户在进行加法计算时可以随意计算,但在计算减法时第一步需要进行一次加法,然后才能进行减法运算。当计算结果是负数时会在数码管上显示相应的数值的绝对值,而在LCD1602液晶上显示‘-’。在计算期间LED 小灯会一直循环流动。这个计算器可以实现连加连减,计算十分方便,但没有处理小数。当计算完成时,或输入错误时可按k14进行清零操作。 3.项目的创新点 首先该项目使用了LED 的跑马灯效果进行了装饰,为了程序的简单且直观性程序使用了LCD1602进行运算时符号的显示。程序在计算上使用了一键两用的功能设计,这样设计方便快捷。 4.项目的设计流程 N Y 上电 LCD1602液晶 初始化 74HC138译码器初始化 配置定时器T0定时1ms 中断 Lcd1602初始化显示Symbol 主函数while 循环进行按键动作检测 1ms 到 按键扫描 LED 小灯&数码管扫描 结束

简易加减法计算器

电子技术课程设计 题目:简易加减法计算器 一、设计课题:简易加减法计算器 二、设计任务和要求: 1、用于两位以下十进制数的加减运算。 2、以合适方式显示输入数据及计算结果。 三、原理电路设计 1、方案的比较 对于简单加减计算器可有三种不同的方案 ①用数/模转换,与模拟电路中的加减计算器进行简单的加减计 算。先用74LS147二-十进制优先编码器转化为二进制进行输A,然后数模转化模拟信号,进行加减计算后,转化为数字信号输 出。 此方案思路较明确,但经过二次数模相互转换,精确率较低; 具体输出时的负数效应,与单输入的二进制转化为十进制时电 路较复杂,无成块的集成电路,致使误差率较大。 ②可用数字电路中4位超前进位加法器74LS283与方案一输入相 同;后用三态输出CMOS门电路进行选择输入,进行加法运算

后输出,输出时,注意负数的问题与在输出中2进制与10进制关系的问题。还有寄存器的问题。 此方案思路明确,比较精确,此中的2进制与10进制问题需复杂门电路解决无现成集成元件,存在太多的散元件。减法运算需要反码进行运算,况且在其触发过程中需要考虑同步问题。 ③可运用数字电路中的单时钟同步十进制加/减计数器74LS190 进行加减计算。方案以上升沿进行输入,触发加减计算。本方案输入方式不同于一般输入方式,需要有所改进。但思路明了,不十分复杂,对于负数运算较复杂,可集成程度较高。 终上所述,最好是相互结合,以③为本。 2、单元电路设计

3、元件的选择

对于计数器来说需要选同时可以进行加减计数的计数器进行 加减,因此选用单时钟十进制加/减计数器74LS190. 其电路图及功能表如下: 中间由于1/0的输出不能够持久的进行保持,因此可用RS触 发器进行保持。对于加/减,等于触发需要74LS194进行触发 保持 4、整体电路(见附图) 5、工作原理 主要运用十进制加/减计数器74LS190加/减计数功能与74LS194的触发 功能。 六、设计总结 我们以为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教别人,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远还会结束,

用计算器计算小数加减法 教学设计

用计算器计算小数加减法教学设计 教学目标: 1、使学生掌握在计算器上按整数部分是0的小数的简便按法,会使用计算器正确计算稍复杂的小数加减法。 2、让学生在借助计算器解决生活中常见的小数加减法的实际问题的过程中,体会小数加减法应用的广泛性,感受计算器给人们生活带来的便利。 3、让学生经历用计算器探索规律的过程,激发学生对数学的兴趣。 教学重点:会用计算器计算小数加减法。 教学难点:在计算器上按小数时,容易漏掉小数点。 教学方法:演示讲解、动手操作、小组交流。 教具准备:课件、计算器 教学过程: 一、创设情境,引出问题 1、教师谈话:同学们,你们去超市购物过吗?昨天晚上李芸同学也去超市购物了,想看看她采购了些什么吗?(出示购物单) 2、提问: (1)从购物单中你知道了哪些信息呢? (2)你能算出李芸买这些物品一共用了多少钱吗?应该怎么算呢?(根据学生回答教师板书算式) (3)要把这么多的小数加起来,如果笔算,你感觉怎么样? 3、揭题:在生活中,有时遇上比较多个数的计算或大数目的计算时,我们可以用计算器帮忙,这样就省事多了。今天我们就利用计算器来计算小数加、减法。(板书课题:用计算器计算小数加、减法) 二、运用计算器计算 1、获得简便按法。 (1)提问:你还记得怎么在计算器上按小数吗?想一想买铅笔的钱可以怎么在计算器上按出来?(学生操作,教师巡视,了解他们的按法)(2)反馈;谁来说说你是怎么按出0.80的?还有别的方法吗? 方法一:按照0.80的次序在计算器上一一按键。

方法二:0不按,直接按.和8。 (3)比较:你喜欢哪种操作方法?为什么? (4)教师小结:在计算器上按数时,有不同的方法,虽然结果相同,但运用简便的按法可以提高我们计算的速度。 2、计算器计算 (1)谈话:现在你能运用计算器算出老师一共用了多少钱吗? (2)学生操作计算器进行计算 (3)反馈计算结果。 3、交流操作感受 (1)谈话:刚才我们运用计算器计算出了老师一共用了多少钱,在计算器上操作时你有什么体会呢?你觉得在使用计算器计算时要注意些什么呢? (2)学生说说操作的注意点。 在学生交流的基础上,教师提醒学生要注意操作时读数、按键的细心。 三、再次操作,熟练运用 1、完成“试一试” (1)教师谈话:如果李芸付出100元,营业员应该找回多少元呢?(出示试一试) (2)学生列式,用计算器计算。 (3)反馈计算结果。 让学生说说是怎样列式计算的,计算结果是多少?(学生可以直接利用例4的计算结果计算也可以用100减去每种商品的金额) (4)检验。 提问:我们的计算结果是否正确呢?可以怎么样来检验呢? 学生回答后就让他们再利用计算器来进行检验。 2、完成练一练1。 (1)谈话:现在大家都能利用计算器来快而对地计算题目了吗? (2)出示题目,学生各自独立计算,完成后同桌交换核对。 (3)反馈学生计算情况。 教师注重让学生分析计算错误的原因,让学生养成仔细看题、操作的好习惯。

小学一年级数学加减法速算方法

小学一年级数学100以内加减法速算方法 2016-11-28? 家长都在关注的小学啦,专注学龄儿童家庭教育,我们一起,让孩子爱上小学! 低年级学生100以内的加减法属教学中难点,教起来比较困难,以下两点速算方法与各位家长分享: 方法1.两位数加两位数的进位加法: 口诀:加9要减1,加8要减2,加7要减3,加6要减4,加5要减5,加4要减6,加3要减7 ,加2要减8,加1要减9。(注:口决中的加几都是说个位上的数) 例:26+38=64解:加8要减2,谁减2?26上的6减2。38里十位上的3要进4。 (注:后一个两位数上的十位怎么进位,是1我进2,是2我进3,是3我进4,依次类推。那朝什么地方进位呢,进在第二个两位数上十位上。如本次是3我进4,就是这两个两位数里的2+4=6。)这里的26+38=64就是6-2=4写在个位上,是3进4加2就等于6写在十位上。 再如42+29=71。就用加9要减1这句口决,2-1=1,把1写在个位上,是2我进3, 4+3=7,把7写在十位上即得71。 两位数加两位数不进位的加法,就直接写得数就行,如25+34=59,个位加个位写在等号后的个位上5+4=9,十位加十位写在十位上即可2+3=5,即59。不必列竖式计算。 本办法学会了百试百灵,比计算器还快。 方法2.两位数减两位数的退位减法: 口决:减9要加1,减8要加2,减7要加3,减6要加4,减5要加5,减4要加6,减3要加7 ,减2要加8,减1要加9。(注:口决中的减几都是说减个位上的数)。 例: 73-46=27,解:减6要加4,谁加4?3加4等于7写在个位上,减数的十位是4我退5,谁退5 ?7退5,即27。 (注:如何退位?减数的十位是1你退2,是2你退3,是3你退4,依次类推,但必须是个位减个位不够减的情况才能这样退,够减就直接个位减个位,十位减十位直接定出得数即可。) 以上两种方法是利用了一年级教材中的凑十法演变而来的。它们的口决大体一致,只需记住了其中的一种,另一种方法即可融会贯通。

单片机 简易加法计数器

《单片机原理及应用》课程课程设计 题目简易计算器的设计 院(系)信息工程学院 专业班级 11级计算机应用技术1班 学生姓名 XXXXX 学号 XXXXXXXX 设计地点计算机应用实验室 指导教师 XXXX 起止时间:2013年6月3日至2013 年6 月14 日

摘要 随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本题目是实现两位数的加减运算的简易计算器,实现键盘输入,由七段LED 数码管输出;程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不十分完善,限制也较多。本设计重在设计构思,使得我们用专业知识、专业技能分析和解决问题,通过设计使得我们对所学知识彻底巩固。 课程设计目的和意义: 通过这次课程设计,进一步掌握单片机理论知识,知道AT89S52单片机的原理、编程和各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力。同时通过毕业设计加深了我们对单片机的认识和兴趣,发挥了我们的创新能力。 在本次课程设计中,充分调动了组员的积极性,彼此之间通过相互合作,共同努力,一起出色地完成了任务! 设计任务:能够实现0~9这10个1位数的加减运算,用10个按键模拟0~9数字键,用两个按键实现加减运算,运算结果用5个数码管显示出来。如:5+3=8。关键词 : 单片机;数码管;矩阵键盘

目录 1.设计方案 (4) 1.1设计思路 (4) 1.2整体设计 (4) 2.电路设计原理 (6) 2.1键盘接口电路 (6) 2.2数码管显示原理及译码电路 (7) 2.3运算模块(单片机控制) (7) 3.功能程序仿真调试 (10) 3.1编程调试环境 (10) 3.2测试结果截图 (11) 4.程序设计 (12) 4.1软件程序设计 (12) 4.2源程序 (14) 5.总结 (18) 6.参考文献 (19)

加法计算器

十进制加法计算器设计报告 目录 1、摘要----------------------------------------------------------------------2 2、设计任务和要求--------------------------------------------------------2 3、单片机简要原理--------------------------------------------------------2 3.1 AT89C51的介绍------------------------------------------------3 3.2 单片机最小系统------------------------------------------------6 3.3 七段共阳极数码管---------------------------------------------7 4、硬件设计-----------------------------------------------------------------7 4.1 键盘电路的设计-------------------------------------------------8 4.2 显示电路的设计-----------------------------------------------9 5、软件设计------------------------------------------------------------10 5.1 系统设计------------------------------------------------------10 5.2 显示与按键设计---------------------------------------------12 6、系统调试.-------------------------------------------------------------13 6.1系统初始状态的调试------------------------------------------13 6.2键盘输入功能的调试-----------------------------------------14 6.3系统运算功能的调试------------------------------------------16 7、心得体会与总结---------------------------------------------------------16 参考文献---------------------------------------------------------------------17 附录1 系统硬件电路图--------------------------------------------------18 附录2 程序清单-----------------------------------------------------------19 -----------

4位数加法计算器

安庆师范大学 2014级单片机原理与应用 课程设计报告 课题名称4位数加法计算器的设计 姓名吴昊天、伍浩然、王鹏、万吉 学号070814018、070814008、070814005、070814001 院、系、部计算机学院物联网工程 专业物联网工程 指导教师汪文明 2016年 6月 6日

一、设计任务及要求: 设计任务: 1、通过4*4矩阵键盘输入数字及运算符; 2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示“E”; 3、可以进行加减乘除所有运算; 4、添加其他功能。 要求: 首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。 在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。 然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。 最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。 最后写出设计报告。 指导教师签名: 2016年 6 月 6 日 三、成绩 指导教师签名: 年月日

目录 一、绪言 (1) 二、系统设计 (1) 2.1设计任务 (1) 2.2方案比较与论证 (1) 2.2.1系统整体流程图 (2) 2.2.2单片机的选择方案论证 (2) 2.2.3键盘选择方案论证 (2) 2.2.4显示模块的选择方案论证 (2) 2.2.5蜂鸣器的选择方案论证 (2) 三、硬件电路设计 (2) 3.1计算器的控制电路图 (2) 3.2矩阵键盘的设计 (3) 3.3 LCD1602显示电路的设计 (3) 3.4蜂鸣器驱动电路的设计 (4) 3.5主要元器件选择 (4) 四、程序流程图 (5) 五、c语言程序设计 (5) 六、计算器的仿真 (19) 6.1 Keil调试 (19) 6.2 Proteus调试 (19) 七、结束语 (20) 八、参考文献 (21)

简易加减计算器设计(数电)

电子技术课程设计电气与信息工程学院建筑电气与智能化专业题目:简易加减计算器设计 姓名:徐雪娇 学号:094412110 指导教师:祁林

简易加减计算器设计 一、设计目的 1、在前导验证性认知实验基础上,进行更高层次的命题设计实验. 2、在教师指导下独立查阅资料、设计、特定功能的电子电路。 3、培养利用数字电路知识,解决电子线路中常见实际问题的能力. 4、积累电子制作经验,巩固基础、培养技能、追求创新、走向实用。 5、培养严肃认真的工作作风和严谨的科学态度。 二、设计要求 1、用于两位一下十进制的加减运算。 2、以合适方式显示输入数据及计算结果。 三、总体设计 第一步置入两个四位二进制数。例如(1001)2,(0011)2和(0101)2,(1000)2,同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。 第二步通过开关选择加(减)运算方式; 第三步若选择加运算方式所置数送入加法运算电路进行运算;同理若选 择减运算方式,则所置数送入减法运算电路运算; 第四步前面所得结果通过另外两个七段译码器显示。即: 方案一 通过开关J1-J8接不同的高低电平来控制输入端所置的两个一位十进制数, 译码显示器U10和U13分别显示所置入的两个数。数A直接置入四位超前进位 加法器74LS283的A4-A1端,74LS283的B4-B1端接四个2输入异或门。四个 2输入异或门的一输入端同时接到开关S1上,另一输入端分别接开关J5-J8,通过开关J5-J8控制数B的输入。当开关S1接低电平时,B与0异或的结果为B, 通过加法器74LS283完成两个数A和B的相加。当开关J1接高电平时,B与1 异或的结果为B非,置入的数B在74LS283的输入端为B的反码,且74LS283 的进位信号C0为1,其完成S=A+B(反码)+1,实际上其计算的结果为S=A-B 完成减法运算。由于译码显示器只能显示0-9,所以当A+B>9时不能显示,我们 在此用另一片芯片74LS283完成二进制码与8421BCD码的转换,即S>9(1001) 时加上6(0110)2,产生的进位信号送入译码器U12来显示结果的十位,U11 2 显示结果的个位。由于减法运算时两个一位十进制数相减不会大于10,所以不 会出现上述情况,用一片芯片U11即可显示结果。 方案二 由两异或门两与门和一或门组成全加器,可实现一位二进制加逻辑运算,四 位二进制数并行相加的逻辑运算可采用四个全加器串行进位的方式来实现,将低 位的进位输出信号接到高位的进位输入端,四个全加器依次串行连接,并将最低

简易加减计算器的设计

简易加减计算器的设计 一设计任务和要求 1自选器件制作一个简易计算器实现二位以下十进制数的加减计算 2进一步掌握数字电子技术课程所学的理论知识。 3熟悉几种常见的二——十进制编码器芯片、加法器芯片和八段字符型LED显示芯片,掌握其工作原理及其使用方法,并能够熟的练将其组合连接,使其构成简单的加减计算器,实现二位以下的十进制数的加减计算。 4了解数字系统设计的基本思想方法,学会科学分析和解决问题,培养认真严谨的工作作风和实事求是的工作态度。 二原理电路设计。 (1)方案比较 方案一: 该方案有三大块组成:编码输入电路、加减运算电路和显示电路。 编码输入电路: 和方案一相同,我们采用二——十进制编码器作为编码输入器件,它可将我们输入的十进制数对应的编译成对应的二进制BCD代码,输入到运算电路。 加减运算电路: 加减运算电路主要由74LS283(四位超前进位加法器)和进位信号门电路组成。 由于编码电路送过来的代码信号都是反码的形式,所以我们首先采用非门电路获得正确的代码,仍然采用个位和个位相加,十位和十位的相加的原则,将两个的个位的代码送入到一个加法器中,但是加法器只可以做加法运算,不满足我们的设计要求,因此,我们采用异或门电路,将一个位作为减数的代码与异或门电路异或,目的是取反,得到其反码,再将进位信号接入异或门控制电路,进位相当于加一,这样我们就得到了减数的补码。同样的,74LS283也是一个十六进制的芯片,不满足我们的要求,我们仍然是用组合逻辑电路,设计一个进位信号,这里我们采用两片74LS283,第一片运算编码电路送过来的代码,当其运算结果大于9时,由组合逻辑电路产生进位信号。当运算结果为16、17、18时,我们将进位输出信号与组合逻辑电路进位信号做或运算,这样我们就得到了合适的进位了。可是怎样才可以得到正确的十进制数的代码呢,在其进行加法运算时,我们在第二片加法器上认为加上0110代码,将其与第一片加法器的运算结果做和,这样就得到了我们所需要的云算结果了。当我们我们做减运算时,控制异或门运算电路,得到被减数的补码,使其进行加法运算,当5减6时,为了得到正确的云算结果,我们将第一片的运算结果减六,及加上其补码——十,这样就得到了我们所需要的运算结果了。 十位运算和个位运算相同,不再赘述。 显示电路: 显示电路主要由7448(七段显示译码器)构成,将加减运算电路计算所得的运算结果输入到7448中,就得到了我们所需要的十进制的运算结果了。

简易加法器

教学目标: 能熟练运用CommandButton控件及TextBox控件进行Visual Basic(以下简称VB)程序的设计,能熟练运用条件语句编写代码 教学重点:运用开发VB程序一般过程的思路来开发“简易计算器” 教学难点:分析得出实现“简易计算器”各运算功能的算法。 教学过程: 一、引入新课 任务:让学生按照书上提示完成一个非常简单的VB程序——“计算器”(仅包含开方、平方、求绝对值功能)的制作。 目的:加强对CommandButton控件及TextBox控件的掌握,复习对开方、求绝对值函数的使用。 引入本节课的学习任务:设计一个简易计算器,包含加、减、乘、除、开方、平方等运算。程序界面可参考下图。 具体功能为:在Text1中输入一个数值,然后单击代表运算符的按钮则运算结果会在text2中显示出来;比如在text1中输入一个2,然后按“+”按钮,再输入一个3按“-”按钮,再输入一个-4按“*”按钮,则实际为(2-3)*(-4);最后在text2中显示结果为4。 二、讲授新课 1.界面设计 因为VB是一种可视化的编程工具,其整个用户界面的设计都是基于“可视化操作”的,这对于有一定的Windows操作基础的高二学生来说并不是一件难事。界面设计在VB程序设计中占有重要地位,一个好的界面,不但要令人感觉良好,还要使程序方便易用。让学生熟练掌握VB界面的设计是进行VB程序设计的前提。VB界面的设计主要包括控件的绘制及各控件属性的设置两种工作。 任务:让学生仿照上图设计“简易计算器”的主界面 目的:让学生熟练掌握VB界面设计的方法 上图所用到的8个命令按钮及2个文本框对应的属性如下表所示: 对象属性设置值Command1Caption+Command2Caption-Command3Caption*Command4Caption/Command5Cap tion平方Command6Caption开方Command7Caption清除Command8Caption退出Text1Text0Text2Text空白2.编写事件代码: 这是VB程序教学的重难点。我们应把程序代码的编写重点应放在算法(解决问题的方法和步骤)上面。为提高学生分析问题的能力,我为学生们总结出了一条VB编程的思路:根据题目要求,先分析需要几个控件(界面设计);接着分析要创建什么事件、在每个事件中涉及到哪些控件的属性的变化、还要考虑发生该事件前可能出现的情况(编写代码),那么通过分析,VB代码的编写问题就能迎刃而解了。 提高中学生分析问题的能力是在中学开展程序设计课程的重要原因之一。因此,让学生们按照某种可行的思路来分析、解决问题,无疑对提高他们分析问题的能力是大有帮助的

数字电路设计_加法计算器

姓名罗银贵班级1208105 学号1120810501 实验日期节次教师签字成绩 加法计算器 1.实验目的 通过对加法计算器的设计,掌握组合逻辑电路、时序逻辑电路的分析和设计方法; 了解及掌握中规模集成电路以及各个芯片的管脚图及结构图。 掌握全加器、计数器等芯片的功能及实现方法; 锻炼动手实践能力,提高自身设计能力。 2.总体设计方案或技术路线 设计一个简单的加法计算器,能实现简单的加法运算,计算结果为0—16的和数,并输出到数码管。加法运算的实现要求:用四个开关代表四位二进制数,操纵开关,输入二进制数码,则在相应的数码管上显示出相应的十进制数,即代表被加数;用同样的方法在另外的四个开关上输入二进制数,则在相应的数码管上显示相应的十进制数,即代表加数;当加数与被加数都输入后,在另外的两个数码管上出现两数的和。

3.实验电路图 4.仪器设备名称、型号和技术指标 直流稳压电源、试验箱、万用表; 2个74LS00D、1个74LS283D、1个74LS04D、2个74LS08D、1个74LS20D; 单刀双掷开关9个、导线若干。

5.理论分析或仿真分析结果 开关9置0,闭合J1、J2、J3、J4相应开关输入被加数: 开关9置0,闭合J5、J6、J7、J8相应开关输入加数:

开关9置1,输入相应的被加数和加数,并求和,输出到另外两个数码管上: 6.详细实验步骤及实验测量数据记录 根据实验电路图连接好电路; 检查实验电路无误后,开关9置0; 闭合J1、J2、J3、J4相应开关输入被加数; 闭合J5、J6、J7、J8相应开关输入加数; 开关9置1,输出相应被加数与加数的和。

用计算器计算小数加减法

用计算器计算小数加减法 教学内容:p.53的例4,试一试和练一练,练习九第5~9题 教学目标: 1、在解决现实问题的过程中,能用计算器计算稍复杂的小数加减法,体会小数加减法的两步混合运算的运算顺序。 2、能根据实际情况合理选择解决问题的策略和方法。 3、在经历用计算器探索规律的过程中,激发学生对数学的兴趣。 教学重点难点:用计算器计算稍复杂的小数加、减法的方法。 教学过程: 一、复习解决问题: 1、(第5题)四五年级同学采集树种,四年级采集了13.5千克,五年级比四年级少采集2.8千克。四五年级同学一共采集多少千克? 读题后让学生列式,交流各种解答方法的不同思路: (1)13.5+(13.5-2.8) 四年级是已知的,五年级的未知,先求出五年级再算出两个年级 (2)13.5+1.35-2.8 先假设五年级和四年级一样多,再把五年级少采集的减去。 观察两个算式,哪个更简便?算出结果。 2、(第6题)分别计算书上的4个问题。 交流各个问题,注意有的学生会出现选错商品价格的现象。 二、学习例4,用计算器计算并探索: 1、课前板书: 商品名称数量单价/元金额/元 铅笔 1支 0.80 电池 4节 24.00 铅笔盒 15.40 15.40 书包 1个 44.70 面包 3.00 6.00 问:这是一张不完整的发票,说说“单价、数量、总价”之间的数量关系并算出空的格子。填写完整后,算出总金额。 (可以用计算器算,也可以利用数据特点口算或笔算。) 2、如果老师付出100元买这些商品,应找出多少元? 学生列式计算。 3、(第8题)小明家九月上旬的收支情况如下表。算出每次收支后的余额,并算出合计数。指导学生看懂该份表格,区分“收入”和“支出”,依次算出每一个空格。 讨论:上月结余、合计收入、合计支出以及表中最后余额的关系。 4、用计算器计算前三题,说说你发现了什么规律? (1)找到不变的数:小数部分前面都是8,最后一位是9 (2)找到变的数字及变的规律:整数部分是变的,它比最后一个小数的位数少1;它同时还是后面小数部分的8的个数。 (3)按照发现的规律填出最后一题的得数。 5、两个小数的和是8,相差0.4,这两个小数分别是多少? 引导学生思考并交流: (1)画线段图(图略),发现如果把8减0.4,得到的是两个较小的数;或者把8加上0.4,得到的是两个较大的数。再除以2就可以了。 (2)从平均数的角度考虑:平均数是4,要符合“相差0.4”,一个数要大0.2,另一个数小0.2 (3)检验:两个条件都要符合“和是8”、“差是0.4” 6、思考题:小华在计算一道小数减数时,把被减数十分位上的8看成了3,把减数百分位上的1看成了7。你能算出错误的答案与正确的答案相差多少吗?

入门简单实例加法计算器

本人初学GUI,针对网上版本的混乱,学得一头雾水,特重新整理如下,供大家参考。 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default),点击OK。 2.进入GUI开发环境以后添加3个编辑文本框(Edit Text),2个静态文本框(Static Text),和一个Push Button按钮,布置如下图所示; Edit Text 3 Edit Text 1 Edit Text 2 Push Button (1)第一个“Edit Text 1”的用来存储第一个加数,我们将“string”改为“0”,“tag”改为“input1” (2)第二个“Edit Text 2”的用来存储第二个加数,我们将“string”改为“0”,“tag”改为“input2” (3)第三个“Edit Text 3”的“string”改为“0”,“tag”为“answer” (4)修改Pushbutton按钮的属性,“string”改为“Add”,“tag”改为“add” (5)另外2个Static文本就是的“string”修改为“+”“=” (6)点击“保存”,名字任意取,自动弹出M文件(我的是7.0版本,不知其他版本会不会如此)。 3.我们先为第一个Edit Text文本框添加代码,即读取第一个加数;

点击上图所示红色方框,选择input1_Callback,光标便立刻移到下面这段代码(程序自动生成)的位置。 function input1_Callback(hObject, eventdata, handles) % hObject handle to input1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA) % Hints: get(hObject,’String’) returns contents of input1 as text % str2double(get(hObject,’String’)) returns contents of edit1 as a double 然后在上面这段代码的下面插入如下代码: %以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容input=str2num(get(hObject,'String'));%检查输入是否为空. 如果为空,则默认显示为0 if (isempty(input)) set(hObject,'String','0') end guidata(hObject,handles);%保存handles结构体,只要在handles结构体有改变时,才需要保存%guidata(hObject, handles);%这里由于handles没有改变,故这里其实没有必要,但是为了避免潜在的不必要麻烦,建议在所有Callback都添加该命令。 这段代码使得输入被严格限制,我们不能试图输入一个非数字。 4. 为input2_Callback添加同样一段代码 input=str2num(get(hObject,'String'));%检查输入是否为空. 如果为空,则默认显示为0 if (isempty(input)) set(hObject,'String','0') end guidata(hObject,handles); 5. 现在我们为计算按钮“add”添加代码来实现把数据1(input1)和数据2(input2)相加的目的。 用3中同样的方法在m文件中找到add_Callback代码段,如下; function add_Callback(hObject, eventdata, handles) % hObject handle to add (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) 在上面这段代码后添加以下代码; a=get(handles.input1,'String');

相关文档
相关文档 最新文档