久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7795|回復(fù): 4
收起左側(cè)

用Excel制作顯示圖片的C語言數(shù)組

[復(fù)制鏈接]
ID:100029 發(fā)表于 2015-12-22 19:24 | 顯示全部樓層 |閱讀模式
用16 x16的LED點陣顯示漢字或圖片時,有時需要用到特定的軟件來處理。但是對于簡單的圖像,可以使用手繪方式繪圖,然后根據(jù)需求,將圖像轉(zhuǎn)換為C語言的數(shù)組,粘貼在C程序中使用。此時用Excel可以快速實現(xiàn)。以下是實現(xiàn)的效果。


以16*16點陣的漢字為例,基本制作過程如下:
1.  在Excel中,框出一個16*16的區(qū)域,如上圖所示,標(biāo)示行號和列號。在繪圖區(qū),設(shè)置條件格式:如果單元格的數(shù)值等于1,則顯示為粉色底色的數(shù)字。這樣,當(dāng)填入數(shù)字1時,就能夠突出看到填入的效果。
2.  在標(biāo)示出的區(qū)域內(nèi),用描點的方式繪制所需圖形。需要顯示數(shù)據(jù)的地方填入1,其余地方保持空白。
3. 因為我所使用的點陣是16行 x 16列的,是以逐列的方式進行掃描的。因此取數(shù)據(jù)時,從每一列的第16行起,逐步取數(shù)。但因為使用的是串行發(fā)送方式,因此需要將每一列分為2個字節(jié),先是下半部分為一個字節(jié),然后再上半部分為另一個字節(jié)。同樣,作為串行顯示方式,最先進入顯示陣列的數(shù)據(jù)是圖像的最右邊一列(Q列)的右下角的半列(Q17:Q10),然后是右上角的半列(Q9:Q2),然后是向左邊面逐列顯示(Q->P->O.....-->C-->B這樣的順序)。以這樣的順序送數(shù)據(jù)到對應(yīng)列的數(shù)據(jù)寄存器,就可以正確顯示所要的圖像。

下面是十六進制數(shù)據(jù)的形成過程:
1. 每列中,上半列的字節(jié)計算公式為:=DEC2HEX(B9*128+B8*64+B7*32+B6*16+B5*8+B4*4+B3*2+B2)。其中DEC2HEX是將十進制數(shù)轉(zhuǎn)換為16進制方式的字符串格式的函數(shù)。里面B9*128+B8*64+B7*32+B6*16+B5*8+B4*4+B3*2+B2則是將圖像數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù),最底下一行對應(yīng)的數(shù)值是128(2的7次方),然后依次對應(yīng)64,32,。。。,1等。把這個計算的結(jié)果,顯示在每一列圖像的下方。這個可以在把第一列的公式填寫完成后,通過拖動的方式將全部16列填滿即可。
對應(yīng)于下半列,相應(yīng)公式為=DEC2HEX(B16*128+B15*64+B14*32+B13*16+B12*8+B11*4+B10*2+B9)。
2. 將16進制字符串顯示格式標(biāo)準(zhǔn)化。因為結(jié)果要用在C語言中,因此需要將默認的格式轉(zhuǎn)換為C語言的默認格式 0xNN的形式。如果不要求美觀,可以直接在上面顯示的結(jié)果前面加 “0x”即可。為了美觀,則需要判斷上面的結(jié)果是1位長度還是2位長度。對于1位長度,則在其前面增加“0x0”,否則只增加"0x"即可。對應(yīng)于每個單元格,其公式為:=IF(LEN(B18)=1,"0x0"&B18,"0x"&B18)。其中IF為條件語句,條件為LEN(B18) = 1, 如果條件成立,則增加"0x0" (0x0 & B18),否則只是增加"0x" (0x & B18)。
對于其他行列,拖動即可獲取所有字節(jié)的C語言標(biāo)準(zhǔn)化16進制字符串。
3. 將整個數(shù)據(jù)合成為一個C語言語句,可以通過復(fù)制粘貼的形式,粘貼到C語言源程序中。 根據(jù)前面一部分第3點說明的字節(jié)順序,可以逆序的方式,將上面的32個字節(jié)合并成一個C語言數(shù)組定義語句。不過這里面沒有復(fù)雜的技巧,只是很繁瑣的重復(fù)工作。做法如下:
        ="unsigned char code HANZI[] = {" &CHAR(10) & CHAR(13) &            
            Q21&","&Q20&","&P21&","&P20&","&O21&","&O20&","&N21&","&N20&","&CHAR(10)&CHAR(13)
            &M21&","&M20&","&L21&","&L20&","&K21&","&K20&","&J21&","&J20&","&CHAR(10)&CHAR(13)   
            &I21&","&I20&","&H21&","&H20&","&G21&","&G20&","&F21&","&F20&","&CHAR(10)&CHAR(13)
            &E21&","&E20&","&D21&","&D20&","&C21&","&C20&","&B21&","&B20&"," & CHAR(10) & CHAR(13)
         & "};"
以上的漢字點陣在Proteus中仿真電路如下。其中MCU為AT89C52, 串口芯片為74HC595,行列各2片串聯(lián)。左邊兩片提供列掃描地址,后面兩片提供行顯示數(shù)據(jù)。顯示點陣為4個8*8點陣(Proteus中光電元件MATRIX-8X8-RED將所有管腳移動到同一側(cè)后形成的新元件,便于組成并列點陣)組成的一個16*16點陣(上面2個正放,下面2個X軸對稱倒放)。因此在顯示字節(jié)計算時,公式略有不同。具體公式為:=DEC2HEX(B11*128+B12*64+B13*32+B14*16+B15*8+B16*4+B17*2+B18)。其余和上面相同。
具體運行效果如下:


回復(fù)

使用道具 舉報

ID:108508 發(fā)表于 2016-3-14 20:53 | 顯示全部樓層
做出來了,很不錯,謝謝!
回復(fù)

使用道具 舉報

ID:71883 發(fā)表于 2019-8-30 16:56 | 顯示全部樓層
這個想法好 可以一試
回復(fù)

使用道具 舉報

ID:491577 發(fā)表于 2019-9-30 10:11 | 顯示全部樓層
我希望是反過來的,輸入數(shù)組數(shù)據(jù),用Excel顯示成文字或圖片。
回復(fù)

使用道具 舉報

ID:137736 發(fā)表于 2020-2-5 15:22 來自觸屏版 | 顯示全部樓層
特別適合行列不等的點陣,比如8X16
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕视频在线观看 | 毛片在线看片 | 亚洲视频一区在线观看 | 成人性视频免费网站 | 国产成人免费 | 精品一区在线看 | 久久久国产精品 | 视频羞羞| 一区二区三区四区国产精品 | 精品久久久久久久 | www国产成人免费观看视频 | 日本一区二区三区精品视频 | 日本粉嫩一区二区三区视频 | 毛片国产 | 亚洲欧美日韩精品久久亚洲区 | 在线日韩av电影 | 国产亚洲二区 | 欧美黄色大片在线观看 | 国产精品欧美精品日韩精品 | 在线观看的av | 日本小视频网站 | 精品一区二区三区91 | 久久久国产一区 | 一区影院 | 毛片免费视频 | 久久综合九九 | www.日本三级 | 久久99精品久久久 | 一级做受毛片免费大片 | 丁香综合| 啪啪毛片 | 在线观看av中文字幕 | 欧美专区日韩专区 | 久久综合欧美 | 一级片网站视频 | 成人免费视屏 | 九九九久久国产免费 | 九热在线 | 亚洲一本 | 精品久久av | 两性午夜视频 |