单片机课设零件计数器_第1页
单片机课设零件计数器_第2页
单片机课设零件计数器_第3页
单片机课设零件计数器_第4页
单片机课设零件计数器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

河海大学课程设计报告单片机课程设计报告课程名称:零件计数器学号:1162310120姓名:授课班号:275501年级专业:11级通信工程指导老师:刘玉宏摘要:本次单片机课程设计我组选择的题目是零件计数器,零件计数器本身在生产实践中具有很实际的用途,选择这个项目可以绕过我们更好的把课堂上学到的课本知识和理论内容与生产实践结合起来,提高对实际问题的动手操作能力以及解决问题的能力,进一步加深学生对于实际的电子元件电路功能的理解与运用,对于设计实际的实用程序来解决一系列生产生活遇到的问题的能力有着显著的家加强与提高。零件计数器的功能是通过感应器对零件数量进行中断计数,并由数码管动态显示出来,并通过实用的程序将零件数目通过串口传送给PC机,还能够通过实时的检测电路将之与蜂鸣器连接起来,起到整十报警以及零件打包的功能。关键字:计数器,单片机,数码显示,串口通信目录一.设计内容设计要求················································4二.设计方案1电路框图··············································42流程框图··············································53分段原理··············································54电路功能··············································61)蜂鸣器及继电器原理································62)数码管显示原理·····································7三.计数器主程序1分段程序及功能········································82问题及解决方案·······································14四.结论1实验结果···············································152本次课设的贡献········································152改善建议···············································163心得体会···············································16五.附录1软件介绍··············································172参考文献··············································18设计内容设计内容:把接在INT0上的单稳信号当作零件信号,单片机计数一次,当计满十次时,蜂鸣器发出一声警告音,并使继电器闭合一次,产生零件打包动作。要求和提高要求主要掌握外部中断和动态显示的应用,提高实时通过串口把零件数量发送给PC。设计方案电路框图P0P0单片机AT89C51P2P38个限流电阻4位共阴数码管动态显示复位复位选位选位INT0INT0蜂鸣器继电器蜂鸣器继电器电路总图与功能如图所示,每当来一次外部中断时,内部计数一次,并将数值通过4位共阴数码管动态显示出来。而单片机的P2口可以选择四根不同的数码管来动态显示,通过视觉暂留达到同时显示的效果。同时内部程序检测每当计数十次时,会形成一个继电器闭合的零件打包动作,并通过程序使得蜂鸣器发出警报。流程框图否判断是否为10的倍数循环警示打包操作是计数,串口赋值是监测中断开始(复位)否判断是否为10的倍数循环警示打包操作是计数,串口赋值是监测中断开始(复位)主程序:主程序为中断初值设定程序,包括中断计数超出时的清零程序,中断以及时钟的设定,计数初值的计算以及波特率的计算,还有子程序的调用。延时子程序:包括两种不同的延时程序,分别是计数时需要的短延时以及蜂鸣器等需要的较长时间延迟。数码管显示子程序:包括P2口的数码管选择设定以及计数数值对应的数码管显示数值的设定,通过独特的计算方法将计数总值与四根不同的数码管显示一一对应起来。外部中断0与串口数据发送子程序:每来一次中断计数值加1,同时向串口发送一次此时的数值。串口中断子程序:串口数据发送的开始和停止程序。电路功能蜂鸣器及继电器原理动态显示部分电路由4位一体的数码管LED1、单个数码管LED2和8个独立发光二极管L1-L7组成。这3个部分都是共阴结构,并联在一起,连接在P0口上。LED1用于完成LED动态显示实验,各个位选线为P24-P27,段码由P0口输出;LED2的COM端接地,完成LED静态显示实验;L1-L7,可以方便地读出P0输出的二进制数据,亦可做流水灯实验。7407在此起驱动作用。计数器主程序分段程序及功能#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitP32=P3^2;sbitP37=P3^7;sbitP36=P3^6;sbitP24=P2^4;sbitP25=P2^5;sbitP26=P2^6;sbitP27=P2^7;ucharcount;uchartable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管表voidbeep();voidrelay();voiddelay(ucharx);voiddisplay(uchara,ucharb,ucharc,uchard);voidsendchar(uchardat1); voidmain(){intge,shi,bai,qian;EA=1;//开总中断EX0=1;//允许外部中断0IT0=1;//负跳变沿中断方式SCON=0x50;//串口工作在方式1,允许接收PCON=0x00;//波特率不加倍TMOD=0x20;//定时器1工作在方式2TH1=0xfd;//赋初始值TL1=0xfd;TR1=1;while(1){qian=count/1000;bai=count%1000/100;shi=count%100/10;ge=count%10;display(ge,shi,bai,qian);}voiddelay(ucharx){uchari,j;for(i=0;i<100;i++)for(j=0;j<x;j++);}//延时时间的计算:先将程序转变为汇编语言,通过每一条汇编语言所占据的机器周期时间的总和,便可以算出延时所花费的时间。//蜂鸣器程序voidbeep(){P37=0;delay(300);P37=1;}//继电器程序voidrelay(){P36=1;delay(300);P36=0;}voiddisplay(uchara,ucharb,ucharc,uchard)//四段数码管显示{P0=table[a];P27=0;delay(8);P27=1;P0=table[b];P26=0;delay(8);P26=1;P0=table[c];P25=0;delay(8);P25=1;P0=table[d];P24=0;delay(8);P24=1;}//将得到的数据对照共阴极数码管表显示voidzhongduan()interrupt0{if(P32==0){delay(10);//延时消除抖动if(P32==0)//确认有按键按下{count++;sendchar(count);if(count%10==0&count!=0){beep();relay();}}while(!P32);//等待KEY1松开delay(10);//延时消除抖动}}voidsendchar(uchardat1)//串口发送数据程序{SBUF=dat1;while(!TI);//等待串行口发送完毕TI=0;//清除串行口发送结束标志}//产生计数信号、计数标志、并将计数值实时发给PC串行口发送时,第一位是0,结束位是1问题及解决方案遇到的问题:运用指数函数计数以及选择四根数码管显示,导致程序运行速度过慢,灯光闪烁。改进方法:改进后去掉指数函数,改用每一根数码管分别使用计算出显示数值的方法。遇到的问题:计数值达到时蜂鸣器持续响,直到按下第十一次计数按键方才停止。解决方法:在蜂鸣器程序中增加清零语句,中断中增加置位语句,可以让蜂鸣器在计数第十次时只响一声。结论实验结果按键脉冲源0,则四位数码管显示数字+1,当到10的倍数时,蜂鸣器发出声音,继电器产生打包动作。通过串口调试助手在PC机上可实时显示数码管数据。本次课设的贡献本次课设中参与了程序的编写、改进,在keil软件中运行无误后,烧写程序到单片机实验箱进行调试,通过串口调试助手显示计数值,以实现实验的要求。改善建议实验中INT0中断信号计数到10次时,本次实现的功能在PC端不能显示打包指令,只能通过硬件继电器闭合,虚拟计一次打包。更好是在串口调试助手中能够显示打包次数,以方便计数。同时,在初始化计数初值时,串口调试程序不能发送一个数目显示到数码管中,以适应实际计数过程中计数中断和电源无法工作的情况。心得体会通过本次的单片机课程设计,我深刻体会和理解了如何将所学的单片机理论知识和实际生产生活需要结合起来,进行实践运用的方法,极大的锻炼了我的实际动手和根据实际需要设计程序的能力。通过设计零件计数器,我加深了对于课堂上所学知识的掌握和理解,对于串口通信以及中断程序的掌握更上一个台阶,中间的实践动手过程中通过对遇到的实际问题的思考和解决,极大的提升了我个人的实践水平以及综合素质。附录软件介绍烧写程序:打开STC-ISP,如下图界面,在MCUType栏目下选中单片机,如STC89C51。根据您的9针数据线连接情况选中COM端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些,按图示选中各项。先确认硬件连接正确,按如图点击“打开文件”并在对话框内找到您要下载的HEX文件按下图选中两个条件项,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击“Download/下载”。手动按下电源开关便即可把可执行文件HEX写入到单片机内,如图是正在写入程序截图。

温馨提示

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

最新文档

评论

0/150

提交评论