本节介绍的是有关LED灯的控制,也就是控制那8个小灯的熄灭与点亮,在这之前,先来补一下有关电路的一些知识点吧,LED模块原理图如下所示。
首先,VCC是电源正极,RP9和RP10是限流电阻(就是下面那两个小东西)电阻是1000欧姆,(102,代表的是10*10^2=1000),所以想要让D1这个LED亮,就需要给相应的接口一个低电平(注意,要将电位信息转换成16进制数),相应代码如下所示:
#includevoid main(){ P2 = 0xFE;//1111 1110 }
运行结果如下所示:
其次,想要让LED灯闪烁,我们就需要一个新的概念,就是延时函数,不过这个函数在烧录软件里可以自动生成,下面先来介绍一下如何生成演算函数吧!
先选择系统频率,这个要看自己的单片机型号,还需要把8051指令集改成STC-Y1,再复制代码就行了。但是使用延时函数的时候,还需要添加一个头文件才能正常运行。接下来就来看一下LED灯闪烁的代码吧!(后期有高级一点的写法,先用这个来理解一些原理)
#include//就是这个哦
具体每个16进制数我就不一一列开来讲了,相信各位可以理解的。
#include#include void Delay1ms(unsigned int xms) //@11.0592MHz { //我稍微修改了一下延时函数,可以便于延时不同的时间 unsigned char i, j; while(xms) { _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); xms--; } } void main() { while(1) { P2 = 0xFE; Delay1ms(200); P2 = 0xFD; Delay1ms(200); P2 = 0xFB; Delay1ms(200); P2 = 0xF7; Delay1ms(200); P2 = 0xEF; Delay1ms(200); P2 = 0xDF; Delay1ms(200); P2 = 0xBF; Delay1ms(200); P2 = 0x7F; Delay1ms(200); } }
运行结果如下所示:
VID_20220513_213444
好了,关于LED灯的知识先介绍这么多。



