1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標(biāo)題:
ws2812b彩燈帶室內(nèi)自動(dòng)系統(tǒng)單片機(jī)源程序
[打印本頁]
作者:
nlz
時(shí)間:
2017-6-22 15:33
標(biāo)題:
ws2812b彩燈帶室內(nèi)自動(dòng)系統(tǒng)單片機(jī)源程序
基于51單片機(jī)12c5a60s2的彩燈帶流水,可調(diào)節(jié)亮度,可用手機(jī)進(jìn)行控制,手動(dòng)調(diào)節(jié)pwm,自動(dòng)調(diào)節(jié)
0.png
(47.43 KB, 下載次數(shù): 144)
下載附件
2017-6-22 19:17 上傳
調(diào)光基于12c5a60s2程序:
/*********************************************************************************************************
*********************************************************************************************************/
#include<STC12C5A60S2.h>
//#include<LCD1602.h>
#include<PWM.h>
#include<ADC.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define FSCLK 11059200
#define Number 29
unsigned char Receive,i;
unsigned int n,flag;
unsigned char Receive_table[15];
#define RELOAD_COUNT 0xFA
sbit LED0=P0^2;
sbit DAI = P3^2;
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
sbit k4=P2^3;
sbit k5=P2^4;
sbit k6=P2^5;
sbit k7=P2^6;
sbit k8=P2^7;
sbit p13=P1^3;
uint speed = 0;
uchar flag_clr = 0;
uchar Table_R[8]={ 0, 0,255, 0,255,255,255,0};
uchar Table_G[8]={255, 0, 0,255, 0,255,255,0};
uchar Table_B[8]={ 0,255, 0,255,255, 0,255,0};
uchar code Table[256] = {
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,
120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,
140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,
180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,
200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,
220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
unsigned char CCAPOH,ID;
float res0,res1;
/*********************************************************************************************************
** 函數(shù)功能 :延時(shí)函數(shù)
** 函數(shù)說明 :利用軟件延時(shí),占用CPU,經(jīng)調(diào)試最小單位大約為1ms
** 入口參數(shù) :time:需要延時(shí)的時(shí)間,單位ms
** 出口參數(shù) :無
*********************************************************************************************************/
void Delay_ms(uint time)
{
uint i,j;
for(i = 0;i < time;i ++)
for(j = 0;j < 930;j ++);
}
void ms_delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void us_delay(unsigned int t)
{
while(t--);
}
void rst()
{
uint s;
DAI=0;
for(s=0;s<1000;s++);
{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
}
void Delay_Fash (uint x) // 1ms Delay
{
uint t;
t = 0;
while (x--)
{
for (t = 0; t < 5000; t++);
}
}
void Delay(uint x) // 1ms Delay
{
uint t;
t = 0;
while (x--)
{
for (t = 0; t < 330; t++);
}
}
/*uart初始化*/
void Uart_Init()//使用獨(dú)立的波特率發(fā)生器(STC12C560S2或帶有獨(dú)立波特率發(fā)生器//、//的單片機(jī)均可)
{
SCON=0x50; //設(shè)置為串行口以方式1工作,8位異步通訊,允許接收中斷。
PCON=0x80; //SMOD波特率選擇位為1,SMOD=1.
BRT=0xfa;//波特率9600 256-晶振頻率/波特率x16=BRT
AUXR=0x11; //T0、T1不12分頻,速度是89C51的12倍,啟動(dòng)獨(dú)立波特率//發(fā)生器,每個(gè)時(shí)鐘計(jì)數(shù)一次
//設(shè)置串口1的波特率發(fā)生器為獨(dú)立波特率發(fā)生器,
// AUXR1=0x80; //切換到P1口
ES=1; //開啟串口中斷
EA=1; //開啟總中斷
}
void Send_Uart(unsigned char value){//向WIFI模塊發(fā)送數(shù)據(jù)
ES=0;
TI=0;
SBUF=value;//發(fā)送完后TI變1
while(!TI);
TI=0;
ES=1;
}
/*給esp8266發(fā)送指令*/
void ESP8266_Set(unsigned char *puf)
{
while(*puf){
Send_Uart(*puf);
us_delay(5);
puf++;
}
us_delay(5);
Send_Uart('\r');
us_delay(5);
Send_Uart('\n');
ms_delay(20000);
}
void code0()
{
DAI=1;
_nop_();
DAI=0;
_nop_(); _nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
void code1()
{
DAI=1;
_nop_(); _nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
DAI=0;
_nop_();_nop_(); _nop_(); _nop_();
}
//打開燈
void bright()
{ unsigned int j;
for(j=0;j<720;j++)code1();
}
//關(guān)閉燈函數(shù)
void dark()
{ unsigned int j;
for(j=0;j<720;j++)code0();
}
void send_2811_24bits(uchar dat1,uchar dat2,uchar dat3)
{
uchar a;
// uchar b;
for(a=0;a<8;a++) //dat1
{
if(dat1&0x80)
{
code1();
}
else
{
code0();
}
dat1=dat1<<1;
}
for(a=0;a<8;a++) //dat2
{
if(dat2&0x80)
{
code1();
}
else
{
code0();
}
dat2=dat2<<1;
}
for(a=0;a<8;a++) //dat3
{
if(dat3&0x80)
{
code1();
}
else
{
code0();
}
dat3=dat3<<1;
}
}
void Jump()
{
uint i;
uchar Colour = 0; //這個(gè)參數(shù)值域:0~7
uchar Count = 0; //跳變次數(shù) //這個(gè)參數(shù)值域:0~1
speed = 150;
while(1)
{ if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
for(i=0;i<50;i++) //Number = 50
{
send_2811_24bits(Table_R[Colour],Table_G[Colour],Table_B[Colour]);
}
rst();
Delay(speed);
Colour++;
if(Colour>=7)
{
Colour = 0;
Count++;
if(Count>1)
{
Count = 0;
return;
}
}
}
}
void Flow()
{
uint i,Stack;
uchar Colour1,Colour2;
Stack = 0;
Colour1 = 0;
Colour2 = 6;
speed=5; //17
while(1)
{ if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
for(i=0;i<Number;i++)
{
if(i<Stack)
{
send_2811_24bits(Table_R[Colour1],Table_G[Colour1],Table_B[Colour1]);
}
else
{
send_2811_24bits(Table_R[Colour2],Table_G[Colour2],Table_B[Colour2]);
}
}
rst();
Delay_Fash(speed);
Stack++;
if(Stack>Number)
{
Stack = 1;
Colour2 = Colour1;
Colour1++;
if(Colour1>6)
{
return;
}
}
}
}
void Pass()
{
int i,Stack,Stack_Buf;
uchar Pass_Sec;
char Colour,Colour_Buf;
uchar TIMES=0;
Pass_Sec = 12;
Colour_Buf = 0;
Stack_Buf = 0;
speed = 5;
while(1)
{ if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
Stack = Stack_Buf;
Colour = Colour_Buf;
for(i=0;i<Number;i++)
{
send_2811_24bits(Table_R[Colour],Table_G[Colour],Table_B[Colour]);
Stack++;
if(Stack > Pass_Sec)
{
Stack = 0;
Colour++;
if(Colour>6)
{
Colour=0;
}
}
}
rst();
Delay_Fash(speed);
Stack_Buf--;
{
if(Stack_Buf<0)
{
Stack_Buf = Pass_Sec;
Colour_Buf--;
if(Colour_Buf<0)
{
Colour_Buf = 6;
}
if(Colour_Buf==0)
{
TIMES++;
if(TIMES>1)
{
return;
}
}
}
}
}
}
void Case()
{
int i,Stack,Stack_Buf,TIMES;
uchar Pass_Sec;
char Colour,Colour_Buf;
TIMES=0;
Pass_Sec=7;
Colour_Buf=0;
Stack_Buf=0;
speed=10;
while(1)
{
if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
Stack=Stack_Buf;
Colour=Colour_Buf;
for(i=0;i<Number;i++)
{
if(Stack<4)
{
send_2811_24bits(Table_R[Colour],Table_G[Colour],Table_B[Colour]);
}
else
{
send_2811_24bits(255,255,255);
}
Stack++;
if(Stack>Pass_Sec)
{
Stack=0;
}
}
rst();
Delay_Fash(speed);
Stack_Buf--;
{
if(Stack_Buf<0)
{
Stack_Buf=Pass_Sec;
}
}
TIMES++;
if(TIMES>120)
{
TIMES=0;
Colour_Buf++;
if(Colour_Buf>5)
{
return;
}
}
}
}
void adchange()
{
res0=GetADCResult(ADC_CH0);
CCAP0H =256-ADC_RES;
res1=GetADCResult(ADC_CH1);
}
void key()
{
if(CCAP0H<255)
{
if(k1==0)
{
Delay_ms(5);
if(k1==0)
{
CCAP0H++;
}
}
}
if( CCAP0H>0)
{
if(k2==0)
{
Delay_ms(5);
if(k2==0)
{
CCAP0H--;
}
}
}
}
void changecolour1()
{unsigned char i;
rst();
for(i=0;i<30;i++)
{
if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
send_2811_24bits(0,255,0);
}
}
void changecolour2()
{unsigned char i;
rst();
for(i=0;i<30;i++)
{
if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
send_2811_24bits(0,0,255);
}
}
void changecolour3()
{unsigned char i;
rst();
for(i=0;i<30;i++)
{
if(k5==0)
{
Delay_ms(5);
if(k5==0)
{
return;
ID=0;
}
}
send_2811_24bits(255,0,0);
}
}
void shouji()
{
if(Receive=='0')
{
ID=6;
CCAP0H=30;
}
if(Receive=='1')
{
ID=6;
CCAP0H=60;
}
if(Receive=='2')
{
ID=6;
CCAP0H=90;
}
if(Receive=='3')
{
ID=6;
CCAP0H=120;
}
if(Receive=='4')
{
ID=6;
CCAP0H=150;
}
if(Receive=='5')
{
ID=6;
CCAP0H=180;
}
if(Receive=='6')
{
ID=6;
CCAP0H=210;
}
if(Receive=='7')
{
ID=6;
CCAP0H=254;
}
if(Receive=='d')
{
ID=6;
CCAP0H=0;
}
}
void main()
{
CCAP0H=254;
ID=0;
TMOD|=0X10;
TH1=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL1=0X18;
EA=1;
TR1=1;
ET1=1;
Uart_Init();
PCA_init();
Timer0_init();
ADC_Init(ADC_PORT0 | ADC_PORT1); //配置通道P1^0 ,P1^1 為AD采集口,如要配置其他其他口,直接用或運(yùn)算加進(jìn)初始化函數(shù)中
ESP8266_Set("AT+CWMODE=3");//選擇wifi應(yīng)用模式,此時(shí)為STA模式
ms_delay(3000);
// ESP8266_Set("AT+RST");
ESP8266_Set("AT+CWJAP=\"WIFI\",\"12345678\"");//連接網(wǎng)絡(luò)
ms_delay(15000);
ESP8266_Set("AT+CIPMUX=0");//設(shè)置單連接模式,透?jìng)髦荒茉趩芜B接模式下進(jìn)行
ms_delay(5000);
ESP8266_Set("AT+CIPMODE=1");//設(shè)置透?jìng)髂J?br />
ms_delay(5000);
ESP8266_Set("AT+CIPSTART=\"TCP\",\"10.50.84.160\",8080");//連接到服務(wù)器
while(1)
{
shouji();
switch(ID)
{
case(0):bright();key();break;
case(1):bright();adchange();break;
case(2):Flow();Case();Pass();Jump();break;
case(3):changecolour1();break;
case(4):changecolour2();break;
case(5):changecolour3();break;
case(6):bright();break;
}
}
}
void timer1() interrupt 3
{
if(k3==0)
{
Delay_ms(5);
if(k3==0)
{
ID=1;
}
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
全部資料下載地址:
調(diào)光基于12c5a60s2.zip
(60.05 KB, 下載次數(shù): 309)
2017-6-22 15:32 上傳
點(diǎn)擊文件名下載附件
程序代碼60s2
下載積分: 黑幣 -5
作者:
crazyking
時(shí)間:
2017-9-7 20:33
請(qǐng)問ESP8266是用AT COMMAND嗎
作者:
我比黑點(diǎn)子更黑
時(shí)間:
2017-11-4 15:29
非常謝謝你
作者:
xb84510
時(shí)間:
2018-1-17 21:44
有圖沒有啊
作者:
孤獨(dú)求敗
時(shí)間:
2018-1-22 17:19
16個(gè)燈一直是白色,不能調(diào)
作者:
自由飛翔123
時(shí)間:
2018-5-14 11:07
搞不定
作者:
NZXT
時(shí)間:
2018-5-15 12:00
哪位大俠能發(fā)給我一個(gè)包,我積分不夠下載的。學(xué)習(xí)一下
46196428@qq.com
作者:
looham
時(shí)間:
2018-5-23 23:12
好東西 我現(xiàn)在剛好用到試試
作者:
knimble
時(shí)間:
2018-7-12 00:15
下載學(xué)習(xí)一下,多謝
作者:
dhii1234
時(shí)間:
2018-9-29 16:24
下載學(xué)習(xí)學(xué)習(xí),多謝
作者:
plj213
時(shí)間:
2018-10-12 22:59
感謝分享。。。。
作者:
黃生俊520
時(shí)間:
2018-12-16 22:06
厲害了我的哥
作者:
pju.wang
時(shí)間:
2018-12-19 09:35
挺好的,功能可以實(shí)現(xiàn),但是感覺細(xì)節(jié)需要控制
作者:
honour
時(shí)間:
2019-3-28 23:55
太好了,謝謝大神分享
作者:
525215455
時(shí)間:
2019-5-1 09:11
太好了,謝謝大神分享
作者:
pxh316
時(shí)間:
2019-9-5 16:03
謝謝大神分享
作者:
zhck01
時(shí)間:
2020-5-13 09:20
謝謝分享
作者:
King23
時(shí)間:
2020-11-10 16:44
非常實(shí)用值得學(xué)習(xí),非常感謝
作者:
changhz
時(shí)間:
2020-11-10 21:36
好東西,非常實(shí)用值得學(xué)習(xí),謝謝大神分享
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1