51单片机点亮一个LED介绍
LED介绍
LED就是发光二极管,一般来说如果是直插式的,那就是长正短负,如果是贴片式的,那就带彩色标记是阴极,如果是三角形的,水平箭头指的就是阴极,通常一般的工作电压在3mA~20mA,当发光的时候,两端电压为1.7V
这是我们此次实验51单片机LED硬件资源,由图中可知,D1接在单片机P2.0口,并且LED采用共阳极接法,只需要让P2.0口接低电平就可以让LED点亮,RP9和RP10就是排阻,就是让一个个电阻组装到一个排阻里,可以使用更简单。
软件设计
本次要实现的功能是:点亮D1指示灯,即让P2.0管脚输出一个低电平。完成后再控制LED闪烁。
#include <REGX52.H>
sbit LED1=P2^0;//特殊寄存器位定义使用sbit关键字
void main() //将P2^0重命名为LED1,程序从main函数执行
{LED1=0;//只需要将定义好的管脚赋值低电平就可以while(1){}
}
编译成功会先显示data=9,xdata=0,code=19,其中code表示占用程序flash字节,data表示数据存储器内部RAM占用字节,xdata表示占用外部数据存储器RAM字节
下面一行creating .hex files表示生成了.hex文件,将其烧录到单片机中即可运行
实验现象
闪烁软件设计
#include <REGX52.H>
typedef unsigned int u16;//将无符号整形重新定义为u16,以后程序看到u16就是unsigned int
sbit LED1=P2^0;//特殊寄存器位定义使用sbit关键字
void delay_10us(u16 ten_us)//当ten_us为1时,大约延时10us,这是使用循环语句占用CPU来延时,
{ //并不是准确的延时,只是个大概while(ten_us--);
}
void main() //将P2^0重命名为LED1,程序从main函数执行
{while(1){LED1=0;// 亮delay_10us(5000);//延时大约50msLED1=1;//灭delay_10us(5000);//执行完后继续在while循环永远执行,就可以一直亮灭}
}
实验现象