4位数计算器的设计(共19页).doc

上传人:飞****2 文档编号:13851227 上传时间:2022-05-01 格式:DOC 页数:19 大小:167.50KB
返回 下载 相关 举报
4位数计算器的设计(共19页).doc_第1页
第1页 / 共19页
4位数计算器的设计(共19页).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《4位数计算器的设计(共19页).doc》由会员分享,可在线阅读,更多相关《4位数计算器的设计(共19页).doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上目录专心-专注-专业摘要 本文论述了单片机4位数加法计算器的设计,从对设计任务的分析到画电原理图到编程和最后的仿真调试,都进行了一个简单的描述。在设计过程中,采用Keil软件编写源程序,用Protues 7 professional的ISIS 7 professional软件画电原理图并且仿真,通过对编程时的编译和对仿真结果现象的观察,不断地对源程序以及电原理图的修改,最后成功设计出了一个能够进行4位数加法运算的计算器。该计算器通过44的矩阵键盘输入数字及运算符,若运算结果超过4位十进制数,则显示为E;另外,也能进行减法、乘法以及除法的运算,在进行减法运算时,若运算结

2、果小于零,则显示其绝对值;进行除法运算时,若除数等于零,则显示E。关键词:计算器;单片机;数码管;矩阵键盘1 总体任务1.1设计目的 1.通过单片机课程设计,熟练掌握c语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。 2.通过4位数加法计算器的设计,掌握c语言编程的基本语法,和简单程序的编写,最终提高我们的逻辑抽象能力。1.2设计内容和要求 内容:设计一个4位数加法计算器要求:该计算器通过44的矩阵键盘输入数字和运算符,能进行4位十进制以内的正数的加、减、乘、除的运算,如果运算结果超过4位十进制数,4位数码管全部显示为E。1.3 设计思路 1.先熟悉实验原理,了解计算器的工作

3、过程及其显示,了解计算器电原理图的组成元器件。2.了解各元器件的工作原理。3.在keil软件里编写程序,用Protues 7 professional的ISIS 7 professional软件绘制电原理图,并进行仿真,通过对仿真现象的观察,修改原理图或程序,直到满足设计要求为止。2 设计原理分析2.1 计算器的工作原理2.1.1 计算器的工作流程 计算器是对键盘输入的数字及运算符等信号进行分析和处理,最后通过数码管显示出结果的计算工具。当然,在输入数字的同时,数码管也是会显示出输入的数字的,其整个工作流程图如图2.1所示。外界输入数字或运算符 微处理器处理并运算 显示器显示结果 图2.1 计

4、算器的工作流程图2.1.2 编程实现控制 通过编写程序,实现对输入信号的识别、输入数字的显示以及运算结果的显示。2.1.3 功能拓展 在进行减法运算时,若运算结果小于0,数码管显示其绝对值;在进行除法运算时,若除数等于0,数码管显示EEEE。2.2 单片机计算器的基本构成及原理 AT89C51是一种带4K字节闪存可编程可擦除(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称。它能进行简单的运算,通过编写程序,可以让它完成对输入信号的识别、处理以及显示等功能。它完全能满足4位加法计算器的要求

5、,能够完成对键盘输入信号的识别、处理等功能。 据此,本设计系统以单片机位核心,连接成最小系统,由键盘输入模块和4位数码管输出模块等组成,系统放入总体方框图如图2.2所示。 键盘输入最小系统外围接口电路 单片机 数码管显示 图2.2系统的总体方框图 键盘作为整个系统的输入端口,单片机是整个系统的核心,兼有识别信号和处理等功能,而数码管是整个系统的输出部分,用于显示输入的数字和运算后的结果。3硬件电路的设计3.1系统硬件总电路构成及原理 实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,44的矩阵键盘和4位共阳极的数码管组成。其中44的矩阵键盘是用来输入信号的,而4

6、位共阳极的数码管是用来显示输入的数字及运算结果的。3.2硬件电路的部分组成元器件的简介3.2.1AT89C51单片机 AT89C51单片机是80C51类型中的一种,其基本型包含CPU系统、存储器系统和I/O口及其他功能单元。单片机的最小控制系统如图3.1所示。图3.1 单片机及其最小控制系统3.2.2 八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳极和共阴极之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起。这样,一个LE

7、D数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳极八段LED数码显示管,其他类形的显示管与其类似。图3.2即为八段数码管,下面的引脚从左至右一次为a,b,c,d,e,f,g,dp和位选引脚。图3.2 LED数码管 数码管的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如a,b,c,d,e,f,g全亮是显示为8,其中共阳极连接的数码管的驱动代码如表3.1所示。表3.1 共阳极数码管驱动代码显示数值dp g f e d c b a驱动代码(16进制)01 1 0 0 0 0 0 0 C011 1

8、 1 1 1 0 0 1F921 0 1 0 0 0 1 0A431 0 1 0 0 0 0 B041 0 0 1 1 0 0 19951 0 0 1 0 0 1 09261 0 0 0 0 0 1 0 8271 1 1 1 1 0 0 0 F881 0 0 0 0 0 0 08091 0 0 1 0 0 0 0 90 4位八段数码显示管是由4个数码管组成,如图3.3所示,其左侧的a,b,c,d,e,f,g,dp为数码管的驱动引脚,右侧的1,2,3,4为数码管的位选引脚。图3.3 4位数码显示管 4位数码管显示计算数据的过程:如输入数字4136,当从键盘上输入4时,4位数码管第4位显示4,其他

9、三位不亮;再次输入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列的顺序排列构成44的矩阵键盘,如图3.4所示,图3.4所示的键盘是Protues 7 professional的ISIS 7 professional软件中的一个元器件,其原理就是16个按钮按4行4列排列构成的。图3.4 矩阵键盘 在4位计算器的设计中,单片机识别矩阵键盘是通过按列扫描的方式

10、进行的。其具体过程如下:对所有的列加以高电平,对第一行(A行)加以低电平,扫描列的电平变化,如列有高电平变为低电平,则能确定按下的键是哪一个;如第一列没有电平变化,依次对第二行(B行)、第三行(C行)和第四行(D行)加以低电平,分别对列进行扫描,看列的电平变化,来确定按下的键。3.3 元器件清单 4位加法计算器的硬件电路图主要由表3.2所示的元器件组成 表3.2元器件列表器件说明AT89C51单片机核心器件晶体51单片机工作的振荡源电阻对电流大小进行限制电容51单片机复位和振荡源工作的辅助器件矩阵键盘用于输入数字和运算符4位8段数码管用于显示输入的数字及运算结果3.4 电路原理图图3.5 系统

11、电路原理图4 系统程序的简单设计4.1 程序方框图开始初始化显示0取第一个数取运算符取第二个数取等于号计算并显示结果结束图4.1 计算器程序流程图4.2 计算器程序#include sbit P3_0=P30;sbit P3_1=P31;sbit P3_2=P32;sbit P3_3=P33;unsigned char sz12,xs14,xs24,xs34,xs44,sj;int i,cs,bb,t1,t2,fh,s1,s2,k;void chushihua() /*初始化程序*/bb=1;xs10=10;xs11=10;xs12=10;xs13=10;xs20=10;xs21=10;xs2

12、2=10;xs23=10;xs30=11;xs31=11;xs32=11;xs33=11;xs40=0;xs41=10;xs42=10;xs43=10;t1=0;t2=0;s1=s2=0;fh=0;cs=1;void xianshi(unsigned char xs4) /*显示程序*/int i,j;unsigned char zy;zy=0xf1;for (i=0;i1);for (j=0;j100;j+);return;unsigned char saomiao() /*键盘扫描程序*/int i;unsigned char pp;for(i=0;i1000;i+);P0=0xfe;P3

13、=0x0f;pp=P3;if (P3_0=0) P3=0x0f;pp=P3;while (P3_0=0);for (i=0;i1000;i+);return 7;if (P3_1=0) P3=0x0f;pp=P3;while (P3_1=0);for (i=0;i1000;i+);return 8;if (P3_2=0) P3=0x0f;pp=P3;while (P3_2=0);for (i=0;i1000;i+);return 9;if (P3_3=0) P3=0x0f;pp=P3;while (P3_3=0);for (i=0;i1000;i+);return 11;P0=0xfd;P3=

14、0x0f;pp=P3;if (P3_0=0) P3=0x0f;pp=P3;while (P3_0=0);for (i=0;i1000;i+);return 4;if (P3_1=0) P3=0x0f;pp=P3;while (P3_1=0);for (i=0;i1000;i+);return 5;if (P3_2=0) P3=0x0f;pp=P3;while (P3_2=0);for (i=0;i1000;i+);return 6;if (P3_3=0) P3=0x0f;pp=P3;while (P3_3=0);for (i=0;i1000;i+);return 12;P0=0xfb;P3=0

15、x0f;pp=P3;if (P3_0=0) P3=0x0f;pp=P3;while (P3_0=0);for (i=0;i1000;i+);return 1;if (P3_1=0) P3=0x0f;pp=P3;while (P3_1=0);for (i=0;i1000;i+);return 2;if (P3_2=0) P3=0x0f;pp=P3;while (P3_2=0);for (i=0;i1000;i+);return 3;if (P3_3=0) P3=0x0f;pp=P3;while (P3_3=0);for (i=0;i1000;i+);return 13;P0=0xf7;P3=0x

16、0f;pp=P3;if (P3_0=0) P3=0x0f;pp=P3;while (P3_0=0);for (i=0;i1000;i+);return 16;if (P3_1=0) P3=0x0f;pp=P3;while (P3_1=0);for (i=0;i1000;i+);return 0;if (P3_2=0) P3=0x0f;pp=P3;while (P3_2=0);for (i=0;i1000;i+);return 15;if (P3_3=0) P3=0x0f;pp=P3;while (P3_3=0);for (i=0;i=0 & x0;i-)xs1i=xs1i-1;xs10=x;s

17、1+;t1=t1*10+x;if (bb=2)if (s2=4) cs=0;return ;elsefor (i=3;i0;i-)xs2i=xs2i-1;xs20=x;s2+;t2=t2*10+x;if (x10)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=10000) cs=0;k=1;return;else if (t1=0 & t1=10 &

18、t1=100 & t1=1000 & t110000) xs10=t1%10;xs11=t1%100/10;xs12=(t1-(t1/1000)*1000)/100;xs13=t1/1000;bb=2;s2=0;t2=0;xs20=10;xs21=10;xs22=10;xs23=10;fh=x;void main() /*主程序*/ sz0=0xc0;sz1=0xf9;sz2=0xa4;sz3=0xb0;sz4=0x99;sz5=0x92;sz6=0x82;sz7=0xf8;sz8=0x80;sz9=0x90;sz10=0xff;sz11=0x86; cs=0;k=2;for (;)if (c

19、s=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时,结果超出了计算器的范围,计算器显示错误,数码管的显示如

20、图5.2所示。图5.1 110+600的结果显示图图5.2 超出计算范围显示错误6 课程设计总结经过两周的努力,4位加法计算器终于设计成功,达到了要求的目标。这两周的课程设计,我过的忙碌且充实着,从上课后对单片机的懵懵懂懂,到现在熟练运用,我都觉得受益颇多。同学们在这为期两个星期的单片机课程设计中,都辛勤的努力着,都在自己的设计课题上都有着一个又一个的进步,大家的脸上都流露出兴奋的喜悦。在这两周的设计中我们不仅学到了关于自己课程设计题目方面的东西。同时我们也从课程设计中的相互交流和互帮互助中学到了很多关于单片机应用方面的其它知识,这些知识都是我们在这次课程设计实践中一点一滴的积累下来的。至于设

21、计课题,我选择的是4位加法计算器的设计,在最初设计的时候,还是低估了它的难度,前两天,一次次的碰壁,既不会用proteus软件画图,也不熟悉keil编程的语法,弄好的程序不是这里有错误,就是那时那里有错误。后来在网上学习了相关的知识,并去图书馆借了大量的单片机应用以及c语言编程相关方面的书籍阅读后,对其有了一个很大方面的了解,在后来不断的对程序的修改中,慢慢地就熟练了单片机的编程语法,最后也按要求完成了课题的设计要求。最终我们圆满的完成了这次非常有意义的课程设计,在最后我想说的是通过这次课程设计我们学到的不仅仅是那些知识,同时我们还学到了很多关于同学之间合作的重要性,同时也加深了我们今后,齐心协力一起解决问题的意识。参考文献1程国钢.案例解说单片机c语言开发.电子工业出版社,2012.2汤竞南,沈国琴. 51单片机C语言开发与实例.人民邮电出版社,2008.3李全利.单片机原理与接口技术.高等教育出版社,2009.4刘鲲,孙春亮.单片机C语言入门. 人民邮电出版社,2010.5周怀芬.简易计算器的设计与实现.天津职业院校联合校报 NO.6 Vol.15 2013.66周润景,张丽娜. 基PROTEUS的电路及单片机系统设计与仿真.航空航天大学出版社, 2006 .7姜志海,赵艳雷,陈松.单片机的C语言程序设计与应用.电子工业出版社2011.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com