您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 51单片机课程设计报告。
成绩:单片机原理及应用课程设计课程名单片机原理及应用学部机械与电子信息工程学部专业学号姓名指导教师日期2012年06月1一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;(3)制作51单片机学习板;(4)学会使用KeilC软件下载调试程序;用调试程序将51单片机学习板调试成功。二、实验内容(5)AT89S52芯片工作电路,利用晶振提供控制信号。(6)10引脚下载口与AT89S52芯片相关引脚相连完成下载电路。(7)8个10K电阻与AT89S52芯片P0口相连,利用上拉电阻组成上拉电路。(8)使用开关与5.1K电阻连成外部中断0、1电路和复位电路。(9)利用16个开关做成键盘,实现输入号对已编程的AT89S52芯片的控制并通过数码管显示0--F。(10)用2片74HC573N具有锁存功能芯片与8个数码管相连,通过编程的AT89S52位选和段选实现输出信号的显示功能。(11)使用74HC573N锁存功能结合ULN2003AG芯片8非门芯片和74HC04N6非门芯片与4个2N5551三极管实现对步进电机的控制,和控制步进电机的信号结合LED输出显示的功能。(12)6、利用1片74HC573N芯片与8个共阴极LED实现跑马灯功能。三、总原理图1.总原理图2四、硬件调试1、是否短路用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。2、焊接顺序焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。3、器件功能1)检查原理图连接是否正确2)检查原理图与PCB图是否一致3)检查原理图与器件的DATASHEET上引脚是否一致4)用万用表检查是否有虚焊,引脚短路现象5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的7)飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。五、心得体会通过这次的课程设计,结合课堂所学的单片机的课程内容,也对单片机的原理、工作方法、编程技巧有了更深一层的了解。在实践的过程中遇到了很多问题,也都能通过自己的思考以及与同学之间的讨论最后得以解决。“理论与实践相结合”在本次课程设计中得到了很3好的体现。不过在设计结果中所暴露出来的问题,还是需要在以后的设计以及操作中多加注意,这样才能够更好地体现课程设计的意义。附录程序:8只LED左右来回点灭#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedint/***延时函数***/voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}/***主函数***/voidmain(){uchari;P1=0xfe;while(1){for(i=0;i7;i++){P1=_crol_(P1,1);delay(100);}for(i=0;i7;i++){P1=_cror_(P1,1);delay(100);}}}0~60的秒表#includereg52.h#defineuintunsignedint//宏定义uinttemp,aa,shi,ge;//定义全局变量sbitdula=P2^6;//定义段选sbitwela=P2^7;//定义字选uintcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddisplay(uintshi,uintge);//申明显示函数voiddelay(uintz);//申明延时函数voidinit();//申明初始化函数voidmain(){init();//调用初始化函数while(1){if(aa==20){aa=0;temp++;if(temp==60){temp=0;}shi=temp/10;//分离出十位ge=temp%10;//分离出个位}display(shi,ge);//调用显示函数}4}voiddisplay(uintshi,uintge)//显示函数{dula=1;//打开段选P0=table[shi];//送十位数dula=0;//关闭段选wela=1;//打开位选P0=0xfe;//送那一位wela=0;//关闭位选delay(5);//调用延时函数dula=1;P0=table[ge];dula=0;//P0=0xff;wela=1;P0=0xfd;wela=0;delay(5);}voiddelay(uintz)//延时函数{uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}voidinit()//初始化函数{temp=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voidtimer0()interrupt1//中断函数{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}4*4键盘检测程序,按下键后相应的代码显示在数码管上#includereg52.h#defineuintunsignedint#defineucharunsignedcharsbitdula=P2^7;sbitwela=P2^6;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};ucharnum,temp;voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}ucharkeyscan();voiddisplay(ucharaa);voidmain(){num=17;dula=1;P0=0;dula=0;wela=1;P0=0xc0;wela=0;while(1){display(keyscan());}5}voiddisplay(ucharaa){dula=1;P0=table[aa-1];dula=0;}ucharkeyscan(){P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0x7e:num=1;break;case0xbe:num=2;break;case0xde:num=3;break;case0xee:num=4;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0x7d:num=5;break;case0xbd:num=6;break;case0xdd:num=7;break;case0xed:num=8;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0x7b:num=9;break;case0xbb:num=10;break;case0xdb:num=11;6break;case0xeb:num=12;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0x77:num=13;break;case0xb7:num=14;break;case0xd7:num=15;break;case0xe7:num=16;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}returnnum;}
本文标题:51单片机课程设计报告。
链接地址:https://www.777doc.com/doc-2893640 .html