|
注冊登錄后可以在線提問,行業(yè)從業(yè)者將幫助您解答!
您需要 登錄 才可以下載或查看,沒有賬號?請用中文注冊用戶!
×
//============================================================================
//================翼芯科技 LED流星燈8段16段==軟件生成生成數(shù)據(jù)=================
//============================================================================
// 此源碼版權(quán)屬 翼芯科技 全權(quán)享有,如欲引用,敬請署名并告知
// 嚴(yán)禁隨意用于商業(yè)目的,違者必究,后果自負(fù)
// 公司網(wǎng)站 http://www.mcu-led.com
// 公司論壇 http://www.cpu-led.com
// 淘寶店: http://cpu-led.taobao.com/ 和 http://mcu-led.taobao.com/
// 產(chǎn)品咨詢 QQ :1322130074 電話:13715619122
//程序說明:本程序用于實現(xiàn)LED流星燈8段16段,不同步.IC插到U9位置.
//文件名稱:main.C
//日期: 2011/01/23
//版本: 1.0
//C編譯器: keil 8.05
//=============================================================================
#include <STC12C5AXX.H>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_();_nop_()
sbit DAT = P3^2; //DM134數(shù)據(jù)輸出
sbit CLK = P3^3; //DM134時鐘輸出
sbit LE = P3^4; //DM134鎖存口
sbit EN = P4^4; //DM134使能口
/******************************************************************
- 功能描述:ms延時
- 隸屬模塊:無
- 函數(shù)屬性:無
- 參數(shù)說明:無
- 返回說明:無
- 注:.....
******************************************************************/
void Delay(uint ms)
{
uint a,b;
for(a=ms;a!=0;a--)
for(b=250;b!=0;b--)
;
}
/******************************************************************
- 功能描述:DM134傳送一個字的數(shù)據(jù), 高位在前
- 隸屬模塊:無
- 函數(shù)屬性:無
- 參數(shù)說明:無
- 返回說明:無
- 注:.....
******************************************************************/
void DM134(uint dat)
{
uchar i;
for(i=16;i!=0;i--)
{
CLK=0;
DAT=dat&0x01; //低位在前
dat=dat>>1; //左移一位
CLK=1; //上升延數(shù)據(jù)移入
}
LE=1; //寄存器數(shù)據(jù)更新
LE=0;
}
/******************************************************************
- 功能描述:實現(xiàn)8段拖尾效果
- 隸屬模塊:無
- 函數(shù)屬性:無
- 參數(shù)說明:無
- 返回說明:無
- 注:.....
******************************************************************/
void Grayscale8(uchar speed)
{
uchar x,y,f; //上半
uint z=0x8000, gray;
for(y=8;y>0;y--)
{
for(f=speed;f>0;f--) //流動速度
{
gray=z;
for(x=8;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
z|=0x8000;
}
z=0x7f80;
for(y=16;y>0;y--) //下半
{
for(f=speed;f>0;f--) //流動速度
{
gray=z;
for(x=8;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
}
}
/******************************************************************
- 功能描述:實現(xiàn)16段拖尾效果
- 隸屬模塊:無
- 函數(shù)屬性:無
- 參數(shù)說明:無
- 返回說明:無
- 注:.....
******************************************************************/
void Grayscale16(uchar speed)
{
uchar x,y,f;
uint z=0x8000, gray;
for(y=16;y>0;y--)
{
for(f=speed;f>0;f--) //流動速度
{
gray=z;
for(x=16;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
z|=0x8000;;
}
z=0x7fff;
for(y=16;y>0;y--)
{
for(f=speed;f>0;f--) //流動速度
{
gray=z;
for(x=16;x>0;x--)
{
DM134(gray);
gray>>=1;
gray&=z;
}
}
z>>=1;
}
}
/******************************************************************
- 功能描述:主函數(shù)
- 隸屬模塊:無
- 函數(shù)屬性:無
- 參數(shù)說明:無
- 返回說明:無
- 注:.....
******************************************************************/
void main(void)
{
uchar CNT;
//M1:M0 0:0為標(biāo)準(zhǔn)51;0:1輸出;1:0輸入;1:1開漏輸出
P0M1=0X00; //P0口設(shè)為推挽輸出
P0M0=0XFF;
P4M1=0X00; //P4口設(shè)為推挽輸出
P4M0=0XFF;
EN=0;
P0=0;
while(1)
{
for(CNT=0;CNT<3;CNT++)
{
Grayscale16(100); //16段
Delay(100);
}
for(CNT=0;CNT<3;CNT++)
{
Grayscale8(250); //8D段
Delay(100);
}
}
}
|
|