LED灯流水灯程序解释(STC15F2K60S2蓝桥杯开发板)

需要掌握知识:C语言基础,二进制,十进制和十六进制的转换,二进制的逻辑运算符(与或非等)

需要安装软件:KEIL,STC-isp

1.LED灯原理图:

本开发板为共阳极LED灯,即右侧VCC位置为电源正极,此时只需在LED左侧引脚低电平(让对应的P0口输出低电平)即可点亮该LED灯。

1.添加开发板头文件。

头文件里包含数据接口的声明,即包含了STC15F2K60S2单片机的内容。

#include<STC15F2K60S2.H>

2.初始化。

P2=0XA0;P0=0X00; //关闭蜂鸣器

P2=0X80;P0=0XFF; //关闭所有LED灯

下图为74HC138的原理图:

下表可见当P25,26,27口输入对应高低电平时,Y口输出对应信号,且Y口同时只能有一个低电平(也就是在同一时刻只能控制一个元件)。

 P2=0X80 即将P2口调节成二进制的 1000 0000,这条语句等同于P25 = 1,P26=0,P27=0;此时Y4口输出低电平,可以用M74HC573M1R芯片上的P0控制LED灯。

 3.点亮LED灯

可以通过下述方式单独控制P01,02,03口,打开LED灯。

P00=0;//点亮第一个LED灯
P01=0;//点亮第二个LED灯
P02=0;//点亮第三个LED灯

 也可以用P0=0X**控制所有LED灯(这种方式看上去更加简洁)。

需要注意的是,P0=0X**从右往左编号依次对应P01~P08(示例代码如下)。

以下代码功能为点亮左侧第一个LED灯。

P0=0XFE //1111 1110

P00=0,P01=1,P02=1,P03=1,P04=1,P05=1,P06=1,P07=1,P08=1;

此时就可以解释初始化代码中的P2=0X80;P0=0XFF;先将P2口调整到控制LED灯,然后令P0=0XFF以关闭所有LED灯。

4.延时函数

这个emmm(反正我是直接背的),向这个函数传递的数字即为延迟的毫秒数。

void Delayms(int ms)
{
	int i,j;
	for(i=0;i<ms;i++)
		for(j=845;j>0;j--);
}

有了这个就可以做一些简单的例子了。

5.简单流水灯

这个写法比较低级,但是容易理解。

通过while循环可以让流水灯一直执行。

#include<STC15F2K60S2.H>

void Delayms(int ms);

void main(void)
{
	P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
	while(1)
	{
		P0=0XFE;
		Delayms(250);
		P0=0XFD;
		Delayms(250);
		P0=0XFB;
		Delayms(250);
		P0=0XF7;
		Delayms(250);
		P0=0XEF;
		Delayms(250);
		P0=0XDF;
		Delayms(250);
		P0=0XBF;
		Delayms(250);
		P0=0X7F;
		Delayms(250);
		P0=0XFF;
		Delayms(250);
	}
}

void Delayms(int ms)
{
	int i,j;
	for(i=0;i<ms;i++)
		for(j=845;j>0;j--);
}

这种比较简洁,但是相对来说比较难理解,因为用到了位运算符,<<位左移,>>位右移,~取反运算符。

#include<STC15F2K60S2.H>

unsigned char num;
void Delayms(int ms);

void main(void)
{
	P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
	while(1)
	{
		for(num=0;num<8;num++)
		{
			P0=~(0X01<<LED); //~是位运算符中的取反运算符。
			Delayms(250);
		}
	}
}

void Delayms(int ms)
{
	int i,j;
	for(i=0;i<ms;i++)
		for(j=845;j>0;j--);
}

还有一些其他LED可以实现的功能,只要知道原理都可以实现,这里就不多写了。

版权声明:本文为CSDN博主「好好好好好好269」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_59279411/article/details/122293305

生成海报
点赞 0

好好好好好好269

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

蓝桥杯之DS18B20

1、显示整数  #include #include //***************定义DS18B24引脚************* sbit DQP1^4; //*********

ESP8266 ds18b20温度传感器

先到GitHub上下载库OneWire和DallasTemperature 下载好的例程,此程序是arduino上的例程,可以修改引脚为ESP8266的引脚 // Include the libraries we

【蓝桥杯】串口通信详解附双串口代码

备赛目录 IAP15F2K61S2单片机拥有两个全双工串口通信接口(串口1和串口2)1、串口相关寄存器 每个串口都有2个数据缓冲器、一个移位寄存器、一个串行控制器和一个波特率发生器 1.1数据缓冲器SBUF 这是