• 347.50 KB
  • 14页

单片机实训项目报告.doc

  • 14页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'单片机实训项目报告电气学院班级电气1049班姓名冯岗学号实训地点电气学院605实训室指导教师杨宇2012年5月23日 实训项目一项目名称一灯(LED)闪烁控制一、要求及功能描述:功能:用单片机控制一个LED灯快速闪烁。要求:1)设计一个电路,用单片机端口控制控制一个LED灯;2)编写一个控制程序,实现LED灯快速闪烁,闪烁时间采用软件延时反法;3)在01板上实现,并改变闪烁延时后,观察效果。二、电路设计:三、程序设计:C语言程序#includesbitled_en=P4^2;sbitL1=P0^7;delay(){unsignedchari,j,k;for(i=20;i>0;i--)for(j=200;j>0;j--) for(k=248;k>0;k--);}main(){led_en=0;while(1){L1=0;delay();L1=1;delay();}}四、项目小结:此项目以AT89C51芯片为核心部件,实现了单片机的一灯闪烁。此次实训在老师的讲解下,在软件、编写程序方面,花费了我们大量的时间,不过也尽可能多的让我了解一灯闪烁知识。通过这三周的实训,熟练掌握了keiluVision4软件开发环境的使用,并且进一步加深对单片机常用指令的理解与运用。在实训过程中,使我得到了一次用专业知识、专业技能分析和解决问题、全面系统的锻炼。使我在单片机的基本原理、单片机系统开发过程,以及在常用编程设计思路技巧的掌握方面迈进了一大步。同时在老师的悉心指导和严格要求下,获得了丰富的理论知识,极大的提高了时间能力,单片机领域对我今后进一步学习计算机方面知识有极大的帮助。使我认识到课程的重要性,同时也感受到理论与实践之间的差距,是我对单片机系统的运用由来更深刻的认识。 实训项目二项目名称电子门铃与控制一、要求及功能实现:功能:用单片机实现一个门铃控制要求:1)设计一个电路,用单片机端口读取按键,并使蜂鸣器响;2)编写一控制程序,实现门铃功能;3)在01板上实现,并改变鸣方式。二、电路设计:三、程序设计:C语言程序#includesbitkey1=P3^2;sbitbell=P3^6;main(){P3M0=0x40;P3M1=0x00; if(!key1)bell=1;elsebell=0;}四、项目小结:这次实习让我受益匪浅,无论是理论知识还是其他的各个方面。上课时也只是见到过一次单片机,只能从理论的角度去理解枯燥乏味。但在实训过程中真正的了解的一些单片机知识,及单片机运用系统,能理论联系实际,开阔了眼界,提高了对单片机知识的理解和运用。单片机是一门很重要的课程,老师和一些工作的朋友都曾说过,尽管我们在课堂上学到的内容很有限,但在以后的学习中单片机还需要好好地深入研究和学习,最后感谢老师对我们的精心指导和帮助。 实训项目三项目名称流水灯控制一、要求及功能实现功能:用单片机实现一个流水灯控制要求:1)设计一个电路,用单片机流水灯控制功能;2)编写一个控制程序,实现流水灯控制功能;3)在01板上运行控制程序后,观察效果。二、电路设计三、程序设计C语言程序#includeunsignedchara=1;sbitled_en=P4^2; delay(unsignedintT){while(--T);}main(){led_en=0;while(1){P0=~a;a<<=1;if(a==0)a=0;delay(50000);}}四、项目小结本设计成品是以单片机AT89C51芯片为核心部件,实现了流水灯的功能。此次设计在软件、编写程序方面花费时间太多,我们尽可能多的了解流水灯控制的相关知识。通过这几周的综合实训(单片机课程设计),熟练掌握了KeilC51集成开发环境的使用方法,了解并掌握到单片机芯片的烧写方法与步骤,进一步加深了对单片机常用指令的理解与运用。在实训过程中,使我得到了一次用专业知识、专业技能分析和解决问题、全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能向前迈了一大步。同时在老师的悉心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域对我今后进一步学习计算机方面的知识有极大的帮助。使我们认识到课程的重要性,同时也感受到理论与实践之间的差距,使我们对单片机系统的应用有了更加深刻的认. 实训项目四项目名称数码管驱动与控制一.要求及功能实现:功能:用单片机实现LED数码管的静态与动态驱动显示。要求:1)设计一个电路,用单片机驱动LED数码管;2)编写一控制程序,控制LED数码管显示,可分为静态显示和动态显示;3)在01板上实现,并改变显示内容后,观察效果。二.电路设计三.程序设计静态显示C语言程序#includesbitled_bit=P1^0;unsignedchara=0;unsignedchardisp[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};delay(unsignedintT){unsignedchari;for(i=0;i<2;i++)while(T--);}main(){P1M0=0X01;P1M1=0X00;led_bit=1;while(1) {for(a=0;a<10;a++){P0=~disp[a];delay(5000);}}}动态显示C语言程序#includesbitled_en=P4^2;unsignedcharcodedisp[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00};unsignedcharbuffer[6];unsignedcharm_sec=0,sec=0,min=0;unsignedcharn=0,num=0,b=1;main(){P1M0=0x3f;P1M1=0x00;TMOD=0x11;TH0=0x3c;TL0=0xb0;TH1=(65536-4000)/256;TL1=(65636-4000)%256;IE=0x8a;TR0=1;TR1=1;while(1);}T0_int()interrupt1{TH0=0x3c;TL0=0xb0;n++;if(n>=2){n=0;m_sec++;}if(m_sec>=100){sec++;m_sec=0;}if(sec>=60){min++;sec=0;} if(min>=100)min=0;buffer[0]=m_sec%10;buffer[1]=m_sec/10;buffer[2]=sec%10;buffer[3]=sec/10;buffer[4]=min%10;buffer[5]=min/10;}T1_int()interrupt3{TH1=(65536-4000)/256;TL1=(65536-4000)%256;if(num==2||num==4)P0=~(disp[buffer[num]]|0x01);elseP0=~disp[buffer[num]];num++;P1=b;b=b<<1;if(num>=6){b=1;num=0;}}四.项目小结回想起整个实训过程,本次实训是本人到目前为止觉得最有意义,也是最有收获的,作为学自动化方面的学生,设计是我们将来必须的技能,而这个实训刚刚给了我们提供了一个应用自已所学知识的平台。从通过理论设计,到具体方案,到调试电路成品。整个过程都需要我充分利用所学的知识进行思考借鉴。我认为这次实训是针对前面所学的知识进行一次比较全面的检测,总的来说,我觉得的听充实的。 实训项目五项目名称电子钟一.要求及功能实现:功能:用单片机实现电子钟。要求:1)设计一个电路,用单片机实现电子钟;2)编写一控制程序,控制LED数码管显示时间,并可通过按键设定时间。3)在01板上运行程序后,观察效果。二.电路设计:三.程序设计:C语言程序#include#defineUcharunsignedchar#defineUintunsignedintUcharcodedisp[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00};Ucharbuffer[6];Ucharsec=0,min=0,hour=0;Ucharled_bit=0x20,num=0,n=0,a=0;sbitkey1=P3^2; sbitkey2=P3^3;sbitkey3=P3^4;sbitkey4=P3^5;delay(UintT){while(T--);}main(){TMOD=0x11;TH0=0xdc;TL0=0x00;TH1=0xee;TL1=0x00;IE=0x8b;P1M0=0x3f;P1M1=0x00;TR0=1;TR1=1;while(1){if(key1==0){a++;if(a>3)a=0;if(key2==0&&a==0)switch(a){case1:hour++;if(hour>23)hour=0;break;case2:min++;if(min>59)min=0;break;case3:sec=0;break;}}switch(a){case0:buffer[0]=hour/10;buffer[1]=hour%10;buffer[2]=min/10;buffer[3]=min%10;buffer[4]=sec/10;buffer[5]=sec%10;break;case1: buffer[0]=hour/10;buffer[1]=hour%10;buffer[2]=10;buffer[3]=10;buffer[4]=10;buffer[5]=10;break;case2:buffer[0]=10;buffer[1]=10;buffer[2]=min/10;buffer[3]=min%10;buffer[4]=10;buffer[5]=10;break;case3:buffer[0]=10;buffer[1]=10;buffer[2]=10;buffer[3]=10;buffer[4]=sec/10;buffer[5]=sec%10;break;};}}T0_int()interrupt1{TH0=0xdc;TL0=0x00;n++;if(n>99){n=0;sec++;if(sec>59){sec=0;min++;if(min>59){min=0;hour++;if(hour>23)hour=0; }}}}T1_int()interrupt3{TH1=0xee;TL1=0x00;if((num==1||num==3)&&a==0)P0=~(disp[buffer[num]]|0x01);elseP0=~disp[buffer[num]];P1=led_bit;led_bit=led_bit>>1;num++;if(num>5){led_bit=0x20;num=0;}}四.项目小结在整个课程设计完后,总的感觉是:有收获。以前上课都是一些最基本的东西,而现在却可以将以前学的东西做出有实际价值的东西。在这个过程中,我的确学到很多书本上学不到的东西,如:如何利用现有的元件组装得到设计要求,如何找到错误的原因,等等。但也遇到了不少的挫折,有时遇到的错误怎么也找不到原因所在。在学习中的小问题在课堂上不能犯,在动手的过程中却很有可能犯。特别是在书写程序时,一不小心就出错,而且很不容易检查出来,还有就是自己的动手能力有欠缺,在做的过程中遇到了很大的困惑,耽误了不少时间。但现在回头看看,感觉还是挺有成就感的。'