STC-B学习板单片机流水灯原理

流水灯工程解析

原理图

在这里插入图片描述
1.P0口8位输出分别连接8个发光二极管的L0-L7的阳极,怕P2.3经过反相器链接到8个发光二极管的阴极。
二极管阳极为高,阴极为低时,二极管导通。
想要发光二极管导通,必须先设置P2.3输出信号为“1”,再通过设置P0,点亮想要点亮的发光二极管

2.每个 IO口有四种工作模式,由寄存器PnM0和PnM1中相应位控制。下面以P0M0和P0M1为例
在这里插入图片描述
流水灯要点亮led灯,需要将需要将P0的8个引脚(P0.0-P0.7)和P2.3都设置为推挽输出,led灯才可以点亮。
(其中的细节原理初学者可先不必深究)

//初始化部分
sbit led_sel=P2^3;//P2^3----E3
void Init(){	//初始化

	P0M1=0x00;
	P0M0=0xff;	//P0的8个引脚设置为01推挽输出

	P2M1=0x00;
	P2M0=0x08;	//P2.3推挽输出,即0000 1000,

	led_sel=1;	//E3使能端置1使led灯亮
}
void delay_ms(uint n)	//延时函数,uint为unsigned int型,该函数可延时n毫秒
{
	while(n){
	uchar i, j;
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
	n--;
}
}
#include<STC15F2K60S2.H>
#define uchar unsigned char
#define uint unsigned int
uchar led;	//
void main()//主函数
{
	Init();		//先初始化
	led=0x80;	//1000 0000即最左边的灯亮
	while(1)
	{
		P0=led;		//控制流水灯亮
		delay_ms(400);	//延时400ms
		if(led==0x01)	//最右边的灯亮后回到最左边
			led=0x80;
		else			//否则当前灯的右边的灯点亮,通过移位实现
			led=led>>1;
	}
	
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STC8是一款单片机芯片,而2812B是一款广泛应用于彩灯、LED显示屏等设备的RGB LED灯条。要实现STC8对2812B的驱动,需要进行以下几个步骤: 1. 引脚连接:将STC8的GPIO口与2812B的数据线相连。需要注意的是,2812B是一种基于串行通信的LED灯条,数据线需要串联多个LED,确保每个LED都能接收到数据信号。 2. 驱动程序编写:使用STC8的开发工具,编写相应的驱动程序。首先需要配置GPIO口的工作模式为输出模式,然后在程序中通过GPIO口发送控制信号给2812B。控制信号的具体格式需要根据2812B的通信协议进行编写,通常是通过调整高低电平的时间来表示不同的RGB色彩和亮度。 3. 定时器的应用:2812B对控制信号的时间要求比较高,需要精确控制高低电平的时间长度。为了满足这个要求,可以使用STC8芯片内部的定时器来生成所需的高低电平脉冲。 4. 调试和测试:编写完驱动程序后,需要将程序烧录到STC8芯片中,并将STC8连接到2812B。然后进行调试和测试,观察2812B是否能按照预期的方式显示各种颜色和亮度。 需要注意的是,STC8驱动2812B并不是一个简单的任务,需要对STC8单片机的相应寄存器和GPIO口的操作有一定的了解,同时需要熟悉2812B的通信协议和控制信号的生成方法。如果对STC8芯片编程和2812B控制有一定的经验,应该能够较为顺利地进行驱动开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值