2018/2/27
51单片机
1.LED常亮
1.由于当LED置于0的时候产生高低电平差,则LED会亮;
2.采用while循环直接实现常亮效果
3.sbit 名称 地址:表示定义引脚
/*点亮第一个LED灯*/
#include<reg52.h>//51单片机的头文件
typedef unsigned int u16; //重定义变量
sbit LED=P2^0;//使用D1灯
void main()
{
while(1)
{
LED=0;//让D1灯置于低电平
}
}
2.LED闪烁
1.采用自定义的delay函数,使代码"慢下来",实现闪烁的效果
/*LED闪烁*/
/*采用自行定义的延时函数*/
#include<reg52.h>//头文件
sbit LED=P2^0;//采用D1灯
typedef int u16;
void delay(u16 i)
{
while(i--);
}
void main()
{
while(1)
{
LED=1;//灭
delay(50000);//延时
LED=0;//亮
delay(50000);//延时
}
}
3.LED流水灯
1.使用intrins头文件中的_crol_函数和_cror_函数实现左移和右移
2.注意:实现流水灯时要注意先把第一个灯点亮(0xfe)11111110
3._crol_(左移值,左移位数)
/*流水灯*/
/*采用循环左移右移函数*/
#include<reg52.h>
#include<intrins.h>//包含左右移的函数
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i=0;
led=0xfe;//1111 1110(点亮了第一个灯)
delay(50000);
while(1)
{
for(i=0;i<7;i++)//第一个已经点亮,然后通过函数左移
{ /*左移函数_crol_(左移值,左移位数),右移函数_cror_(右移值,右移位数)*/
led=_crol_(led,1);
delay(50000);
}
}
}