《单片机计算器课程设计报告.doc》由会员分享,可在线阅读,更多相关《单片机计算器课程设计报告.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于单片机的简易计算器设计基于单片机的简易计算器设计一、设计任务和性能指标1.1设计任务利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个计算器,用四位一体数码管显示计算数值及结果。要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),绘出程序流程图,并给出程序清单(要 求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性)。1.2性能指标1加法:能够计算四位以内的数的加法。2减法:能计算四位数以内的减法。3乘法:能够计算两位数以内的乘法。4除法:能够计算四位数的乘法5有清零功能,能随时对运算结果和数字输入进行清零。二、系统设计方案按照系
2、统设计的功能的要求,初步确定设计系统由单片机主控模块、四位一体数码管显示模块、键扫描接口电路共三个主要模块组成。主控芯片使用51系列AT89C51单片机,采用高性能的静态80C51设计,它由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。键盘电路采用4*4矩阵键盘电路。显示模块采用四位一体共阳极数码管和SN74LS244锁存芯片构成等器件构成。三、硬件系统设计 1.单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。主控芯片选取STC89C51RC芯片,因其具有良好的性能及稳定性,价
3、格便宜应用方便。晶振选取11.0592MHz,晶振旁电容选取30pF。采用按键复位电路,电阻分别选取100和10K,电容选取10F。单片机最小系统硬件电路图如图(1)所示。 图(1) 单片机最小系统2键盘接口电路计算器所需按键有: 数字键:1,2,3,4,5,6,7,8,9,0 功能键:+, - , *, / , = , C( 清零)共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行采用端口P0.0P0.3,四列采用端口P3.0P3.3,通过8个端口的的高低电平完成对矩阵键盘的控制。通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就
4、可以得到是哪个键按下,从而完成键盘的功能。3数码管显示电路采用4位一体的数码管对计算数据和结果进行显示,这里选取共阳数码管,利用NPN三极管对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果。 利用SN74LS244N锁存器来实现数码管的动态显示,P1口输出显示值,P2.0P2.3为位选端口。通过锁存器对段选信号的锁存,最终得到对数码管输入数据的控制。 以下为数码显示电路的硬件电路图,左图为数码管驱动电路,右图为段选信号锁存电路。 四软件设计部分根据选题要求,系统编程如下所示:#include reg51.hsbit P3_0=P30;sbit P3_1=P31;sb
5、it P3_2=P32;sbit P3_3=P33;sbit P3_4=P34;sbit P3_5=P35;sbit P3_6=P36;sbit P3_7=P37;unsigned char sz11,xs14,xs24,sj;int i,cs,bb,t1,t2,fh,s1,s2;void chushihua()bb=1;xs10=10;xs11=10;xs12=10;xs13=10;xs20=10;xs21=10;xs22=10;xs23=10;t1=0;t2=0;s1=s2=0;fh=0;cs=1;void xianshi(unsigned char xs4)int i,j;unsigne
6、d char zy;zy=0x08;for (i=0;i1);for (j=0;j100;j+);/for (i=0;i100;i+);return;unsigned char saomiao()int i,j;unsigned char pp;for (i=0;i1000;i+);P0=0xfe;P3=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
7、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;/=1P0=0xfd;P3=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+);retur
8、n 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;/=2P0=0xfb;P3=0x0f;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+);ret
9、urn 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;/=3P0=0xf7;P3=0x0f;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+);
10、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;s1+;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 (b
11、b=2)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;return;elseif (t1=0 & t1=10 & 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=0xf
12、c;sz1=0x60;sz2=0xda;sz3=0xf2;sz4=0x66;sz5=0xb6;sz6=0xbe;sz7=0xe0;sz8=0xfe;sz9=0xf6;sz10=0x00; cs=0;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);软件设计好后,在KEIL上面进行仿真,把仿真得到的文件下载到Proteus里
13、面进行仿真,得到Proteus仿真电路图如下所示: 图(2) 计算器Proteus仿真电路图五硬件电路焊接及调试 根据电路图纸,焊接好硬件电路,把程序下载到单片机芯片,接通好电源,进行调试。在焊接好器件后,先不要将芯片插在芯片座上,要先验证先板上电源是否好用,有无短路等。接上USB电源,用万用表测量个芯片座对应电源和地之间的电压值,观察电压值是否正常。一切正常后方可将芯片插入芯片座,以继续测试其他功能。 将芯片插上后,对各个模块进行调试,按键是否工作正常,数码管是否显示正常等。编写相关部分的测试程序对其进行测试。 各部分硬件检测无误后,下载程序进行整体调试,一切正常后,结束调试过程。 用所设计
14、的单片机进行数字计算,显示结果与任务要求一致,焊接电路符合要求。六课程设计心得两周的时间,终于把单片机课程设计搞完了。整个体会还是比较多的。首先是题目的选择,各方面的原因,自己还是想选个简单点的题目,不过最后选来选去,还是选择了计算器。由于自己对单片机编程还不是很熟悉,结果在设计的时候遇到了一系列问题,程序总是调试部处理,不过还好,最后在同学的帮助下终于把程序调试出来了,虽然程序设计实现的功能与老师要求的不尽相同,不过勉强还算可以。从这里我知道了基本知识的重要性。其实进行程序设计的时候主要是对各功能模块的把握。计算器里面最难的一部分是矩阵键盘的扫描和编码,那个费了很大力气。另外一点就是硬件焊接
15、调试部分。焊接的时候到时轻松,一个下午就焊接好了,然后是调试部分。调试花费的时间还是比较长的。不过有了上个学期数字电路焊接调试的经验,这次单片机调试还算是比较顺利。我也是从电路板的正负电源检测起,一步一步来,最终得到了想要的结果。调试的时候主要遇到了两个问题。一个是键盘总是没有反应,为了这个自己调试了很久,前前后后把电路板检查了几次,最后才发现是键盘本身的问题,和同学们换了个好键盘才行。另一个问题是总是显示不出来1、4、7这三个数字。检测来检测去,发现来是在测试最小系统时在一个位选端接了高电平,对位选信号产生了影响。当把那个高电平去掉后,终于得到了正确的结果。总的来说这次课程设计达到了完成了基
16、本任务,达到了基本要求。通过亲身对程序设计和电路焊接调试的体会,自己对单片机有了进一步的了解,单片机编程能力也得到了提高。电路板的焊接与调试,使自己电路调试的方法和思想进一步加强了。这次单片机课程设计应该说是比较成功的。参考文献: 【1】徐维祥、刘旭敏:,单片微型机原理及应用,大连理工大学出版社,1996年。【2】李光飞、楼然苗、胡佳文、谢象佐.,单片机课程设计与实例指导., 北京航空航天大学出版社,2004年。 【3】余永权,89系列FLASH单片机原理及应用.,电子工业出版社,2002。【4】杨恢先、黄辉先,单片机原理及应用,人民邮电出版社,2006年。【5】常敏、王涵、范江波,单片机应用程序开发与实践,电子工业出版社,2009年。