<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于LCD12864顯示器的數(shù)字示波器設(shè)計(jì)

          基于LCD12864顯示器的數(shù)字示波器設(shè)計(jì)

          作者: 時(shí)間:2011-08-02 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/194794.htm

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

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

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

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

            一、簡(jiǎn)易波器原理

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

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

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

            LCD 圖形顯示需要根據(jù)LCD 特性設(shè)計(jì),不同LCD驅(qū)動(dòng)程序不同,本篇將結(jié)合不帶字庫(kù)的LCD 設(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)行的各種讀寫操作。

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

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

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



          關(guān)鍵詞: 12864 LCD 顯示器 數(shù)字示

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();