《51单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《51单片机课程设计报告.docx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、51单片机课程设计报告。一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:1了解并能识别学习板上的各种元器件,会读元器件标示;2会看电路原理图;3制作51单片机学习板;4学会使用KeilC软件下载调试程序;用调试程序将51单片机学习板调试成功。二、实验内容5AT89S52芯片工作电路,利用晶振提供控制信号。610引脚下载口与AT89S52芯片相关引脚相连完成下载电路。78个10K电阻与AT89S52芯片P0口相连,利用上拉电阻组成上拉电路。8使用开关与5.1K电阻连成外部中断0、1电路和复位电路。9利用16个开关做成键盘,实现输入号对已编程的AT89S52芯片的控制并通过数码管显
2、示0-F。10用2片74HC573N具有锁存功能芯片与8个数码管相连,通过编程的AT89S52位选和段选实现输出信号的显示功能。11使用74HC573N锁存功能结合ULN2003AG芯片8非门芯片和74HC04N6非门芯片与4个2N5551三极管实现对步进电机的控制,和控制步进电机的信号结合LED输出显示的功能。12利用1片74HC573N芯片与8个共阴极LED实现跑马灯功能。三、总原理图1总原理图四、硬件调试1、能否短路用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。2、焊接顺序焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接-调试-另一功能部件的焊接,
3、这样容易找到问题的所在。3、器件功能1检查原理图连接能否正确2检查原理图与PCB图能否一致3检查原理图与器件的DATASHEET上引脚能否一致4用万用表检查能否有虚焊,引脚短路现象5查询器件的DATASHEET,分析一下时序能否一致,同时分析一下命令字能否正确6通过示波器对芯片各个引脚进行检查,检查地址线能否有信号的7飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出如今什么地方。五、心得体会通过这次的课程设计,结合课堂所学的单片机的课程内容,也对单片机的原理、工作方法、编程技巧有了更深一层的了解。在实践的经过中碰到了很多问题,也都能通过本人的思考以及与同学之间的讨
4、论最后得以解决。“理论与实践相结合在本次课程设计中得到了很好的体现。不过在设计结果中所暴露出来的问题,还是需要在以后的设计以及操作中多加注意,这样才能够更好地体现课程设计的意义。附录程序:8只LED左右来回点灭#include#include#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;i#defineuintunsignedin
5、t/宏定义uinttemp,aa,shi,ge;/定义全局变量sbitdula=P26;/定义段选sbitwela=P27;/定义字选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
6、=temp%10;/分离出个位display(shi,ge);/调用显示函数voiddisplay(uintshi,uintge)/显示函数dula=1;/打开段选P0=tableshi;/送十位数dula=0;/关闭段选wela=1;/打开位选P0=0xfe;/送那一位wela=0;/关闭位选delay(5);/调用延时函数dula=1;P0=tablege;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()/
7、初始化函数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键盘检测程序,按下键后相应的代码显示在数码管上#include#defineuintunsignedint#defineucharunsignedcharsbitdula=P27;sbitwela=P26;ucharcodetable=0x3f,0x06,0x5b,0x4f,0
8、x66,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();voiddisplay(ucharaa)dula=1;P0=tableaa-1;dula=0;uch
9、arkeyscan()P1=0xfe;temp=P1;temp=tempwhile(temp!=0xf0)delay(5);temp=P1;temp=tempwhile(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=tempP1=0xfd;temp=P1;temp=tempwhile(temp!=0xf0)delay(5);temp=P1;temp=te
10、mpwhile(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=tempP1=0xfb;temp=P1;temp=tempwhile(temp!=0xf0)delay(5);temp=P1;temp=tempwhile(temp!=0xf0)temp=P1;switch(temp)case0x7b:num=9;break;case0xbb:num=10;b
11、reak;case0xdb:num=11;break;case0xeb:num=12;break;while(temp!=0xf0)temp=P1;temp=tempP1=0xf7;temp=P1;temp=tempwhile(temp!=0xf0)delay(5);temp=P1;temp=tempwhile(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=tempreturnnum;