0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

HME京微齐力 来源:HME京微齐力 2023-06-19 10:21 次阅读

PART ONE

方案讲解

- 效果展示 -

1硬件选择

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

2. 国产FPGA:HME_P1P060_EVB开发板(米联客)

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

2FUXI工程建立

1. 软件安装

FUXI软件安装可以通过京微齐力官网下载安装包,并申请License。

注意一下:FUXI软件在导入License码的时候,最后一格可能会自动出现一个空格,这个空格要去掉,不然会注册失败。

2. 建立工程(初学者指南)

1)双击图标,点击Create Project,建立新工程

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

2)完成三个地方,路径,工程名,顶层模块。

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

3)选P1系列、32417芯片。点击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核

开发板底板那个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

记得点击Refresh刷新烧录文件。

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

PART TWO

OLED显示流程

其实很多人看文章,都是想弄清楚流程,但是很多博主写文章又是这一块那一块,有头没尾的,笔者也是深有体会,这里就跟大家大概捋一下流程:

上电做初始化(配置一些寄存器)→写IIC驱动模块(读写操作)→清屏→点亮屏幕→写入数据

FPGA模块:
顶层模块:JWQL_oled_v2_top
屏幕清除模块:Oled_Clear
IIC驱动模块:I2C_Master
屏幕全亮模块:Oled_On
显示控制模块:Oled_Show_control
信息缓存区模块:font_data

1IIC驱动 >>

IIC即Inter-Integrated Circuit(集成电路总线),是由Philips半导体公司(现在的NXP半导体公司)在八十年代初设计出来的一种简单、双向、二线制总线标准。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信。主机启动总线,并产生时钟用于传送数据,此时任何接收数据的器件均被认为是从机。

I2C总线由数据线SDA和时钟线SCL构成通信线路,既可用于发送数据,也可接收数据。在主控与被控IC之间可进行双向数据传送,数据的传输速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s,各种被控器件均并联在总线上,通过器件地址识别。

I2C_SCL是串行时钟线,I2C_SDA是串行数据线,由于I2C器件一般采用开漏结构与总线相连,所以I2C_SCL和I2C_SDA均需接上拉电阻,也正因此,当总线空闲时,这两条线路都 处于高电平状态,当连到总线上的任一器件输出低电平,都将使总线拉低,即各器件的SDA及 SCL都是“线与”关系。

I2C总线支持多主和主从两种工作方式,通常工作在主从工作方式,我们的开发板就采用主从工作方式。在主从工作方式中,系统中只有一个主机,其它器件都是具有I2C总线的外围从机。在主从工作方式中,主机启动数据的发送(发出启动信号)并产生时钟信号,数据发送完成后,发出停止信号。

I2C总线结构虽然简单,使用两线传输,然而要实现器件间的通信,需要通过控制SCL和SDA的时序,使其满足I2C的总线传输协议,方可实现器件间的数据传输。那么I2C协议的时序是怎样的呢?

在I2C器件开始通信(传输数据)之前,串行时钟线SCL和串行数据线SDA线由于上拉的原因处于高电平状态,此时I2C总线处于空闲状态。如果主机(此处指FPGA)想开始传输数据,只需在SCL为高电平时将SDA线拉低,产生一个起始信号,从机检测到起始信号后,准备接收数据,当数据传输完成,主机只需产生一个停止信号,告诉从机数据传输结束,停止信号的产生是在SCL为高电平时,SDA从低电平跳变到高电平,从机检测到停止信号后,停止接收数据。

I2C整体时序如下图。起始信号之前为空闲状态,起始信号之后到停止信号之前的这一段为数据传输状态,主机可以向从机写数据,也可以读取从机输出的数据,数据的传输由双向数据线(SDA)完成。停止信号产生后,总线再次处于空闲状态。

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

2屏幕清除 >>

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

3字符获取 >>

使用PCtoLCD2002完美版软件,设置按下面的设置。(字符提取软件作者跟工程放一起,下载了,既可用)

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

4字符显示 >>

16x16大小的字符会占用两个page,每个page占用16列。所以可以将OLED看成只有2x16大小,这就和OLED清屏是一样的了。

设置page之后,再设置列地址,每输入一个数据,列地址会自动加一,字符数据的显示可以分为以下过程:

设置page,设置列地址,写入16个数据

设置page+1,设置列地址,写入16个数据。一共是写入2+16+2+16个数据,这样就完成了一个字符的显示。show_page的值为0或1。

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

PART THREE

完整工程获取

FPGA:0.96寸oled字符显示(可直接运行)

工程获取

工程是用国产京微齐力的HME_P1P060板子做的,可以做移植,只需要在quartus或者vivado建立工程,把代码放进去综合即可。(除了源码工程,还有字符提取软件)

鸣谢:本工程参考FPGA之旅开源工程,在此特地鸣谢,希望FPGA之旅越来越好。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21325

    浏览量

    593216
  • OLED
    +关注

    关注

    118

    文章

    5986

    浏览量

    221465
  • 显示屏
    +关注

    关注

    28

    文章

    4229

    浏览量

    72675
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94017
  • 字符显示
    +关注

    关注

    0

    文章

    4

    浏览量

    4969

原文标题:京微齐力:基于HME_P060的OLED字符显示(及FUXI工程建立演示)

文章出处:【微信号:HME-FPGA,微信公众号:HME京微齐力】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于STM8/32的12832OLED点阵字符显示

    `` 本帖最后由 文流座客 于 2015-10-12 14:18 编辑 基于STM8/32的12832OLED点阵字符显示 本方案主控采用STM32L051,显示屏0.91寸128
    发表于 10-12 09:56

    OLED显示流程(简析)

    ,u8 y,const u8 *p);2、这个字符显示函数通过指针*p不断调用字符显示函数:v
    发表于 05-07 20:26

    oled驱动程序如何显示变化的字符串?

    OLED_showString(10,2,"V=3.5m/s",16); //显示字符串 问题:oled驱动程序显示
    发表于 10-25 16:42

    60W辅助电源演示板CRD-060DD12P

    CRD-060DD12P,用于单端反激式转换器设计的演示板,采用市售的1700V碳化硅(SiC)MOSFET,取代传统的双开关反激式转换器,用于三相应用的高压输入辅助电源。演示板不是专为产品而设计的,仅用作评估Cree开关设备性
    发表于 04-30 07:42

    OLED标准ASCII字符显示函数重定义

    如下图所示,是一组显示6*8一组标准ASCII字符显示的坐标(x,y),y为页范围0~7的代码void OLED_P6x8Str(unsigned char x, y,unsign
    发表于 05-22 05:55

    基于stm32f103与IIC的0.96OLED屏幕显示字符与平滑滚动显示 精选资料推荐

    基于stm32f103与IIC的0.96OLED屏幕驱动一、0.96OLED屏幕简介1、类型区分及接线2、IIC通信原理二、正常显示与平滑滚动显示1、
    发表于 08-24 06:42

    OLED 7针接口演示例程

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

    怎样通过OLED模块去显示字符

    OLED是什么?OLED模块有哪些特点?怎样通过OLED模块去显示字符呢?
    发表于 01-19 07:00

    如何用STM32建立工程实现OLED的数据显示

    进行对SPI串口的通信的学习,进而用STM32建立工程实现OLED的数据显示
    发表于 02-09 07:57

    怎样使用STM32在0.96寸OLED显示屏上实现字符滚动呢

    使用STM32在0.96寸OLED显示屏上实现字符滚动一、初识OLED屏滚动命令二、对所需显示文本取模三、主要代码四、效果展示五、参考资料、
    发表于 02-24 07:25

    串行字符液晶演示的程序和工程文件免费下载

    本文档的主要内容详细介绍的是串行字符液晶演示的程序和工程文件免费下载。
    发表于 09-03 17:34 0次下载
    串行<b class='flag-5'>字符</b>液晶<b class='flag-5'>演示</b>的程序和<b class='flag-5'>工程</b>文件免费下载

    LCD1602字符液晶滚动演示程序和工程文件

    本文档的主要内容详细介绍的是LCD1602字符液晶滚动演示程序和工程文件免费下载。
    发表于 12-21 08:00 0次下载

    使用STM32在0.96寸OLED显示屏上实现字符滚动

    使用STM32在0.96寸OLED显示屏上实现字符滚动一、初识OLED屏滚动命令二、对所需显示文本取模三、主要代码四、效果展示五、参考资料、
    发表于 01-12 17:25 16次下载
    使用STM32在0.96寸<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>屏上实现<b class='flag-5'>字符</b>滚动

    如何在OLED上实现字符显示

    这是FPGA之旅的第十一例了。在前面的例子中,已经对OLED有了一个基础的了解,本例将介绍如何在OLED上实现字符显示,为后面的例程做准备。
    的头像 发表于 09-06 09:02 3989次阅读

    基于京微齐力HME-M5 FPGA的呼吸机显示方案

    在本篇文章中,国芯思辰主要给大家介绍基于京微齐力HME-M5FPGA的呼吸机显示方案,HME-M5的呼吸机显示方案京微齐力HME-M5FPG
    的头像 发表于 05-06 11:05 434次阅读
    基于京微齐力<b class='flag-5'>HME</b>-M5 FPGA的呼吸机<b class='flag-5'>显示</b>方案