1. 程式人生 > >微控制器控制點陣字元顯示及字模提取原理

微控制器控制點陣字元顯示及字模提取原理

    微控制器應用經常會用到液晶顯示或者LED點陣屏,是用點陣的方式顯示的,要顯示漢字或字元的時候會用到字模,字模就是字在點陣上顯示時對應的編碼。以字模的方式儲存圖形或者文字,每一個點都需要一個bit位來儲存,該位為0代表該畫素點不顯示,為1代表顯示。這樣,一個位元組就可以儲存8個畫素點的顯示情況。

    一般採用宋體小四號的字元來做顯示,這樣一個英文字元剛好佔8*16個畫素;而漢字需要兩倍,即16*16畫素來顯示一個漢字。這樣,儲存一個英文字元每行8個點需要1個位元組儲存,一共16行需要16個位元組,

 同理一個漢字需要32個


所以如果M這個英文字元按從左到右從上到下的方式從高位到低位取模

C程式碼  收藏程式碼
  1. 0 0 0 0 0 0 0 0   
  2. 0 0 0 0 0 0 0 0   
  3. 0 0 0 0 0 0 0 0   
  4. 1 1 1 0 1 1 1 0   
  5. 0 1 1 0 1 1 0 0   
  6. 0 1 1 0 1 1 0 0   
  7. 0 1 1 0 1 1 0 0   
  8. 0 1 1 0 1 1 0 0   
  9. 0 1 0 1 0 1 0 0   
  10. 0 1 0 1 0 1 0 0   
  11. 0 1 0 1 0 1 0 0   
  12. 0 1 0 1 0 1 0 0   
  13. 0 1 0 1 0 1 0 0   
  14. 1 1 0 1 0 1 1 0   
  15. 0 0 0 0 0 0 0 0   
  16. 0 0 0 0 0 0 0 0   

 其中為1的地方畫出了M的形狀;如果把0換成空格,由1拼成的M就顯示出來了:             

C程式碼  收藏程式碼
  1. 1 1 1   1 1 1     
  2.   1 1   1 1       
  3.   1 1   1 1       
  4.   1 1   1 1       
  5.   1 1   1 1       
  6.   1   1   1       
  7.   1   1   1       
  8.   1   1   1       
  9.   1   1   1       
  10.   1   1   1       
  11. 1 1   1   1 1     

 因此,我們要記錄16行中每一行由0和1組成的一位元組整數的值,就記錄了這張點陣圖;   
如第1,2,3行是00000000,它的值為0,第四行是11101110,用十六進位制表示就是0xee;

以此類推,得到16個單位元組整數:0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00

這些陣列可以通過軟體計算出來,我們只需要在微控制器中通過程式碼讀取這些資料就可以顯示出來了,


解析過程與編碼這些資料是剛好相反的。

C程式碼  收藏程式碼
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. unsigned char am[] = {0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00}; //M  
  4. void showM(){  
  5.     int i,j;  
  6.     unsigned char t;  
  7.     for (i = 0; i < 16; ++i) {   //對於每一行  
  8.         t = am[i];              //取出代表這一行點的資料  
  9.         for (j = 0; j < 8; ++j) {    //對於這行中的每個點  
  10.             if (0x80 & t) {     //從左到右如果最左位1,則顯示  
  11.                 printf("MM");  
  12.             }else{  
  13.                 printf("  ");  
  14.             }  
  15.             t <<= 1;          //將右邊的資料往左移動  
  16.         }  
  17.         printf("\n");  
  18.     }  
  19. }  
  20. int main(void) {  
  21.     showM();  
  22.     return EXIT_SUCCESS;  
  23. }  

 

 

 然而,對於中文字元,每個漢字每行有16個畫素,需要2個位元組,所以每行需要對兩個位元組資料進行列印,所以要增加一個for迴圈:

相關推薦

微控制器控制點陣字元顯示字模提取原理

    微控制器應用經常會用到液晶顯示或者LED點陣屏,是用點陣的方式顯示的,要顯示漢字或字元的時候會用到字模,字模就是字在點陣上顯示時對應的編碼。以字模的方式儲存圖形或者文字,每一個點都需要一個bit位來儲存,該位為0代表該畫素點不顯示,為1代表顯示。這樣,一個位元組就可以儲存8個畫素點的顯示情況。

Richedit控制元件字元格式字型顏色的實現

1、Richedit中控制字元的格式:        通過呼叫CFont類來實現,在.h檔案中新增CFont  m_font;再在.cpp檔案中新增如下程式碼:     m_font.CreateFont(12,0,0,0,FW_DONTCARE,FALSE,FALSE,0

個人筆記 js 02 控制div的顯示隱藏(js控制iframe的顯示隱藏)

document.getElementById('divf').style.display=i.style.display=='none'?'block':'none'; //divf為控制顯示

cocos2d-x通過zOrder來控制每個節點顯示出來的順序原理

       我們為了控制一個節點的顯示層級關係,通常會用到設定zOrder來控制,那麼,其中的原理又是怎樣的呢?下面來探究一下。        先上一段測試程式碼跟資源以及效果 #include "HelloWorldScene.h" #include "cocostu

canny運算元邊緣提取原理

在理解的過程中需要注意以下兩點:1.中非最大抑制是回答這樣一個問題:“當前的梯度值在梯度方向上是一個區域性最大值嗎?”所以,要把當前位置的梯度值與梯度方向上兩側的梯度值進行比較。2.梯度方向垂直於邊緣方向。但實際上,我們只能得到C點鄰域的8個點的值,而dTmp1和dTmp2並不在其中,要得到這兩個值就需要對d

真實模式下字元顯示中斷

參考書籍《0x86從真實模式到保護模式》 1.真實模式顯示字元 首先,電腦開機進入系統,載入bios,然後bios完成一些硬體的初始化,從磁碟讀取mbr到絕對地址0x7c00處,然後跳轉至0x7c00,此時螢幕的顯示模式預設為80*25(一行80個字元,共25行)。 如何對螢幕輸出字元?

51微控制器——控制步進電機加速、減速反轉

加速: #include<reg52.h> #define uchar unsigned char #define uint unsigned int #define MotorData P1 uchar phasecw[4] =

rviz 遠端顯示控制移動機器人的導航

環境: (1)虛擬機器本地端IP 192.168.10.30 (虛擬機器需要通過橋接的形式與PC本地機連線, PC 機IP 192.168.10.21) (2)移動端 IP 192.168.10.11 1 配置本地環境變數 (1)開啟 .bashrc gedit ~/.bashrc

51微控制器 16X16點陣迴圈滾動顯示漢字(基於proteus)

原創文章,轉載註明地址作者,作者TEER。 一、效果展示 二、所用材料 1.16X16點陣 Proteus並不提供16X16的點陣,只能我們自己通過4個8X8的組裝為16X16的點陣。 由此可知8*8變成16*16 列需要這樣連線: 行需要這樣連

LED點陣字模提取學習

一、字模提取原理 無非就是從字型檔檔案中讀取出字模資料。 以常用的HZK16字型檔檔案為例:該字型檔檔案是符合GB2312國家標準的16×16點陣字型檔,HZK16的GB2312-80支援的漢字有6763個,符號682個。其中一級漢字有 3755個,按聲序排列,二級漢字有3008個,按偏旁部

doublefloat轉換為整數控制小數點位數顯示

1.直接轉換為整數: int result=Math.round(price);//四捨五入 int result=Math.ceil(price);//天花板 大於或等於的最小整數 int result=Math.floor(price);//地板 小於或等於的最大整數 2

標籤控制元件中顯示對話框出現的問題解決方法

問題描述: 1.整體對話框出現時,理應出現在標籤控制元件當中的對話方塊飛出去了,沒有在標籤控制元件當中; 2.標籤控制元件切換的時候有問題,並不是所有的標籤選項都可以切換到。 解決方法: 1.飛出去的解決方法: 過程:在查詢標籤控制元件所在的螢幕座標系和客戶區座標

STC89C52微控制器控制超聲波測距模組SR04模組源程式,顯示在數碼管上

本程式碼基於QH - 5A平臺,測試通過。 開發板PCB完整工程下載連線: http://www.cirmall.com/circuit/7388/51%2FAVR微控制器開發板PCB工程原始檔

VC++對話方塊(CDialog)的全屏顯示控制元件居中顯示

在編寫一些軟體時,我們會比較偏向於比較簡潔、清新的使用者介面,同時為了避免其它程式或者桌面等影響使用者的注意力等,我們通常習慣將軟體介面全屏,佈滿整個顯示螢幕,與此同時,我們也將對介面中的控制元件位置進行相應的調整,讓它們按螢幕的大小和其在對話方塊中的相對位置,居中顯示。

微控制器8x8點陣讓數字0從右到左依次顯示迴圈

用的微控制器是普中的開發板,8x8點陣用的是74hc595進行段選,P0口位選74hc595資料點選開啟連結8x8點陣用的是共陰極(左邊的)這次我要實現的是讓數字0從右到左依次顯示#include <reg52.h> #include <intrins.h&

ElasticSearch學習三:搜尋例項含高亮顯示搜尋的特殊字元過濾

應用說明見程式碼註解。1.簡單搜尋例項展示: public void search() throws IOException { // 自定義叢集結點名稱 String clusterName = "elasticsearch_pudon

單片機入門-矩陣鍵盤控制數碼管顯示

矩陣 right 控制 入門 i/o num .cn mar oid 任務簡述:通過按下4X4矩陣鍵盤實現數碼管對應顯示數字 實現方式:通過行列分接法,可以節省使用單片機的I/O口,掃描矩陣鍵盤是否有按下,判斷P2端口得到的值。 protues 硬件系統 單片機晶振復位電

Dubbo框架應用之(三)--Zookeeper註冊中心、管理控制臺的安裝解說

root pan rda 查詢 bsp err 封裝 form keep 我是在linux下使用dubbo-2.3.3以上版本號的zookeeper註冊中心客戶端。Zookeeper是Apache Hadoop的子項目,強度相對較好,建議生產環境使用該註冊中

CSS控制文字只顯示一行,超出部分顯示省略號

pac 方式 也有 瀏覽器 註解 參考 布局 多人 ellipsis <p style="width: 300px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">

3種純css方法控制元素隱藏顯示

adding absolut 首頁 one col isp clas 瀏覽器 type 1.通過hover,也是最常用的方式。此方法要求按鈕與被控制元素必須有層級關系。(兼容低端瀏覽器常用) <div class="nav-btn">