QQ截圖20170619144757.jpg (105.24 KB, 下載次數: 87)
下載附件
原理圖
2017-6-19 15:12 上傳
單片機測試程序:
- #include<reg52.h> //頭文件
- #define uint unsigned int //宏定義
- #define uchar unsigned char //宏定義
- #include<intrins.h> //循環函數的頭文件
- uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//從低位往高位滅一個燈流水
- uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//從高位往低位滅一個燈流水
- uchar code table2[]={0xfe,0xfa,0xf8,0xf0,0xe0,0xa0,0x80,0x00};//從低位到高位逐步全部熄滅
- uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//從高位到低位逐步全部熄滅
- uchar code table4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//從低位到高位逐步全部點亮
- uchar code table5[]={0x80,0xa0,0xe0,0xf0,0xf8,0xfa,0xfe,0xff};//從高位到低位逐步全部點亮
- uchar code table6[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//從低位到高位,亮一個燈移動
- uchar code table7[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//從高位到低位,亮一個燈移動
- uchar code table8[]={0xfc,0xfe,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0x80,0xc0,0xe0,0xf0,0xf1};
- uchar code table9[]={0x03,0x01,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0x7f,0x3f,0x1f,0x0f,0x07};
- uchar code table10[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01};
- uchar code table11[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
- uchar code table12[]={0x1f,0x0f,0x07,0x03,0x01,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0x7f,0x3f};
- uchar code table13[]={0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0x80,0xc0};
- uchar i,b;
- sbit r1=P3^2; //紅色上8層片選
- sbit r2=P3^3; //紅色下8層片選
- sbit b1=P3^4; //綠色上8層片選
- sbit b2=P3^5; //綠色下8層片選
- sbit g1=P3^6; //藍色上8層片選
- sbit g2=P3^7; //藍色下8層片選
- void delay(uint z) //延時函數
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=314;y>0;y--);
- }
- /******************************************/
- void liushui0()//兩列紅色逆時針轉動
- {
- r1=1; //開紅色使能
- r2=1; //開紅色使能
- P0=0xff;//
- for(i=0;i<8;i++)
- {
- P1=table6[i];
- P2=table6[i];
- delay(30);
- }
- P1=0x00;P2=0x00;
- P0=0x00;
- r1=0; //關紅色使能
- r2=0; //關紅色使能
- }
- void rr()//紅色亮一會兒
- {
- r1=1;
- r2=1;
- P0=0xff;
- P2=0xff;
- P1=0xff;
- delay(100);
- P0=0x00;
- r1=0;
- r2=0;
- P2=0x00;
- P1=0x00;
- }
- /******************************************/
- void liushui1()//兩列綠色逆時針轉動
- {
- g1=1; //開綠色使能
- g2=1; //開綠色使能
- P0=0xff;//
- for(i=0;i<8;i++)
- {
- P1=table6[i];
- P2=table6[i];
- delay(30);
- }
- P1=0x00;P2=0x00;
- P0=0x00;
- g1=0; //關綠色使能
- g2=0; //關綠色使能
- }
- void gg()//綠色亮一會兒
- {
- g1=1;
- g2=1;
- P0=0xff;
- P2=0xff;
- P1=0xff;
- delay(100);
- P0=0x00;
- g1=0;
- g2=0;
- P2=0x00;
- P1=0x00;
- }
- /******************************************/
- void liushui2()//兩列藍色逆時針轉動
- {
- b1=1; //開藍色使能
- b2=1; //開藍色使能
- P0=0xff;//
- for(i=0;i<8;i++)
- {
- P1=table6[i];
- P2=table6[i];
- delay(30);
- }
- P1=0x00;P2=0x00;
- P0=0x00;
- b1=0; //關藍色使能
- b2=0; //關藍色使能
- }
- void bb()//藍色亮一會兒
- {
- b1=1;
- b2=1;
- P0=0xff;
- P2=0xff;
- P1=0xff;
- delay(100);
- P0=0x00;
- b1=0;
- b2=0;
- P2=0x00;
- P1=0x00;
- }
- void liushui3()//紅色單層向上移動
- {
- P1=0xff;P2=0xff;
- b2=1;
- for(i=0;i<8;i++)
- {
- P0=table7[i];
- delay(30);
- }
- P0=0x00;
- b2=0;
- /********* **********/
- P1=0xff;P2=0xff;
- b1=1;
- for(i=0;i<8;i++)
- {
- P0=table7[i];
- delay(30);
- }
- P0=0x00;
- b1=0;
- }
- /***********************/
- void liushui4()//紅、黃、綠、青、藍、洋紅、白、紅,向上流動
- {
- uchar a,b,c;//綠、紅、藍
- a=0x8d;
- b=0x38;
- c=0xe1;
- /////////////
- r1=1;P0=b;r1=0;
- r2=1;P0=b;r2=0;
- g1=1;P0=a;g1=0;
- g2=1;P0=a;g2=0;
- b1=1;P0=c;b1=0;
- b2=1;P0=c;b2=0;
- P1=0xff;P2=0xff;
- for(i=0;i<8;i++)
- {
- a=_cror_(a,1);//循環左移
- b=_cror_(b,1);//循環左移
- c=_cror_(c,1);//循環左移
- delay(80);//延時
- r1=1;P0=b;r1=0;
- r2=1;P0=b;r2=0;
- g1=1;P0=a;g1=0;
- g2=1;P0=a;g2=0;
- b1=1;P0=c;b1=0;
- b2=1;P0=c;b2=0;
- }
- P3=0xff;P0=0x00;P3=0x00;
- P1=0x00;P2=0x00;
- }
- /*************************************************/
- void liushui5()//紅、黃、綠、青、藍、洋紅、白、紅,向下流動
- {
- uchar a,b,c;//綠、紅、藍
- a=0x8d;
- b=0x38;
- c=0xe1;
- /////////////
- r1=1;P0=b;r1=0;
- r2=1;P0=b;r2=0;
- g1=1;P0=a;g1=0;
- g2=1;P0=a;g2=0;
- b1=1;P0=c;b1=0;
- b2=1;P0=c;b2=0;
- P1=0xff;P2=0xff;
- for(i=0;i<8;i++)
- {
- a=_crol_(a,1);//循環左移
- b=_crol_(b,1);//循環左移
- c=_crol_(c,1);//循環左移
- delay(80);//延時
- r1=1;P0=b;r1=0;
- r2=1;P0=b;r2=0;
- g1=1;P0=a;g1=0;
- g2=1;P0=a;g2=0;
- b1=1;P0=c;b1=0;
- b2=1;P0=c;b2=0;
- }
- P3=0xff;P0=0x00;P3=0x00;
- P1=0x00;P2=0x00;
- }
- void liushui6()//白色單層向上
- {
- uchar a,b,c;//綠、紅、藍
- a=0x80;
- b=0x80;
- c=0x80;
- /////////////
- r2=1;P0=b;r2=0;
- g2=1;P0=a;g2=0;
- b2=1;P0=c;b2=0;
- P1=0xff;P2=0xff;
- for(i=0;i<8;i++)
- {
- a=_cror_(a,1);//循環左移
- b=_cror_(b,1);//循環左移
- c=_cror_(c,1);//循環左移
- delay(25);//延時
- r2=1;P0=b;r2=0;
- g2=1;P0=a;g2=0;
- b2=1;P0=c;b2=0;
- }
- P3=0xff;P0=0x00;P3=0x00;
- P1=0x00;P2=0x00;
- /*****************************************/
- r1=1;P0=b;r1=0;
- g1=1;P0=a;g1=0;
- b1=1;P0=c;b1=0;
- P1=0xff;P2=0xff;
- for(i=0;i<8;i++)
- {
- a=_cror_(a,1);//循環左移
- b=_cror_(b,1);//循環左移
- c=_cror_(c,1);//循環左移
- delay(25);//延時
- r1=1;P0=b;r1=0;
- g1=1;P0=a;g1=0;
- b1=1;P0=c;b1=0;
- }
- P3=0xff;P0=0x00;P3=0x00;
- P1=0x00;P2=0x00;
- }
- /****************************************************/
- void liushui7()//白色單層向下
- {
- uchar a,b,c;//綠、紅、藍
- a=0x01;
- b=0x01;
- c=0x01;
- /////////////
- r1=1;P0=b;r1=0;
- g1=1;P0=a;g1=0;
- b1=1;P0=c;b1=0;
- P1=0xff;P2=0xff;
- for(i=0;i<8;i++)
- {
- a=_crol_(a,1);//循環左移
- b=_crol_(b,1);//循環左移
- c=_crol_(c,1);//循環左移
- delay(25);//延時
- r1=1;P0=b;r1=0;
- g1=1;P0=a;g1=0;
- b1=1;P0=c;b1=0;
- }
- P3=0xff;P0=0x00;P3=0x00;
- P1=0x00;P2=0x00;
- /*****************************************/
- r2=1;P0=b;r2=0;
- g2=1;P0=a;g2=0;
- b2=1;P0=c;b2=0;
- P1=0xff;P2=0xff;
- for(i=0;i<8;i++)
- {
- a=_crol_(a,1);//循環左移
- b=_crol_(b,1);//循環左移
- c=_crol_(c,1);//循環左移
- delay(25);//延時
- r2=1;P0=b;r2=0;
- g2=1;P0=a;g2=0;
- b2=1;P0=c;b2=0;
- }
- P3=0xff;P0=0x00;P3=0x00;
- P1=0x00;P2=0x00;
- }
- /********************************************************************/
- void liushui8()//6色向上流動
- {
- P1=0x00;P2=0x00;
- P1=0xff;P2=0xff;
- for(i=0;i<16;i++)
- {
- r2=1;P0=table8[i];r2=0;
- r1=1;P0=table9[i];r1=0;
- P1=0x00;P2=0x00;
- P1=0xff;P2=0xff;
- /******/
- g2=1;P0=table10[i];g2=0;
- g1=1;P0=table11[i];g1=0;
- P1=0x00;P2=0x00;
- P1=0xff;P2=0xff;
- b2=1;P0=table12[i];b2=0;
- b1=1;P0=table13[i];b1=0;
- delay(25);
- }
- P3=0xff;P0=0x00;P3=0x00;
- }
- /***********************************************************************/
- void liushui9()//6色向下流動
- {
- P1=0x00;P2=0x00;
- P1=0xff;P2=0xff;
- for(i=16;i>0;i--)
- {
- r2=1;P0=table8[i];r2=0;
- r1=1;P0=table9[i];r1=0;
- P1=0x00;P2=0x00;
- P1=0xff;P2=0xff;
- /******/
- g2=1;P0=table10[i];g2=0;
- g1=1;P0=table11[i];g1=0;
- P1=0x00;P2=0x00;
- P1=0xff;P2=0xff;
- b2=1;P0=table12[i];b2=0;
- b1=1;P0=table13[i];b1=0;
- delay(25);
- }
- P3=0xff;P0=0x00;P3=0x00;
- }
- /********************************************************************************
- *********************************************************************************
- *********************************************************************************/
- void main()
- {
- r1=1;P0=0x80;r1=0;
- r2=1;P0=0x80;r2=0;
- g1=1;P0=0x00;g1=0;
- g2=1;P0=0x00;g2=0;
- b1=1;P0=0x00;b1=0;
- b2=1;P0=0x00;b2=0;
- P1=0x00;
- P2=0x00;
- /**************************************/
- while(1)
- {
- /* */
- liushui0();//兩列紅色逆時針轉動
- liushui1();//兩列綠色逆時針轉動
- liushui2();//兩列藍色逆時針轉動
- liushui3();//紅色單層向上移動
-
- // gg();//綠色亮一會兒
- // rr();//紅色亮一會兒
- // bb();//藍色亮一會兒
- //
- // liushui4();//紅、黃、綠、青、藍、洋紅、白、紅,向上流動
- // liushui4();//紅、黃、綠、青、藍、洋紅、白、紅,向上流動
- // liushui4();//紅、黃、綠、青、藍、洋紅、白、紅,向上流動
- //
- // liushui5();//紅、黃、綠、青、藍、洋紅、白、紅,向下流動
- // liushui5();//紅、黃、綠、青、藍、洋紅、白、紅,向下流動
- // liushui5();//紅、黃、綠、青、藍、洋紅、白、紅,向下流動
- //
- //
- // liushui6();//白色單層向上
- // liushui7();//白色單層向下
- //
- //
- // liushui8();//6色向上流動
- // liushui8();//6色向上流動
- // liushui8();//6色向上流動
- // liushui9();//6色向下流動
- // liushui9();//6色向下流動
- // liushui9();//6色向下流動
- /******************************************/
- }
-
- }
復制代碼
|