TR0=0; //停止计时 TH0=0; TL0=0; //关闭计数 S=(time*17.4)/100; //算出来是mm,注意程序按mm处理显示的时候在十位加小数点,则以cm为单位显示且精度小于1cm if((S<1)||(S>4500)||(flag==0)) //大于1cm小于3m超出测量范围显示'----' { flag=1; qian=10; bai=10; shi=10; ge=10; } else { qian=S/1000; bai=S/100; shi=S0/10; ge=S; } for(a=0;a<100;a++) { display(qian,bai,shi,ge); } //扫描100次数码管,进行显示 } } void timer0() interrupt 1 { TH0=0; TL0=0; flag=0; //标志位,当检测超过65ms退出等待回波,继续下一次检测,非常必要 } 五、设计中遇到的问题及解决办法:
(1)在课程设计初期,我们组在一个现成的电路板(只有编码和位选与我们所
要设计的作品的接法不同)上进行编写和调试程序。于此同时,也开始在prteus中搭建电路:我们选用P0口作为‘段码’,连接SM410561D3B‘a,b,c,d,e,f,g,dp’,每一段的亮灭。选用P2.4~P2.7分别对应‘位码’,即连接 SM410561的‘S1,S2,S3,S4’分别控制每一位的亮灭。在程序初步
完成,用proteus和keil进行仿真后,数码管却不能正常显示,千位只能在0和1之中跳变,无法出现其他数字。经检查程序,发现计数初值的设置有问题,于是,经过反复调试,终于能使数码管在我们的设计范围内显示数字。
(2)在进行动态显示的时候延时是非常重要的。延时太长,四位数码管的显示
会有明显的闪烁感;延时太短,则有可能相邻几位显示同一个数码,因为时间太短还来不及变化,显示效果也很不理想。经过我们仿真调试,不断修改程序中的延时,在仿真环境下,动态显示已很稳定。
(3)在电路板焊接完成后,我们将编写好的程序下载到单片机中,开始进行测
试。这时,问题又出现了:数码管的每位的C段都不亮,而且个,十,百,千位的数据显示刚好相反。前者先考虑是电路板上出现的问题,经用万用表检查电路,发现与C段相连的P0.2被短接。修改好电路板后,C段正常显示,因宋英同学的认真细致,实际电路板上也就只出现了这一个问题。而后者经分析,发现程序中的定义未能和电路板上的接口相对应,于是我们又修改了个,十,百,千位的定义。至此,我们的作品设计成功了,整个过程很顺利。
六、设计心得体会和收获:
在这次试验中,我的主要工作是:搭建电路板。焊接电路。兼职工作
是帮王明友分析电路。有些同学认为焊接电路是没有技巧的工作,没有什么含金量,锻炼不出自己的真实能力。而我却不这么认为,在这项工作中,我还是学到了很多东西,我坚信这些知识是在课本当中学不到的,比如说;每个器件位置的合理安排,经过板子的每一条线的布置,让板子整体看起来比较美观,呈献给大家的是一个赏心悦目的板子。硬件的完美是我们的终极目标,我们始终要坚信的是:软件和硬件是相辅相成的。软件的简洁,硬件的完美是成功的必需品。这次课程设计我深深的体会了这点。在整个板子的焊接过程中,每个结点的焊接必须做到谨慎小心,一不小心就会出现短路现象,在焊接过程当中,时刻准备用万用表来检测电路。在这次的焊接过程当中,我每焊接一个结点,都会用万用表去检测。做到精益求精。
防止在板子焊好之后,再检测,就会有些无从下手。给自己更少的机会去检查。而是更多的机会去做到完美。在这次课程设计中,我学会了:谨慎,仔细,小心。我坚信,这些知识会让我受益匪浅。
在这次课程设计当中,我也有很多做的不好的地方。那天板子还没有
喊好的时候,惠林看到我们的板子的时候说:’你的板子裸露在外面的线实在是太不安全了。特别容易短路,;我说:“不会的,这些线是压不下去的,”,他的一句话让我恍然大悟,“客户有时候是不会善待你的劳动成果的,我们的服务对象是客户,而不是我们自己。我们得把目光放的长远一点”,自己在这方面的考虑还是欠缺的。希望以后通过更多的机会,得到锻炼、提高。
在这次课程设计中,我主要负责硬件仿真和写报告的工作。刚开始,我们整个组都不知如何下手。在查找完资料的第二天,在组长王明友的带领下,他自告奋勇的承担了程序编写和软件调试工作,也给各组员分配了工作。通过参考资料,我大致懂得了超声波测距原理,但是对于数码管如何实现显示功能还是一头雾水。于是,在数码管显示这一模块进行了大量的资料查找,结合单片机各管脚功能,终于了解到充分使用单片机的I/O接口与数码管动态显示接口相连接,通过程序即能实现数码管的数据显示。懂得了基本原理,电路搭建起来就很轻易了。然而,我对软件部分还不是很了解,整个程序基本上是请教王明友慢慢读懂的。由于硬件仿真这块,如果不能仿真出来就需要修改程序,所以读懂程序还是非常有必要的。但是,编写程序目前对于我来说还有一定的困难,我也会在今后坚持不断的学习。硬件仿真完成后,为了很好的完成报告,一直都在不断向王明友同学学习他是如何调试,以及如何解决问题的。
经过本次的课程设计,我觉得我最大的收获是深入了解到了51(或52)单片机的各管脚功能,真正将理论和实践结合起来,以及更加明确计数方式,机器周期,晶振频率(或周期)的有关知识。延时程序的编写和中断的内容也更加深入细致。还有就是,我明白了任何事情都不难,只要我们积极思考,而不是被动的接受知识;遇到问题不用怕,主动请教,过关斩将,那么什么问题都不再是问题,而变成自己的知识储备。队友的认真、
耐心和热心使我们每个环节的完成都比较顺利,良好的合作以及明确的分工使我们高效率的完成了本次课程设计。
短短两周的课程设计转眼间就结束了,在这个过程中我收获了很多,不仅感受到了充实,而且体会到学以致用的欣喜。在我们的学习中,很多课程都只是在不断重复着理论的叠加,然而随着时间的推移,沉淀下来的也微乎其微。真正能够让我们学以致用的很少。而单片机这两周的课程设计却能让人欣喜,特别是当我们付出努力并获得一定的成果时,那些许的成就感让我们燃起了希望。学以致用,这是我们作为学生内心深处的呼唤。刚开始课程设计的前两天,我收集了很多有关我们课程设计的资料,仔细阅读了并深入体会了此次设计的思想,之后便开始了我们自己的设计。经过两天的努力,我们自己的设计图纸也出来了,软件和硬件仿真也都正常。星期五宋英同学便开始了焊接,与此同时,我利用一块同学闲置的单片机开发板开发我们的程序,因为显示电路基本一致,只是把超声波测距模块用杜邦线连接即可,经过不断调试,程序很快就编写完毕。第二周,板子焊接完毕,上电下载程序,没有反应,心里一阵失落,开始调试,找不出原因。第二天,在老师的指点下,进过测电压发现有个管脚焊接有问题,修正后数码管有了显示,但是显示的不对,再调试发现编码有问题,反复测试了几次,最终成功了,我们内心都很高兴。课程设计的这两周,让我对单片机有了新的认识,有了新的理解,佩服其功能强大的同时,感慨自己需要学习的还有很多,感受从无到有,从失败到成功的欣喜。这次课程设计的记忆将在我以后的学习和生活中影响深远,激励我继续努力学习,学以致用。
都说付出就有收获,经过2个星期的努力,我和合伙人带着好奇和兴奋顺利的做完了所有步骤和程序。说真的,这两个星期我学到了好多好多,同时眼界也宽了好多好多。
还有我想说的是,通过指导老师的指导,加上自己能够亲手操作能够
加强对超声波及超声波测距的了解和单片机学习和传感器学习的熟练程度,同时也能熟悉PROTEL DXP2004软件和KIL4软件的使用。更能了解对
PCB板制作工艺和流程以及那些设备的操作,及我们所学课程的理解。更有利的是能加强我们专业素养和专业技能,为我们以后能更好的就业,打下很好的基础,提高我们动手能力和综合素质能力。
此次试验花费的心神较多,首先是设计电路,然后是单片机代码,开
始焊电路,用了4天时间进行焊接和调整后,发现发射和接收部分还是不能用,万不得已用到别的模块,在少了N次代码后终于成功了。 总之“一分耕耘,一分收获”。通过我们亲手的操作,我们确实学到
了许多东西。我同时希望学校能更多的给与我们实训做项目和课题的机会。