(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
目录
一、点亮第一个LED灯:
1.LED是什么
LED,即发光二极管,是一种半导体固体发光器件。
2.LED工作原理
LED的工作是有方向性的,只有当正级接到LED阳极,负极接到LED的阴极的时候才能工作,如果反接LED是不能正常工作的。
3.看懂原理图
开发板上面LED的原理图如下图,LED的阳极串联一个电阻,然后连接到电源VCC,而LED的阴极连接到单片机的P2口,如果你想点亮一盏LED就对把单片机相对应的IO赋为低电平(可以赋为0)。
4.编写驱动程序
sbit 变量名=地址值;
在给某个引脚取名的时候经常会用到。
#include<reg51.h> sbit led = P2^0; //使其等于单片机的P2^0口 void main() { while(1) { led = 0; //等于0即可点亮 } }
二、LED闪烁:
1.C语言常用的预处理命令
#typedef使用
typedef unsigned char u8;
typedef unsigned int u16;(后面要加分号)
重新定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的位宽是不一样的。
2.while()循环函数
while(i<10) { i=i+1; }
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。
3.delay()延时函数
通过while循环实现函数的延迟
void delay(u16 i)//大约延时10us { while(i--); }
4.编写代码
#include"reg51.h" typedef unsigned char u8; typedef unsigned int u16; sbit led = P2^0; void delay(u16 i) //延时函数 { while(i--); //当i=1时,可以延时10微秒 } void main() { while(1) { led = 0; //等于0即可点亮 delay(50000); //延时450毫秒 led = 1; delay(50000); //等于1属于高电平,LED将会熄灭 } }
三、LED流水灯
1.C语言常用的预处理命令
#define使用
#define A P0(注意后面不用加分号)
2.循环左移右移函数
_crol_(a,b);循环左移函数,a是左移的值,b是左移的位数。包含在instrins.h库函数里面。 _cror_(a,b);循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数里面。
3.编写代码
0xfe转为二进制值为1111 1110, 所以在这样赋值后,该组8个管脚依次会按照对应位的值,输出高 (1)或者低 (0)电平。 对于0xfe, 则对应电平为高高高高高高高低。
1111 1110即表示在0的位置点亮LED,在1的位置熄灭,代码中用corl将0向左移动,第二次就是1111 1101,即点亮第二个灯
#include"reg51.h" #include<intrins.h> typedef unsigned char u8; typedef unsigned int u16; #define led P2 void delay(u16 i) //延时函数 { while(i--); //当i=1时,可以延时10微秒 } void main() { u8 i = 0; //P2口在单片机上默认输出高电位,即P2口默认熄灭,要点亮它 led = 0xfe; delay(50000); while(1) { for( i = 0;i<7;i++) { led =_crol_(led,1);//左移点亮LED delay(50000); //延时便于看到效果 } for( i = 0;i<7;i++) { led = _cror_(led,1); delay(50000); } led = 0; //等于0即可点亮 delay(50000); //延时450毫秒 led = 1; delay(50000); //等于1属于高电平,LED将会熄灭 } }