首页 4位数计算器的设计

4位数计算器的设计

举报
开通vip

4位数计算器的设计目录0摘要11总体任务11.1设计目的11.2设计内容和要求11.3设计思路22设计原理分析22.1计算器的工作原理22.1.1计算器的工作流程22.1.2编程实现控制22.1.3功能拓展22.2单片机计算器的基本构成及原理43硬件电路的设计43.1系统硬件总电路构成及原理43.2硬件电路的部分组成元器件的简介43.2.1AT89C51单片机43.2.2八段LED数码管63.2.3矩阵键盘73.3元器件清单73.4电路原理图84系统程序的简单设计84.1程序方框图84.2计算器程序155系统的仿真调试166课程设计...

4位数计算器的设计
目录0摘要11总体任务11.1设计目的11.2设计内容和要求11.3设计思路22设计原理分析22.1计算器的工作原理22.1.1计算器的工作 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 22.1.2编程实现控制22.1.3功能拓展22.2单片机计算器的基本构成及原理43硬件电路的设计43.1系统硬件总电路构成及原理43.2硬件电路的部分组成元器件的简介43.2.1AT89C51单片机43.2.2八段LED数码管63.2.3矩阵键盘73.3元器件清单73.4电路原理图84系统程序的简单设计84.1程序方框图84.2计算器程序155系统的仿真调试166课程设计总结17参考文献摘要本文论述了单片机4位数加法计算器的设计,从对设计任务的分析到画电原理图到编程和最后的仿真调试,都进行了一个简单的描述。在设计过程中,采用Keil软件编写源程序,用Protues7professional的ISIS7professional软件画电原理图并且仿真,通过对编程时的编译和对仿真结果现象的观察,不断地对源程序以及电原理图的修改,最后成功设计出了一个能够进行4位数加法运算的计算器。该计算器通过4×4的矩阵键盘输入数字及运算符,若运算结果超过4位十进制数,则显示为E;另外,也能进行减法、乘法以及除法的运算,在进行减法运算时,若运算结果小于零,则显示其绝对值;进行除法运算时,若除数等于零,则显示E。关键词:计算器;单片机;数码管;矩阵键盘1总体任务1.1设计目的1.通过单片机课程设计,熟练掌握c语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。2.通过4位数加法计算器的设计,掌握c语言编程的基本语法,和简单程序的编写,最终提高我们的逻辑抽象能力。1.2设计内容和要求内容:设计一个4位数加法计算器要求:该计算器通过4×4的矩阵键盘输入数字和运算符,能进行4位十进制以内的正数的加、减、乘、除的运算,如果运算结果超过4位十进制数,4位数码管全部显示为E。1.3设计思路1.先熟悉实验原理,了解计算器的工作过程及其显示,了解计算器电原理图的组成元器件。2.了解各元器件的工作原理。3.在keil软件里编写程序,用Protues7professional的ISIS7professional软件绘制电原理图,并进行仿真,通过对仿真现象的观察,修改原理图或程序,直到满足设计要求为止。2设计原理分析2.1计算器的工作原理计算器的工作流程计算器是对键盘输入的数字及运算符等信号进行分析和处理,最后通过数码管显示出结果的计算工具。当然,在输入数字的同时,数码管也是会显示出输入的数字的,其整个工作流程图如图2.1所示。外界输入数字或运算符微处理器处理并运算显示器显示结果图2.1计算器的工作流程图编程实现控制通过编写程序,实现对输入信号的识别、输入数字的显示以及运算结果的显示。2.1.3功能拓展在进行减法运算时,若运算结果小于0,数码管显示其绝对值;在进行除法运算时,若除数等于0,数码管显示EEEE。2.2单片机计算器的基本构成及原理AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。它能进行简单的运算,通过编写程序,可以让它完成对输入信号的识别、处理以及显示等功能。它完全能满足4位加法计算器的要求,能够完成对键盘输入信号的识别、处理等功能。据此,本设计系统以单片机位核心,连接成最小系统,由键盘输入模块和4位数码管输出模块等组成,系统放入总体方框图如图2.2所示。键盘输入最小系统外围接口电路单片机数码管显示图2.2系统的总体方框图键盘作为整个系统的输入端口,单片机是整个系统的核心,兼有识别信号和处理等功能,而数码管是整个系统的输出部分,用于显示输入的数字和运算后的结果。3硬件电路的设计3.1系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,4×4的矩阵键盘和4位共阳极的数码管组成。其中4×4的矩阵键盘是用来输入信号的,而4位共阳极的数码管是用来显示输入的数字及运算结果的。3.2硬件电路的部分组成元器件的简介3.2.1AT89C51单片机AT89C51单片机是80C51类型中的一种,其基本型包含CPU系统、存储器系统和I/O口及其他功能单元。单片机的最小控制系统如图3.1所示。图3.1单片机及其最小控制系统3.2.2八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳极和共阴极之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳极八段LED数码显示管,其他类形的显示管与其类似。图3.2即为八段数码管,下面的引脚从左至右一次为a,b,c,d,e,f,g,dp和位选引脚。图3.2LED数码管数码管的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如a,b,c,d,e,f,g全亮是显示为8,其中共阳极连接的数码管的驱动代码如表3.1所示。表3.1共阳极数码管驱动代码 显示数值 dpgfedcba 驱动代码(16进制) 0 11000000 C0 1 11111001 F9 2 10100010 A4 3 1010000 B0 4 10011001 99 5 10010010 92 6 10000010 82 7 11111000 F8 8 10000000 80 9 10010000 904位八段数码显示管是由4个数码管组成,如图3.3所示,其左侧的a,b,c,d,e,f,g,dp为数码管的驱动引脚,右侧的1,2,3,4为数码管的位选引脚。图3.34位数码显示管4位数码管显示计算数据的过程:如输入数字4136,当从键盘上输入4时,4位数码管第4位显示4,其他三位不亮;再次输入1时,数码管第3位显示4,同时第4位显示1,其他两位不亮;再次输入3时,数码管第2位显示4,同时第3位显示1,第2位显示3,第一位不亮;再次输入6时,数码管第1位显示4,同时第2位显示1,第3位显示3,第4位显示6。3.2.3矩阵键盘矩阵键盘是由16个按钮组成的,16个按钮按4行4列的顺序排列构成4×4的矩阵键盘,如图3.4所示,图3.4所示的键盘是Protues7professional的ISIS7professional软件中的一个元器件,其原理就是16个按钮按4行4列排列构成的。图3.4矩阵键盘在4位计算器的设计中,单片机识别矩阵键盘是通过按列扫描的方式进行的。其具体过程如下:对所有的列加以高电平,对第一行(A行)加以低电平,扫描列的电平变化,如列有高电平变为低电平,则能确定按下的键是哪一个;如第一列没有电平变化,依次对第二行(B行)、第三行(C行)和第四行(D行)加以低电平,分别对列进行扫描,看列的电平变化,来确定按下的键。3.3元器件清单4位加法计算器的硬件电路图主要由表3.2所示的元器件组成表3.2元器件列表 器件 说明 AT89C51单片机 核心器件 晶体 51单片机工作的振荡源 电阻 对电流大小进行限制 电容 51单片机复位和振荡源工作的辅助器件 矩阵键盘 用于输入数字和运算符 4位8段数码管 用于显示输入的数字及运算结果3.4电路原理图图3.5系统电路原理图4系统程序的简单设计4.1程序方框图开始初始化显示0取第一个数取运算符取第二个数取等于号计算并显示结果结束图4.1计算器程序流程图4.2计算器程序#include<reg51.h>sbitP3_0=P3^0;sbitP3_1=P3^1;sbitP3_2=P3^2;sbitP3_3=P3^3;unsignedcharsz[12],xs1[4],xs2[4],xs3[4],xs4[4],sj;inti,cs,bb,t1,t2,fh,s1,s2,k;voidchushihua()/*初始化程序*/{bb=1;xs1[0]=10;xs1[1]=10;xs1[2]=10;xs1[3]=10;xs2[0]=10;xs2[1]=10;xs2[2]=10;xs2[3]=10;xs3[0]=11;xs3[1]=11;xs3[2]=11;xs3[3]=11;xs4[0]=0;xs4[1]=10;xs4[2]=10;xs4[3]=10;t1=0;t2=0;s1=s2=0;fh=0;cs=1;}voidxianshi(unsignedcharxs[4])/*显示程序*/{inti,j;unsignedcharzy;zy=0xf1;for(i=0;i<4;i++){P2=(0xff-zy);P1=sz[xs[i]];zy=(zy>>1);for(j=0;j<100;j++);}return;}unsignedcharsaomiao()/*键盘扫描程序*/{inti;unsignedcharpp;for(i=0;i<1000;i++);P0=0xfe;P3=0x0f;pp=P3;if(P3_0==0){P3=0x0f;pp=P3;while(P3_0==0);for(i=0;i<1000;i++);return7;}if(P3_1==0){P3=0x0f;pp=P3;while(P3_1==0);for(i=0;i<1000;i++);return8;}if(P3_2==0){P3=0x0f;pp=P3;while(P3_2==0);for(i=0;i<1000;i++);return9;}if(P3_3==0){P3=0x0f;pp=P3;while(P3_3==0);for(i=0;i<1000;i++);return11;}P0=0xfd;P3=0x0f;pp=P3;if(P3_0==0){P3=0x0f;pp=P3;while(P3_0==0);for(i=0;i<1000;i++);return4;}if(P3_1==0){P3=0x0f;pp=P3;while(P3_1==0);for(i=0;i<1000;i++);return5;}if(P3_2==0){P3=0x0f;pp=P3;while(P3_2==0);for(i=0;i<1000;i++);return6;}if(P3_3==0){P3=0x0f;pp=P3;while(P3_3==0);for(i=0;i<1000;i++);return12;}P0=0xfb;P3=0x0f;pp=P3;if(P3_0==0){P3=0x0f;pp=P3;while(P3_0==0);for(i=0;i<1000;i++);return1;}if(P3_1==0){P3=0x0f;pp=P3;while(P3_1==0);for(i=0;i<1000;i++);return2;}if(P3_2==0){P3=0x0f;pp=P3;while(P3_2==0);for(i=0;i<1000;i++);return3;}if(P3_3==0){P3=0x0f;pp=P3;while(P3_3==0);for(i=0;i<1000;i++);return13;}P0=0xf7;P3=0x0f;pp=P3;if(P3_0==0){P3=0x0f;pp=P3;while(P3_0==0);for(i=0;i<1000;i++);return16;}if(P3_1==0){P3=0x0f;pp=P3;while(P3_1==0);for(i=0;i<1000;i++);return0;}if(P3_2==0){P3=0x0f;pp=P3;while(P3_2==0);for(i=0;i<1000;i++);return15;}if(P3_3==0){P3=0x0f;pp=P3;while(P3_3==0);for(i=0;i<1000;i++);return14;}return10;}voidchuli(unsignedcharx)/*运算程序*/{inti;if(x==16){cs=0;k=2;return;}if(x>=0&&x<10){k=0;if(bb==1){if(s1==4){cs=0;return;}else{for(i=3;i>0;i--)xs1[i]=xs1[i-1];xs1[0]=x;s1++;t1=t1*10+x;}}if(bb==2){if(s2==4){cs=0;return;}else{for(i=3;i>0;i--)xs2[i]=xs2[i-1];xs2[0]=x;s2++;t2=t2*10+x;}}}if(x>10){if(bb==1){fh=x;bb=2;return;}if(bb==2){if(fh==11&&t2==0)t1=10000;if(fh==11)t1=t1/t2;if(fh==12)t1=t1*t2;if(fh==13)t1=t1-t2;if(fh==14)t1=t1+t2;if(t1<0)t1=-t1;if(t1>=10000){cs=0;k=1;return;}else{if(t1>=0&&t1<10){xs1[0]=t1;xs1[1]=10;xs1[2]=10;xs1[3]=10;}if(t1>=10&&t1<100){xs1[0]=t1%10;xs1[1]=t1/10;xs1[2]=10;xs1[3]=10;}if(t1>=100&&t1<1000){xs1[0]=t1%10;xs1[1]=(t1-(t1/100)*100)/10;xs1[2]=t1/100;xs1[3]=10;}if(t1>=1000&&t1<10000){xs1[0]=t1%10;xs1[1]=t1%100/10;xs1[2]=(t1-(t1/1000)*1000)/100;xs1[3]=t1/1000;}bb=2;s2=0;t2=0;xs2[0]=10;xs2[1]=10;xs2[2]=10;xs2[3]=10;fh=x;}}}}voidmain()/*主程序*/{sz[0]=0xc0;sz[1]=0xf9;sz[2]=0xa4;sz[3]=0xb0;sz[4]=0x99;sz[5]=0x92;sz[6]=0x82;sz[7]=0xf8;sz[8]=0x80;sz[9]=0x90;sz[10]=0xff;sz[11]=0x86;cs=0;k=2;for(;;){if(cs==0)chushihua();if(cs==1)sj=saomiao();if(cs==1&&sj!=10)chuli(sj);if(cs==1&&(bb==1||bb==2&&s2==0))xianshi(xs1);if(cs==1&&(bb==2&&s2!=0))xianshi(xs2);if(k==1)xianshi(xs3);if(cs==1&&k==2)xianshi(xs4);}}5系统的仿真调试进行110+600+9500的加法运算时,在进行前一部分的加法,即110+600是的结果显示如图5.1所示。在其结果上再加上9500时,结果超出了计算器的范围,计算器显示错误,数码管的显示如图5.2所示。图5.1110+600的结果显示图图5.2超出计算范围显示错误6课程设计总结经过两周的努力,4位加法计算器终于设计成功,达到了要求的目标。这两周的课程设计,我过的忙碌且充实着,从上课后对单片机的懵懵懂懂,到现在熟练运用,我都觉得受益颇多。同学们在这为期两个星期的单片机课程设计中,都辛勤的努力着,都在自己的设计课题上都有着一个又一个的进步,大家的脸上都流露出兴奋的喜悦。在这两周的设计中我们不仅学到了关于自己课程设计题目方面的东西。同时我们也从课程设计中的相互交流和互帮互助中学到了很多关于单片机应用方面的其它知识,这些知识都是我们在这次课程设计实践中一点一滴的积累下来的。 至于设计课题,我选择的是4位加法计算器的设计,在最初设计的时候,还是低估了它的难度,前两天,一次次的碰壁,既不会用proteus软件画图,也不熟悉keil编程的语法,弄好的程序不是这里有错误,就是那时那里有错误。后来在网上学习了相关的知识,并去图书馆借了大量的单片机应用以及c语言编程相关方面的书籍阅读后,对其有了一个很大方面的了解,在后来不断的对程序的修改中,慢慢地就熟练了单片机的编程语法,最后也按要求完成了课题的设计要求。最终我们圆满的完成了这次非常有意义的课程设计,在最后我想说的是通过这次课程设计我们学到的不仅仅是那些知识,同时我们还学到了很多关于同学之间合作的重要性,同时也加深了我们今后,齐心协力一起解决问题的意识。参考文献[1]程国钢.案例解说单片机c语言开发.电子工业出版社,2012.[2]汤竞南,沈国琴.51单片机C语言开发与实例.人民邮电出版社,2008.[3]李全利.单片机原理与接口技术.高等教育出版社,2009.[4]刘鲲,孙春亮.单片机C语言入门.人民邮电出版社,2010.[5]周怀芬.简易计算器的设计与实现.天津职业院校联合校报NO.6Vol.152013.6[6]周润景,张丽娜.基PROTEUS的电路及单片机系统设计与仿真.航空航天大学出版社,2006.[7]姜志海,赵艳雷,陈松.单片机的C语言程序设计与应用.电子工业出版社2011.
本文档为【4位数计算器的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥29.9 已有0 人下载
最新资料
资料动态
专题动态
is_704284
暂无简介~
格式:doc
大小:210KB
软件:Word
页数:19
分类:公务员考试
上传时间:2020-09-18
浏览量:0