如何在Nios II使用16x2字元液晶顯示器? (IC Design) (DE2) (Nios II)

Abstract
在DE2上的七段顯示器,只能顯示數字,若想顯示英文字,就只能靠16x2字元液晶顯示器,本文討論如何在Nios II用軟體C語言控制。

Introduction
使用環境:Quartus II 7.2 SP1 + Nios II EDS 7.1 SP1 + DE2(Cyclone II EP2C35F627C6)

(原創) 如何在Nios II顯示8位數的七段顯示器? (IC Design) (DE2) (Nios II),我們討論了在Nios II使用軟體C語言去控制8位數的七段顯示器。但是七段顯示器只能顯示數字,若想顯示英文時,就得派16x2字元液晶顯示器上場了。

慶幸的是,Altera已經為DE2的16x2字元液晶顯示器寫好了controller,而且還支援ANSI C的printf(),非常方便。

Nios II的Reference Design放在DE2 CD中的\DE2_demonstrations\SOPC_Builder\Reference_Design\下,(或從http://www.terasic.com/downloads/cd-rom/de2/ 下載),若你想自己從頭到尾自己由SOPC Builder建立,請參閱(原創) 如何自己用SOPC Builder建立一個能在DE2上跑μC/OS-II的Nios II系統? (IC Design) (DE2) (Quartus II) (Nios II) (SOPC Builder) (μC/OS-II),以下只介紹如何加上Character LCD controller與在Nios II EDS該如何使用。

Step 1:
在SOPC Builder加上Character LCD controller
將Altera SOPC Builder -> Peripherals -> Display -> Character LCD加入,不需做任何設定,接受預設值即可。




之後重新generate SOPC system,Quartus II重新compile,最後用programmer燒進DE2。

Step 2:
設定Nios II的stdout為lcd_16207_0
在Nios II EDS利用Hello World template建立project,選擇hello_world_0,按右鍵選擇System Library Properties,將stdout改為lcd_16207_0,之後就可以看到Hello World顯示在16x2字元液晶顯示器上。

C語言 / hello_world.c

1  #include  < stdio.h >
2 
3  int  main() {
4    printf( " Hello from Nios II!\n " );
5 
6     return   0 ;
7  }


(原創) 如何在Nios II使用16x2字元液晶顯示器? (IC Design) (DE2) (Nios II)_第1张图片

或許你會發現,還有lcd_16207_0可以選,因為reference design本身已經內含了一個Character LCD。


Remark
若你對16x2字元液晶顯示器的驅動程式感興趣,請參考C:\altera\72\ip\sopc_builder_ip\altera_avalon_lcd_16207\這個目錄,所有source code都在上面。

或許你會疑問為什麼在SOPC Builder下看到兩個LCD Character controller?因為我沒注意原來DE2 reference design已經內含了一個LCD Character,若你主要是用在Nios II嵌入式軟體,則硬體使用reference design即可,不必再另外加LCD Character。本文主要是示範如何在SOPC Builder加入LCD Character controller,為了簡化起見,使用了DE2 reference design,尤其若你本身有自己的硬體,如DE2_CCD,日後想自己加上Nios II軟體時,就不能再用reference design了,必須手動建立Nios II系統。

完整程式碼下載
DE2_NIOS_CharLCD.7z

Conclusion
由於16x2字元液晶顯示器直接支援ANSI C的printf(),所以根本不用去研究該用什麼API來控制硬體,非常方便,當你有需要在DE2用軟體輸出英文字時,可以考慮使用這個簡單的方式。

See Also

(原創) 如何在Nios II顯示8位數的七段顯示器? (IC Design) (DE2) (Nios II)
(原創) 如何顯示8位數的七段顯示器? (IC Design) (Verilog) (DE2)

Reference
徐光輝、程東旭、黃如 等著,基於FPGA嵌入式開發與應用 p.328,電子工業出版社

你可能感兴趣的:(design)