4位数加法计算器0.docx

上传人:b****6 文档编号:3729279 上传时间:2022-11-25 格式:DOCX 页数:4 大小:20.66KB
下载 相关 举报
4位数加法计算器0.docx_第1页
第1页 / 共4页
4位数加法计算器0.docx_第2页
第2页 / 共4页
4位数加法计算器0.docx_第3页
第3页 / 共4页
4位数加法计算器0.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

4位数加法计算器0.docx

《4位数加法计算器0.docx》由会员分享,可在线阅读,更多相关《4位数加法计算器0.docx(4页珍藏版)》请在冰豆网上搜索。

4位数加法计算器0.docx

4位数加法计算器0

4位数加法计算器

4位数加法计算器安庆师范大学2019级单片机原理与应用课题名称姓名学号、系、部专业2019年6月6日院1目录一、绪言?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

1二、系统设计?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

12.1设计任务?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

12.2方案比较与论证?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

12.2.1系统整体流程图?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

22.2.2单片机的选择方案论证?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

22.2.3键盘选择方案论证?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

22.2.4显示模块的选择方案论证?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

22.2.5蜂鸣器的选择方案论证?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

2三、硬件电路设计?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

23.1计算器的控制电路图?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

23.2矩阵键盘的设计?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

33.3LCD1602显示电路的设计?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

33.4蜂鸣器驱动电路的设计?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

43.5主要元器件选择?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

4四、程序流程图?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

5五、c语言程序设计?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

5六、计算器的仿真?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

196.1Keil调试?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

196.2Proteus调试?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

19七、结束语?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

20八、参考文献?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

212一、绪言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。

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

电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。

本设计采用AT89C52单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。

数字钟已成为人们日常生活中:

必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

二、系统设计2.1设计任务1、通过4*4矩阵键盘输入数字及运算符;2、可以进行4位十进制数以内的加法预算。

如果计算结果超出四位数,则全部显示E;3、可以进行加减乘除所有运算;4、添加其他功能。

2.2方案比较与论证2.2.1系统整体流程图图1系统整体流程图2.2.2计算器的控制方案论证用4*4的矩阵键盘组成0-9数字键及加、减、乘、除、等于、清零按键,LCD屏幕实时显3示输入的数字和运算符号,每按下一个按键都有蜂鸣器发出的响声。

从矩阵键盘输入一个数字,选择运算符,再输入一个数字,然后按下等于键,最后的计算结果会呈现在LCD屏幕上。

2.2.3单片机的选择方案论证方案一:

采用可编程逻辑期间CPLD作为控制器。

CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、I/O资源丰富、易于进行功能扩展。

采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。

但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案方案二:

采用Atmel公司的AT89C52单片机作为控制器。

AT89C52是一个低功耗,高性能的51内核的CMOS8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256bytes的随机存取数据存储器(RAM),32个双向I/O口,2个16位可编程定时计数器。

综合考虑,选择方案二,采用Atmel公司的AT89C52单片机作为控制器。

2.2.4键盘选择方案论证方案一:

采用独立式键盘。

由于各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。

此种键盘适用于按键较少或操作速度较高的场合。

但本题发挥部分要求16个功能键,按键数目较多,这就需要较多的输入口线,而且电路结构复杂。

故此方案不可取。

方案二:

采用矩阵键盘。

它由行和列组成,按键位于行列的交叉点上,行线信号和列线信号分别通过两个接口和CPU相连,通过行列扫描法判定按键的位置,此方案适用于按键较多的场合。

2.2.5显示模块的选择方案论证方案一:

采用带字库LCD模块显示。

能显示复杂的信息,具有质量轻,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流。

但是价格昂贵。

方案二:

采用LED数码管显示。

数码管能显示数字和符号,但是占用I/O口资源较多,对于简单的电路可以选用此方案。

计算器,需要较为强大的人机交互界面,故选用方案一,显示所需信息。

2.2.6蜂鸣器的选择方案论证4方案一:

采用有源蜂鸣器。

有源蜂鸣器内部带震荡源,只要一通电就会发出响声。

方案二:

采用无源蜂鸣器。

无源蜂鸣器内部不带震荡源,所以用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它。

综合考虑,为了程序控制的方便,选用了方案一。

三硬件电路设计3.1计算器控制电路图图2计算器控制线路图3.2矩阵式键盘的设计键盘电路如图3所示。

设计数字键0~9的键号依次为0~9,运算符号分别为+、-、*、/,以及=和清零C,通过逐行扫描函数来确定按下的键位。

5图3键盘电路3.3LCD1602显示电路的设计LCD1602液晶屏采用LM016L型号元件,其电路如图3所示。

图4LCD1602显示电路3.4蜂鸣器驱动电路的设计蜂鸣器的驱动采用PNP三极管来驱动,低电平有效。

其电路如图5所示。

6图5蜂鸣器电路图3.5主要元器件选择主要元器件选用型号和数量如表1所示:

7四、程序流程图五C语言程序设计#includelt;reg51.hgt;#includelt;intrins.hgt;#defineucharunsignedchar#defineuintunsignedintsbitlcden=P2_;//定义E口sbitlcdrs=P2_;//定义RS口sbitbeep=P2_;//定义蜂鸣器ucharcodetable[]={#39;0#39;,#39;1#39;,#39;2#39;,#39;3#39;,#39;4#39;,#39;5#39;,#39;6#39;,//创建键位数组,数字,运算符号,等于号,清零(小数点)#39;7#39;,#39;8#39;,#39;9#39;,#39;+#39;,#39;-#39;,#39;*#39;,#39;/#39;,#39;=#39;,#39;.#39;};8ucharkey,flag1,js,k1,k2;uchara[20],b[20];floatjieguo=0;voiddelay(ucharz)//延迟函数{ucharx,y;for(x=z;xgt;0;x--)for(y=110;ygt;0;y--);}voidwrite_cmd(ucharcmd)//写命令函数{lcdrs=0;P1=cmd;delay(5);lcden=1;delay(4);lcden=0;}voidwrite_data(uchardate)//写数据函数{lcdrs=1;P1=date;delay(5);lcden=1;delay(5);lcden=0;}voidinit()//LCD初始化函数{lcden=0;write_cmd(0x38);//设置16x2显示,8位数据接口write_cmd(0x0c);//设置开显示,不显示光标(关显示是0x08)write_cmd(0x06);//写一个字符后地址指针加1write_cmd(0x01);//清屏}voidkeyscan(){uchartemp,uu=0xf7;uinti;for(i=0;ilt;4;i++){uu=_crol_(uu,1);//左移P3=uu;temp=P3;temp=tempamp;0x0f;9if(temp!

=0x0f){delay(10);temp=P3;temp=tempamp;0x0f;if(temp!

=0x0f){temp=P3;switch(temp){case0xee:

key=1;beep=0;delay(200);beep=1;break;//延迟200响声case0xde:

key=2;beep=0;delay(200);beep=1;break;case0xbe:

key=3;beep=0;delay(200);beep=1;break;case0x7e:

key=10;beep=0;delay(200);beep=1;break;case0xed:

key=4;beep=0;delay(200);beep=1;break;case0xdd:

key=5;beep=0;delay(200);beep=1;break;case0xbd:

key=6;beep=0;delay(200);beep=1;break;case0x7d:

key=11;beep=0;delay(200);beep=1;break;case0xeb:

key=7;beep=0;delay(200);beep=1;break;case0xdb:

key=8;beep=0;delay(200);beep=1;break;case0xbb:

key=9;beep=0;delay(200);beep=1;break;case0x7b:

key=12;beep=0;delay(200);beep=1;break;case0xe7:

key=0;beep=0;delay(200);beep=1;break;case0xd7:

key=15;beep=0;delay(200);beep=1;beep=0;delay(200);beep=1;beep=0;delay(200);beep=1;break;//清零长响声case0xb7:

key=13;beep=0;delay(200);beep=1;break;case0x77:

key=14;beep=0;delay(180);beep=1;delay(100);beep=0;delay(180);beep=1;break;//等于按键两声短响,中间较短间隔}while(temp!

=0x0f){temp=P3;temp=tempamp;0x0f;}flag1=1;}}}}voidjscl()//计算显示函数{uchari,j,n;floats,temp2;10longints1,s2,a1,b1,c1,temp1;a1=1;b1=1;s1=0;s2=0;s=0;if(k2!

=0){for(j=0;jlt;k1+1;j++)//存放第一操作数{for(i=0;ilt;k1-j;i++)a1=a1*10;s1=s1+a[j]*a1;a1=1;}for(j=k1+1;jlt;k2+1;j++)//存放第二操作数{for(i=0;ilt;k2-j;i++)b1=b1*10;s2=s2+a[j]*b1;b1=1;}if(js==10)//判断运算符号{s=s1+s2;}if(js==11){s=s1-s2;}if(js==12){s=s1*s2;}if(js==13){s=(s1*0.1)/(s2*0.1);}jieguo=s;}elses=jieguo;if(jieguogt;9999||sgt;=9999){write_data(#39;E#39;);11}else//运算结果小数的处理{c1=(longint)(s*1000)%10;if(c1gt;=5)s=s+0.01;temp1=(longint)(s);temp2=s-temp1;n=0;while(temp1){b[n]=temp1%10;temp1=temp1/10;n++;}b[n]=temp2*10;b[n+1]=(uchar)(temp2*100)%10;for(i=n;igt;0;i--){write_data(table[b[i-1]]);}if(jieguolt;1){write_data(table[0]);write_data(table[15]);write_data(table[b[n]]);write_data(table[b[n+1]]);}else{write_data(table[15]);write_data(table[b[n]]);write_data(table[b[n+1]]);}}}voidmain(){uchari,j;init();write_cmd(0x80);//将液晶指针定位在第一行第一个单元key=15;i=0;flag1=0;while

(1)12{keyscan();if(flag1==1){}}}if(key==15)//判断为清零操作{write_cmd(0x01);i=0;for(j=0;jlt;20;j++){a[j]=0;b[j]=0;}k1=0;k2=0;}elseif(keylt;10)//判断为数字{write_data(table[key]);a[i]=key;i++;}elseif(keylt;14)//判断为运算符号{write_data(table[key]);k1=i-1;js=key;}else//判断为等于操作{write_data(table[key]);if(i==0)k2=0;elsek2=i-1;write_cmd(0x80+0x40);jscl();}flag1=0;136.计算器仿真在完成了计算器硬件设计和软件设计以后,便进入系统的调试阶段。

系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。

6.1Keil调试6.2Proteus调试147结束语通过这次课程设计,使我们得到了一次用专业知识和专业技能去分析问题、解决问题全面系统的锻炼。

使我们在单片机的基本原理、单片机应用系统开发过程,以及用C语言设计程序的思路技巧等方面都能向前迈了一大步,为我们日后成为合格的应用型人才打下良好的基础。

8参考文献1.期刊类【格式】[序号]作者.篇名[J].刊名,出版年份,卷号(期号):

起止页码.15【举例】[1]王海粟.浅议会计信息披露模式[J].财政研究,2004,21

(1):

56-58.[2]夏鲁惠.高等学校毕业论文教学情况调研报告[J].高等理科教育,2004

(1):

46-52.[3]Heider,E.R.amp;D.C.Oliver.Thestructureofcolorspaceinnamingandmemoryoftwolanguages[J].ForeignLanguageTeachingandResearch,1999,(3):

6267.2.专著类【格式】[序号]作者.书名[M].出版地:

出版社,出版年份:

起止页码.【举例】[4]葛家澍,林志军.现代西方财务会计理论[M].厦门:

厦门大学出版社,2019:

42.[5]Gill,R.MasteringEnglishLiterature[M].London:

Macmillan,1985:

42-45.3.报纸类【格式】[序号]作者.篇名[N].报纸名,出版日期(版次).【举例】[6]李大伦.经济全球化的重要性[N].光明日报,1998-12-27(3).[7]French,W.BetweenSilences:

AVoicefromChina[N].AtlanticWeekly,1987-8-15(33).4.论文集【格式】[序号]作者.篇名[C].出版地:

出版者,出版年份:

起始页码.【举例】[8]伍蠡甫.西方文论选[C].上海:

上海译文出版社,1979:

12-17.[9]Spivak,G.CantheSubalternSpeak?

[A].InC.Nelsonamp;L.Grossberg(eds.).VictoryinLimbo:

Imigism[C].Urbana:

UniversityofIllinoisPress,1988,pp.271-313.[10]Almarza,G.G.Studentforeignlanguageteachersknowledgegrowth[A].InD.FreemanandJ.C.Richards(eds.).TeacherLearninginLanguageTeaching[C].NewYork:

CambridgeUniversityPress.1996.pp.50-78.5.学位论文【格式】[序号]作者.篇名[D].出版地:

保存者,出版年份:

起始页码.【举例】[11]张筑生.微分半动力系统的不变集[D].北京:

北京大学数学系数学研究所,1983:

1-7.166.研究报告【格式】[序号]作者.篇名[R].出版地:

出版者,出版年份:

起始页码.【举例】[12]冯西桥.核反应堆压力管道与压力容器的LBB分析[R].北京:

清华大学核能技术设计研究院,1997:

9-10.7.条例【格式】[序号]颁布单位.条例名称.发布日期【举例】[15]中华人民共和国科学技术委员会.科学技术期刊管理办法[Z].199106058.译著【格式】[序号]原著作者.书名[M].译者,译.出版地:

出版社,出版年份:

起止页码.说明:

1正文部分采用宋体小四,1.5倍行距。

2一级标题黑体小三号加黑,二级标题黑体四号加黑,三级标题黑体小四号加黑。

全部标题均不居中,段前段后都为0行,行间距为1.5倍。

3参考文献不少于10个。

4图和表分别采用通篇编号方式,必须有标题。

图的标题在图下方,表的标题在表上方。

17

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1