PART ONE
方案講解
- 效果展示 -
1硬件選擇
1. 顯示屏:0.96寸OLED顯示屏
2. 國(guó)產(chǎn)FPGA:HME_P1P060_EVB開(kāi)發(fā)板(米聯(lián)客)
2FUXI工程建立
1. 軟件安裝
FUXI軟件安裝可以通過(guò)京微齊力官網(wǎng)下載安裝包,并申請(qǐng)License。
注意一下:FUXI軟件在導(dǎo)入License碼的時(shí)候,最后一格可能會(huì)自動(dòng)出現(xiàn)一個(gè)空格,這個(gè)空格要去掉,不然會(huì)注冊(cè)失敗。
2. 建立工程(初學(xué)者指南)
1)雙擊圖標(biāo),點(diǎn)擊Create Project,建立新工程
2)完成三個(gè)地方,路徑,工程名,頂層模塊。
3)選P1系列、32417芯片。點(diǎn)擊finish
4)工程建完,編寫(xiě)Verilog文件
5)添加PLL IP核
注意:FUXI跟其他軟件不一樣,PLL IP在列表里面是全稱(chēng):Phase-Locked Loop (v1.0b)。不要傻傻的找PLL,找不到的。
這個(gè)就是PLL IP。
6)例化IP核
開(kāi)發(fā)板底板那個(gè)100Mhz的時(shí)鐘是用不了的,得用核心板的25Mhz的。工程需要50Mhz的,所以例化了一根PLL IP。
7)綜合RTL文件
8)分配IP約束
9)按第7步,選Rerun Project,綜合整個(gè)工程
10)燒錄
記得點(diǎn)擊Refresh刷新燒錄文件。
PART TWO
OLED顯示流程
其實(shí)很多人看文章,都是想弄清楚流程,但是很多博主寫(xiě)文章又是這一塊那一塊,有頭沒(méi)尾的,筆者也是深有體會(huì),這里就跟大家大概捋一下流程:
上電做初始化(配置一些寄存器)→寫(xiě)IIC驅(qū)動(dòng)模塊(讀寫(xiě)操作)→清屏→點(diǎn)亮屏幕→寫(xiě)入數(shù)據(jù)
FPGA模塊:
頂層模塊:JWQL_oled_v2_top
屏幕清除模塊:Oled_Clear
IIC驅(qū)動(dòng)模塊:I2C_Master
屏幕全亮模塊:Oled_On
顯示控制模塊:Oled_Show_control
信息緩存區(qū)模塊:font_data
1IIC驅(qū)動(dòng) >>
IIC即Inter-Integrated Circuit(集成電路總線(xiàn)),是由Philips半導(dǎo)體公司(現(xiàn)在的NXP半導(dǎo)體公司)在八十年代初設(shè)計(jì)出來(lái)的一種簡(jiǎn)單、雙向、二線(xiàn)制總線(xiàn)標(biāo)準(zhǔn)。多用于主機(jī)和從機(jī)在數(shù)據(jù)量不大且傳輸距離短的場(chǎng)合下的主從通信。主機(jī)啟動(dòng)總線(xiàn),并產(chǎn)生時(shí)鐘用于傳送數(shù)據(jù),此時(shí)任何接收數(shù)據(jù)的器件均被認(rèn)為是從機(jī)。
I2C總線(xiàn)由數(shù)據(jù)線(xiàn)SDA和時(shí)鐘線(xiàn)SCL構(gòu)成通信線(xiàn)路,既可用于發(fā)送數(shù)據(jù),也可接收數(shù)據(jù)。在主控與被控IC之間可進(jìn)行雙向數(shù)據(jù)傳送,數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s,在快速模式下可達(dá)400kbit/s,在高速模式下可達(dá)3.4Mbit/s,各種被控器件均并聯(lián)在總線(xiàn)上,通過(guò)器件地址識(shí)別。
I2C_SCL是串行時(shí)鐘線(xiàn),I2C_SDA是串行數(shù)據(jù)線(xiàn),由于I2C器件一般采用開(kāi)漏結(jié)構(gòu)與總線(xiàn)相連,所以I2C_SCL和I2C_SDA均需接上拉電阻,也正因此,當(dāng)總線(xiàn)空閑時(shí),這兩條線(xiàn)路都 處于高電平狀態(tài),當(dāng)連到總線(xiàn)上的任一器件輸出低電平,都將使總線(xiàn)拉低,即各器件的SDA及 SCL都是“線(xiàn)與”關(guān)系。
I2C總線(xiàn)支持多主和主從兩種工作方式,通常工作在主從工作方式,我們的開(kāi)發(fā)板就采用主從工作方式。在主從工作方式中,系統(tǒng)中只有一個(gè)主機(jī),其它器件都是具有I2C總線(xiàn)的外圍從機(jī)。在主從工作方式中,主機(jī)啟動(dòng)數(shù)據(jù)的發(fā)送(發(fā)出啟動(dòng)信號(hào))并產(chǎn)生時(shí)鐘信號(hào),數(shù)據(jù)發(fā)送完成后,發(fā)出停止信號(hào)。
I2C總線(xiàn)結(jié)構(gòu)雖然簡(jiǎn)單,使用兩線(xiàn)傳輸,然而要實(shí)現(xiàn)器件間的通信,需要通過(guò)控制SCL和SDA的時(shí)序,使其滿(mǎn)足I2C的總線(xiàn)傳輸協(xié)議,方可實(shí)現(xiàn)器件間的數(shù)據(jù)傳輸。那么I2C協(xié)議的時(shí)序是怎樣的呢?
在I2C器件開(kāi)始通信(傳輸數(shù)據(jù))之前,串行時(shí)鐘線(xiàn)SCL和串行數(shù)據(jù)線(xiàn)SDA線(xiàn)由于上拉的原因處于高電平狀態(tài),此時(shí)I2C總線(xiàn)處于空閑狀態(tài)。如果主機(jī)(此處指FPGA)想開(kāi)始傳輸數(shù)據(jù),只需在SCL為高電平時(shí)將SDA線(xiàn)拉低,產(chǎn)生一個(gè)起始信號(hào),從機(jī)檢測(cè)到起始信號(hào)后,準(zhǔn)備接收數(shù)據(jù),當(dāng)數(shù)據(jù)傳輸完成,主機(jī)只需產(chǎn)生一個(gè)停止信號(hào),告訴從機(jī)數(shù)據(jù)傳輸結(jié)束,停止信號(hào)的產(chǎn)生是在SCL為高電平時(shí),SDA從低電平跳變到高電平,從機(jī)檢測(cè)到停止信號(hào)后,停止接收數(shù)據(jù)。
I2C整體時(shí)序如下圖。起始信號(hào)之前為空閑狀態(tài),起始信號(hào)之后到停止信號(hào)之前的這一段為數(shù)據(jù)傳輸狀態(tài),主機(jī)可以向從機(jī)寫(xiě)數(shù)據(jù),也可以讀取從機(jī)輸出的數(shù)據(jù),數(shù)據(jù)的傳輸由雙向數(shù)據(jù)線(xiàn)(SDA)完成。停止信號(hào)產(chǎn)生后,總線(xiàn)再次處于空閑狀態(tài)。
2屏幕清除 >>
3字符獲取 >>
使用PCtoLCD2002完美版軟件,設(shè)置按下面的設(shè)置。(字符提取軟件作者跟工程放一起,下載了,既可用)
4字符顯示 >>
16x16大小的字符會(huì)占用兩個(gè)page,每個(gè)page占用16列。所以可以將OLED看成只有2x16大小,這就和OLED清屏是一樣的了。
設(shè)置page之后,再設(shè)置列地址,每輸入一個(gè)數(shù)據(jù),列地址會(huì)自動(dòng)加一,字符數(shù)據(jù)的顯示可以分為以下過(guò)程:
設(shè)置page,設(shè)置列地址,寫(xiě)入16個(gè)數(shù)據(jù)
設(shè)置page+1,設(shè)置列地址,寫(xiě)入16個(gè)數(shù)據(jù)。一共是寫(xiě)入2+16+2+16個(gè)數(shù)據(jù),這樣就完成了一個(gè)字符的顯示。show_page的值為0或1。
PART THREE
完整工程獲取
FPGA:0.96寸oled字符顯示(可直接運(yùn)行)
工程獲取
工程是用國(guó)產(chǎn)京微齊力的HME_P1P060板子做的,可以做移植,只需要在quartus或者vivado建立工程,把代碼放進(jìn)去綜合即可。(除了源碼工程,還有字符提取軟件)
鳴謝:本工程參考FPGA之旅開(kāi)源工程,在此特地鳴謝,希望FPGA之旅越來(lái)越好。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1642文章
21920瀏覽量
612003 -
OLED
+關(guān)注
關(guān)注
119文章
6253瀏覽量
226539 -
顯示屏
+關(guān)注
關(guān)注
28文章
4562瀏覽量
75709 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5389瀏覽量
100900 -
字符顯示
+關(guān)注
關(guān)注
0文章
4瀏覽量
5047
原文標(biāo)題:京微齊力:基于HME_P060的OLED字符顯示(及FUXI工程建立演示)
文章出處:【微信號(hào):HME-FPGA,微信公眾號(hào):HME京微齊力】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于STM8/32的12832OLED點(diǎn)陣字符顯示
OLED顯示流程(簡(jiǎn)析)
oled驅(qū)動(dòng)程序如何顯示變化的字符串?
60W輔助電源演示板CRD-060DD12P
OLED標(biāo)準(zhǔn)ASCII字符串顯示函數(shù)重定義
基于stm32f103與IIC的0.96OLED屏幕顯示字符與平滑滾動(dòng)顯示 精選資料推薦
OLED 7針接口演示例程
如何用STM32建立工程實(shí)現(xiàn)OLED的數(shù)據(jù)顯示
怎樣使用STM32在0.96寸OLED顯示屏上實(shí)現(xiàn)字符滾動(dòng)呢
LCD1602字符液晶滾動(dòng)演示程序和工程文件免費(fèi)下載

串行字符液晶演示的程序和工程文件免費(fèi)下載

評(píng)論