資源簡介
16x16 LED點陣 驅動 74hc164 74hc595 動態顯示 親測能用 放心下載

代碼片段和文件信息
/*16*16點陣屏的顯示*/
#include?
#include?
#define?DATAOUT?P2 //指定P2口做為輸出
sbit?DATA=DATAOUT^0; //行數據輸出位
sbit?SCLH=DATAOUT^1; //行掃描時鐘位
sbit?SCLT=DATAOUT^2; //行數據鎖存位
sbit?AB=DATAOUT^3; //列數據輸出位
sbit?SCK=DATAOUT^4; //列掃描時鐘位
unsigned?char?lhj[32];//32字節RAM做為16*16點陣屏顯示緩存
void?display();//做為點陣掃描函數,將顯示緩存的數據輸出到點陣屏
void?displayS(unsigned?int?timer);//指定時間掃描顯示
void?displaymove(unsigned?char?*lpunsigned?char?cunsigned?char?timer);//顯示漢字內容的移動效果,LP指向要顯示第一個字的首地址,C表示顯示字的個數,
//timer是移動的速度
void?displaymovetb(unsigned?char?dinunsigned?char?*lpunsigned?char?timer);
//上下移動內容,din:1為向下,0為向上,lp指向要移入的內容,timer為移動速度
void?delay(unsigned?int?a);//延時子函數
code?unsigned?char?jin[32]={//漢字“星“的點陣數據。漢字點陣數據,可用漢字庫點陣生成軟件獲得
0x000x000x1F0xF00x100x100x1F0xF00x100x100x1F0xF00x010x000x110x00
0x1F0xF80x210x000x410x000x1F0xF00x010x000x010x000x7F0xFC0x000x00
};
code?unsigned?char?chuang[32]={//軌
0x200x800x200x800x200x800xFC0x800x430xF00x500x900x900x900xFC0x90
0x100x900x100x900x1C0x900xF00x920x510x120x110x120x120x0E0x140x00
};
code?unsigned?char?dian[32]={//宇
0x020x000x010x000x7F0xFE0x400x020x800x040x3F0xF80x010x000x010x00
0x010x000xFF0xFE0x010x000x010x000x010x000x010x000x050x000x020x00
};
code?unsigned?char?zi[32]={//宙
0x020x000x010x000x7F0xFE0x400x020x810x040x010x000x3F0xF80x210x08
0x210x080x210x080x3F0xF80x210x080x210x080x210x080x3F0xF80x200x08
};
code?unsigned?char?LY[32]={//圖案數據
0x000x000x000x000x800x200xE00x300x700x380x3C0x3C0x1E0x3E0x0F0xBF
0x070xFF0x0F0xBF0x1E0x3E0x3C0x3C0x700x380xE00x300x800x200x000x00
};
/*************************************************************************
??函數名:main()
????功能:
入口變量:
出口變量:
*************************************************************************/
void?main(void)??//主入口函數
{
unsigned?char?i=0j=0;
for(i=0;i<32;i++)
lhj[i]=LY[i];//將圖案數據復制到顯示緩存
while(1)
{
displayS(2); //顯示圖案約2秒
displaymovetb(0jin10); //將“精“字以10的速度移動
displaymovetb(0chuang10); //將“創“字以10的速度移動
displaymovetb(0dian10); //將“電“字以10的速度移動
displaymovetb(0zi10); //將“子“字以10的速度移動
displaymovetb(0010); //以10的速度向上清空
displayS(1); //等待1秒
displaymovetb(1LY10); //將“圖案“以10的速度向下移動
displaymove(jin47);//將從“精“開始的四個漢字從右向左移動
displayS(1); //等持約1秒
displaymovetb(1010); //將點陣上顯示的內容向下以10的速度移出,補上0,即清空顯示屏
displayS(1); //等待1秒
}
}
/*************************************************************************
??函數名:display()
????功能:顯示驅動芯片操作
入口變量:無
出口變量:無
*************************************************************************/
void?display()//顯示
{
unsigned?char?iiajtmp; //定義變量
DATAOUT=0XFF; //置位高電平做準備
AB=0; //將列數據位清0,準備移位
for(i=0;i<16;i++)
{ //循環輸出16行數據
SCK=0; //為列移位做準備
SCLT=0; //為行鎖存做準備
for(ia=2;ia>0;)
{ //每行16個點,循環位移
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-10-15?19:50??16_16點陣b\
?????文件???????11168??2012-10-25?19:40??16_16點陣b\LED8.OBJ
?????文件????????8840??2012-10-25?19:40??16_16點陣b\LED8.c
?????文件????????8907??2012-10-25?19:40??16_16點陣b\lhj
?????文件????????1658??2012-10-23?19:14??16_16點陣b\lhj.Uv2.bak
?????文件????????2896??2012-10-25?19:40??16_16點陣b\lhj.hex
?????文件??????????47??2012-10-25?19:40??16_16點陣b\lhj.lnp
?????文件????????1166??2012-10-23?19:14??16_16點陣b\lhj.opt.bak
?????文件????????1777??2012-10-25?19:40??16_16點陣b\lhj.plg
?????文件???????73654??2012-10-25?20:11??16_16點陣b\lhj.uvopt
?????文件???????13193??2012-10-25?18:44??16_16點陣b\lhj.uvproj
?????文件????????1287??2009-05-28?18:57??16_16點陣b\lhj_Opt.Bak
?????文件????????1988??2009-05-28?18:57??16_16點陣b\lhj_Uv2.Bak
?????文件???????73647??2012-10-25?19:40??16_16點陣b\lhj_uvopt.bak
評論
共有 條評論