单片机基于出租车计价系统的毕业论文设计内容摘要:

实物图 第二步用万用表检测。 先用万用表复核目测中有疑问的连接点,在检测各种电源线与底线是否有短路现象。 将万用表打在欧姆挡,然后将表笔接在被测线路之间,看实数是否有变化,有则表明导通。 如图 52为万用表测试实物图。 泸州职业技术学院 系统测试 14 如图 52 第二节 软件调试 软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。 查看程序是否有逻辑错误。 如图 51程序窗口。 泸州职业技术学院 系统测试 15 如图 51 程序输入窗口 如图 52 为程序编译窗口。 泸州职业技术学院 系统测试 16 如图 52 程序编译 窗口 如果信息栏显示没有错误,表明没有语法错误,然后可以生成“ *.HEX”文件下载到芯片里,与硬件联合调试。 泸州职业技术学院 结束语 17 结束语 经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。 在课程设计的过程中,还是碰到了许多的问题。 比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。 通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是没能把问题解决。 通过这次课程设计,我最大的收获就是自己的动手能力和 独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。 在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。 通过本次课程设计,又使我学到了许多书本上无法学到的知识 ,也使也深该体 会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的 泸州职业技术学院 致谢 18 致谢 首先要感谢我的家人,是他们让我能上大学;在大学里,先要学会学习才能学的更好,是老师教了我怎样学习,到现在能完成毕业设计,都少不了老师的功劳;在整个设计过程中,从硬件电路图到软件编程,应用了相当多的知识,包含了大学三年所学的知识,在此向各位任课老师表示感谢。 在设计过程中,指导老师李庭贵老师给予了我很大帮助,李老师对设计中出现的问题作了及时讲解和耐心指导,使我的设计得以 顺利完成。 在此,特向李庭贵老师、何兵老师、等表示感谢;同时,很多同学也给我提供了很多帮助,也向帮助我的同学表示感谢。 泸州职业技术学院 附录 A 19 附录 A 泸州职业技术学院 附录 B:程序清单 20 附录 B 程序清单 include define uint unsigned int define uchar unsigned char define rate 15//脉冲数与里程数的比例 sbit P20=P2^0。 sbit P21=P2^1。 sbit P22=P2^2。 //接 74 LS 138 控制 数码管 sbit pulse_in=P1^0。 bit pulse=1。 bit dispflag。 uchar num,temp。 bit begin_signal。 // 开始标志 bit s_or_d。 //单程 还是往返 标志 uint times。 // 定时次数 uint pulse_counter。 uint record。 uint s_temple。 uint s,m。 //里程数 s 和 金额 m uint t。 //等待时间 char baiwei,shiwei,gewei,xiaoshu。 char keynum。 //键盘 的键值 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x40}。 //0~f and 39。 39。 的字型码(共阴) //声明 区 void delay(uint x)。 void init()。 void divide(uint counter)。 void select(bit a,bit b,bit c)。 void debouncer(void)。 uchar keyscan(void)。 void delay(uint x)//延时 x ms . { uint i,j。 for(i=0。 ix。 i++) for(j=0。 j=150。 j++)。 } 泸州职业技术学院 附录 B:程序清单 21 void init() // 定时器初始化 { TMOD=0x01。 TH0=(6553625000)/256。 // timer=1/40s TL0=(6553625000)%256。 EA=1。 ET0=1。 TR0=1。 } void divide(uint counter) { if(dispflag==0) { P0=0x00。 counter=counter*10/rate。 xiaoshu=counter%10。 gewei=(counter/10)%10。 shiwei=(counter/100)%10。 baiwei=(counter/1000)%10。 if(counter=30) m=80。 else if(s_or_d==0) m=80+2*(counter30)+t/300。 else m=80+*(counter30)+t/300。 select(1,1,0)。 //显示里程数目 P0=table[xiaoshu]。 delay(2)。 select(0,1,0)。 P0=table[gewei]|0x80。 delay(2)。 select(1,0,0)。 P0=table[shiwei]。 delay(2)。 select(0,0,0)。 P0=table[baiwei]。 delay(2)。 xiaoshu=m%10。 gewei=(m/10)%10。 shiwei=(m/100)%10。 baiwei=(m/1000)%10。 select(1,1,1)。 //显示 金额数目 P0=table[xiaoshu]。 delay(2)。 select(0,1,1)。 P0=table[gewei]|0x80。 泸州职业技术学院 附录 B:程序清单 22 delay(2)。 select(1,0,1)。 P0=table[shiwei]。 delay(2)。 select(0,0,1)。 P0=table[baiwei]。 delay(2)。 } else { P0=0x00。 xiaoshu=t%10。 gewei=(t/10)%10。 shiwei=(t/100)%10。 baiwei=(t/1000)%10。 select(1,1,0)。 //显示 等待时间 P0=table[xiaoshu]。 delay(2)。 select(0,1,0)。 P0=table[gewei]。 delay(2)。 select(1,0,0)。 P0=table[shiwei]。 delay(2)。 select(0,0,0)。 P0=table[baiwei]。 delay(2)。 } } void timer0() interrupt 1 { TH0=(6553625000)/256。 TL0=(6553625000)%256。 if(begin_signal==1) { if(pulse_in!=pulse) { delay(10)。 if(pulse_in!=pulse) { pulse=~pulse。 pulse_counter++。 } } if (times==39)//1 s timer pleted 泸州职业技术学院 附录 B:程序清单 23 { times=0。 if((pulse_counterrecord)5)//如果 每秒 脉冲小于 5 , 则等待时间 增加 t++。 record=pulse_counter。 } times++。 } // s_temple=pulse_counter/2。 // divide(s_temple)。 } void select(bit a,bit b,bit c) { P20=a。 P21=b。 P22=c。 } void debouncer(void)// 防抖动 程序 { uint i。 for(i=0。 i4800。 i++)。 } uchar keyscan() { P3=0x7f。 temp=P3。 temp=tempamp。 0x0f。 while(temp!=0x0f) { delay(10)。 temp=P3。 temp=tempamp。 0x0f。 while(temp!=0x0f) { temp=P3。 switch(temp) { case 0x7e:num=1。 break。 case 0x7d:num=2。 break。 泸州职业技术学院 附录 B:程序清单 24 case 0x7b:num=3。 break。 case 0x77:num=4。 break。 } while(temp!=0x0f) { temp=P3。 temp=tempamp。 0x0f。 } } } P3=0xbf。 temp=P3。 temp=tempamp。 0x0f。 while(temp!=0x0f) { delay(10)。 temp=P3。 temp=tempamp。 0x0f。 while(temp!=0x0f) { temp=P3。 switch(temp) { case 0xbe:num=5。 break。 case 0xbd:num=6。 break。 case 0xbb:num=7。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。