logo资料库

单片机实验报告(带图).docx

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
实验一 (1)将无符号整数 0xcd,182,0x59,0xaf,0xb5,251,0xa8,0x3f,0xc8,0x7e 存入数组,通过编程找出最 小数并送 P1 口显示。 #include void main(void) { unsigned int i,p; unsigned int t[]={ 0xcd,182,0x59,0xaf,0xb5,251,0xa8,0x3f,0x8c,0x7e}; p=t[0]; for(i=0;i<=9;i++) { if(p>t[i]) p=t[i]; } P1=p; } (2)采用软件延时,流水点亮 P1 口的高 4 位所接的发光二极管。(扩展要求:P1 口所接发光二极管花 样闪烁) #include void delay(){ unsigned int i; for(i=0;i<20000;i++){ ; } } void main(){ unsigned int a[]={16,32,64,128};
int i; for(i=0;i<4;i++){ P1=a[i]; delay(); } } (3)利用 P1 和 P3 口,分别接开关和发光二极管,采用无条件传输控制方式,实现开关控制发光二极 管的亮灭。 #include void main(){ char key=0; while(1){ key=P1&0xF0; if(key!=0xF0) P3=key; }
} 实验二 (1)利用外中断/INT0,控制 P1 口所接 LED 花样闪烁。 #include void delay(); void main(void) { P1=0; EA=1; EX0=1; IT0=0; while(1){} } void delay(){ unsigned int j; for(j=0;j<40000;j++) ; } void pro_int0() interrupt 0 { unsigned int i; unsigned int a[]={2,8,32,128}; while(1) for(i=0;i<4;i++){ P1=a[i]; delay(); } }
(2)利用外中断/INT1,统计中断次数,并将统计结果送 P1 口的 8 位 LED 显示。 #include unsigned int i=0; void delay(); void main(void) { P1=0; EA=1; EX1=1; IT1=1; while(1) {} } void delay(){ unsigned int j; for(j=0;j<30000;j++) ; } void pro_int1() interrupt 2 { i++; P1=i; delay();
} 实验三 (1)利用 8051 的定时/计数器控制循环点亮 P1 口所接每一位 LED。要求点亮周期为 1.3S。(使用 方式 0、1 实现)、 方式 0 #include void dely(void) { unsigned char i; TMOD=0x00; TH0=0x34; TL0=0x1C; TR0=1; for(i=0;i<200;i++) { while(TF0==0) ; TF0=0; TH0=0x34; TL0=0x1C;
} } void main(void) { unsigned int a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned int i; while(1) { for(i=0;i<8;i++) { P1=a[i]; dely(); } } } 方式 1 #include void dely(void) { unsigned char i; TMOD=0x01; TH0=0x02; TL0=0x18; TR0=1; for(i=0;i<20;i++) { while(TF0==0) ; TF0=0; TH0=0x02; TL0=0x18; } } void main(void) { unsigned int a[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }; unsigned int i; while(1) {
for(i=0;i<8;i++) { P1=a[i]; dely(); } } } (2)利用 8051 的计数器对外部脉冲进行计数,将计数次数通过 P1 口输出。 #include unsigned int a=0; void main(void) { EA=1; ET0=1; TMOD=0x05; TH0=0xff; TL0=0xff; TR0=1; while(1)
{ } P1=a; } void pro_T0() interrupt 1 { a++; TH0=0xff; TL0=0xff; } 实验四 (1)通过并行口 P1 实现十字路口交通灯的模拟控制。 #include void delay1(void){ int i; for(i=0;i<60;i++) { while(TF1==0) ; TL1=15536%256;
分享到:
收藏