0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于HME_P060的OLED字符顯示及FUXI工程建立演示

HME京微齊力 ? 來源:HME京微齊力 ? 2023-06-19 10:21 ? 次閱讀

PART ONE

方案講解

- 效果展示 -

1硬件選擇

1. 顯示屏:0.96寸OLED顯示屏

2. 國產(chǎn)FPGA:HME_P1P060_EVB開發(fā)板(米聯(lián)客)

a136136c-0c2f-11ee-962d-dac502259ad0.png

2FUXI工程建立

1. 軟件安裝

FUXI軟件安裝可以通過京微齊力官網(wǎng)下載安裝包,并申請License。

注意一下:FUXI軟件在導(dǎo)入License碼的時候,最后一格可能會自動出現(xiàn)一個空格,這個空格要去掉,不然會注冊失敗。

2. 建立工程(初學(xué)者指南)

1)雙擊圖標(biāo),點(diǎn)擊Create Project,建立新工程

a15888c0-0c2f-11ee-962d-dac502259ad0.png

2)完成三個地方,路徑,工程名,頂層模塊。

a1821460-0c2f-11ee-962d-dac502259ad0.png

3)選P1系列、32417芯片。點(diǎn)擊finish

a191f16e-0c2f-11ee-962d-dac502259ad0.png

4)工程建完,編寫Verilog文件

a1b0c31e-0c2f-11ee-962d-dac502259ad0.png

5)添加PLL IP核

注意:FUXI跟其他軟件不一樣,PLL IP在列表里面是全稱:Phase-Locked Loop (v1.0b)。不要傻傻的找PLL,找不到的。

a1d85d20-0c2f-11ee-962d-dac502259ad0.png

這個就是PLL IP。

a2090164-0c2f-11ee-962d-dac502259ad0.png

6)例化IP核

開發(fā)板底板那個100Mhz的時鐘是用不了的,得用核心板的25Mhz的。工程需要50Mhz的,所以例化了一根PLL IP。

a21bdac8-0c2f-11ee-962d-dac502259ad0.png

7)綜合RTL文件

a22e516c-0c2f-11ee-962d-dac502259ad0.png

8)分配IP約束

a259aef2-0c2f-11ee-962d-dac502259ad0.png

9)按第7步,選Rerun Project,綜合整個工程

10)燒錄

a28c2c24-0c2f-11ee-962d-dac502259ad0.png

記得點(diǎn)擊Refresh刷新燒錄文件。

a2a40b0a-0c2f-11ee-962d-dac502259ad0.png

PART TWO

OLED顯示流程

其實(shí)很多人看文章,都是想弄清楚流程,但是很多博主寫文章又是這一塊那一塊,有頭沒尾的,筆者也是深有體會,這里就跟大家大概捋一下流程:

上電做初始化(配置一些寄存器)→寫IIC驅(qū)動模塊(讀寫操作)→清屏→點(diǎn)亮屏幕→寫入數(shù)據(jù)

FPGA模塊:
頂層模塊:JWQL_oled_v2_top
屏幕清除模塊:Oled_Clear
IIC驅(qū)動模塊:I2C_Master
屏幕全亮模塊:Oled_On
顯示控制模塊:Oled_Show_control
信息緩存區(qū)模塊:font_data

1IIC驅(qū)動 >>

IIC即Inter-Integrated Circuit(集成電路總線),是由Philips半導(dǎo)體公司(現(xiàn)在的NXP半導(dǎo)體公司)在八十年代初設(shè)計(jì)出來的一種簡單、雙向、二線制總線標(biāo)準(zhǔn)。多用于主機(jī)和從機(jī)在數(shù)據(jù)量不大且傳輸距離短的場合下的主從通信。主機(jī)啟動總線,并產(chǎn)生時鐘用于傳送數(shù)據(jù),此時任何接收數(shù)據(jù)的器件均被認(rèn)為是從機(jī)。

I2C總線由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成通信線路,既可用于發(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)在總線上,通過器件地址識別。

I2C_SCL是串行時鐘線,I2C_SDA是串行數(shù)據(jù)線,由于I2C器件一般采用開漏結(jié)構(gòu)與總線相連,所以I2C_SCL和I2C_SDA均需接上拉電阻,也正因此,當(dāng)總線空閑時,這兩條線路都 處于高電平狀態(tài),當(dāng)連到總線上的任一器件輸出低電平,都將使總線拉低,即各器件的SDA及 SCL都是“線與”關(guān)系。

I2C總線支持多主和主從兩種工作方式,通常工作在主從工作方式,我們的開發(fā)板就采用主從工作方式。在主從工作方式中,系統(tǒng)中只有一個主機(jī),其它器件都是具有I2C總線的外圍從機(jī)。在主從工作方式中,主機(jī)啟動數(shù)據(jù)的發(fā)送(發(fā)出啟動信號)并產(chǎn)生時鐘信號,數(shù)據(jù)發(fā)送完成后,發(fā)出停止信號。

I2C總線結(jié)構(gòu)雖然簡單,使用兩線傳輸,然而要實(shí)現(xiàn)器件間的通信,需要通過控制SCL和SDA的時序,使其滿足I2C的總線傳輸協(xié)議,方可實(shí)現(xiàn)器件間的數(shù)據(jù)傳輸。那么I2C協(xié)議的時序是怎樣的呢?

在I2C器件開始通信(傳輸數(shù)據(jù))之前,串行時鐘線SCL和串行數(shù)據(jù)線SDA線由于上拉的原因處于高電平狀態(tài),此時I2C總線處于空閑狀態(tài)。如果主機(jī)(此處指FPGA)想開始傳輸數(shù)據(jù),只需在SCL為高電平時將SDA線拉低,產(chǎn)生一個起始信號,從機(jī)檢測到起始信號后,準(zhǔn)備接收數(shù)據(jù),當(dāng)數(shù)據(jù)傳輸完成,主機(jī)只需產(chǎn)生一個停止信號,告訴從機(jī)數(shù)據(jù)傳輸結(jié)束,停止信號的產(chǎn)生是在SCL為高電平時,SDA從低電平跳變到高電平,從機(jī)檢測到停止信號后,停止接收數(shù)據(jù)。

I2C整體時序如下圖。起始信號之前為空閑狀態(tài),起始信號之后到停止信號之前的這一段為數(shù)據(jù)傳輸狀態(tài),主機(jī)可以向從機(jī)寫數(shù)據(jù),也可以讀取從機(jī)輸出的數(shù)據(jù),數(shù)據(jù)的傳輸由雙向數(shù)據(jù)線(SDA)完成。停止信號產(chǎn)生后,總線再次處于空閑狀態(tài)。

a2e4882e-0c2f-11ee-962d-dac502259ad0.png

2屏幕清除 >>

a3031a46-0c2f-11ee-962d-dac502259ad0.pnga323985c-0c2f-11ee-962d-dac502259ad0.png

3字符獲取 >>

使用PCtoLCD2002完美版軟件,設(shè)置按下面的設(shè)置。(字符提取軟件作者跟工程放一起,下載了,既可用)

a3598dea-0c2f-11ee-962d-dac502259ad0.png

4字符顯示 >>

16x16大小的字符會占用兩個page,每個page占用16列。所以可以將OLED看成只有2x16大小,這就和OLED清屏是一樣的了。

設(shè)置page之后,再設(shè)置列地址,每輸入一個數(shù)據(jù),列地址會自動加一,字符數(shù)據(jù)的顯示可以分為以下過程:

設(shè)置page,設(shè)置列地址,寫入16個數(shù)據(jù)

設(shè)置page+1,設(shè)置列地址,寫入16個數(shù)據(jù)。一共是寫入2+16+2+16個數(shù)據(jù),這樣就完成了一個字符的顯示。show_page的值為0或1。

a37961a6-0c2f-11ee-962d-dac502259ad0.png

PART THREE

完整工程獲取

FPGA:0.96寸oled字符顯示(可直接運(yùn)行)

工程獲取

工程是用國產(chǎn)京微齊力的HME_P1P060板子做的,可以做移植,只需要在quartus或者vivado建立工程,把代碼放進(jìn)去綜合即可。(除了源碼工程,還有字符提取軟件)

鳴謝:本工程參考FPGA之旅開源工程,在此特地鳴謝,希望FPGA之旅越來越好。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603319
  • OLED
    +關(guān)注

    關(guān)注

    119

    文章

    6200

    瀏覽量

    224195
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4488

    瀏覽量

    74291
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5050

    瀏覽量

    97456
  • 字符顯示
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    4993

原文標(biāo)題:京微齊力:基于HME_P060的OLED字符顯示(及FUXI工程建立演示)

文章出處:【微信號:HME-FPGA,微信公眾號:HME京微齊力】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于STM8/32的12832OLED點(diǎn)陣字符顯示

    `` 本帖最后由 文流座客 于 2015-10-12 14:18 編輯 基于STM8/32的12832OLED點(diǎn)陣字符顯示 本方案主控采用STM32L051,顯示屏0.91寸128
    發(fā)表于 10-12 09:56

    OLED顯示流程(簡析)

    ,u8 y,const u8 *p);2、這個字符顯示函數(shù)通過指針*p不斷調(diào)用字符顯示函數(shù):v
    發(fā)表于 05-07 20:26

    oled驅(qū)動程序如何顯示變化的字符串?

    OLED_showString(10,2,"V=3.5m/s",16); //顯示字符串 問題:oled驅(qū)動程序顯示
    發(fā)表于 10-25 16:42

    60W輔助電源演示板CRD-060DD12P

    CRD-060DD12P,用于單端反激式轉(zhuǎn)換器設(shè)計(jì)的演示板,采用市售的1700V碳化硅(SiC)MOSFET,取代傳統(tǒng)的雙開關(guān)反激式轉(zhuǎn)換器,用于三相應(yīng)用的高壓輸入輔助電源。演示板不是專為產(chǎn)品而設(shè)計(jì)的,僅用作評估Cree開關(guān)設(shè)備性
    發(fā)表于 04-30 07:42

    OLED標(biāo)準(zhǔn)ASCII字符顯示函數(shù)重定義

    如下圖所示,是一組顯示6*8一組標(biāo)準(zhǔn)ASCII字符顯示的坐標(biāo)(x,y),y為頁范圍0~7的代碼void OLED_P6x8Str(unsigned char x, y,unsign
    發(fā)表于 05-22 05:55

    基于stm32f103與IIC的0.96OLED屏幕顯示字符與平滑滾動顯示 精選資料推薦

    基于stm32f103與IIC的0.96OLED屏幕驅(qū)動一、0.96OLED屏幕簡介1、類型區(qū)分及接線2、IIC通信原理二、正常顯示與平滑滾動顯示1、
    發(fā)表于 08-24 06:42

    OLED 7針接口演示例程

    OLED 7針接口演示例程(51系列)GND 電源地VCC接5V或3.3v電源D0P1^0(SCL)D1P1^1(SDA)RES接P12DC
    發(fā)表于 11-17 06:54

    怎樣通過OLED模塊去顯示字符

    OLED是什么?OLED模塊有哪些特點(diǎn)?怎樣通過OLED模塊去顯示字符呢?
    發(fā)表于 01-19 07:00

    如何用STM32建立工程實(shí)現(xiàn)OLED的數(shù)據(jù)顯示

    進(jìn)行對SPI串口的通信的學(xué)習(xí),進(jìn)而用STM32建立工程實(shí)現(xiàn)OLED的數(shù)據(jù)顯示
    發(fā)表于 02-09 07:57

    怎樣使用STM32在0.96寸OLED顯示屏上實(shí)現(xiàn)字符滾動呢

    使用STM32在0.96寸OLED顯示屏上實(shí)現(xiàn)字符滾動一、初識OLED屏滾動命令二、對所需顯示文本取模三、主要代碼四、效果展示五、參考資料、
    發(fā)表于 02-24 07:25

    LCD1602字符液晶滾動演示程序和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是LCD1602字符液晶滾動演示程序和工程文件免費(fèi)下載。
    發(fā)表于 09-02 16:00 ?32次下載
    LCD1602<b class='flag-5'>字符</b>液晶滾動<b class='flag-5'>演示</b>程序和<b class='flag-5'>工程</b>文件免費(fèi)下載

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是串行字符液晶演示的程序和工程文件免費(fèi)下載。
    發(fā)表于 09-03 17:34 ?0次下載
    串行<b class='flag-5'>字符</b>液晶<b class='flag-5'>演示</b>的程序和<b class='flag-5'>工程</b>文件免費(fèi)下載

    LCD1602字符液晶滾動演示程序和工程文件

    本文檔的主要內(nèi)容詳細(xì)介紹的是LCD1602字符液晶滾動演示程序和工程文件免費(fèi)下載。
    發(fā)表于 12-21 08:00 ?2次下載

    STM32開發(fā)基于SPI接口的OLED數(shù)據(jù)顯示

    進(jìn)行對SPI串口的通信的學(xué)習(xí),進(jìn)而用STM32建立工程實(shí)現(xiàn)OLED的數(shù)據(jù)顯示
    發(fā)表于 12-05 16:06 ?21次下載
    STM32開發(fā)基于SPI接口的<b class='flag-5'>OLED</b>數(shù)據(jù)<b class='flag-5'>顯示</b>

    如何在OLED上實(shí)現(xiàn)字符顯示

    這是FPGA之旅的第十一例了。在前面的例子中,已經(jīng)對OLED有了一個基礎(chǔ)的了解,本例將介紹如何在OLED上實(shí)現(xiàn)字符顯示,為后面的例程做準(zhǔn)備。
    的頭像 發(fā)表于 09-06 09:02 ?5086次閱讀