219程序為:LED七彩跳變+漸變的轉換YX-222(LED流星燈8段16段-軟件生成生成數據1
YX-225(用DM134實現16段,8段,4段16級灰度拖尾)
YX-231(紅外遙控LED跳變漸變定色)
1.jpg (12.92 KB, 下載次數: 75)
下載附件
附件內容
2018-10-13 15:25 上傳
YX-222(LED流星燈8段16段-軟件生成生成數據1
電路原理圖如下:
0.jpg (77.04 KB, 下載次數: 70)
下載附件
2018-10-13 17:20 上傳
單片機源程序如下:
- //============================================================================
- //================翼芯科技 用DM134實現16段,8段,4段16級灰度拖尾================
- //============================================================================
- // 此源碼版權屬 翼芯科技 全權享有,如欲引用,敬請署名并告知
- // 嚴禁隨意用于商業目的,違者必究,后果自負
- //程序說明:本程序用DM134實現16段,8段,4段16級灰度拖尾,各重復1次,不同步.IC插到U9位置.
- //文件名稱:main.C
- //日期: 2011/01/23
- //版本: 1.0
- //C編譯器: keil 8.05
- //=============================================================================
- #include <STC12C5AXX.H>
- #define uchar unsigned char
- #define uint unsigned int
- sbit DAT = P3^2; //DM134數據輸出
- sbit CLK = P3^3; //DM134時鐘輸出
- sbit LE = P3^4; //DM134鎖存口
- sbit EN = P4^4; //DM134使能口
- uchar code MOV_CNT[3]={31,24,20};
- uchar code DEC_CNT[3]={1,2,4};
- uchar DAT_BUF[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
- uint DATA_REG; //DM134輸出數據變量
- /******************************************************************
- - 功能描述:延時函數
- - 隸屬模塊:無
- - 函數屬性:無
- - 參數說明:無
- - 返回說明:無
- - 注:.....
- ******************************************************************/
- delayms(uint x)
- {
- uint t;
- while(x--)
- for(t=1500;t>0;t--);
- }
- /******************************************************************
- - 功能描述:向DM134發送數據
- - 隸屬模塊:無
- - 函數屬性:無
- - 參數說明:無
- - 返回說明:無
- - 注:.....
- ******************************************************************/
- void sendbyte(uint byte)
- {
- uint num,i;
- num=byte;
- for(i=16;i>0;i--)
- {
- CLK=0;
- DAT=num&0x8000;
- num=num<<1;
- CLK=1;
- }
- LE=1;
- LE=0;
- }
- /******************************************************************
- - 功能描述:PMW輸出
- - 隸屬模塊:無
- - 函數屬性:無
- - 參數說明:無
- - 返回說明:無
- - 注:.....
- ******************************************************************/
- void SCAN(void)
- {
- uchar SPEED,PWM;
- for(SPEED=100;SPEED>0;SPEED--) //調速度
- {
- for(PWM =16;PWM>0;PWM--)
- {
- (DAT_BUF[1] > PWM)? (DATA_REG |= 0X8000) : (DATA_REG &=0X7FFF);
- (DAT_BUF[2] > PWM)? (DATA_REG |= 0X4000) : (DATA_REG &=0XBFFF);
- (DAT_BUF[3] > PWM)? (DATA_REG |= 0X2000) : (DATA_REG &=0XDFFF);
- (DAT_BUF[4] > PWM)? (DATA_REG |= 0X1000) : (DATA_REG &=0XEFFF);
- (DAT_BUF[5] > PWM)? (DATA_REG |= 0X0800) : (DATA_REG &=0XF7FF);
- (DAT_BUF[6] > PWM)? (DATA_REG |= 0X0400) : (DATA_REG &=0XFBFF);
- (DAT_BUF[7] > PWM)? (DATA_REG |= 0X0200) : (DATA_REG &=0XFDFF);
- (DAT_BUF[8] > PWM)? (DATA_REG |= 0X0100) : (DATA_REG &=0XFEFF);
- (DAT_BUF[9] > PWM)? (DATA_REG |= 0X0080) : (DATA_REG &=0XFF7F);
- (DAT_BUF[10] > PWM)? (DATA_REG |= 0X0040) : (DATA_REG &=0XFFBF);
- (DAT_BUF[11] > PWM)? (DATA_REG |= 0X0020) : (DATA_REG &=0XFFDF);
- (DAT_BUF[12] > PWM)? (DATA_REG |= 0X0010) : (DATA_REG &=0XFFEF);
- (DAT_BUF[13] > PWM)? (DATA_REG |= 0X0008) : (DATA_REG &=0XFFF7);
- (DAT_BUF[14] > PWM)? (DATA_REG |= 0X0004) : (DATA_REG &=0XFFFB);
- (DAT_BUF[15] > PWM)? (DATA_REG |= 0X0002) : (DATA_REG &=0XFFFD);
- (DAT_BUF[16] > PWM)? (DATA_REG |= 0X0001) : (DATA_REG &=0XFFFE);
- sendbyte(DATA_REG); //輸出DM134數據
- }
- }
- }
- /******************************************************************
- - 功能描述:主函數
- - 隸屬模塊:無
- - 函數屬性:無
- - 參數說明:無
- - 返回說明:無
- - 注:.....
- ******************************************************************/
- void main(void)
- {
- uchar i,j,SEG,REPEAT;
- //M1:M0 0:0為標準51;0:1輸出;1:0輸入;1:1開漏輸出
- P3M1=0X00; //P0口設為推挽輸出
- P3M0=0XFF;
- P4M1=0X00; //P4口設為推挽輸出
- P4M0=0XFF;
- EN=0;
-
- P0=0;
- while(1)
- {
- for(SEG=0;SEG<3;SEG++) //段指針
- {
- for(REPEAT=1;REPEAT>0;REPEAT--) //重復次數
- {
- DAT_BUF[0]=16; //灰度初始化
- for(i=0;i<MOV_CNT[SEG];i++) //整個數據左移1次
- {
- for(j=16;j>0;j--) //16個數據向后移動一位
- {
- DAT_BUF[j]=DAT_BUF[j-1];
- }
- SCAN(); //PWM輸出
- if(DAT_BUF[0]!=0) //數據減
- DAT_BUF[0]-=DEC_CNT[SEG];
- }
- delayms(300); //延時
- }
- }
- }
- }
復制代碼 全部程序均可完全編譯與使用
所有資料51hei提供下載:
附件.zip
(207.64 KB, 下載次數: 179)
2018-10-13 15:28 上傳
點擊文件名下載附件
附件 下載積分: 黑幣 -5
|