ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

51单片机实验课一

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,重新开始新一轮循环

返回列表