色偷偷亚洲精品一区-色偷偷五月天-色偷偷久久一区二区三区-色偷偷狠狠色综合网-国产99久9在线视频-国产99久9在线

/ EN
13922884048

資訊中心

information centre
/
/

MCU最強科普總結(jié)【建議收藏】(三)

發(fā)布時間:2022-03-17作者來源:薩科微瀏覽:2024

12、漢字概覽:  
為了將漢字在顯示器或打印機上輸出,把漢字按圖形符號設(shè)計成點陣圖,就得到了相應(yīng)的點陣代碼(字形碼)。  
  為在計算機內(nèi)表示漢字而統(tǒng)一的編碼方式形成漢字編碼叫內(nèi)碼(如國標碼),內(nèi)碼是惟一的(相當于該字的身份證號)。為方便漢字輸入而形成的漢字編碼為輸入碼,屬于漢字的外碼,輸入碼因編碼方式不同而不同,是多種多樣的。為顯示和打印輸出漢字而形成的漢字編碼為字形碼,計算機通過漢字內(nèi)碼在字模庫中找出漢字的字形碼,實現(xiàn)其轉(zhuǎn)換。  
  機內(nèi)碼  
  根據(jù)國標碼的規(guī)定,每一個漢字都有了確定的二進制代碼,但是這個代碼在計算機內(nèi)部處理時會與ASCII碼發(fā)生沖突,為解決這個問題,把國標碼的每一個字節(jié)的首位上加1。由于ASCII碼只用7位,所以,這個首位上的“1”就可以作為識別漢字代碼的標志,計算機在處理到首位是“1”的代碼時把它理解為是漢字的信息,在處理到首位是“0”的代碼時把它理解為是ASCII碼。經(jīng)過這樣處理后的國標碼(內(nèi)碼)就是機內(nèi)碼。  
  如果我們把這個“口”字圖形的“.”處用“0”代替,就可以很形象地得到“口”的字形碼:0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H2004H 3FFAH 2004H 0000H 0000H。計算機要輸出“口”時,先找到顯示字庫的首址,根據(jù)“口”的機內(nèi)碼經(jīng)過計算,再去找到“口”的字形碼,然后根據(jù)字形碼(要用二進制)通過字符發(fā)生器的控制在屏幕上進行依次掃描,其中二進制代碼中是“0”的地方空掃,是“1”的地方掃出亮點,于是就可以得到“口”的字符圖形。  
  漢字字模按國標碼的順序排列,以二進制文件形式存放在存儲器中,構(gòu)成漢字字模字庫,亦稱為漢字字形庫,稱漢字庫  
  兩種編碼方法,見頭文件
    GB1616.h//------------------ 漢字字模的數(shù)據(jù)結(jié)構(gòu)定義 ------------------------//struct typFNT_GB16 //漢字字模數(shù)據(jù)結(jié)構(gòu){ unsignedchar  Index[3]; //漢字內(nèi)碼索引  unsignedchar   Msk[32]; //點陣碼數(shù)據(jù) }; /////////////////////////////////////////////////////////////////////////// 漢字字模表                                                        //// 漢字庫: 宋體16.dot,橫向取模左高位,數(shù)據(jù)排列:從左到右從上到下        ///////////////////////////////////////////////////////////////////////////conststruct  typFNT_GB16 codeGB_16[]= //數(shù)據(jù)表{/*------------------------------------------------------------------------------;  源文件 /文字 :徐;  寬×高(像素):16×16------------------------------------------------------------------------------*/ "徐",0x10,0x80,0x10,0x80,0x21,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,0xAF,0xF8,0x20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00,
     

    這個結(jié)構(gòu),很簡單的:一個是內(nèi)碼,一個點陣序列,以前的點陣庫是按內(nèi)碼順序放的,不需要內(nèi)碼索引的,如果只放部分漢字,就需要內(nèi)碼索引了。(前面的漢字“徐”是為了要輸出“徐”的時候找到該字的點陣序列,這個點陣序列是自己寫的,當用1602顯示時,因為該芯片內(nèi)存在英文的點陣序列,所以就不用寫了)一般內(nèi)碼兩個字節(jié)就行了,多用1個字節(jié)是加了個尾0而已,這樣,漢字內(nèi)碼處直接放漢字字符串就可;


    codeGB_16[k].Index[0]   codeGB_16[k]說明有一個結(jié)構(gòu)體typFNT_GB16的數(shù)組叫做codeGB_16   codeGB_16[k]是數(shù)組中第k+1個成員   index是結(jié)構(gòu)體typFNT_GB16的成員,所以可以用codeGB_16[k].Index來進行引用   同時index又是個數(shù)組,所以可以index[0]       if((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1]))   &&是 邏輯與運算符   意思是 &&符號的兩邊的值都為真 &&的值才為真,也就是 true && true =true   這句的意思是   codeGB_16[k].Index[0]==c[0]  和 codeGB_16[k].Index[1]==c[1] 同時成立   if下面的語句才執(zhí)行   codeGB_16[]是個結(jié)構(gòu)體數(shù)組,codeGB_16[k].Index[0]是說結(jié)構(gòu)體數(shù)組的第K個結(jié)構(gòu)體的index成員的第0個元素值。    

    13、12864液晶:

    每個顯示點對應(yīng)一位二進制數(shù),1 表示亮,0 表示滅。存儲這些點陣信息的RAM稱為顯示數(shù)據(jù)存儲器。要顯示某個圖形或漢字就是將相應(yīng)的點陣信息寫入到相應(yīng)的存儲單元中。


    繪圖RAM的地址計數(shù)器(AC)只會對水平地址(X  軸)自動加一, 當水平地址=0FH  時會重新設(shè)為00H  但并不會對垂直地址做進位自動加一,故當連續(xù)寫入多筆資料時,程序需自行判斷垂直地址是否需重新設(shè)定


      14、繪圖RAM(GDRAM)

      繪圖顯示RAM提供128×8 個字節(jié)的記憶空間,在更改繪圖RAM時,先連續(xù)寫入水平與垂直的坐標值,再寫入兩個字節(jié)的數(shù)據(jù)到繪圖RAM,而地址計數(shù)器(AC)會對水平地址(X 地址)自動加一,當水平地址為0XFH 時會重新設(shè)為00H ;不會對垂直地址做進位自動加 1. 。在寫入繪圖 RAM的期間,繪圖顯示必須關(guān)閉。

     
      [cpp] view plain copy// 顯示漢字 voiddispString (uchar X, Y,uchar *msg) //X為哪一行,Y 為哪一列。msg 為漢字 {  if(X==0)       X = 0x80; // [敏感詞]行,漢字顯示坐標  else if(X==1) X = 0x90; // 第二行  else if(X==2) X = 0x88; // 第三行  else X = 0x98; //第四行  Y = X + Y; //Y 為1 往右移一位  write_com(Y); // 寫入坐標  while (*msg)  {  write_data(*msg++); //顯示漢字 } } //////////////////////////////// //////////////// /////////////// // 顯示圖象 voiddisppicture(uchar code *adder) {  uint i,j; //*******顯示上半屏內(nèi)容設(shè)置  for(i=0;i<32;i++) // 上半屏32個列地址  {  write_com(0x80 + i); //SET  垂直地址 VERTICALADD  write_com(0x80); //SET   水平地址 HORIZONTAL ADD  for(j=0;j<16;j++)  {  write_data(*adder);  adder++;  }  } //*******顯示下半屏內(nèi)容設(shè)置  for(i=0;i<32;i++) //  {  write_com(0x80 + i); //SET 垂直地址 VERTICALADD  write_com(0x88); //SET  水平地址 HORIZONTAL ADD  for(j=0;j<16;j++)  {  write_data(*adder);  adder++;  }  } }
       
         

      對于C語言,定義的變量,自動為其分配空間,其地址為該變量的名稱。通過該名稱,可以在內(nèi)存中招到該數(shù)據(jù),經(jīng)過運算得到新數(shù)據(jù),而匯編中需要編程者自己定義存儲空間及把數(shù)據(jù)送到累加器等進行運算,每一步都需要編程者操作。而C語言這些過程由編譯器去完成。


        15、一些有用的答疑解惑

        ①、單片機C語言,其變量的內(nèi)存開辟是如何進行的?難道是編譯器,在編譯過程中智能地加入分配與回收的代碼?關(guān)鍵之處在于我所做的程序,如何保證其沒有內(nèi)存溢出錯誤?如果我進行的是遞歸運算,這樣的話,內(nèi)存需求是很難自己計算的。  
        ②、單片機C語言在變量定義上是否會受到約束?比如浮點型數(shù)據(jù)的乘除運算,通過匯編還寫,代碼相當復(fù)雜,如果直接C語言來寫,豈不過份簡單?  
        ③、單片機C語言生成的hex文件中,指令及數(shù)據(jù)的ROM的地址分布是否編譯器自動分配?可否用戶進行分配?  
        回答1:c語言寫的單片機程序,先由1個程序(好像是c51.exe)編譯,編譯完成后,變量的存儲空間大小已經(jīng)安排好,只是還沒分配具體地址(地址浮動),接下來有另一個程序(好像是a51.exe)進行連接,連接以后,具體地址確定。  
        如果變量過多,編譯會提示數(shù)據(jù)段too large,要保證其沒有內(nèi)存溢出錯誤,主要考慮堆棧是否溢出,要靠經(jīng)驗  
        單片機c語言一般禁止遞歸,一般都避免用遞歸運算,單片機畢竟不是PC,會影響速度的,要遞歸的話,用DSP芯片更合適,總之,要會挑合適的芯片  
        回答2:變量的大小(位數(shù))一般和芯片累加器的位數(shù)一樣,比如51常用8位的,因為它是8位單片機

      單片機可以定義位變量,但是不可以定義位數(shù)組。用c語言寫只是看著簡單,實際生成的代碼量是最多的,用于控制的單片機幾乎不用浮點數(shù)運算,不僅慢還麻煩還占地方,如果是DSP芯片,本身有適合的硬件結(jié)構(gòu),會好很多。  
       

      回答3:一般是自動分配的,可以c語言和匯編語言混合編程,也可以用Keil C在線匯編,芯片與外部的數(shù)據(jù)交換都是通過端口進行的。


      免責聲明:本文轉(zhuǎn)載自“國際電子商情”,本文僅代表作者個人觀點,不代表薩科微及行業(yè)觀點,只為轉(zhuǎn)載與分享,支持保護知識產(chǎn)權(quán),轉(zhuǎn)載請注明原出處及作者,如有侵權(quán)請聯(lián)系我們刪除。

      公司電話:+86-0755-83044319
      傳真/FAX:+86-0755-83975897
      郵箱:1615456225@qq.com
      QQ:3518641314 李經(jīng)理  

      QQ:332496225   丘經(jīng)理

      地址:深圳市龍華新區(qū)民治大道1079號展滔科技大廈C座809室

      服務(wù)熱線

      0755-83044319

      霍爾元件咨詢

      肖特基二極管咨詢

      TVS/ESD咨詢

      獲取產(chǎn)品資料

      主站蜘蛛池模板: 达达兔欧美午夜国产亚洲 | 无码国产成人777爽死在线观看 | 无码日韩人妻精品久久蜜桃入口 | 偷窥欧美wc经典tv | 欧美亚洲另类丝袜自拍动漫 | 国产色精品久久人妻无码看片软件 | 各种肉黄浪荡故事集 | 好看的电影网站亚洲一区 | 蜜桃久久久亚洲精品成人 | 精品国产国偷自产在线观看 | 中文中幕无码亚洲视频 | 麻豆影视在线直播观看免费 | 奇米狠狠一区二区三区 | av狼新人开放注册区 | 午夜福利合集1000在线 | 国产精品爆乳尤物99精品 | 国产香蕉九九久久精品免费 | 国产一区二区内射最近更新 | 亚洲成av人影院 | 亚洲日本欧美天堂在线 | 最近的中文字幕免费完整 | jjzzz日本| 一二三四在线观看韩国 | 黄色三级三级三级免费看 | 草莓视频在线播放视频 | 边摸边吃奶边做下面视频 | 在线免费观看亚洲视频 | 精品久久久久中文字幕加勒比东京热 | 亚洲免费视频观看 | 美女视频黄a视频全免费网站色窝 | 国产精品永久AV无码视频 | 午夜看片网 | 亚洲AV怡红院影院怡春院 | 久久99r66热这里只有精品 | 含羞草免费完整视频在线观看 | 丰满五十老女人性视频 | 午夜DV内射一区二区 | 久久精品国产色蜜蜜麻豆国语版 | 亚洲AV无码一区二区三区乱子伦 | 在线免费公开视频 | 91av欧美 |