1.我所用的51单片机的LED模块的原理图
说明:由于共阳极的接法,所以若P20=0的话相应的led就会被点亮。
2.代码
学过c语言的一看就懂
(1)点亮第一个LED
#include "reg52.h" //类似与你学过的Java的import,与c++的就是一样的
sbit led=P2^0; //将单片机的P2.0端口定义为led
void main()
{
while(1)
{
led=0; //P2.0端口设置为低电平
}
}
(2)LED闪烁
#include "reg52.h"
typedef unsigned int u16; //对数据类型进行声明定义
sbit led=P2^0;
void delay(u16 i)//延迟函数,i最大为65535=2^16-1
{
while(i--); //循环来达到延时
}
void main()//主函数通过对寄存的不同赋值达到闪烁
{
while(1)
{
led=0;
delay(50000); //大约延时450ms
led=1;
delay(50000); //大约延时450ms
}
}
(2)LED流水灯
预处理命令:
#define 名字 单片机端口
例如:'#define PI 3.1415926 `
循环左移右移函数:instrins.h函数库中
_crol_(左移的值,左移的位数);
_cror_(右移的值,右移的位数)
/**************************************************************************************
* LED流水灯实验 *
实验目标:下载程序后LED呈现流水灯效果进行左移右移滚动
***************************************************************************************/
#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
#define led P2 //使用led代替P2口
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i;
led=0xfe;//1111 1110
delay(50000);
while(1)
{
for(i=0;i<7;i++) //将led左移一位
{
led=_crol_(led,1);
delay(50000);
}
for(i=0;i<7;i++) //将led右移一位
{
led=_cror_(led,1);
delay(50000);
}
}
}