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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言16x32点阵显示汉字,点阵16*32滚屏显示汉字

發布時間:2025/3/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言16x32点阵显示汉字,点阵16*32滚屏显示汉字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

// matrix2pcs20140821.ino

const int SH_CP = 8;

const int DS = 9;

const int ST_CP = 10;

//聲明4個數組臨時變量

byte part_A[8], part_B[8],part_C[8],part_D[8],

part_A_A[8],part_B_B[8],part_C_C[8],part_D_D[8],

part_E[8],part_F[8],part_G[8],part_H[8];

//字符列數據,規則是二維數組的第1維代表上下兩個矩陣,第二維中第0數組和第1數組分別是左邊的8*8點陣和右邊的8*8點陣

byte Col[][2][16]={

{

{0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFC,0x03,0xFD,0xFF,0xFD,0xFF,0xC0,0x0F,0xDF,0xEF},

{0xDF,0xEF,0xDF,0xEF,0xC0,0x0F,0xFF,0xFF,0xDB,0x77,0xDD,0xBB,0xBD,0xBB,0x7F,0xFB},/*"點",0*/

}

,

{

{0xFF,0xBF,0x83,0xBF,0xBB,0xBF,0xB4,0x01,0xB7,0x7F,0xAF,0x5F,0xB6,0xDF,0xB6,0x03},

{0xBB,0xDF,0xBB,0xDF,0xBB,0xDF,0x94,0x01,0xAF,0xDF,0xBF,0xDF,0xBF,0xDF,0xBF,0xDF},/*"陣",1*/

}

,

{

{0xFF,0x7F,0xDF,0xBF,0xE8,0x03,0xEE,0xEF,0x7D,0xB7,0xBB,0x7B,0xBE,0xDF,0xEC,0x0F},

{0xEF,0xEF,0xDF,0x77,0x1E,0xAF,0xDC,0xDF,0xDA,0xEF,0xD6,0xB7,0xDE,0x79,0xFE,0xFF},/*"滾",2*/

}

,

{

{0xFF,0xFF,0xC0,0x07,0xDF,0xF7,0xDF,0xF7,0xC0,0x07,0xDB,0xEF,0xDD,0xDF,0xD0,0x07},

{0xDD,0xDF,0xDD,0xDF,0xC0,0x03,0xDD,0xDF,0xBD,0xDF,0xBB,0xDF,0x7B,0xDF,0xF7,0xDF},/*"屏",3*/

}

,

{

{0xDF,0xBF,0xC1,0x81,0xB7,0x6F,0x7F,0xFF,0xC0,0x07,0xDF,0xF7,0xC0,0x07,0xDF,0xF7},

{0xC0,0x07,0xDF,0xF7,0xC0,0x07,0xF7,0xDF,0x00,0x01,0xF7,0xDF,0xEF,0xDF,0xDF,0xDF},/*"算",4*/

}

,

{

{0xFF,0xBF,0xDF,0xBF,0xEF,0xBF,0xEF,0xBF,0x78,0x03,0xBF,0xBF,0xBF,0xBF,0xEF,0xBF},

{0xE0,0x01,0xDF,0xBF,0x1F,0x7F,0xDE,0xFF,0xDD,0xEF,0xDB,0xF7,0xD0,0x03,0xFB,0xFB},/*"法",5*/

}

,

};

byte Row[] = {1,2,4,8,16,32,64,128};

void setup() {

pinMode(SH_CP, OUTPUT);

pinMode(DS,OUTPUT);

pinMode(ST_CP,OUTPUT);

}

//定義待顯示字符數量

byte ch_num=6;

//定義顯示速度變量

byte speed = 10;

void loop() {

//初始化點陣移動計數器

byte counter=0;

//col[][]二維數組中兩個數組,均為16個數據,循環16次,將數據分配各臨時變量,4個臨時變量對應4個8*8點陣,

//對應順序是part_A對應左上;part_B對應右上;part_C對應左下;

//A和C點陣都是數組中的計數數據;B和C都是數組中的偶數數據

for(int c=0; c

byte a=0;

byte b=0;

for(int i=0; i<16; i++){

//i%2==0證明是數組中的偶數數據,包括0%2==0,故col數組中0,2,4,6,8,10,12,14,16相應數據裝入part_A和part_C

if(i%2==0)

{

//如果讀取的字符數據時字符數據庫col中的倒數第二個數據時,

if(c==(ch_num-2)){

part_A[a]=Col[c][0][i];

part_C[a]=Col[c][1][i];

//第二個點陣數據為倒數第一個數據

part_A_A[a]=Col[c+1][0][i];

part_C_C[a]=Col[c+1][1][i];

//緩沖數據為字符庫數據中開頭數據

part_E[a]=Col[0][0][i];

part_G[a]=Col[0][1][i];

//將col[]數組中的數據逐一分配給臨時變量

a++;

}

//如果讀取的字符數據時字符數據庫col中的倒數第一個數據時,

else if(c==(ch_num-1)){

part_A[a]=Col[c][0][i];

part_C[a]=Col[c][1][i];

//循環到字符數據庫的開頭數據

part_A_A[a]=Col[0][0][i];

part_C_C[a]=Col[0][1][i];

part_E[a]=Col[1][0][i];

part_G[a]=Col[1][1][i];

//將col[]數組中的數據逐一分配給臨時變量

a++;

}

else

//這段是正常思路:逐個獲取字符數據

{

part_A[a]=Col[c][0][i];

part_C[a]=Col[c][1][i];

part_A_A[a]=Col[c+1][0][i];

part_C_C[a]=Col[c+1][1][i];

part_E[a]=Col[c+2][0][i];

part_G[a]=Col[c+2][1][i];

a++;

}

}

//與i%2==0相對應,如果i%2≠0,就執行下面else里面的內容

else

{

//如果讀取的字符數據時字符數據庫col中的倒數第二個字符數據時

if(c==(ch_num-2)){

part_B[b]=Col[c][0][i];

part_D[b]=Col[c][1][i];

//第二個點陣數據為字符數據庫中最后一個字符數據

part_B_B[b]=Col[c+1][0][i];

part_D_D[b]=Col[c+1][1][i];

//為了循環顯示,緩沖數據回到字符數據庫開頭數據

part_F[b]=Col[0][0][i];

part_H[b]=Col[0][1][i];

//將col[]數組中的數據逐一分配給臨時變量

b++;

}

//如果讀取的字符數據時變量c為字符數據庫col中的倒數第1個字符數據時

else if(c==(ch_num-1)){

part_B[b]=Col[c][0][i];

part_D[b]=Col[c][1][i];

part_B_B[b]=Col[0][0][i];

part_D_D[b]=Col[0][1][i];

part_F[b]=Col[1][0][i];

part_H[b]=Col[1][1][i];

b++;

}

//這個else里面的內容為正常思路,逐字符獲取數據

else {

part_B[b]=Col[c][0][i];

part_D[b]=Col[c][1][i];

part_B_B[b]=Col[c+1][0][i];

part_D_D[b]=Col[c+1][1][i];

part_F[b]=Col[c+2][0][i];

part_H[b]=Col[c+2][1][i];

b++;

}

}

}

//第一次dowhile循環將點陣B數據移動到點陣A的位置;點著A_A數據移動到點陣B的位置。

do{

for(int t=0; t

for(int i=0; i<8; i++){

digitalWrite(ST_CP, LOW);

shiftOut(DS, SH_CP, MSBFIRST, part_A[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_B[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_A_A[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_B_B[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, Row[i]);

shiftOut(DS, SH_CP, MSBFIRST, part_C[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_D[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_C_C[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_D_D[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, Row[i]);

digitalWrite(ST_CP, HIGH);

}

}

counter++;

}

//第二次dowhile循環將點陣A_A數據移動到點陣A的位置;將點陣B_B的數據移動到點陣B的位置;第二個完整的字進入顯示屏。

while (counter<8);

counter=0;

do{

for(int t=0; t

for(int i=0; i<8; i++){

digitalWrite(ST_CP, LOW);

shiftOut(DS, SH_CP, MSBFIRST, part_B[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_A_A[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_B_B[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_E[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, Row[i]);

shiftOut(DS, SH_CP, MSBFIRST, part_D[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_C_C[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_D_D[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, part_G[i]<>(8-counter));

shiftOut(DS, SH_CP, MSBFIRST, Row[i]);

digitalWrite(ST_CP, HIGH);

}

}

counter++;

}

while (counter<8);

counter=0;

}

}

總結

以上是生活随笔為你收集整理的c语言16x32点阵显示汉字,点阵16*32滚屏显示汉字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。