预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

....word.zl.实验目的1、熟悉Proteus软件和Keil软件的使用方法。2、熟悉单片机应用电路的设计方法。3、掌握单片机并行I/O口的直接应用方法。4、掌握单片机应用程序的设计和调试方法。二、设计要求1、用Proteus软件画出电路原理图。要求在P1.0至P1.7口线上分别接LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。2、编写程序:要求LED0至LED7以秒速率循环右移。3、编写程序:要求LED0至LED7以秒速率循环左移。4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。三、实验程序流程框图和程序清单延时程序流程框图:实验程序流程框图:汇编程序:ORG0000HMOVA,#11111110BMOVP3,#0FFHMAIN:MOVR0,#07HLOOP1:LCALLDELAYMOVP3,ARLACLRP2.0LCALLDELAYSETBP2.0DJNZR0,LOOP1MOVR0,#07HLOOP2:LCALLDELAYMOVP3,ARRACLRP2.0LCALLDELAYSETBP2.0DJNZR0,LOOP2LJMPMAINDELAY:MOVR7,#17HDL1:MOVR6,#98HDL0:MOVR5,#46HDJNZR5,$DJNZR6,DL0DJNZR7,DL1RETENDC语言程序:#include<reg52.h>#include<intrins.h>unsignedchartemp;inti;voiddelay(void);sbitspeaker=P2^0;voidmain(){temp=0xfe;P3=temp;while(1){for(i=0;i<7;i++){temp=_crol_(temp,1);speaker=0;delay();speaker=1;delay();P3=temp;}for(i=0;i<7;i++){speaker=0;temp=_cror_(temp,1);delay();speaker=1;delay();P3=temp;}}}voiddelay(void){unsignedchara,b,c;for(c=167;c>0;c--)for(b=171;b>0;b--)for(a=16;a>0;a--);_nop_;}四:电路原理图:五:实验结果1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.六、实验总结通过本次实验,我复习了Proteus软件的使用方法,学习了更多的对KEIL的调试方法,对keil和Proteus的使用更加熟悉了,通过用Proteus软件画图,熟悉了单片机电路根本的设计方法,掌握了单片机并行I/O口的直接应用方法,对子程序的调用左移、右移指令可以灵活的运用,同时对keil产生的HEX型的文件的有了新的认识和应用思考题1、编程实现LED0至LED7以十六进制计数规律亮灯?程序设计流程框图如下:汇编实验程序:ORG0000HMAIN:MOVP3,#256MOVA,#0FFHLOOP:MOVP3,ACLRP2.0LCALLDELAYSETBP2.0LCALLDELAYDECALJMPLOOPDELAY:MOVR7,#17HDL1:MOVR6,#98HDL0:MOVR5,#46HDJNZR5,$DJNZR6,DL0DJNZR7,DL1RETENDC语言程序:#include<reg52.h>#include<intrins.h>unsignedchartemp;inti;voiddelay(void);sbitspeaker=P3^1;voidmain(){P3=0X00;temp=0xFF;while(1){for(i=0;i<0XFF;i++){speaker=0x00;delay();speaker=0x01;P3=temp;temp=temp-1;}}}voiddelay(void){unsignedchara,b,c;for(c=167;c>0;c--)for(b=171;b>0;b--)for(a=16;a>0;a--);_nop_;}结果如下列图所示:2.4.6.8.10.11.12.