本文主要是介绍51单片机实验课一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实验任务一:实现控制8个发光管的亮(灭)
#include <REGX52.H>
void Delay1ms(unsigned int xms) //@11.0592MHz
{unsigned char i, j;while(xms){xms--;i = 12;j = 169;do{while (--j);} while (--i);}
}
void main()
{while(1){P2=0;//八个LED灯全亮Delay1ms(100);//延时100msP2=1;//八个LED灯全灭Delay1ms(100);}
}
实验任务二:实现8位流水灯的效果
实验现象单片机从P2_0——P2_7逐个点亮LED(始终只有一个亮,呈现LED流水灯的形式)
直到P2_7的LED灯点亮之后再熄灭,P2_0的LED灯又点亮,如此循环往复
#include <REGX52.H>
unsigned char i;
void Delay1ms(unsigned int xms) //@11.0592MHz
{unsigned char i, j;while(xms){xms--;i = 12;j = 169;do{while (--j);} while (--i);}
}
void main()
{P2=0xFE;while(1){ for(i=0;i<8;i++){Delay1ms(100);P2=P2<<1;P2=P2|0x01;Delay1ms(100);}P2=0xFE;}
}
程序讲解:
在for循环中,让流水灯的程序循环八次
P2=P2<<1;
因为LED灯为共阳极,所以为低电平点亮,我们将P2端口数值左移一位,“<<”表示左移,“1”为移动的位数
P2=P2|0x01;
将P2端口的数值(8位)与00000001进行或运算,即给P2端口最低位补1
最后,P2=0XFE,让P2等于11111110,重新开始新一轮循环
这篇关于51单片机实验课一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!