資源簡介
專用PWM驅動芯片LPD6803的驅動程序

代碼片段和文件信息
#include?“STC12C2052.H“
typedef?unsigned?char?BYTE;
sbit?SDO=P1^5;
sbit?SCLK=P1^7;
unsigned?char?Dbuf[80];
void?BrushOut(BYTE?nDotsBYTE?drBYTE?dgBYTE?db)
{???BYTE?ijmask;
//?SDOSCLK為數據和移位輸出口,位變量,nDots為燈的個數 ?
//?本程序僅適用于GMODE=1CMODE=1的情況 ???
//?首先輸出32個‘0‘的起始幀 ???
????SCLK=0;
????SDO=0;
????for(i=0;i<32;i++)?{?SCLK=1;SCLK=0;?}
//?再輸出nDots點的數據,這里假設各點的顏色都是(drdgdb)
//?drdbdg為紅綠蘭的灰度值0-31
????for(i=0;i ????{???//首先輸出1個‘1‘起始位
????SDO=1;SCLK=1;SCLK=0;
????????
????//輸出5位紅色數據 ?
????mask=0x10;
????for(j=0;j<5;j++)
????{????if(mask?&?dr)????SDO=1;
?????????else?????????????SDO=0;
?????????SCLK=1;SCLK=0;
?????????mask>>=1;??????}
????//輸出5位綠色數據 ???
????mask=0x10;
????for(j=0;j<5;j++)
????{???if(mask?&?dg)???SDO=1;
????????else????????????SDO=0;
????????SCLK=1;SCLK=0;
????????mask>>=1;???????}
????//輸出5位蘭色數據 ??
????mask=0x10;
????for(j=0;j<5;j++)
????{???if(mask?&?db)???SDO=1;
????????else????????????SDO=0;
????????SCLK=1;SCLK=0;
????????mask>>=1;???????}
????}
????//輸出完nDots的數據后,還要補nDots個脈沖 ??
????SDO=0;
????for(i=0;i ????
????//傳輸結束 ????
}
void?delay(unsigned?int?n)
{???BYTE?t;
????for(;n>0;n--)
????????for(t=0;t<250;t++)?;
}
void?ScanOut(BYTE?n)
{???BYTE?ijdatmask;
????SCLK=0;
????SDO=0;
????for(i=0;i<32;i++)?{?SCLK=1;SCLK=0;?}
????for(i=0;i ????{???mask=0x80;
dat=Dbuf[i];
for(j=0;j<8;j++)
{ if(mask?&?dat)????SDO=1;
????????? else?????????????SDO=0;
????????? SCLK=1;SCLK=0;
????????? mask>>=1;??????}
????}????
????//輸出完nDots的數據后,還要補nDots個脈沖 ??
????SDO=0;
????for(i=0;i
// delay(1000);
}
main()
{???BYTE?ijk;
????
????while(1)
????{
????????//紅色漸亮 ?
????????for(i=0;i<32;i++)
????????{
????????????BrushOut(20i00);
????????????delay(600);???}
????????????????
????????//紅色漸暗同時綠色漸亮 ??
????????for(i=0;i<32;i++)
????????{
????????????BrushOut(2031-ii0);
????????????delay(600);???}
????????????
????????//綠色漸暗同時蘭色漸亮 ??
????????for(i=0;i<32;i++)
????????{
????????????BrushOut(20031-ii);
????????????delay(600);???}
????????????
????????//蘭色漸暗 ???
????????for(i=0;i<32;i++)
????????{
????????????BrushOut(200031-i);
????????????delay(600);???}
????????????
????????//白色漸亮 ??
????????for(i=0;i<32;i++)
????????{
????????????BrushOut(20iii);
????????????delay(600);???}
????????//七彩演示 ???
????????BrushOut(203100);delay(10000);
????????BrushOut(2031310);delay(10000);
????????BrushOut(200310);delay(10000);
????????BrushOut(2003131);delay(10000);????
BrushOut(200031);delay(10000);
BrushOut(2031031);delay(10000);
BrushOut(20313131);delay(10000);
for(i=0;i<80;i++)?Dbuf[i]=0;
ScanOut(80);
for(j=0;j<128;j++)
{
for(i=0;i<80;i+=2)
{ if(i>=64)
{ Dbuf[i]=0x80;
Dbuf[i+1]=0;
}
else
{???k=31-((i+j)?&?31);
Dbuf[i]=0x80+(k<<2);
Dbuf[i+1]=k;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.CA....??????3254??2007-11-03?17:58??DEMO1\demo.c
????.CA....??????7037??2007-11-03?17:58??DEMO1\demo.LST
????.CA....??????7545??2007-11-03?17:58??DEMO1\demo.OBJ
????.CA....??????6699??2007-11-03?17:58??DEMO1\DemoA
????.CA....??????1723??2007-11-03?17:58??DEMO1\DemoA.hex
????.CA....????????26??2007-11-03?17:58??DEMO1\DemoA.lnp
????.CA....?????11000??2007-11-03?17:58??DEMO1\DemoA.M51
?????文件???????1004??2008-05-16?16:42??DEMO1\DemoA.Opt
????.CA....???????155??2008-05-16?16:42??DEMO1\DemoA.plg
?????文件???????2093??2008-05-16?16:42??DEMO1\DemoA.Uv2
????.CA....??????4138??2007-08-13?07:13??DEMO1\STC12C2052.H
?????目錄??????????0??2008-05-16?16:42??DEMO1
????.C.....???????997??2007-11-04?08:53??DEMO1\DemoA_Opt.Bak
????.C.....??????1689??2007-12-12?23:26??DEMO1\DemoA_Uv2.Bak
-----------?---------??----------?-----??----
????????????????47360????????????????????14
- 上一篇:STM32F4 的DMA程序
- 下一篇:SC0073脈搏傳感器應用
評論
共有 條評論