实验二:LED流水灯实验

强调:

本文章为新手提供学习参考

实验二:LED流水灯实验

控制开发板上的LED灯,独立完成一个单片机课程实验内容——实验一:能够独立控制点亮开发板上的每一个小灯,并且可以实现小灯点亮和关闭以及闪烁功能,LED闪烁的时间由自己设置。(LED闪烁)

使用的开发板原理图及本次使用的模块

进取者STC15开发板原理图

进取者stc15开发板
原理图
在这里插入图片描述
使用的模块

备注:

本次实验使用的是P0_0到P0_78个管脚,实际开发板中用杜邦线接出来,例如下图所示模块(为淘宝随机找的一张图,侵删)
LED流水灯模块背面
LED流水灯模块背面
LED流水灯模块正面
LED流水灯模块正面
模块1个脚提供高电平,其余脚与单片机P0口连接

实验二的代码部分

#include <reg51.h>  //调用reg51头文件
#include <intrins.h>//调用intrins头文件
#define uchar unsigned char//定义uchar类型为unsigned char	储存大小1字节,值范围:0 到 255
#define uint	unsigned int //定义uint类型为unsigned int 储存大小2或4个字节,值范围:0~65536

/*延迟函数,延迟0.1s*/
void Delay100ms()		//@11.0592MHz,
{
	unsigned char i, j, k;

	_nop_();//使用_nop_()函数需要调用‘intrins.h’文件
	_nop_();
	i = 5;
	j = 52;
	k = 195;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

/*LED平移函数,默认为低电平亮灯,实现先从P0^7向P0^0移动,到P0^0再向P0^7移动*/
void shift()
{
	uchar i;
	for(i=0;i<8;i++)
	{
			P0=~(0x80>>i);//先为1000_0000然后右移,例如:i=1时,变为0100_0000。最后取反变为:1011_1111;实现第一个低电平转化为第二个低电平;
			Delay100ms();//延迟
	}
	for(i=0;i<8;i++)
	{
			P0=~(0x01<<i);
			Delay100ms();
	}
	
}
/*主函数*/
void main()
{
	P0=0xff;//全灭
	Delay100ms();//延迟100ms
	P0=0x00;//全亮
	while(1)//死循环
	{
		 shift();
	}
}
发布了2 篇原创文章 · 获赞 0 · 访问量 50

猜你喜欢

转载自blog.csdn.net/qq_45284276/article/details/105551705