单片机课程设计报告 零件计数器 电信论文_第1页
单片机课程设计报告 零件计数器 电信论文_第2页
单片机课程设计报告 零件计数器 电信论文_第3页
单片机课程设计报告 零件计数器 电信论文_第4页
单片机课程设计报告 零件计数器 电信论文_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河海大学物联网工程学院课程设计报告题目零件计数器专业、学号电信、授课班号275503学生姓名指导教师金纪东完成时间2012/12/25摘要本次单片机课程设计我组选择的题目是零件计数器,零件计数器本身在生产实践中具有很实际的用途,选择这个项目可以绕过我们更好的把课堂上学到的课本知识和理论内容与生产实践结合起来,提高对实际问题的动手操作能力以及解决问题的能力,进一步加深学生对于实际的电子元件电路功能的理解与运用,对于设计实际的实用程序来解决一系列生产生活遇到的问题的能力有着显著的家加强与提高。零件计数器的功能是通过感应器对零件数量进行中断计数,并由数码管动态显示出来,并通过实用的程序将零件数目通过串口传送给PC机,还能够通过实时的检测电路将之与蜂鸣器连接起来,起到整十报警以及零件打包的功能。基于单片机构成的零件计数器研究的主要内容包括AT89C51单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示驱动模块的选择、如何通过串口与PC机完成实时连接。在这个设计中主要需要解决的问题便是如何提高AT89C51单片机的抗干扰能力以及稳定性。关键字单片机零件计数器LED显示串口连接目录第1章系统设计11电路框图312软件设计方框图及流程图413电路功能6第2章计数器程序21分段程序及功能822问题及解决方案11第3章实验结果及讨论31实验结果1132结论1133心得体会12参考文献12附录13章1章系统设计11电路框图电路总图与功能如图所示,每当来一次外部中断时,内部计数一次,并将数值通过4位共阴数码管动态显示出来。而单片机的P2口可以选择四根不同的数码管来动态显示,通过视觉暂留达到同时显示的效果。同时内部程序检测每当计数十次时,会形成一个继电器闭合的零件打包动作,并通过程序使得蜂鸣器发出警报。复位INT0P0单片机AT89C51P2P38个限流电阻蜂鸣器继电器4位共阴数码管动态显示选位12软件设计方框图及流程图由于单片机实验箱的存在,因此硬件部分无需做过多准备,只需根据硬件部分完成软件设计即可,在此,我们使用基于单片机的C语言编程。C语言是一种高级程序设计语言,其语法简单适用性强,在单片机编程时很方便。本次设计中使用的C语言编程软件为KEIL。软件设计框图如下主函数初始化函数LED显示外部中断显示函数延时函数延时函数串口通信计满提示部分流程图如下编写零件计数程序时应当注意需要事先的几个功能,可以分段编写,最后通过主程序连接。这段程序的重点便是一段循环中断计数程序,在数值加1的同时要给串口发出同样的信息,每当计数十次时还需要转到零件打包以及蜂鸣器程序中执行。开始初始化零件数为0LED动态显示是否按下S_INT0零件数加1LED动态显示零件数是十的倍数蜂鸣器响一次,继电器闭合,执行零件打包执行串口发送函数是否按下复位键否否否是是是13电路功能B部分是单片机的最小系统部分,只有这部分电路正常,整个系统才能工作。单片机为内含8KFLASH程序存储器的STC89C52RC,EA接高电平;各并行口都加了10K的上拉电阻;晶振为110592M。设置了上电复位和手动复位电路。S1为手动复位按钮。C部分电路由4位一体的数码管LED1、单个数码管LED2和8个独立发光二极管L1L7组成。这3个部分都是共阴结构,并联在一起,连接在P0口上。LED1用于完成LED动态显示实验,各个位选线为P24P27,段码由P0口输出;LED2的COM端接地,完成LED静态显示实验;L1L7,可以方便地读出P0输出的二进制数据,亦可做流水灯实验。7407在此起驱动作用。F部分电路是由555和电容组成的单稳电路。当S_INT0按钮按下后产生一个低电平单稳信号送单片机的INT0,同时D_PLUS1亮一次,作为外部中断请求信号。I部分电路为蜂鸣器和继电器电路。蜂鸣器采用9012三极管驱动,其基极接到RD端,当RD端为低电平时,三极管导通,蜂鸣器响。否则关断。继电器采用9013三极管驱动,其基极接到WR端,当WRD端为低电平时,三极管关断,继电器不吸合,常闭触点闭合,常开触点打开,D1熄灭;反之则反。第2章计数器程序21分段程序及功能开头及引脚对应程序INCLUDESBITBEEPP37SBITJDQP36UNSIGNEDINTLEDCOUNT0UNSIGNEDINTLEDOUT8LED数字码表UNSIGNEDCHARCODEMABIAO0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F延时函数VOIDDELAYUNSIGNEDINTICHARJFORII0IFORJ200J0J串口发送函数VOIDSINTSBUFLEDCOUNT10000/10000X30WHILETITI0SBUFLEDCOUNT1000/1000X30WHILETITI0SBUFLEDCOUNT100/100X30WHILETITI0SBUFLEDCOUNT100X30WHILETITI0SBUFNWHILETITI0LED显示程序VOIDDISPLAYINTILEDOUT0MABIAOLEDCOUNT10000/1000LEDOUT1MABIAOLEDCOUNT1000/100LEDOUT2MABIAOLEDCOUNT100/10LEDOUT3MABIAOLEDCOUNT10FORI0I9999/超出计数上限后清零LEDCOUNT0SINT主程序VOIDMAINVOIDINITWHILE1DISPLAY22问题及解决方案问题1运用指数函数计数以及选择四根数码管显示,导致程序运行速度过慢,灯光闪烁。解决方案改进后去掉指数函数,改用每一根数码管分别使用计算出显示数值的方法。问题2计数值达到时蜂鸣器持续响,直到按下第十一次计数按键方才停止。解决方案在蜂鸣器程序中增加BEEP清零和延时语句,可以让蜂鸣器在计数第十次时只响一声,并可改变响的时间。第3章实验结果及讨论31实验结果本此课程设计,使用到KEILC51编程器、烧写工具以及串口助手等软件工具。先是利用KEIL软件编写程序,编译无错后再利用烧写工具将其烧写进52单片机中,按下S_INT0按钮,可得到LED动态显示数据的变化,本次设计中用到4个数码管,也就是说,最高显示零件数目可达9999个。另外,还可以利用串口助手,将零件数目实时传送给PC机,此结果可在串口助手上观察到。结果是完全符合所需零件计数器的要求的。至此,可以说本次设计是成功的。32结论本次课程设计的主要特点是利用C51编程实现基于单片机的零件计数器,而非使用汇编语言。在编程中,要学会写出各种子程序,然后合理的调用它们,还要根据实际显示结果不断地去修改和完善,使其最终显示出符合要求的结果,这不仅考察了我对于单片这门课的学习掌握情况,还考察了我对C语言的基础知识是否扎实,是否可以将所学的学科融会贯通。此外,还有其他的特点,设计中用到烧写工具以及串口助手等软件工具,无需考虑硬件设计,只需完成软件设计部分。本次课程设计完成了基于单片机的零件计数器的设计,让我对于单片机的学习有了更深一层的领悟。33心得体会经过这段时间的学习,我对单片机原理与运用也有了更深层次的了解,同时也对过去所学的知识进行了温习,对我组设计的课题零件计数器所用到的知识也进行了专门的梳理和消化。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。通过这次课程设计,我也知道了自己的不足。书本上的知识是死的,只有通过实践和具体的实例运用,才能真正掌握知识、取得进步。这次课程设计的经历使我终身受益,我感受到做任何事情都是要真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论