(原創) 如何在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 }


char01.gif

或許你會發現,還有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,電子工業出版社

posted on 2008-04-28 21:54 真 OO无双 阅读(3582) 评论(23) 编辑 收藏

评论

#1楼 2008-04-29 10:13 ripple0918[未注册用户]

汗,我居然跑到台湾的博客上来了。。。。  回复 引用   

#2楼 2008-05-03 14:03 RR[未注册用户]

很有启发,请多写些这样的文章,特别是对VGA的使用方面的  回复 引用   

#3楼 2008-05-05 17:33 王超[未注册用户]

你好,我一直在想用DE2上的外擴Flash晶片實現即時的存取操作,比如錄入一段語音然後存放到Flash中,然後再從Flash中讀取並輸出到音頻介面。但是輸出的語音信號卻發生失真或者錯誤輸出,你能針對Flash的操作寫一篇這樣的文章嗎?我覺得看你寫的隨筆和文章收穫很大。
呵呵
 回复 引用   

#4楼[楼主] 2008-05-05 20:52 真 OO无双      

@王超
我也是初學者
我找時間玩玩Flash再跟您分享
 回复 引用 查看   

#5楼 2008-05-06 17:52 王超[未注册用户]

谢谢楼主  回复 引用   

#6楼 2008-05-14 16:42 youxin[未注册用户]

楼主写的此文我看了,下载下来运行一下,发现你的SOPC Buider中,有两个LCD组件,一个是你添加的,一个是LCD_16207_0,这是什么意思,难道你使用了两个液晶  回复 引用   

#7楼[楼主] 2008-05-16 12:24 真 OO无双      

@youxin
感謝指證

已經在文中做了些修正
 回复 引用 查看   

#8楼 2008-05-23 18:11 LAOZHOU[未注册用户]

我也在调试, 都没有出来,出现语法错误 大家来交流下 我的QQ:47622448  回复 引用   

#9楼[楼主] 2008-05-23 20:08 真 OO无双      

@LAOZHOU
我沒用QQ
請問遇到什麼語法錯誤,可以提出來我幫你看看
 回复 引用 查看   

#10楼 2008-06-05 21:38 handy[未注册用户]

萧兄,
你好!我的程序在NIOS II编译通过,但是没有显示在DE2的LCD上,调试了很久,找不到原因,恳请赐教!谢谢!handyily@163.com
 回复 引用   

#11楼[楼主] 2008-06-05 22:11 真 OO无双      

@handy
你可以將程序完整記給我
我幫妳看看
 回复 引用 查看   

#12楼 2008-06-18 18:50 海少[未注册用户]

很好!
我正在试验!
 回复 引用   

#13楼 2008-06-18 19:07 海少[未注册用户]

选了LCD_16207_0,可以运行成功了
 回复 引用   

#14楼 2008-08-13 20:58 daianxwj[未注册用户]

久闻楼主大名,今日一见果然不同凡响(老师引荐),正在学习DE2开发板,
对NiosII尤感兴趣,肯定会烦劳楼主,希望不吝赐教!!!
 回复 引用   

#15楼 2008-08-13 21:04 daianxwj[未注册用户]

我想问问楼主,以您的经验来看,NiosII的发展前景如何!!!  回复 引用   

#16楼[楼主] 2008-08-13 21:37 真 OO无双      

--引用--------------------------------------------------
daianxwj: 久闻楼主大名,今日一见果然不同凡响(老师引荐),正在学习DE2开发板,
对NiosII尤感兴趣,肯定会烦劳楼主,希望不吝赐教!!!
--------------------------------------------------------

我也是初學者而已
大家一起討論
 回复 引用 查看   

#17楼[楼主] 2008-08-13 21:40 真 OO无双      

--引用--------------------------------------------------
daianxwj: 我想问问楼主,以您的经验来看,NiosII的发展前景如何!!!
--------------------------------------------------------

前途不知道
但Nios II門檻高,業界可能寧願選擇ARM
1.電子科班的:會RTL,但不會OS與Driver
2.計算機科班的:會Driver與OS,但不會RTL

所以都各有一塊學習的盲點

不過Nios II相當有趣就是了 :D
 回复 引用 查看   

#18楼 2008-08-14 22:15 dalianxwj[未注册用户]

明白楼主的意思了,NiosII是集软硬件之大成者,学精很难,对吧?
我是电子系的,呵呵!!
 回复 引用   

#19楼 2008-12-29 20:53 coool29      

我在做16*2 LCD 控制时,用SOPC见了个只有CPU/JTAG/LCD的小系统,在IDE上运行Hello world总是显示:
Using cable "ByteBlasterII [LPT1]", device 1, instance 0x00
Pausing target processor: OK
Initializing CPU cache (if present)
OK

Downloading 00800000 ( 0%)
Downloaded 24KB in 0.7s (34.2KB/s)

Verifying 00800000 ( 0%)
Verified OK
Leaving target processor paused
因为FPGA容量有限,我用了SDRAM,并用PLL做了62dev延时,现在不再出现Verified failed了。
但还是看不见LCD上有字符显示。
恳请萧兄指教。
 回复 引用 查看   

#20楼 2009-04-17 00:51 mike99[未注册用户]

请问 lcd_on lcd_blon这两个管脚怎么处理?
 回复 引用   

#21楼 2009-05-06 03:00 hsf[未注册用户]

前辈,你好!我在用着DE2做LCD显示实验。是在SOPC上添加LCD组件的。系统生成成功,整个系统编译也成功,也能点亮LCD。在NIOS II IDE 环境进行编译也成功,把程序下载下去后,发现数码管能正确显示,但是LCD就没反应,就一直是点亮状态。使用前辈的例程是成功的,而我自己动手添加的却不行,不知什么原因,请前辈帮我看看。谢谢!我的邮箱,hsfzx@126.com  回复 引用   

#22楼[楼主] 2009-05-06 07:33 真 OO无双      

--引用--------------------------------------------------
hsf: 前辈,你好!我在用着DE2做LCD显示实验。是在SOPC上添加LCD组件的。系统生成成功,整个系统编译也成功,也能点亮LCD。在NIOS II IDE 环境进行编译也成功,把程序下载下去后,发现数码管能正确显示,但是LCD就没反应,就一直是点亮状态。使用前辈的例程是成功的,而我自己动手添加的却不行,不知什么原因,请前辈帮我看看。谢谢!我的邮箱,hsfzx@126.com
--------------------------------------------------------

你把code寄給我看看
 回复 引用 查看   

#23楼 2009-09-25 11:10 ( ⊙o⊙ )哇倪      

博主你好:
我有ALTERA-DE2官方开发板的配套摄像头模组和液晶显示模组,有配套的图像采集显示全部源码和和相应的技术支持,可以根据你的要求更换相应型号的sensor,比如OV系列和美光系列。所有模组7天包退,1年保修。想要的话联系我:
QQ: 50186788 注明:DE2
Email: hzh1024n@163.com
博客:http://blog.ednchina.com/hzh1024n/

 回复 引用 查看   

导航

公告

emblem-2010

first2009-011

我是一個小小的數位IC工程師,從事SOC IP開發,業餘則喜歡研究FPGA、Embedded System、OS、MFC、NET與OOP相關技術。我並不是靠寫Blog或寫書維生,只是記下來怕自己忘記,所以不加任何廣告。所有文章與程式碼歡迎轉載使用。

昵称:真 OO无双
园龄:5年4个月
粉丝:281
关注:0

随笔分类(2100)