单片机课程设计_第1页
单片机课程设计_第2页
单片机课程设计_第3页
单片机课程设计_第4页
单片机课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

电路原理图的设计2.1传送带产品计数器(LED显示)电路原理图硬件原理图如下图所示,包括显示模块,按键模块,电机控制模块,置数模块。2.2LED显示模块使用4位LED数码管来显示数字,通过NPN管来驱动数码管。LED数码管的特点由于多位LED数码管所有段选线皆由一个8位I/O口控制,因此,在每一瞬间,我位LED会显示相同的字符,要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O输出相应字符段选码(字型码),而位选则控制I/O口在该显示位送入选通电平(因为LED为共阴时,则送入低电平,LED为共阳时,则送入高电平),以保证该位显示相应字符,轮流,使每位分时显示该位应显示的字符。段选码、位选码每送入一次后延时1ms,因人眼的视觉暂留时间为0.1s:(100ms),所以每位显示的间隔不必超过20ms,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。

2.3置数模块使用8位薄码盘和5位薄码盘组合来组成最高13位的二进制数,即8191的最大置数值,很好的利用了4位数码管。2.4按键模块每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。软件设计采用查询方式和外部中断相结合的方法来设计,低电平有效。按键直接与89c51的I/O口线相连接,通过读I/O口的电平状态,即可识别出按下的按键。电路原理如图2.5电机控制模块利用光电耦合器和直流继电器来控制电机,其中二极管是用来保护三极管,而电容是用来减少火花的影响。如下图所示。3软件系统设计3.1C51程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitSTAR_KEY=P3^6;//定义键与单片机的连接引脚sbitSTOP_KEY=P3^7;sbitL0=P1^0;//定义SFR中引脚的位sbitL1=P1^1;sbitL2=P1^2;sbitL3=P1^3;sbitL4=P1^4;sbitL5=P1^5;sbitL6=P1^6;sbitL7=P1^7;sbitL8=P2^0;sbitL9=P2^1;sbitL10=P2^2;sbitL11=P2^3;sbitL12=P2^4;sbitLED4=P2^5; //定义四位数码管的千位sbitLED3=P2^6;sbitLED2=P2^7;sbitLED1=P3^0;sbitMOTOR=P3^5;ucharn[2]={1,0};ucharcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};voiddelayms(uintx)//延时子程序{uchary;while(x--){for(y=0;y<123;y++){;}}}ucharKeynum() //按键子程序1{ucharkey=0;STAR_KEY=1;STOP_KEY=1;//置初值if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} //按下STAR键则n[0]=0;n[1]=1if(STOP_KEY==0){delayms(10);if(STOP_KEY==0)n[0]=1;n[1]=0;} //按下STOP键则n[0]=1;n[1]=0;returnn[2]; //返回n值}voidxianshi(uinto)//显示子程序{P0=0xff;P0=dispcode[o/1000];LED4=1;LED3=0;LED2=0;LED1=0;delayms(5);P0=0xff;P0=dispcode[(o/100)%10];LED4=0;LED3=1;LED2=0;LED1=0;delayms(5);P0=0xff;P0=dispcode[(o/10)%10];LED4=0;LED3=0;LED2=1;LED1=0;delayms(5);P0=0xff;P0=dispcode[o%10];LED4=0;LED3=0;LED2=0;LED1=1;delayms(5);}uintqiuzhi()//求用拨码盘所置数的值的子程序{uchara;ucharb;ucharc;uchard;uchare;ucharf;ucharg;ucharh;uchari;ucharj;uchark;ucharl;ucharm;uintp=0;if(L0==1){a=1;}else{a=0;} //将电平信号变为数字的值if(L1==1){b=1;}else{b=0;}if(L2==1){c=1;}else{c=0;}if(L3==1){d=1;}else{d=0;}if(L4==1){e=1;}else{e=0;}if(L5==1){f=1;}else{f=0;}if(L6==1){g=1;}else{g=0;}if(L7==1){h=1;}else{h=0;}if(L8==1){i=1;}else{i=0;}if(L9==1){j=1;}else{j=0;}if(L10==1){k=1;}else{k=0;}if(L11==1){l=1;}else{l=0;}if(L12==1){m=1;}else{m=0;}p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+h*2*2*2*2*2*2*2+i*2*2*2*2*2*2*2*2+j*2*2*2*2*2*2*2*2*2+k*2*2*2*2*2*2*2*2*2*2+l*2*2*2*2*2*2*2*2*2*2*2+m*2*2*2*2*2*2*2*2*2*2*2*2;returnp;//返回所求的P值}voidmain(void) //主程序{uintq;IT0=1; //负跳变触发EA=1; //开总允许中断EX0=1; //开INTO中断TMOD=0X05; //置T0为计数器方式1TL0=0x00; //置计数器初值TH0=0x00;while(1) //无限循环{q=qiuzhi(); //调用求值子程序求出所置的数if(MOTOR==1){xianshi(q);}else{xianshi(TL0);Keynum();TR0=n[1];}//当电动机关闭时显示用薄码盘所置的数并停止计数,电机启动时则开始计数,并显示计数值if(TL0==q){TR0=0;MOTOR=1;}else{Keynum();MOTOR=n[0];} //当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭交由按键控制,所以不存在计数值超过置数值的情况} }voidInt0(void)interrupt0 //中断服务程序,工作寄存器用0组{TL0=0x00;TR0=1; //重置计数值,重新开始计数}4仿真及调试仿真原理图如上图。当需要置数时,通过薄码盘拨动,8位薄码盘控制二进制数的低八位,5位薄码盘控制高8位。启动后,LED数码管会显示所置的数,按下开始键STAR,电动机开始运转,4位LED数码管显示0,然后按动计数键COUNT,按一下数码管显示数加1,直到所显示的数与当前所置的数相等时关闭电机和停止计数。而后可以按下RST键,所记的数清零并重新开始计数,此时可又通过按下计数键COUNT来计数。在这个过程中,可以按下STOP键来关闭电机,同时也停止了计数,再按下开始键STAR,则再继续接着刚停止时的数来开始计数。满足了设计题目的所有要求。5总论还是比较缺乏,理论联系实际的能力还急需提高。本次设计把理论应用到了实践中,同时通过设计,也加深了自己对理论知识的理解和掌握,在解决困难的过程中,获得了许多专业方面的知识,了我们的探索精神。这样的课程设计是很好的锻炼机会,设计在大学学习的重要性,课程设计增强了我们的实践动手能力,也为今后的毕业设计提供了宝贵的经验。在这次课程设计中让我也学会了如何去查阅有关方面的书籍,士相互的交换自己的意见和向他们去请教一些知识!本次设计的课题我觉得自己在设计中遇到的难题就是不知道如何运用单片机的一些基本的知识。例如:定时/计数器的使用,在课本上只知道其书面的理论知识而到自己去编辑程序语言运用到这方面的知识时却不知道如由于我们学识浅薄及时间有限等客观实际,未能使课程设计达到尽善尽美,一定还有漏!谢辞在此,感谢老师给我们的悉心指导,让我在此次课设中更懂得了专业基础知识的重要性,在日后的学习与工作中,我

温馨提示

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

评论

0/150

提交评论