下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 整数加减乘除

整数加减乘除.doc

整数加减乘除

听话的坏东西
2012-03-02 0人阅读 举报 0 0 暂无简介

简介:本文档为《整数加减乘除doc》,可适用于高等教育领域

一、课题任务及要求要求:、掌握数码管移位动态扫描显示的编程方法、掌握矩阵扫描的编程方法、掌握数据在内部运算的编程方法任务:、实现最大位正整数加、减、乘、除、具备清零、等于功能、个按键功能依次为:数字、数字、数字、数字、数字、数字、数字、数字、数字、数字、清零、等于、加、减、乘、除二、硬件设计原理图原理分析该设计通过C芯片控制个一位数码管显示并实时检测按键按下情况来实现计算器功能个按键有个为数字按键其他个分别为加、减、乘、除、复位、等于电路接上电源后数码管显示个位显示数字芯片对按键进行实时扫描通过矩阵键盘进行计算特别注意的是当结果为负数时数码管显现EORR。(一)、硬件部分、数码管为一位共阴数码管共个故在段码输出口外加NPN型三极管作驱动、芯片P口接键盘端(矩阵按键)、P口接段码、P口的PP接位码、按键为四乘四矩阵共个键(二)、软件部分、数码管移位显示的实现是通过标志位wei的数值变化控制dispiay函数显示位来实现的、程序的重要算法是通过类型为unsignedint的数temp和数组str实现整体加减乘除、各位显示的只要弄懂这一算法此程序就可轻易掌握PCB图略。元件清单及造价预算按键个单价元总计元万用板块单价元总计元一位共阴数码管个单价元总计元三极管个单价元总计元K电阻个单价元总计毛排插及排线对单价元总计元电容个单价元总计毛晶振个单价元总计元芯片个单价元总计元费用总计元实物照片三、程序设计头程序str=str=str=str=str=str=str=str=str=str=str=str#include<regh>单片机基本定义头文件#include<intrinsh>循环位移头文件#defineucharunsignedchar宏定义#defineuintunsignedintsbitP=P^IO端口定义(矩阵扫描后位端口)sbitP=P^sbitP=P^sbitP=P^uchari,num,s全局变量定义ucharwei,wei,ss,ss,ss,str={,,,,,,}longtemp,temp,str={,,,,,,}ucharcodedutable={段位编码xc,xf,xa,xb,x,x,x,xf,x,x,x,x,xc,xa,x,xe}ucharcodewetable={xfe,xfd,xfb,xf,xef,xdf}voidinit()函数声明voidpanduan()voiddisplay()voiddelay(uintz)voidshaomiao()voidmain()主函数{init()调用变量初始化函数while()大循环{shaomiao()调用矩阵扫描加处理函数display()调用显示函数}}voidinit()变量初始化函数{ss=wei=temp=ss=ss=temp=wei=num=}voiddelay(uintz)延时函数(单位ms){uchariuintjfor(j=zj>j)for(i=i>i)}voidshaomiao()扫描加处理函数{for(i=,s=xfei<i)低四位端口依次赋值{P=s对P口赋值panduan()调用判断处理函数s=crol(s,)s循环位左移s=s|xf进行位或运算}(使高位复原)}voidpanduan(){ucharnif(P==||P==||P==||P==){delay()P=s|xfif(P==||P==||P==||P==){if(P==){n=num=i*n}elseif(P==){n=num=i*n}elseif(P==){n=num=i*n}elseif(P==){n=num=i*n}if(num<wei!=){weiif(ss==){temp=str=str=str=str=str=str=str=str=str=str=str=str=ss=}strwei=numif(str!=)temp=strif(str!=)temp=str*strif(str!=)temp=str*str*strif(str!=)temp=str*str*str*strif(str!=)temp=str*str*str*str*strif(str!=)temp=str*str*str*str*str*str}if(num>=){wei=if(num==){temp==wei=temp=ss=wei=}if(ss==num==||(ss==ss!=num>num<)){if(num==)ss=switch(ss){case:breakcase:temp=temptempbreakcase:temp=temptempbreakcase:temp=temp*tempbreakcase:temp=temptempbreak}if(temp>)temp=ss=}if(num==){temp=tempss=ss=ss=}if(num==){temp=tempss=ss=ss=}if(num==){temp=tempss=ss=ss=}if(num==){temp=tempss=ss=ss=}}}str=tempstr=tempstr=tempstr=tempstr=tempstr=tempif(str!=)wei=if(str!=)wei=if(str!=)wei=if(str!=)wei=if(str!=)wei=if(str!=)wei=}while(P==||P==||P==||P==)}voiddisplay(){charifor(i=i<weii){if(num==ss==||temp<){P=wetableP=dutable}else{P=wetableiP=dutablestridelay()P=xff}}}四、调试结果、硬件调试a把电路板焊好后先通过检查电路板表面检查是否有漏焊、错焊、接触不良等b编写检测程序逐个点亮数码管检查数码显示部分是否有硬件问题c.编写检测程序检测矩阵扫描是否有硬件问题、程序调试重点就是这个部分很多程序就是在调试过程中慢慢完善先前所完成的程序部分只能算一个基本框架当然这一切是建立在硬件没用问题的基础上程序在进行调试时可以像硬件一样使用分模块调试这样可以最迅捷的找出问题所在不受其他模块的影响我们在硬件调试时一开始时芯片不工作经过反复检查后发现原来芯片的脚(EAVPP)必须接入高电平才能使单片机在读取程序时优先访问内部程序存储器否则只访问外部程序存储器而我们的程序是在内部的故芯片不工作我们随即在脚外接VCC和限流电阻在解决了这个后硬件OK了。软件调试时问题就比较多了很多都是小问题大多是因为在编写程序时一些地方不够注意或笔误引起的在这里就不过多解释少部分是一些难以解决的大问题一是在输入数字的储存上开始打算只使用一个数组str解决但在编程时发现在数字转换为一个一个的编码中发现直接引用会引起数据混乱最后在添入另一数组str后问题得到解决二是输入数据在内部进行加减乘除时加法乘法没有错误但减法除法因为一次输出和二次输入数据的位置关系导致第二次运作时出现错误最后我们调整了储存数据的变量这个问题顺利的解决了最后一个问题困扰我们最久甚至导致调试过程一度中止由于我们是位数的运算在数字显示过程中出现了跳位现象比如你输入当输如时数码管正常显示但将输入后数码管显示变为了由于一直找不出原因这个问题一直得不到解决最后我尝试改变display()函数和大循环中函数的位置循序后才能正常显示但这从理论上说不通最后得出可能是受到延时函数delay()的延时影响导致数码管动态显示位码出错。在将这个问题解决后我们的程序就基本调试完成了但这并不是最终结果我将做好的计算器给其他同学进行操作在他们找茬似的操作中我们又发现了几个隐藏的很深的BUG并加以解决虽然不知道还有什么BUG没发现但至少在BUG发现之前我们的程序是没问题了。五、设计总结从这次课题设计任务中我们学习到了很多经过我们四个的共同努力老师的精心指导还有和在网上找到的一些资料主要让我们掌握了数码管移位动态扫描显示的编程方法掌握了矩阵扫描的编程方法掌握了数据在内部运算的编程方法这也是编程必须掌握的知识。当然调试的时候你也是一个重点也让我们收获良多这其中就分硬件和软件两部分硬件只要我们注意一些焊接问题对板子输入简单的程序进行检测。这个只要自己细心一点都可以按照原理图做好其中最重要最麻烦也是学到和掌握的东西最多的地方就是软件调试了这其中包括程序的编写检验这样你必须对程序的每部分都很熟悉掌握每句程序的再整个整体的作用。这样你出现问题是你才能根据问题改变程序内容而达到目的。我们出问题最多的也是这个地方这证明了我们对程序的掌握还有欠缺不能熟悉的掌握和运用程序所以导致我们不能很快很好的完成课题任务。当然也还有很多细节方面和人工的失误问题我们几个第一次的配合还是不能很好的进行。程序编写上也出现了很多细节的错误并不能把程序依次性就编写好这也浪费了我们很多的时间这主要也是我们没有把这方面的知识学扎实。所以我们要把一次课题设计好不但要学习好课堂的知识而且要注意各方面的细节。这次课题设计使我们各方面都得到了一定的锻炼。长沙民政职业技术学院课程设计报告课题名称:单片机的计算器设计课程:单片机技术及应用专业:应用电子技术学生姓名�周扬�孔计�张娇�陈实��学号������班级���指导老师�方跃春老师��应用电子技术教研室年月日

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/13

整数加减乘除

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利