基于MCS-51单片机的简易计算器的设计与实现1.pdf

上传人:1398****507 文档编号:72066258 上传时间:2023-02-08 格式:PDF 页数:28 大小:1.53MB
返回 下载 相关 举报
基于MCS-51单片机的简易计算器的设计与实现1.pdf_第1页
第1页 / 共28页
基于MCS-51单片机的简易计算器的设计与实现1.pdf_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《基于MCS-51单片机的简易计算器的设计与实现1.pdf》由会员分享,可在线阅读,更多相关《基于MCS-51单片机的简易计算器的设计与实现1.pdf(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-基于基于 M MS S5151 单片机的简易计算器的设计与实现单片机的简易计算器的设计与实现作者 陈俐园指导老师 刘雪兰【摘要】【摘要】当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用,可是它还在发展之中,以后必将出现功能更加强大的计算器,所以本次设计是基于5单片机来设计的计算器,实现基本功能加减乘除,采用 LCD 显示结果数据。【关键词】【关键词】C-51;M4C922;Potues;矩阵键盘;计算器DesDes

2、n ann an implemeimplemetataio io of aof a implimpl c cc cla lar r sed on MCS-51sed on MCS-51 ingle chipingle chipmicrocomputermicrocomputer【AbsAbsractract】Nwaday,ith he conius iprovement f eople s livig,electronic rdts hae lady walked ito eah and ever fail,wether lf or learnig,or eertainnt acreinalm

3、ost eryting cnot dwitot he etonic prodcts,coputcapability f large and c plex is then brin reno compe,d tvely eay t g wron.Thecalulatr as fas nelurpose computing tools areasy touse,but s still in devlpmnt,ltr ill appea a caclator ncin more owrful,s his desgn s to desin asd o 51 sinl ip copter,he real

4、zaiofte baic fnctios ofd,ubtrat,multiply adivide,ues LCDodispla reslts of daa【KeKewordword】MC51;74C922;Ptues;Mtrixkybord;calculator-目录第一章绪论.错误错误!未定义书签。未定义书签。.1 设计背景01.2 设计内容错误错误!未定义书签。未定义书签。1.3 设计意义.错误错误!未定义书签。未定义书签。第二章 设计方案及技术基础错误错误!未定义书签。未定义书签。21设计方案错误错误!未定义书签。未定义书签。22 方案论证及设计.错误错误!未定义书签。未定义书签。2。3

5、MCS-51 单片机及开发环境介绍错误错误!未定义书签。未定义书签。2.。1 MCS-51 系列单片简介错误错误!未定义书签。未定义书签。2。3。2MM79芯片.错误错误!未定义书签。未定义书签。第三章 硬件设计错误错误!未定义书签。未定义书签。31 硬件电路设计错误错误!未定义书签。未定义书签。31。1 电路设计原理.错误错误!未定义书签。未定义书签。3.2硬件电路设计.错误错误!未定义书签。未定义书签。32 时钟电路.43。3 复位电路53.4 输入模块:键盘接口电路错误错误!未定义书签。未定义书签。第四章 软件设计.错误错误!未定义书签。未定义书签。4.主程序设计错误错误!未定义书签。未

6、定义书签。4.2 外部中断 0 处理程序错误错误!未定义书签。未定义书签。2.1 键值转化为键盘上按键值程序错误错误!未定义书签。未定义书签。4.2 算术运算程序错误错误!未定义书签。未定义书签。4。3 LCD 显示程序错误错误!未定义书签。未定义书签。第五章 开发体会错误错误!未定义书签。未定义书签。5.1il 软件调试.错误错误!未定义书签。未定义书签。2Prtus 软件仿真13第六章 总结.错误错误!未定义书签。未定义书签。参考文献.错误错误!未定义书签。未定义书签。-致谢.错误错误!未定义书签。未定义书签。附录.错误错误!未定义书签。未定义书签。-第一章第一章绪论绪论1。1 设计背景随

7、着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了,单片机的应用已经越来越贴近生活。计算器在人们的日常中就是比较的常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计一个简易计算器。1。2 设计内容本次设计是基于MCS5单片机来设计的计算器。计算器将完成的功能有加,减,乘,除等功能。设计的关键所在,必须非常熟悉单片机的原理与结构,同时还要对整个设计流程有很好的把握,将单片机和其他模块完整的衔接.1。3 设计意义此次论文的价值和核心在于倡导自己把所学知识

8、运用到现实生活,为现实生活服务,把自己的知识转化为实物哪怕是很简单的物件,很简单的功能,但真真切切的让自己感受到创造的快乐,为自己今后的工作做好铺垫,往后通过更多的学习,更多的尝试,把知识的作用真正发挥出来,改变大家的生活。第二章第二章 设计方案及技术基础设计方案及技术基础.1 设计方案为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于1 单片机,结合7C922 芯片设计一个简易的计算器,用 44的矩阵键盘实现数据输入,实现基本功能加减乘除,并用LC显示数据。设计仿真和调试要用到 Kei、Prte等软件。2 方案论证及设计根据功能与要求,本系统选用 MC

9、S1 单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:()由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用CD 显示数据和结果。-(2)另外键盘包括数字键()、符号键(+、-、)、清除键和等号键,故只需要 16 个按键即可,设计中采用集成的计算键盘。(3)执行过程:开机显示零,等待键入数值,当键入数字,通过 LCD 显示出来,当键入+、*、运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在 LCD 上输出运算结果.(4)错误提示:当计算器执行过程中有错误时,会在 LCD 上显示相应的提

10、示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在 LCD 上提示溢出;当除数为 0 时,计算器会在 LCD 上提示错误。2。MCS51 单片机及开发环境介绍23.1MCS51 系列单片简介MCS51 单片机较之前的单片机相比,功能增强许多,就其指令和运行速度而言,超过了 Itel808的 CU 和8的 CP,成为工业控制系统中较为理想的机种。目前与 MCS1 单片机兼容的一些单片机的时钟频率达到0MHz 甚至更高。51 系列单片机的特点:(1)位;(2)片内带振荡器,频率范围为.2MH12Hz;(3)片内带2的数据存储器;(4)片内带 4B 的程序存储器;(5)程序存储器

11、的寻址空间为 6K;()片外数据存储器的寻址空间为4KB;(7)128 个用户位寻址空间;(8)21 个字节特殊功能寄存器;(9)4 个位的 I/O 并行接口:P0、1、P2、P3;(1)两个 1位定时、计数器;(11)两个优先级别的五个中断源;(2)一个全双工的串行 I/接口,可多机通信;(3)11 条指令,包含乘法指令和除法指令;(14)片内采用单总线结构;(15)有较强的位处理能力;(16)采用单一+5V 电源-图 2-1 MCS51 结构图2。.2 MM74C922 芯片为了进一步节省单片机 I/O 口资源,我们在设计中使用了 MM7492芯片。MM74C是一款 4*4 键盘扫描C,它

12、可检测到与之相连的 4*4 键盘的按键输入,并通过数据输出口将按键相应的编码输出.其引脚图如图 22 所示:图 2M94C92硬件图MM7C22 引脚说明:(1)1Y(脚脚 4):*键盘第一列至第四。-(2)X14(脚 1、10、8、):4键盘第一行至第四行.(3)D DOD(aaoutA,脚47):按键之BCD 码输出,其中D为 LSB,OD 为SB。(4)VCC(脚 18):电源脚,+3+15V.(5)GND(脚):接地管脚。(6)OC(scilato,脚 5):键盘扫描电路之频率所需外加电容的连引脚。(7)KBM(eyboard Mask,脚 6):内部消除开关弹跳电路所外加电容的引脚。

13、()OE(OutputEnabe,脚 13):芯片使能脚,接低电位可使芯片使能。(9)DA(ata Availble,脚 12):数据有效输出脚。任一按键按下时,此脚位会输出高电位,按键释放后此脚又会恢复为低电位.M74C922 对各按键的响应如下表所示:图3 MM7C922 对各按键的响应第三章第三章硬件设计硬件设计3.1硬件电路设计3。1.1 电路设计原理单片机采用T89C51 单片机,它能够满足数据的采集、控制和数据处理的需求。结合时钟电路、复位电路、键盘输入完成简易计算器总电路设计.-电源电路LCD 显示图 31 电路设计原理时钟电路单片机复位电路输入模块3。2硬件电路设计图 3 总电

14、路设计2 时钟电路时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性.在 M51 单片机片内部有一个高增益的反相放大器,它的的输入端为引脚 XTAL1,输出端为引脚 XTA2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式,晶振频率均为 30p。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式。我们采用内部时钟方式。在内部方式时钟电路中,必须在L1 和 XAL2 引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路。-图 3 时钟电路连接图3。3 复位电路单片机复位是使 CU 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状

15、态开始工作。无论是单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。所以,必须弄清楚 MCS51 单片机复位的条件、复位电路和复位后的状态.复位信号从单片机的 RS引脚输入,高电平有效,其有效电平应维持至少个机器周期。复位操作有上电自动复位与按键手动复位两种方式,为了方便系统的硬件初始化,我们采用按键手动复位。图 34 复位电路连接图3 输入模块:键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的 I口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条 I/线作为行线,四条 I线作为

16、列线组成键盘。在行线和列线的每个交叉点上设置一个按键.这样键盘上按键的个数就为 44 个。这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。计算器的键盘布局如图 35 与图 36 所示:一般有 16 个键组成,在单片机中正好可以用一个 P 口实现 16 个按键功能,这种形式在单片机系统中也最常用.-图 35 矩阵键盘布局图图-6 矩阵键盘内部电路图如下图3所示,在本设计中,计算器输入键盘的4条行线、列线分别连接到MM74C92 的 X1X4、Y1Y4 引脚,MM4922 的数据输出口与单片机的 P2 口相连,M7922 的A 引脚经过一个非门连接到单片机的/INT0 脚,当 MM

17、74C92检测到键盘输入时,DA 产生高电平,与之相连的/NT0 检测到低电平,给单片机一个中断,单片机从 P2 口的低四位读入键盘上按下的键的值。图 37 键盘接口电路图-第四章第四章 软件设计软件设计本设计主要包含主程序、外部中断 0 程序.4。1 主程序设计主程序函数表示:允许中断;初始化键盘接口连接、LD 显示、LCD、CD 输入数据函数.开始允许中断初始化键盘接口初始化 LCD 显示初始化 LCD初始化 LCD 输入数据函数图1 主程序流程图4.2 外部中断处理程序有键按下时,单片机响应外部中断,转入外部中断 0 中断处理函数,在中断处理函数中完成对按键的判断,以进行下一步的程序处理

18、.其中调用键值转化函数、算术运算函数。-N是否为“=”是否为数字键NN是 否 为“+”N是否为“-”是否为清除键Y数值清 0当前输入值是否为第一个算术值YY将当前输入值*10+输入值键值转化N是 否 为“*”N是 否 为“/”调用运算函数Ny=当前输入值x=当前输入值Y当前输入值是否超出范围规定NLCD显示当前输入值Y数值溢出图 42 外部中断 0 函数流程图4.21 键值转化为键盘上按键值程序该程序函数的作用是将输入的键值转化为数值或符号.开始输入键值读取键码转化为数值或符号数值送显示缓图-3 键值转化为键盘上按键值流程-4.2.算术运算程序在外部中断函数对键值进行判断后,进行加、减、乘、除

19、运算,运算后的数值如果超出范围规定,则数值溢出处理。图 4 算术运算程序Y溢出运算后数值是否超出范围规定运 算 符 号是否为“/”Y进行除号运算N运 算 符 号是否为“*”Y进行乘号运算N运算符号是否为“-”YN运 算 符 号是否为“+”Y进行加号运算开始进行减号运算NLCD 显示数值.3 LD 显示程序利用 LCD 静态显示,通过程序向 LCD 写指令字或数据使 LD 完成不同功能或显示相-应数据。*LD 初始化函数*/id ini_LCM()ite_com(0 x);wrieco(0 x30);write_co(0 x30);write_co(3);wre_com(0 x08);wriem

20、(0 x1);writeo(x06);/*LCD 写数据函数*/oid r_dta(h data)R=1;/*写指令/RW;EN=1;/使能信号开*P1=ddata;将数据送入 p1 口*EN=;*使能信号关*wrtecom(0e);check_B();*LCD 写指令函数*vd it_com(hr comman)RS=0;/写指令/_W=0;-E=1;/使能信号开*/P1=commad;/将数据送入 p口/*LC检查忙碌函数*/void chek_BF()char i,x0 x80;=0;/*使能信号关/check_BF();P1=xf;whil(x080)0;_W=;EN=1;x=;E;E

21、N=0;/关闭使能信号*/*D 清屏函数*voi clearLC()write_co(0 x01);/*CD 显示函数*/idisplay(lon a)-or(i0;10;i+);-on tm,b,c1;int leth=1,i,j;clerCD();if(a0)a=ac;writedat(-);temp;while(tem=tm/10)!=0)lenth+;for(i=nth;i0;i)b=;or(=0;j1;j+)=10;rite_dta(0 x+a/b);a;第五章第五章开发体会开发体会5。1Kl 软件调试1。首先在电脑上正确的下载ke软件。2。在keil 集成开发环境中创建新项目(Pr

22、ojec),扩展文件名为.UV2,并为该项-目选定合适的单片机器件(本设计采用AML公司下的AT95).3。用eil的文本编辑器编写源文件,可以是汇编语言,也可以为语言,完成后将该文件添加到项目中去。注意保存的时候如果是c语言编写程序必须在后面加.。4.通过eil的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。.对项目中的源文件进行编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到第步,根据软件中的错误提示进行修改源文件,切记不要浮躁,一步一步修改直到最后提示没有差错最终生成hx文件。6.对没有语法错误的程序进行仿真调试,调试成功后将X文件写入到单片机

23、应用系统的ROM中.5.2 Pou软件仿真1。首先在电脑里下载正确的软件,此软件主要是对硬件部分进行模拟。2进入软件后蓝色框内就是工作区域,可以在里面随意选择元器件,移动元器件。正确的进行导线连接.。完成所有连接后,双击单片机把生成的HEX 文件进行导入。4最后如果程序和连图都没有问题就可以进行仿真了。图51系统仿真总图-第六章第六章 总结总结通过这次的毕业论文设计我学习到了很多知识,平时在学校觉得自己好像对专业知识还是比较了解的。可是遇到这次设计完全没有思绪,找不到切入点.然后我就通过询问老师与跑图书馆查资料、确定基本设计方案、对所用芯片功能进行查找、调试、上机仿真等,经历了一次次的困难,却

24、积累了很多宝贵的经验。在整个设计的过程中遇到的问题主要有以下三点,第一:基础知识掌握的不牢固,主要表现在一些常用的电路的形式和功能不清楚,对书本上的内容理解不够透彻。第二:对一些常用的应用软件缺少应用,体现在画电路图和系统的仿真的时候,对这些软件的操作不熟练,浪费了很多时间。第三:相关知识掌握的不够全面,缺少系统设计的经验。这次设计进一步端了我的学习态度,学会了实事求是,严谨的作风,对自己要严格要求,不能够一知半解,要力求明明白白。如果省略了那些必要的步骤,急于求成,不仅会浪费时间,还会适得其反。我觉得动手之前,头脑里必须清楚该怎么做,这一点是很重要的。在此次的毕业设计中我最大的体会就是进一步

25、认识到了理论联系实践的重要性。一份耕耘,一份收获.通过这段时间的设计,让我明白科学的思维方法和学习方法是多么重要,只有这样才能够有很高的效率,才能够让自己的工作更完美。总而言之,此次毕业设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的实际操作能力。谢谢老师给我们提供这么好的机会,为我们之后走向社会奠定了一个好的基础。-参考文献参考文献1胡辉 单片机原理与应用。北京中国水利水电出版社。2072 何立 单片机高级教程北京航空航天大学出版社。20063赵克林 C语言实例教程.北京人民邮电出版社.20074 张义和,许宏昌,余春长。例说5单片机.人民邮电出版社2008 康维

26、新 CS-51 单片机原理与应用.北京中国轻工业出版社2009.16陈立周,陈宇。单片机原理及其应用(第 2 版).北京机械工业出版社。20085 徐爱钧.单片机原理实用教程:基于 Proue虚拟仿真。北京电子工业出版社。2(1)-致致谢谢起初接触毕业设计的时候,我对于这篇论文完全不知道该怎么着手,可是通过刘老师耐心的给我讲解,同时查阅各类专业书籍,让我对论文有了一个初步构思,知道该怎么去一步步的完成它。在完成初稿时也遇到了很多问题,对于仿真软件运用的陌生,还有就是对于计算器的硬件选择的错误。最后都是在刘老师的帮助下我克服了这些问题,成功的把毕业设计做完了并完成了仿真。我要正式的向刘老师致谢,

27、如果没有刘老师的帮助我是不可能完成毕业设计的,这次毕业设计我所学到的不仅仅是书本上的知识,还有坚持一路向前坚持的精神。这将为我以后的人生道路做好指引,我将受益一生。-附附录录#incldre5.h#includdeine char unsigndcha#define uint usigentchar tralae(inkecode);oid arhmtic();voi nit_LCM();voireata(cha data);voidwrite_om(cr oman);voi ec_BF();voidclerLCD();voiddipay(log a);od earror();vod data

28、erflow();lon x0,y,=;nt perators,i,iny=0;ar ey;cha eror5=”eror;char ovrflow8=velo;sit EN=P4;sitR=P35;sbitS36;main()E=;X=1;IT0=1;P2=xf;dlay(0);iit_CM();wie_daa(x3);whie(1)/*键值转化为键盘上按键值函数*/har translate(nkeod)swit(keycde)case:eturn;-brek;cse1:retrn4;eak;case 2:rr 1;break;ce 3:returnc;brk;cas4:return 8b

29、reak;ae 5:rtrn 5;brk;cae 6:rtur2;beak;cas7:retn0break;cse 8:rturn 9;brek;case9:tun6;bk;cae 10:rturn3break;ase 11:retur=beak;cse1:return/;brak;ca 13:rtrn;brak;cs14:rturn;ea;case 15:rern+;-bra;*外部中断处理函数*/void IN_0(i)interupt0 usin 0key=tansate(P2&0 x0f);if(key=9ey=0)/判断按下的键是否为数值m=num*10+(k-);i(operato

30、rs)=nu;ny=1;lex=num;if(nm34172nu1341778)/当前数值是否超出限定范围dispay(num);lsedataoerf();esestch(ky)case:x=0;=0;num;iny0;opetos=0;diplay(num);eak;cas=:aritmetc();in=0;opraor=0;nu=0;rea;cae+:if(opetor)-arhmet();operators;num=0;break;case:i(operatos)rihic();operator=2;num=0;ak;case:if(peratos)arhmt();oprtors=3;

31、num0;bak;cse/:if(operators)arithmec();operaors=4;um0;break;/*算术运算函数*/vid aritmei()if(iny)sit(operaor)case 1:x=+;n=x;if(num134278)isply(num);elsedataverlw();break;ase4:if(y=)delror();elsexy;nmx;if(nm1342178nu-1342178)display(m);daaovow();rek;y=0;/*C初始化函数*vo init_LCM()wrteco(0 x);wite_om(0 x);rte_c(0

32、x30);write_c(x38);-wrtcom(008);wre_com(x01);wr_c(0 x06);wrie_co(x0e);/*LD 写数据函数*oidwit_daa(hardata)RS1;写指令*R_W=;EN1;*使能信号开*/=ddta;/*将数据送入1 口EN0;/使能信号关*/ck_BF();/*LCD 写指令函数*/vo rie_com(car comn)R0;/*写指令*/R_=;N1;/使能信号开*P1=commnd;将数据送入1 口/EN=0;使能信号关*chec_B();/*LCD 检查忙碌函数*/vid che_B()chr i,x0 x80;P=0 xf;while(x0 x80);R_W=1;EN=;x=P1;EN=0;fr(i=0;i0;i-)b;fr(j=0;1;j+)=b0;wit_dat(0 x30+a);a=%;/*除数为 0 处理函数*/voi dealerror()it=0;clerCD();for(i=0;i5;i+)wite_data(errri);*数值溢出处理函数*o daaverfow()=;clearL();for(i=;8;i+)ridata(oerflow);-

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

当前位置:首页 > 应用文书 > 工作报告

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁