日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

16位LED恒流源芯片TC5020A,32*128点阵屏驱动函数

發(fā)布時間:2023/12/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16位LED恒流源芯片TC5020A,32*128点阵屏驱动函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/*
參考資料鏈接
1.我寫的JXI5020LED 驅(qū)動芯片,負(fù)責(zé)位選,段選由主控IO直接給。 單個跑是沒問題,但是在while(1)循環(huán)跑就會一閃一閃的,現(xiàn)在…-OpenEdv-開源電子網(wǎng)
http://www.openedv.com/forum.php?mod=viewthread&tid=84828&page=1
2.Microsoft Word - JXI5020 Preliminary Datasheet V2.01_簡中_傳簽版_20150423
https://atta.szlcsc.com/upload/public/pdf/source/20161009/1475994308654.pdf
3.LED顯示屏原理詳細(xì)解析(用到的芯片74HC138、74HC245、74HC595、4953、TB62726、JXI5020等芯片功能詳解)?- 百度文庫
https://wenku.baidu.com/view/ea751b755f0e7cd1842536c3.html
4.STM32和51單片機控制標(biāo)準(zhǔn)08接口 LED單元板 點陣單元板源碼樣例等資料-OpenEdv-開源電子網(wǎng)
http://www.openedv.com/forum.php?mod=viewthread&tid=76581&tdsourcetag=s_pctim_aiomsg
5.【新提醒】我寫的JXI5020LED 驅(qū)動芯片,負(fù)責(zé)位選,段選由主控IO直接給。 單個跑是沒問題,但是在while(1)循環(huán)跑就會一閃一閃的,現(xiàn)在…-OpenEdv-開源電子網(wǎng)
http://www.openedv.com/forum.php?mod=viewthread&tid=84828&page=1

效果圖
TC_typedef TcInfo;//TC5020結(jié)構(gòu)體信息
volatile uint8_t LedScanTime; //定義掃描時間計數(shù)器

u16 DisplayFrontBuf[LedH][LedW/Dbyte]; //定義前臺顯示緩存
//u16 DisplayBackBuf[LedH][LedW/Dbyte]; //定義后臺顯示緩存
uint8_t BackFlag; //定義前后臺標(biāo)志
volatile uint8_t ScanFlag; //定義掃描完成標(biāo)志。注:只有當(dāng)ScanFlag = 1時,才能切換顯示內(nèi)容。
uint8_t ScanRow; //定義行掃描計數(shù)器

void TC5020Init(void)//初始化
{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB,PE端口時鐘

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //LED0–>PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根據(jù)設(shè)定參數(shù)初始化GPIOB.5
// GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); //PB.5 輸出高

TcInfo.Width = LedW; //定義顯示長度為:128像素
TcInfo.Height = LedH; //定義顯示高度為:32像素
TcInfo.ScanMode = 16; //定義掃描方式為:1/16掃描
TcInfo.FirstRow = 0; //定義掃描起始行為:0行
TcInfo.ENMode = 0; //定義使能信號有效電平為:低有效
TcInfo.BlankTime = 50;
TcInfo.OnOff =ON;// OFF; // //默認(rèn)不顯示(關(guān)閉顯示)

LedScanTime = 0;
ScanFlag = 0;
BackFlag = 1;
ScanRow = TcInfo.FirstRow; //行掃描計數(shù)器初始化為掃描起始行
memset(DisplayFrontBuf,0x0000,LedHLedW/Dbyte2); //初始化顯示緩存
}

/* 選擇顯示行

當(dāng)管腳LD、LC、LB、LA的輸出分別為0000時,LED顯示屏的第一行被選中;
  當(dāng)管腳LD、LC、LB、LA的輸出分別為0001時,LED顯示屏的第二行被選中;
  當(dāng)管腳LD、LC、LB、LA的輸出分別為0010時,LED顯示屏的第三行被選中;
  …
  當(dāng)管腳LD、LC、LB、LA的輸出分別為1111時,LED顯示屏的第十六行被選中。
*/
void TcSelRow(u8 Nd)
{ u8 N=Nd;
N=N%16;//對 16 求余數(shù) 大于16的就是下半部分的16行了
LA=(N&0x01)>0?1:0;
LB=(N&0x02)>0?1:0;
LC=(N&0x04)>0?1:0;
LD=(N&0x08)>0?1:0;
}

/**************************************************************************************************
**程序名稱:void TcOutByte(u16 dat)
**輸入?yún)?shù):u16 dat LED串行數(shù)據(jù)
**輸出參數(shù):無
**返 回 值:無
**描 述:LED顯示板列顯示程序。向TC5020送一個16位數(shù)
**************************************************************************************************/

void TcOutByte(u16 dat )
{
u8 i=0 ;
for(i=0;i<16;i++)
{ LSCL=0;
if(dat&0x8000)
{
if(ScanRow<16)LR1=1;//上半部分
else LR2=1; //下半部分
}
else
{
if(ScanRow<16)LR1=0;//上半部分 上16行
else LR2=0; //下半部分 下16行
}
dat=dat<<1;
LSCL=1;
}
delay_us(20);
}
void TcOutByte1(u16 dat1,u16 dat2 )
{
u8 i=0 ;
for(i=0;i<16;i++)
{ LSCL=0;

if(dat1&0x0001)LR1=1;//上半部分else LR1=0;//上半部分 上16行 if(dat2&0x0001) LR2=1; //下半部分 else LR2=0; //下半部分 下16行dat1=dat1>>1;dat2=dat2>>1;LSCL=1; }

}
/**************************************************************************************************
**程序名稱:void TcDisCol(u16 *data,u16 *data1,u16 lenght)
**輸入?yún)?shù): u16 *data 顯示數(shù)據(jù)指針 上半部分
u16 data1 下半部分
** u16 lenght 數(shù)據(jù)長度 每行所有列的字節(jié)數(shù)
**輸出參數(shù):無
**返 回 值:無
**描 述:LED顯示板列顯示程序。 一個1616
**************************************************************************************************/
void TcDisCol(u16 *data,u16 *data1,u16 lenght)
{

while(lenght--) { TcOutByte1(*data,*data1);data++;data1++; }

}
//定時器刷新顯示的數(shù)據(jù) 定時刷新間隔200us
void TcDisplay(void)
{
/* 輸出列數(shù)據(jù)*/
TcDisCol(DisplayFrontBuf[ScanRow],DisplayFrontBuf[ScanRow+16],TcInfo.Width/Dbyte);//輸出一行數(shù)據(jù)
LEN=1; //關(guān)顯示
LSTB=1; //鎖存數(shù)據(jù)
LSTB=0;
TcSelRow(ScanRow);//選擇行 ScanRow
LEN=0;
ScanRow++;
if(ScanRow>15)ScanRow=0;
}

void LedClose(void)
{
/關(guān)顯示/
if(!TcInfo.ENMode)
{
LEN=1; //關(guān)顯示
}
else
{
LEN=0;
}
TcInfo.OnOff = OFF;
}

void LedOpen(void)
{
/開顯示(消隱)/
if(!TcInfo.ENMode)
{
LEN=0; //開顯示
}
else
{
LEN=1;
}
TcInfo.OnOff = ON;
}
//畫一個點
void Drawpoint(u16 x,u16 y,u8 dat)
{
if((x<TcInfo.Width)&&(y<TcInfo.Height))//在顯示范圍內(nèi)
{
DisplayFrontBuf[y][x/Dbyte]&=~(1<<(x%Dbyte));// 先清零
DisplayFrontBuf[y][x/Dbyte]|=dat<<(x%Dbyte);// 再賦值

}
}
//畫任意線
//x0,y0:起點 x1,y1:終點
//color:顏色
void gui_draw_line(u16 x0,u16 y0,u16 x1,u16 y1,u16 color)
{
u16 t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;

delta_x=x1-x0; //計算坐標(biāo)增量 delta_y=y1-y0; uRow=x0; uCol=y0; if(delta_x>0)incx=1; //設(shè)置單步方向 else if(delta_x==0)incx=0;//垂直線 else {incx=-1;delta_x=-delta_x;} if(delta_y>0)incy=1; else if(delta_y==0)incy=0;//水平線 else{incy=-1;delta_y=-delta_y;} if( delta_x>delta_y)distance=delta_x; //選取基本增量坐標(biāo)軸 else distance=delta_y; for(t=0;t<=distance+1;t++ )//畫線輸出 { Drawpoint(uRow,uCol,color);//畫點 xerr+=delta_x ; yerr+=delta_y ; if(xerr>distance) { xerr-=distance; uRow+=incx; } if(yerr>distance) { yerr-=distance; uCol+=incy; } }

}
//向緩存區(qū)寫入一個字節(jié)
//x,y:起始坐標(biāo)
//num:要顯示的字符:" “—>”~"
//size:字體大小 12/16/24
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size)
{
u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2); //得到字體一個字符對應(yīng)點陣集所占的字節(jié)數(shù)
num=num-’ ‘;//得到偏移后的值(ASCII字庫是從空格開始取模,所以-’ '就是對應(yīng)字符的字庫)
for(t=0;t<csize;t++)
{
if(size12)temp=asc2_1206[num][t]; //調(diào)用1206字體
else if(size16)temp=asc2_1608[num][t]; //調(diào)用1608字體
else if(size==24)temp=asc2_2412[num][t]; //調(diào)用2412字體
else return; //沒有的字庫
for(t1=0;t1<8;t1++)
{
if(temp&0x80)Drawpoint(x,y,1);
else Drawpoint(x,y,0);
temp<<=1;
y++;

if((y-y0)==size){y=y0;x++;if(x>=TcInfo.Width)return; //超區(qū)域了break;}} }

}
//m^n函數(shù)
//返回值:m^n次方.
u32 LCD_Pow(u8 m,u8 n)
{
u32 result=1;
while(n–)result*=m;
return result;
}
//顯示數(shù)字,高位為0,則不顯示
//x,y :起點坐標(biāo)
//len :數(shù)字的位數(shù)
//size:字體大小
//color:顏色
//num:數(shù)值(0~4294967295);
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
{
u8 t,temp;
u8 enshow=0;
for(t=0;t<len;t++)
{
temp=(num/LCD_Pow(10,len-t-1))%10;
if(enshow0&&t<(len-1))
{
if(temp0)
{
LCD_ShowChar(x+(size/2)*t,y,’ ',size);
continue;
}else enshow=1;

}LCD_ShowChar(x+(size/2)*t,y,temp+'0',size); }

}
//顯示數(shù)字,高位為0,還是顯示
//x,y:起點坐標(biāo)
//num:數(shù)值(0~999999999);
//len:長度(即要顯示的位數(shù))
//size:字體大小
//mode:
//[7]:0,不填充;1,填充0.
//[6:1]:保留
//[0]:0,非疊加顯示;1,疊加顯示.
void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode)
{
u8 t,temp;
u8 enshow=0;
for(t=0;t<len;t++)
{
temp=(num/LCD_Pow(10,len-t-1))%10;
if(enshow0&&t<(len-1))
{
if(temp0)
{
if(mode&0X80)LCD_ShowChar(x+(size/2)*t,y,‘0’,size);
else LCD_ShowChar(x+(size/2)*t,y,’ ',size);
continue;
}else enshow=1;

}LCD_ShowChar(x+(size/2)*t,y,temp+'0',size); }

}
//顯示字符串
//x,y:起點坐標(biāo)
//width,height:區(qū)域大小
//size:字體大小
//*p:字符串起始地址
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
{
u8 x0=x;
width+=x;
height+=y;
while((*p<=’~’)&&(*p>=’ '))//判斷是不是非法字符!
{
if(x>=width){x=x0;y+=size;}
if(y>=height)break;//退出
LCD_ShowChar(x,y,*p,size);
x+=size/2;
p++;
}
}

總結(jié)

以上是生活随笔為你收集整理的16位LED恒流源芯片TC5020A,32*128点阵屏驱动函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美亚洲第一区 | 国产a视频 | 国产一区二区精品丝袜 | 午夜精品一区二区三区三上悠亚 | 亚洲精选一区二区 | 国产伦精品一区二区三区照片 | 自拍偷拍视频在线 | 女人高潮特级毛片 | 中国国产毛片 | 中文字幕在线二区 | 欧美日韩综合 | 亚洲图片中文字幕 | 亚洲两性视频 | 欧美巨鞭大战丰满少妇 | 黄色天堂av | 国产高清无密码一区二区三区 | 全部免费毛片在线播放一个 | 国产视频一区二区三区四区五区 | 欧美日韩精品一区 | 懂色av中文字幕 | 色撸撸在线视频 | 欧美激情一二三 | 538在线精品| www.青青草.com | aaa亚洲精品 | 91桃色污 | 深夜福利91 | 99热这里有精品 | 国产欧美综合在线 | 日本大尺度吃奶做爰久久久绯色 | 电影《两个尼姑》免费播放 | аⅴ资源天堂资源库在线 | 久草超碰在线 | 久久久久久影院 | 日本嫩草影院 | 天堂在线视频网站 | 成年人毛片 | 精品一区二区亚洲 | 高h乱l高辣h文短篇h | 在线视频国产一区 | 一本毛片 | 国产第一页第二页 | 人与动物av | 污网站在线看 | 国产精品久久久久永久免费看 | 久久综合干 | 欧美毛片在线 | 欧美日韩在线二区 | 天天操婷婷 | 一卡二卡国产 | 日本免费黄网站 | 天天射网| 久久久久久久亚洲 | 中文字幕无码乱码人妻日韩精品 | 日韩一区二区在线视频 | 欧美性受xxx黑人xyx性爽 | 香蕉啪啪网 | 日韩视频免费在线观看 | aaa欧美| 全部免费毛片在线播放 | 精品久久久久久国产 | 精品久久久久久中文字幕 | 久久精品美女视频 | 女人扒开腿让男人捅爽 | 欧美伦理片 | 免费黄色视屏 | 不卡中文字幕av | 亚洲大片在线观看 | 亚洲第九十九页 | 中文字幕91在线 | 青青操在线观看 | 亚洲三级影视 | 精品午夜福利视频 | 久久天天躁狠狠躁夜夜躁2014 | 麻豆影视在线播放 | 国产精品99精品久久免费 | 久久国产精品一区二区三区 | 17c精品麻豆一区二区免费 | av少妇在线 | av的天堂| 国产精品亚洲欧美 | 激情91视频 | 美女又黄又免费 | 麻豆国产精品一区 | 调教小屁屁白丝丨vk | 久草视频国产 | 天堂在线观看中文字幕 | 美女一区 | 综合成人在线 | 日韩欧美激情在线 | 日本美女黄网站 | 亚洲三页 | 日韩二三区 | 中文字幕一区二区三区四区 | 日韩精品1区2区 | 欧美黄色aaa| 蜜臀av性久久久久蜜臀aⅴ四虎 | 中文字幕高清在线 | 青青草国产在线播放 |