51单片机入门
第一章 开发工具安装
第二章 单片机及开发板介绍
第三章 点亮一个LED
第四章 LED闪烁
第五章 LED流水灯
前言
LED流水灯
一、创建一个新工程
方法见第三章,不再赘述
二、流水灯
1.流水灯原理
第一个灯亮,延时0.5秒,第二个灯亮······依次置零
代码如下
void main()
{
while(1)
{
P2=0xFE;//1111 1110
Delay500ms();
P2=0xFD;//1111 1101
Delay500ms();
P2=0xFB;//1111 1011
Delay500ms();
P2=0xF7;//1111 0111
Delay500ms();
P2=0xEF;//1110 1111
Delay500ms();
P2=0xDF;//1101 1111
Delay500ms();
P2=0xBF;//1011 1111
Delay500ms();
P2=0x7F;//0111 1111
Delay500ms();
}
}
编译下载,效果如下
2.流水灯Plus
为了使延时函数更加灵活,先生成一个1ms延时的函数
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
改造一下,加入参数,嵌套一个while循环,从而控制具体多少ms
void Delay1ms(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
补充知识:C51数据类型
让流水灯跑的快一点,一秒钟一个循环
void main()
{
while(1)
{
P2=0xFE;//1111 1110
Delay1ms(100);
P2=0xFD;//1111 1101
Delay1ms(100);
P2=0xFB;//1111 1011
Delay1ms(100);
P2=0xF7;//1111 0111
Delay1ms(100);
P2=0xEF;//1110 1111
Delay1ms(100);
P2=0xDF;//1101 1111
Delay1ms(100);
P2=0xBF;//1011 1111
Delay1ms(100);
P2=0x7F;//0111 1111
Delay1ms(100);
}
}