前些天学习了普中的LED实验部分,现将自己的一些学习内容记录一下。
这个是led的电路图,普中的a2系列开发版中led的连接只需设置好管脚就可以了,不需要自己进行杜邦线单独接线,还是很方便的,唯一不足就是有的时候不能同时实现多个功能。
1、点亮第一个led
第一步肯定是点亮led灯,附上代码
#include "reg52.h"
sbit LED1=P2^0; //将P2.0管脚定义为LED1,这样可以方便阅读,也方便修改
void main()
{
LED1=0; //LED1端口设置为低电平
while(1)
{
}
}
代码十分简单,唯一需要注意的就是单片机的管脚为低电平的时候led灯才能亮。led灯本质就是一个发光二极管,有单向导通性,阴极接低电平才能亮。
2、led闪烁
先附上代码
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LED1=P2^0; //将P2.0管脚定义为LED1
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
void main()
{
while(1)
{
LED1=0;
delay_10us(50000);
LED1=1;
delay_10us(50000);
}
}
这个是普中给的代码,其实就是多了一个延时函数,主函数里面多了点亮和熄灭的函数,当然也可以根据点亮第一个led的代码进行修改使用。
#include "reg52.h"
sbit LED1=P2^0; //将P2.0管脚定义为LED1,这样可以方便阅读,也方便修改
unsigned int i = 0;
void main()
{
while(1)
{
LED1=0; //LED1端口设置为低电平
for(i=0;i<50000;i++);
LED1=1; //LED1端口设置为高电平
for(i=0;i<50000;i++);
}
}
?这段代码就省去了延时函数,读起来会简单一些,但是函数比较大的时候就不建议了。
3、led流水灯
附上代码
#include "reg52.h"
void main()
{
unsigned char a[]={~0x01,~0x02,~0x04,~0x08,~0x10,~0x20,~0x40,~0x80};//直接通过寄存器来控制led
unsigned char i;
unsigned int j;
while(1)
{
for(i=0;i<8;i++) //led从第一个流动到第八个
{
P2 = a[i]; //i的变化,可以定位到第几个led
for(j=0;j<30000;j++); //延时作用
}
}
}
流水灯有很多类型,这个类型是从第一个滚动到第八个led灯,然后重复。
|