国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

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

發布時間:2010-11-16 16:00    發布者:eetech
關鍵詞: arm , LCD , LPC210X , 接口 , 微控制器
本文分別以GPI0口直接連接、串行轉換連接、CPLD分部連接三種方法闡述了無外部總線的Philips ARM微控制器LPC210X與點陣圖形液晶顯示器的接口設計,并給出硬件電路框圖和主要程序。

Philips最近推出了其第一款基于ARM內核的控制器LPC210X,但由于LPC210X外部總線不開放,無法擴展內存、驅動液晶顯示器等,給它的推廣帶來了一定的影響。筆者最近在一工控板項目中采用了該系列芯片,項目后斯應客戶要求需對幾個參量進行顯示并擴展鍵盤,不得已之下,采用了CPLD,并利用了GPIO口模擬總線和液晶時序與點陣圖形液日模塊HS12864-16建立了連接。下面詳細探討包括該種連接的三種接口方式。  

1 LPC210X的GPI0口和HS12864-16A介紹  

LPC210X控制器包含LPC2104、LPC2105、LPC2106,除了片內靜態RAM不同外,其他完全相同。該系列器件具有32個GPIO口(P0.0~P0.31),沒有外部總線,大多GPIO口是復用口,所以它一般不適合連接大屏幕液晶顯示器,但驅動小規模液晶模塊進行工業控制上的參量顯示還是非常合適的。  

GPIO包含四個寄存器,如表1所列。

表1 配置GPI0口的四個寄存器  

名  稱
地  址

描 述  

IOPIN
0xE0028000
引腳值寄存器,引腳當前狀態都從該寄存器讀出

IOSET
0xE0028004
輸出置位寄存器,只能寫1,對應引腳輸出高電平

IOCLR
0xE0028008
輸出清零寄存器,只能寫1,對應引腳輸出低電平

IODIR
0xE002800C
方向控制寄存器?刂泼總I/O方向

另外GPIO口還包含兩個引腳連接模塊寄存器PINSEL0、PINSEL1,用來為32個引腳配置I/O功能或其他特殊功能。  
HS12864-16A是內部不帶字符發生器的3V液晶模塊(LPC210X可直接驅動5V液晶模塊俁考慮到功耜耗,不贊成連接),其主要引腳如表2所列)。

表2 HS12864-16A引腳525252  

引 腳 號
引 腳 名 稱

描 述  

1、23、
VSS、VDD、V0
電源(3.3V)、電源地、驅動負太

4
D/I
數據指令選擇

5
R/W
讀寫選擇

6
E
使能,R/W=0,下降沿鎖存DB7DB0

7~14
DB0~DB7
數據線

15、16
CS1、CS2
左、右半屏選擇

17
RET
復位,低電平復位

18
Vout
LCD驅動負壓,-10V,分壓接3腳

19、20
EN、NO
背光電源

顯示屏由128%26;#215;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口配置:  

#define LCD_DI 0x00000100 ;指令選擇線P0.8  
#define LCD_RW 0x00000200 //讀寫選擇線P0.9  
#define LCD_E 0x00000400 //使能線P0.10  
#define LCD_CS1 0x00000800 //左屏選擇線P0.11  
#define LCD_CS1 0x00000800 //左屏選擇線P0.11  
#define IO_USE 0x00001FFF //13個GPIO口傳輸方向  

傳輸字模數值到液晶顯示器數據上的子程序如下:  

void SendData(unsigned char date){  
IOSET=data;  
IOCLR="data%26;amp;0x000000FF;  
}  

備注:以上子程序為并行傳輸,也可以用串行移位進行傳輸,具體代碼如下:  

unsigned char i;  
for(i=0;i<8;i++){ //依次發送8位數據  
if((data%26;amp;0x80)!=0) //最高位為1,對應口線置1  
IOSET=IO_TURN;  
Else  
IOCLR=IO_TURN; //否則置0  
data<<=1; //移到下一數據線  
}  
IO_TURN=0x00000080; //8位數據傳輸完畢后,仍然將P0.7設為起始線  
}  

下面以左半屏來說明如何在屏幕上任意顯示16%26;#215;16點陣漢字。  

傳送指令子程序如下:  

void wcodel(unsigned char code){ //送指令  
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)。

顯示左屏漢字子程序如下:  

void hzleft(unsigned char page,unsigned charrow,unsigned char number){ //形參分別為頁、列、漢字序號  
unsigned char i,j;  
wcode1(0xc0); //設置12864從第1行顯示  
wcode1(0x3f); //開顯示器  
for(j=page;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%26;#215;16點陣。其中number代表存在Flash中的漢字排名序列號,只要把頁、列、漢字序號實參值傳到漢字顯示子程序中進行調用即可顯示漢字了。參考上面程序便能很方便地寫出字母、數字的顯示子程序。  

程序中使用寄存器名稱時要先在頭文件中將其映射到對應地址,如對IOSET做如下定義:  

#define IOSET(*((volatile unsigned long *)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口配置如下:  

#define SPI_CLK 0x00000001 //時鐘線為P0.0  
#define SPI_DATA 0x00000002 //傳輸數據線為P0.1  
#define SPI_CS 0x00000004 //74HC595選通線為P0.2  
傳輸字模數值到數據線上的子程序:  
void SendData(unsigned char date){  
unsigned char i;  
IOCLR=SPI_CS; //SPI_CS=0  
for(i=0;i<8;i++){ //依次發送8位數據  
IOCLR=SPI_CLK; //SPI_CLK=0  
if((date%26;amp;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.3 CPLD分部連接法  

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采用了Xilinx XC9500系列的XC9572,程序用Verilog-HDL語言編寫,其中數據分部傳送程序設計如下:  

module latch(out_high,out_low,data,enable);//定義模塊latch  
output[3:0]out_high; //定義輸出口高4位  
output[3:0]out_low; //定義輸出口低4位  
input enable; 定義鎖存選通信號  
reg[3:0] out_high;  
reg[3:0]out_low;
reg[3:0]lock; //定義鎖存寄存器  
always@(enable or data)  
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不但可以令設計簡化,還可以使系統性能大大增加。  

結語  

對于無外部總線的Philips LPC210X,只能通過GPIO口模擬部連接液晶顯示器。但在設計過程中,可以考慮通過串行轉換或CPLD分部連接的方法減少GPIO口的使用,以便充分利用LPC210X的資源。不過沒有總線畢竟有所束縛,好在Philips即將推出的LPC22X4系列控制器開放了外部總線,相信當這款芯片推出后,必將得到更多的關注。
本文地址:http://m.qingdxww.cn/thread-39805-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精彩视频 | 四虎免费紧急入口观看 | 国产真实乱对白在线观看 | 亚洲精品香蕉婷婷在线观看 | 最近日本中文字幕免费完整 | 亚洲综合免费视频 | 免费国产不卡午夜福在线 | 国产成人欧美一区二区三区vr | 麻豆精品在线观看 | 亚州视频一区二区 | 无限免费动漫看片的 | 亚洲欧美日韩一区高清中文字幕 | 国产麻豆成91 | 岛国成人在线 | 91精品天美精东蜜桃传媒入口 | 一区二区三区高清视频在线观看 | 国产亚洲成归v人片在线观看 | 日本免费无遮挡吸乳视频中文 | 日本一区二区不卡久久入口 | 日本一区二区三区在线 视频 | 爽好舒服宝贝添奶吻戏 | 四虎影视最新网站在线播放 | 色视影院 | 久久久久久久久66精品片 | 欧美精品一区二区三区免费播放 | 日本高清在线精品一区二区三区 | 四虎在线视频免费观看视频 | 日日摸夜夜添夜夜添日韩 | 欧美亚洲国产成人精品 | 亚洲欧美国产精品 | 91在线播 | 日本高清在线中文字幕网 | 亚洲欧美日韩三级 | 免费国产小视频在线观看 | 精品国产三级在线观看 | 91成人午夜精品福利院在线观看 | 亚洲熟区| 毛片官网| 99免费精品 | 国产在线xvideos | 亚洲欧洲精品成人久久曰影片 |