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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7711|回復: 4
打印 上一主題 下一主題
收起左側

用Excel制作顯示圖片的C語言數組

[復制鏈接]
跳轉到指定樓層
樓主
ID:100029 發表于 2015-12-22 19:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用16 x16的LED點陣顯示漢字或圖片時,有時需要用到特定的軟件來處理。但是對于簡單的圖像,可以使用手繪方式繪圖,然后根據需求,將圖像轉換為C語言的數組,粘貼在C程序中使用。此時用Excel可以快速實現。以下是實現的效果。


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

下面是十六進制數據的形成過程:
1. 每列中,上半列的字節計算公式為:=DEC2HEX(B9*128+B8*64+B7*32+B6*16+B5*8+B4*4+B3*2+B2)。其中DEC2HEX是將十進制數轉換為16進制方式的字符串格式的函數。里面B9*128+B8*64+B7*32+B6*16+B5*8+B4*4+B3*2+B2則是將圖像數據轉換為字節數,最底下一行對應的數值是128(2的7次方),然后依次對應64,32,。。。,1等。把這個計算的結果,顯示在每一列圖像的下方。這個可以在把第一列的公式填寫完成后,通過拖動的方式將全部16列填滿即可。
對應于下半列,相應公式為=DEC2HEX(B16*128+B15*64+B14*32+B13*16+B12*8+B11*4+B10*2+B9)。
2. 將16進制字符串顯示格式標準化。因為結果要用在C語言中,因此需要將默認的格式轉換為C語言的默認格式 0xNN的形式。如果不要求美觀,可以直接在上面顯示的結果前面加 “0x”即可。為了美觀,則需要判斷上面的結果是1位長度還是2位長度。對于1位長度,則在其前面增加“0x0”,否則只增加"0x"即可。對應于每個單元格,其公式為:=IF(LEN(B18)=1,"0x0"&B18,"0x"&B18)。其中IF為條件語句,條件為LEN(B18) = 1, 如果條件成立,則增加"0x0" (0x0 & B18),否則只是增加"0x" (0x & B18)。
對于其他行列,拖動即可獲取所有字節的C語言標準化16進制字符串。
3. 將整個數據合成為一個C語言語句,可以通過復制粘貼的形式,粘貼到C語言源程序中。 根據前面一部分第3點說明的字節順序,可以逆序的方式,將上面的32個字節合并成一個C語言數組定義語句。不過這里面沒有復雜的技巧,只是很繁瑣的重復工作。做法如下:
        ="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片串聯。左邊兩片提供列掃描地址,后面兩片提供行顯示數據。顯示點陣為4個8*8點陣(Proteus中光電元件MATRIX-8X8-RED將所有管腳移動到同一側后形成的新元件,便于組成并列點陣)組成的一個16*16點陣(上面2個正放,下面2個X軸對稱倒放)。因此在顯示字節計算時,公式略有不同。具體公式為:=DEC2HEX(B11*128+B12*64+B13*32+B14*16+B15*8+B16*4+B17*2+B18)。其余和上面相同。
具體運行效果如下:


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:108508 發表于 2016-3-14 20:53 | 只看該作者
做出來了,很不錯,謝謝!
回復

使用道具 舉報

板凳
ID:71883 發表于 2019-8-30 16:56 | 只看該作者
這個想法好 可以一試
回復

使用道具 舉報

地板
ID:491577 發表于 2019-9-30 10:11 | 只看該作者
我希望是反過來的,輸入數組數據,用Excel顯示成文字或圖片。
回復

使用道具 舉報

5#
ID:137736 發表于 2020-2-5 15:22 來自手機 | 只看該作者
特別適合行列不等的點陣,比如8X16
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久久久久久久 | 一区二区三区四区国产精品 | 亚洲精品在线国产 | 日韩一区二区三区视频在线观看 | xx视频在线| 欧美电影免费网站 | 欧美v日韩 | 中文字幕在线一区二区三区 | 国产精品国产精品 | 国产这里只有精品 | 欧美视频一区 | 久久最新精品 | 伊人春色在线 | 97视频免费| 日韩一区二区在线视频 | 国产欧美精品一区二区色综合朱莉 | 色综合美女 | 日本在线视频一区二区 | 日日干天天操 | 欧美午夜精品久久久久久浪潮 | 欧美一级在线免费 | 成年人视频免费在线观看 | 欧美日韩在线视频一区 | 国产精品18hdxxxⅹ在线 | 欧美一级二级视频 | 欧美在线a | 国产一区二区在线播放 | 欧美精品久久久久 | 美女福利网站 | 久久久国产精品视频 | 岛国在线免费观看 | 欧美2区| 久久大| 久草新在线 | 91人人在线| xnxx 日本免费| 久在线| 国产成人精品午夜视频免费 | 日本视频在线播放 | 精品91| 久久国产精品99久久久久久丝袜 |