<form id="itnzz"><noscript id="itnzz"></noscript></form>

          1. <menuitem id="itnzz"></menuitem>
          2. 成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
            現在位置:范文先生網>理工論文>電子通信論文>ARM微控制器LPC210X的LCD接口技術

            ARM微控制器LPC210X的LCD接口技術

            時間:2023-02-20 22:55:19 電子通信論文 我要投稿
            • 相關推薦

            ARM微控制器LPC210X的LCD接口技術

              摘要:本文分別以GPI0口直接連接、串行轉換連接、CPLD分部連接三種方法闡述了無外部總線的PhilipsARM微控制器LPC210X與點陣圖形液晶顯示器的接口設計,并給出硬件電路框圖和主要程序。
              關鍵詞:ARMLPC210XLCD接口串并轉換CPLD
              
              引言
              
              Philips最近推出了其第一款基于ARM內核的控制器LPC210X,但由于LPC210X外部總線不開放,無法擴展內存、驅動液晶顯示器等,給它的推廣帶來了一定的影響。筆者最近在一工控板項目中采用了該系列芯片,項目后斯應客戶要求需對幾個參量進行顯示并擴展鍵盤,不得已之下,采用了CPLD,并利用了GPIO口模擬總線和液晶時序與點陣圖形液日模塊HS12864-16建立了連接。下面詳細探討包括該種連接的三種接口方式。
              
              1LPC210X的GPI0口和HS12864-16A介紹
              
              LPC210X控制器包含LPC2104、LPC2105、LPC2106,除了片內靜態RAM不同外,其他完全相同。該系列器件具有32個GPIO口(P0.0~P0.31),沒有外部總線,大多GPIO口是復用口,所以它一般不適合連接大屏幕液晶顯示器,但驅動小規模液晶模塊進行工業控制上的參量顯示還是非常合適的。
              
              GPIO包含四個寄存器,如表1所列。
              
              表1配置GPI0口的四個寄存器
              
              名稱地址
              描述
              
              IOPIN0xE0028000引腳值寄存器,引腳當前狀態都從該寄存器讀出IOSET0xE0028004輸出置位寄存器,只能寫1,對應引腳輸出高電平IOCLR0xE0028008輸出清零寄存器,只能寫1,對應引腳輸出低電平IODIR0xE002800C方向控制寄存器?刂泼總I/O方向
              另外GPIO口還包含兩個引腳連接模塊寄存器PINSEL0、PINSEL1,用來為32個引腳配置I/O功能或其他特殊功能。
              
              HS12864-16A是內部不帶字符發生器的3V液晶模塊(LPC210X可直接驅動5V液晶模塊俁考慮到功耜耗,不贊成連接),其主要引腳如表2所列)。
              
              表2HS12864-16A引腳525252
              
              引腳號引腳名稱
              描述
              
              1、23、VSS、VDD、V0電源(3.3V)、電源地、驅動負太4D/I數據指令選擇5R/W讀寫選擇6E使能,R/W=0,下降沿鎖存DB7DB07~14DB0~DB7數據線15、16CS1、CS2左、右半屏選擇17RET復位,低電平復位18VoutLCD驅動負壓,-10V,分壓接3腳19、20EN、NO背光電源
              顯示屏由128×64點陣組成,共有64行,分為8頁,每頁8行,每行128列。寫指令規則如下:當D/I=0、R/W=0,所有指令由傳輸到數據線的8位二進制數據決定,開顯示為0x3f,并顯示為0x3e,傳輸行、列地址由2低6位決定,傳輸頁地址為低3位決定。
              
              2三種接口設計
              
              2.1直接連接法
              
              連接框圖如圖1所示。
              
              該種方式占用GPIO口較多,對于要大量應用GPIO口復用功能的系統并不合適。為便于說明,圖1將LPC210X的P0.0~P0.12選為連接的13個口,具體到設計系統中,可根據系統用到功能對應GPIO口復用功能進行選取和配置。HS12864-16A的數據線為8條,所以存在于Flash中的字模也是按8位存的,可由字模軟件得出,傳輸數據進行顯示的時候要滿足以下時序:首先使D/I為高電平,R/W為低電平,接著將Flash里的某個8位二進制字模傳送到8個I/O口上,然后使能E模擬下降沿時序,把數據鎖存到液晶顯示器內部的顯示存儲器中即可顯示。
              
              程序由ADS1.2編譯器編譯。
              
              GPIO口配置:
              
              #defineLCD_DI0x00000100;指令選擇線P0.8
              
              #defineLCD_RW0x00000200//讀寫選擇線P0.9
              
              #defineLCD_E0x00000400//使能線P0.10
              
              #defineLCD_CS10x00000800//左屏選擇線P0.11
              
              #defineLCD_CS10x00000800//左屏選擇線P0.11
              
              #defineIO_USE0x00001FFF//13個GPIO口傳輸方向
              
              傳輸字模數值到液晶顯示器數據上的子程序如下:
              
              voidSendData(unsignedchardate){
              
              IOSET=data;
              
              IOCLR=~data&0x000000FF;
              
              }
              
              備注:以上子程序為并行傳輸,也可以用串行移位進行傳輸,具體代碼如下:
              
              unsignedchari;
              
              for(i=0;i<8;i++){//依次發送8位數據
              
              if((data&0x80)!=0)//最高位為1,對應口線置1
              
              IOSET=IO_TURN;
              
              Else
              
              IOCLR=IO_TURN;//否則置0
              
              data<<=1;//移到下一數據線
              
              }
              
              IO_TURN=0x00000080;//8位數據傳輸完畢后,仍然將P0.7設為起始線
              
              }
              
              下面以左半屏來說明如何在屏幕上任意顯示16×16點陣漢字。
              
              傳送指令子程序如下:
              
              voidwcodel(unsignedcharcode){//送指令
              
              IOSET=LCD_CS1;//開左屏
              
              IOCLR=LCD_CS2;//關右屏
              
              IOCLR=LCD_RW;//寫選擇
              
              IOCLR=LCD_DI;//指令選擇
              
              SendData(code);//依次將指令代碼傳到數據線上
              
              IOSET=LCD_E;//模擬使能E下降沿
              
              IOCLR=LCD_E;
              
              }
              
              同理,只要把IOCLR=LCD_DI改為IOSET=LCD_DI便成傳送數據了。為便于區分,可將函數名改為wdata1(data)。
              
              顯示左屏漢字子程序如下:
              
              voidhzleft(unsignedcharpage,unsignedcharrow,unsignedcharnumber){//形參分別為頁、列、漢字序號
              
              unsignedchari,j;
              
              wcode1(0xc0);//設置12864從第1行顯示
              
              wcode1(0x3f);//開顯示器
              
              for(j=page;j<page+2;j++){
              
              wcode1(row);//設置顯示列
              
              wcode1(0xb8+j);//設置顯示頁
              
              for(i=16*(j-page);i<16*(j+1-page);i++)//依次取字模傳輸
              
              wdata1(hangzi[32*a+i]);
              
              }
              
              }
              
              每個漢字字模由32個字節組成,前16個字節顯示漢字上半部分,后16個字節顯示漢字下半部分,構成完整的16×16點陣。其中number代表存在Flash中的漢字排名序列號,只要把頁、列、漢字序號實參值傳到漢字顯示子程序中進行調用即可顯示漢字了。參考上面程序便能很方便地寫出字母、數字的顯示子程序。
              
              程序中使用寄存器名稱時要先在頭文件中將其映射到對應地址,如對IOSET做如下定義:
              
              #defineIOSET(*((volatileunsignedlong*)0xE0028004))
              
              其它類似。
              
              另外,要定義設置引腳連接GPIO,以及GPIO方向設置。
              
              PINSEL0=0xX0000000;//設置用到的13個引腳連接到GPIO,為X的根據應用系統配置
              
              PINSEL1=0xXXXXXXXX;
              
              IODIR=IO_USE;//設置用到的13線方向為輸出
              
              當然,完整的應用還必須包括ARM時鐘代碼、啟動代碼等。
              
              2.2串行轉換法
              
              從上面可以看出,盡管用8個GPIO口模塊總線非常容易與液晶顯示器建立連接,但是占用口線太多。為節省口線,可以考慮加入串入并出的移位寄存器74HC595,用LPC210X的GPIO口復用SPI功能或直接用GPIO口模擬SPI功能進行驅動,后者更加方便。下面用這種方式進行說明,同樣為方便,選用了連續的GPIO口P0.0~P0.7,具體設計系統要按實現情況進行配置,框圖如圖2所示。
              
              該種方法通過3個GPIO口模擬SPI對74HC595進行控制,驅動液晶數據顯示。
              
              模擬SPI的GPIO口配置如下:
              
              #defineSPI_CLK0x00000001//時鐘線為P0.0
              
              #defineSPI_DATA0x00000002//傳輸數據線為P0.1
              
              #defineSPI_CS0x00000004//74HC595選通線為P0.2
              
              傳輸字模數值到數據線上的子程序:
              
              voidSendData(unsignedchardate){
              
              unsignedchari;
              
              IOCLR=SPI_CS;//SPI_CS=0
              
              for(i=0;i<8;i++){//依次發送8位數據
              
              IOCLR=SPI_CLK;//SPI_CLK=0
              
              if((date&0x80)!=0)//傳輸最高位
              
              IOSET=SPI_DATA;
              
              Else
              
              IOCLR=SPI_DATA;
              
              date<<=1;
              
              IOSET=SPI_CLK;//SPI_CLK=1
              
              }
              
              IOSET=SPI_CS;//SPI_CS=1
              
              }
              
              其它程序與方法1類似。有了以上子程序,就可以很方便地加以調用,進行液晶驅動顯示。
              
              2.3CPLD分部連接法
              
              CPLD是大規模邏輯器件,對于LPC210X的復雜應用顯得非常重要,筆者的項目是用它來擴展外部接口的,LCD應用只是其中一部分,連接圖如圖3所示。
              
              共占用9線,為說明方便,也選用了連續的GPIO口。該方法把一個字節字模分成高4位和低4位,分別通過P0.0~P0.3傳送。在CPLD里設計一個4位鎖存器,當高4位傳送完畢后,鎖存器進行鎖存,然后發送低4位,接著由P0.4選通鎖存器,將8位數據同時送出,這樣節省了4個GPIO口;另外由P0.5通過CPLD直接控制CS1和CS2,也節省了1個GPIO口。LPC210X程序參照方法1很容易寫出,只是注意這里是分兩次、每次4位傳送,以及每次傳送要改變P0.4的狀態。CPLD采用了XilinxXC9500系列的XC9572,程序用Verilog-HDL語言編寫,其中數據分部傳送程序設計如下:
              
              modulelatch(out_high,out_low,data,enable);//定義模塊latch
              
              output[3:0]out_high;//定義輸出口高4位
              
              output[3:0]out_low;//定義輸出口低4位
              
              inputenable;定義鎖存選通信號
              
              reg[3:0]out_high;
              
              reg[3:0]out_low;
              
              reg[3:0]lock;//定義鎖存寄存器
              
              always@(enableordata
              
              begin
              
              if(!enable)//低電平鎖存
              
              lock<=data;
              
              else//高電平開通鎖存,輸出8位
              
              begin
              
              out_high=lock;
              
              out_low=data;
              
              end
              
              end
              
              endmodule
              
              至于P0.5選通CS1、CS2,在另一always塊中用ifelse語句進行判斷就可以了。
              
              程序設計完成后,在WEBPACK中對用到的引腳進行分配與鎖定,然后編譯。如果需要仿真的埃?鴕?杓貧ゲ鬮件,可使用Xilinx公司推出的免費仿真軟件MODELSIM。
              
              對于上面的第二種方法,也可以考慮用CPLD設計稱位存儲器及時序控制。在復雜應用中,加上CPLD不但可以令設計簡化,還可以使系統性能大大增加。
              
              結語
              
              對于無外部總線的PhilipsLPC210X,只能通過GPIO口模擬部連接液晶顯示器。但在設計過程中,可以考慮通過串行轉換或CPLD分部連接的方法減少GPIO口的使用,以便充分利用LPC210X的資源。不過沒有總線畢竟有所束縛,好在Philips即將推出的LPC22X4系列控制器開放了外部總線,相信當這款芯片推出后,必將得到更多的關注。
              
              
              
              

            【ARM微控制器LPC210X的LCD接口技術】相關文章:

            大容量Flash型AT91系列ARM核微控制器08-06

            人機界面中的LCD控制驅動與接口設計08-06

            基于RISC技術的8位微控制器設計08-06

            帶USB和智能讀卡器接口的C51微控制器08-06

            混合邏輯電平的接口技術08-06

            ARM CPU S3C44B0X與C54X DSP的接口設計04-12

            32位ARM嵌入式處理器的調試技術08-06

            STN-LCD彩屏模塊08-06

            EZ-USB接口設備的軟配置技術08-06

            主站蜘蛛池模板: 亚洲乱理伦片在线观看中字| av天堂精品久久久久| 亚洲色大成网站WWW永久麻豆| 好男人视频免费| 国产女人喷潮视频免费| 久久久精品国产精品久久| 色狠狠色婷婷丁香五月| yy111111在线尤物| 国产一码二码三码区别| 国产成人综合色视频精品| 国产精品va无码一区二区| 免费大片黄国产在线观看| 玩两个丰满老熟女久久网| 在线观看国产小视频| 男人狂桶女人出白浆免费视频| 欧美黑人性暴力猛交高清| 国产视频区一区二区三| 亚洲成av人片无码迅雷下载| 精品午夜福利在线视在亚洲| 亚洲一区二区三区久久受| 18禁免费无码无遮挡网站| 一区二区偷拍美女撒尿视频| 国产福利片一区二区三区| 色噜噜在线视频免费观看| 五十路久久精品中文字幕| 麻豆国产AV剧情偷闻女邻居内裤| A三级三级成人网站在线视频| 免费99精品国产人妻自在现线| 亚洲国产精品成人一区二区在线| 孕交videos小孕妇xx| 国产精品久久一区二区三区| 综合成人亚洲网友偷自拍| 亚洲经典一区二区三区四区| 最近的2019中文字幕国语hd| 久久99精品国产99久久6尤物| 亚洲国产综合精品2020| 天天综合色一区二区三区| 国产一区二区三区av在线无码观看| 日韩有码av中文字幕| 精品国产品香蕉在线| 放荡的少妇2欧美版|