當(dāng)前位置:首頁 > 測試測量 > 測試測量
[導(dǎo)讀]  void lcd_disp(unsigned char x,unsigned char y)  {  unsigned char da[8];  unsigned char j;  y = 63-y;  for(j=1;j<7;j++) da[j] = 0x0;  {// 繪制邊框  da[0]=0x01;  da[7]=0x80;  i

  void lcd_disp(unsigned char x,unsigned char y)

  {

  unsigned char da[8];

  unsigned char j;

  y = 63-y;

  for(j=1;j<7;j++) da[j] = 0x0;

  {// 繪制邊框

  da[0]=0x01;

  da[7]=0x80;

  if((x==0)||(x==127)) {

  for(j=0;j<8;j++) da[j] = 0xff;

  }

  }

  if(x%5==0) da[pointY>>3] |= 0x01 《 (pointY&0x07);

  // 繪制由變量pointY 控制的水平游標(biāo)線

  if(x==pointX) // 繪制由變量pointX 控制的垂直游標(biāo)線

  for(j=0;j<64;j++)

  if(j%5==0) da[j>>3] |= 0x01 《(j&0x07);

  da[y/8] |= 0x01《(y%8); // 繪制信號(hào)波形

  lcd_row_wr(x,da);

  }

  運(yùn)行效果如圖6 所示。

圖6 水平垂直移動(dòng)游標(biāo)線示例

  五、圖形液晶LCD12864數(shù)字符號(hào)顯示

  圖形點(diǎn)陣LCD 顯示數(shù)字,原理是把數(shù)字以點(diǎn)陣的形式取模,再把點(diǎn)陣模寫入特定的LCD 空間即可,首先來看數(shù)字取模,如圖7 所示,對(duì)數(shù)字“0”按8×5點(diǎn)取模。

圖7 數(shù)字取模示例圖

  縱向看,8 點(diǎn)一列,從上至下對(duì)應(yīng)bit0 到bit7,我們用1 表示“亮”,0 表示“暗”,從左至右,依次確定為0111 1100,即0x7c ;1000 0010,即0x82 ;10000010, 即0x82 ;1000 0010, 即0x82 ;0111 1100,即0x7c ;如果我們依次將這5 個(gè)字節(jié)寫入LCD 某頁連續(xù)5個(gè)地址空間,LCD 上就會(huì)顯示“0”。

  下面我們把數(shù)字變量在LCD 上動(dòng)態(tài)顯示,就是數(shù)值變了,顯示跟著變。

  字符顯示LCD 驅(qū)動(dòng)函數(shù),實(shí)現(xiàn)8×n 點(diǎn)陣字符寫入函數(shù)。

  void lcd_put_xyns(unsigned char x,y,n,unsigned char *s)

  {

  unsigned char i;

  for(i=0;i<n;i++) {

  if((x+i)>63) {

  lcd_cmd_wr(ORGY+y,1);

  lcd_cmd_wr(ORGX+x+i-64,1);

  lcd_dat_wr(s[i],1);

  }

  else {

  lcd_cmd_wr(ORGY+y,0);

  lcd_cmd_wr(ORGX+x+i,0);

  lcd_dat_wr(s[i],0);

  }

  }

  }

  參數(shù):“x, y”是坐標(biāo),這里y 是頁坐標(biāo),取值從0 到7,“n”是點(diǎn)陣模字節(jié)數(shù),“*s”是點(diǎn)陣模起始地址。

  將字模生成字模表:

  unsigned char code number[]={

  0x7C,0x82,0x82,0x7C,0x84,0xFE,0x80,0x00,0xCC,0xA2,0x

  92,0x8C,0x44,0x92,0x92,0x6C,

  0x38,0x24,0xFE,0x20,0x9E,0x92,0x92,0x62,0x7C,0x92,0x9

  2,0x64,0x06,0xF2,0x0E,0x02,

  0x6C,0x92,0x92,0x6C,0x4C,0x92,0x92,0x7C,0x80,

  };

  lcd_put_xyns(0,0,4,number+0*4); // 直接顯示字符0

  lcd_put_xyns(4,0,4,number+1*4); // 直接顯示字符1

  ……

  tmp=3421; // 以下代碼顯示變量tmp

  lcd_put_xyns(80,2,4,number+(tmp/1000)*4);

  lcd_put_xyns(84,2,4,number+(tmp/100%10)*4);

  lcd_put_xyns(88,2,4,number+(tmp/10%10)*4);

  lcd_put_xyns(92,2,4,number+(tmp%10)*4);

 

 

本文針對(duì)LCD12864 特性,完成了數(shù)字示波器顯示必須的繪圖驅(qū)動(dòng)程序設(shè)計(jì),這個(gè)教程定位給初學(xué)者使用,我立足從簡單到復(fù)雜一步一步介紹設(shè)計(jì)過程,甚至是調(diào)試的過程,還包括一些經(jīng)驗(yàn)總結(jié),特別是提供了完整的keil 工程附件。希望讀者立足示波器項(xiàng)目,學(xué)到更多軟硬件設(shè)計(jì)經(jīng)驗(yàn)技巧。

  一、簡易數(shù)字示波器原理

  數(shù)字示波器基本原理可以簡單理解為:數(shù)據(jù)采集+ 圖形顯示,該過程循環(huán)進(jìn)行,如圖1 所示。

圖1 簡易數(shù)字示波器流程圖

  LCD 圖形顯示需要根據(jù)LCD 特性設(shè)計(jì),不同LCD驅(qū)動(dòng)程序不同,本篇將結(jié)合不帶字庫的LCD12864 設(shè)計(jì)顯示程序。

  二、圖形液晶LCD12864繪圖驅(qū)動(dòng)設(shè)計(jì)基礎(chǔ)

  關(guān)于LCD 的硬件接口電路,在其他教程中有詳細(xì)介紹,涉及單片機(jī)總線知識(shí)和CPLD 內(nèi)部電路,需要認(rèn)真學(xué)習(xí),這里借助現(xiàn)成的驅(qū)動(dòng)函數(shù),重點(diǎn)講解LCD繪圖程序設(shè)計(jì)。

  LCD12864 的電路接口在頭文件中定義:

  #define LCD_LCW XBYTE[0xf4ea]

  // 左屏命令寫入

  #define LCD_LDW XBYTE[0xf5ea]

  // 左屏數(shù)據(jù)寫入

  #define LCD_LCR XBYTE[0xf6ea]

  // 左屏命令讀出

  #define LCD_LDR XBYTE[0xf7ea]

  // 左屏數(shù)據(jù)讀出

  #define LCD_RCW XBYTE[0xf8ea]

  // 右屏命令寫入

  #define LCD_RDW XBYTE[0xf9ea]

  // 右屏數(shù)據(jù)寫入

  #define LCD_RCR XBYTE[0xfaea]

  // 右屏命令讀出

  #define LCD_RDR XBYTE[0xfbea]

  // 右屏數(shù)據(jù)讀出

  后面所有對(duì)LCD 的編程操作都是基于以上接口定義進(jìn)行的各種讀寫操作。

  首先來看LCD12864 的點(diǎn)陣結(jié)構(gòu)圖,如圖2 所示。

圖2 LCD點(diǎn)陣分布結(jié)構(gòu)圖

  此LCD 屏由水平128 列,垂直64 行組成。水平128 列分左右各64 列兩個(gè)半屏構(gòu)成。垂直64 行又分8 頁,每頁8 行(1 列8 點(diǎn)剛好1 字節(jié))。程序每次對(duì)LCD 的繪圖操作就是以最小單位1 字節(jié)進(jìn)行操作的。

  理解這點(diǎn)至關(guān)重要。也就是每次只能針對(duì)8 點(diǎn)進(jìn)行操作,而不是1 點(diǎn)進(jìn)行操作。左右屏由單獨(dú)地址線控制(前面的接口定義就是分左右屏定義的)。實(shí)際打點(diǎn)只需往指定“位置”寫入數(shù)據(jù),“1”亮,“0”暗。

    聲明控制水平線的變量“unsigned charpointY=0;” 范圍0 到63, 聲明控制垂直線的變量“unsigned char pointX=0;”范圍0 到127。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉