欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
想用單片機延時方式做一個WS2811流水燈,如何修改程序
[打印本頁]
作者:
丸子田
時間:
2020-7-18 15:33
標題:
想用單片機延時方式做一個WS2811流水燈,如何修改程序
如題,用80c51通過延時的方式
驅動WS2811燈帶,想做成流水燈的效果,燈帶的基礎程序如下
#include <reg51.h>
#include <intrins.h>
#define nop _nop_()
#define unchar unsigned char
#define unint unsigned int
#define size 20
sbit Din = P2^2;
unchar bdata LED_DAT;
sbit bit0=LED_DAT^0;
sbit bit1=LED_DAT^1;
sbit bit2=LED_DAT^2;
sbit bit3=LED_DAT^3;
sbit bit4=LED_DAT^4;
sbit bit5=LED_DAT^5;
sbit bit6=LED_DAT^6;
sbit bit7=LED_DAT^7;
unchar RR,GG,BB;
unint t;
unint Mod;
void delay(unint z)
{
unchar a,b;
while(z--)
for(b = 0;b<=118;b++)
for(a = 0;a<=18;a++)
;
}
void h_dat0()
{
Din = 1;nop;
Din = 0;nop;nop; nop;
}
void h_dat1()
{
Din = 1;nop;nop;nop;
Din = 0;nop;
}
void Reset(void)
{
Din = 0;
delay(1);
}
void SendData()
{
LED_DAT = GG;
if(bit0 == 1) {h_dat1();} else {h_dat0();}
if(bit1 == 1) {h_dat1();} else {h_dat0();}
if(bit2 == 1) {h_dat1();} else {h_dat0();}
if(bit3 == 1) {h_dat1();} else {h_dat0();}
if(bit4 == 1) {h_dat1();} else {h_dat0();}
if(bit5 == 1) {h_dat1();} else {h_dat0();}
if(bit6 == 1) {h_dat1();} else {h_dat0();}
if(bit7 == 1) {h_dat1();} else {h_dat0();}
LED_DAT = RR;
if(bit0 == 1) {h_dat1();} else {h_dat0();}
if(bit1 == 1) {h_dat1();} else {h_dat0();}
if(bit2 == 1) {h_dat1();} else {h_dat0();}
if(bit3 == 1) {h_dat1();} else {h_dat0();}
if(bit4 == 1) {h_dat1();} else {h_dat0();}
if(bit5 == 1) {h_dat1();} else {h_dat0();}
if(bit6 == 1) {h_dat1();} else {h_dat0();}
if(bit7 == 1) {h_dat1();} else {h_dat0();}
LED_DAT = BB;
if(bit0 == 1) {h_dat1();} else {h_dat0();}
if(bit1 == 1) {h_dat1();} else {h_dat0();}
if(bit2 == 1) {h_dat1();} else {h_dat0();}
if(bit3 == 1) {h_dat1();} else {h_dat0();}
if(bit4 == 1) {h_dat1();} else {h_dat0();}
if(bit5 == 1) {h_dat1();} else {h_dat0();}
if(bit6 == 1) {h_dat1();} else {h_dat0();}
if(bit7 == 1) {h_dat1();} else {h_dat0();}
}
void send_string_data()
{
unchar i;
for (i= 0;i<size;i++)
{
SendData();
}
Reset();
}
void main()
{
while(1)
}
復制代碼
作者:
wwh2382
時間:
2020-7-19 14:29
這個是修改過的程序吧,主循環都是空的。發原程序上來看看,才好幫你改。
作者:
15951917887
時間:
2020-7-19 14:55
while(1)里邊的程序都沒有調用,不會執行你編寫的子函數
作者:
lovexulu
時間:
2020-7-19 17:45
80C51貌似驅動不了吧,周期太長。
作者:
就你****
時間:
2020-7-19 17:59
80C51不行,周期長,用宏晶,20M晶振可以玩一下
作者:
lyxing
時間:
2020-7-19 21:04
用STC15F104W玩過, 內部時間頻率:33.1176Mh,定時中斷方式。
作者:
丸子田
時間:
2020-7-20 09:20
lyxing 發表于 2020-7-19 21:04
用STC15F104W玩過, 內部時間頻率:33.1176Mh,定時中斷方式。
大佬能給個代碼看看嗎,我這種寫法不知道怎么才能讓燈珠自己動并且變色,只能做成一起變色一起滅燈
作者:
wwh2382
時間:
2020-7-21 08:26
你的問題應該找賣家,賣家都會炫耀自家的燈帶能這樣那樣的花式亮燈,你的卻不行,第一時間就是找賣家
作者:
MTG51
時間:
2021-3-25 15:02
很好,很實用的資料,學習了
作者:
zhai1995
時間:
2021-3-27 17:13
建議SPI 加DMA控制。
作者:
dzbj
時間:
2021-3-27 23:22
80C51不行 也不是必須33M或者20M頻率 11.0592肯定行 實測的 但至少得1T的單片機 不然就如樓上各位說的 通訊時間搞不定 我當時用的204s片子 11.0592的頻率 推了70多個燈
作者:
mengzhixinheng
時間:
2021-3-28 06:33
8m晶振,振蕩頻率125ns就可以了,這個協議的容錯率很高的,好像是+-130吧
作者:
lwh999995
時間:
2021-3-28 13:22
至少用STC的1T單片機才能勝任。
12T的單片機也只能死撐,沒必要這么干。
作者:
512-DZ
時間:
2021-7-6 09:06
錯誤,編譯不了
作者:
lkc8210
時間:
2021-7-7 09:21
512-DZ 發表于 2021-7-6 09:06
錯誤,編譯不了
while(1)少了一個分號";"而已
SendData可以改成這樣:
void SendData()
{
char i,j;
char LED_DATA[3];
LED_DATA[0] = GG;
LED_DATA[1] = RR;
LED_DATA[2] = BB;
for(i = 0;i<3;i++){
for(j = 0;j<8;j++){
if(LED_DATA[i] & 0x01){h_dat1();} else {h_dat0();}
LED_DATA[i]>>=1;
}
}
}
復制代碼
作者:
liqiangcom
時間:
2022-5-29 23:17
挺好,正好有兩款跑飛了的程序
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1