<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 玩轉LED點(diǎn)陣之三:16X64單紅點(diǎn)陣上移

玩轉LED點(diǎn)陣之三:16X64單紅點(diǎn)陣上移

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò ) 收藏
//單片機:STC12C5A60S2
//晶振:22.1184M
//顯示屏:HUB08接口16X64單紅點(diǎn)陣
//顯示方式:左移和上移
//作者:振甬電子
//QQ: 1766135164
//網(wǎng)址:www.51hei.com
//時(shí)間:2013-05-13
#include
#include"zimo.h"
#define uchar unsigned char
#define uint unsigned int
#define SPEED 5 //定義速度與數字成反比 數字小,速度快
#define SPEED2 80
#define LIGHT 10 //定義亮度:取值范圍0--10
#define hang 3 //需要顯示的行數+1空白行
#define NUMBER 11 //定義要移動(dòng)顯示總16X16漢字個(gè)數,計算方法:NUMBER=漢字顯示個(gè)數+4個(gè)空格
#define NUMBER2 4
uchar word=0,col=0,col1=0,disrow=0,move=0;//wor為要顯字變量,col為位移變量,col1為字節偏移量,disrow為行變量
uchar BUFF__UP[17]; //顯示緩沖 上下緩沖字節數取值=[2*板點(diǎn)陣寬度/8]+1比較保險,即兩倍板的點(diǎn)陣字節數.
uchar BUFF__UP0[12]; //顯示緩沖
sbit R1=P0^4;//紅色數據1
sbit R2=P3^3;//紅色數據2
sbit G1=P3^4;//綠色數據1
sbit G2=P3^5;//綠色數據
sbit CLK=P0^7;//595時(shí)鐘
sbit STB=P0^6;//595鎖存
sbit OE =P0^5;//74HC138使能:低有效
//根據列指針由雙字節合并為單字節的子程序模塊
uchar Combine_2byte(uchar h1,uchar h2) // 和點(diǎn)陣的取模方式有關(guān),低位在前,高位在后,但是實(shí)際顯示,高位在前,低位在后
{
uchar T_date,tempcol;
tempcol=col1;
T_date=(h1>>tempcol)|(h2<<(8-tempcol));
return T_date;
}
//分別裝屏點(diǎn)陣數據
void Load_one_line(void) //多加4個(gè)16X16漢字的緩沖
{
BUFF__UP[0]=Table[word][disrow*2+0];//裝載上半屏一線(xiàn)點(diǎn)陣數據
BUFF__UP[1]=Table[word][disrow*2+1];
BUFF__UP[2]=Table[word+1][disrow*2+0];
BUFF__UP[3]=Table[word+1][disrow*2+1];
BUFF__UP[4]=Table[word+2][disrow*2+0];
BUFF__UP[5]=Table[word+2][disrow*2+1];
BUFF__UP[6]=Table[word+3][disrow*2+0];
BUFF__UP[7]=Table[word+3][disrow*2+1];
BUFF__UP[8]=Table[word+4][disrow*2+0];
BUFF__UP[9]=Table[word+4][disrow*2+1];
BUFF__UP[10]=Table[word+5][disrow*2+0];
BUFF__UP[11]=Table[word+5][disrow*2+1];
BUFF__UP[12]=Table[word+6][disrow*2+0];
BUFF__UP[13]=Table[word+6][disrow*2+1];
BUFF__UP[14]=Table[word+7][disrow*2+0];
BUFF__UP[15]=Table[word+7][disrow*2+1];
}
//發(fā)送屏一線(xiàn)點(diǎn)陣數據
void Send_one_line(void)
{
char s;
uchar temp,i,inc;
if(col<8) inc=0;
if(8<=col&&col<16) inc=1;
for(s=0+inc;s<=8+inc;s++)
{
temp=Combine_2byte(BUFF__UP[s],BUFF__UP[s+1]);
for(i=0;i<8;i++)
{
R1=~(temp>>i)&0x01; //取出低高位
R2=0xff; //不顯示
G1=0xff;
G2=0xff;
CLK=0;
CLK=1; //移位時(shí)鐘
}
}
}
//左移函數
void LEFT_MOVE()
{
uchar i;
for(col=0;col<16;col++)//循環(huán)16次,點(diǎn)亮并移動(dòng)一個(gè)漢字,步進(jìn)是一位
{
col1=col%8;//一個(gè)字節移動(dòng)位數
for(i=0;i{
for(disrow=0;disrow<16;disrow++)//掃描16行
{
Load_one_line();//裝載一行點(diǎn)陣數據
Send_one_line();//發(fā)送一行點(diǎn)陣數據
OE=1;
STB=1; // 輸出鎖存
STB=0;
P0=disrow; // 行掃描
OE=0;
}
}
}
word=word+1;// 一個(gè)漢字移動(dòng)后,指向下一個(gè)漢字
if(word>=NUMBER)
{
word=0;//移動(dòng)完NUMBER個(gè)漢字后重新開(kāi)始
}
}
//分別裝載上、下半屏點(diǎn)陣數據
void Load_one_line_up()
{
BUFF__UP0[0]=Table2[0*hang][disrow*2+0+move*2];//裝載上半屏一線(xiàn)點(diǎn)陣數據
BUFF__UP0[1]=Table2[0*hang][disrow*2+1+move*2];
BUFF__UP0[2]=Table2[1*hang][disrow*2+0+move*2];
BUFF__UP0[3]=Table2[1*hang][disrow*2+1+move*2];
BUFF__UP0[4]=Table2[2*hang][disrow*2+0+move*2];
BUFF__UP0[5]=Table2[2*hang][disrow*2+1+move*2];
BUFF__UP0[6]=Table2[3*hang][disrow*2+0+move*2];
BUFF__UP0[7]=Table2[3*hang][disrow*2+1+move*2];
}

//74HC595串行數據輸入
void Send_one_line_up()
{
uchar i,j;
uchar DataR1,DataR2,DataG1,DataG2;
for(j=0;j<8;j++)
{
DataR1=~BUFF__UP0[j];
DataG1=0xff;
DataR2=0xff;
DataG2=0xff;
for(i=0;i<8;i++)
{
R1=DataR1 & 0x01;
G1=DataG1 & 0x01;
R2=DataR2 & 0x01;
G2=DataG2 & 0x01;
CLK = 0;
CLK = 1;
DataR1 >>= 1;
DataG1 >>= 1;
DataR2 >>= 1;
DataG2 >>= 1;
}
}
}
//上移函數
上一頁(yè) 1 2 3 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>