LCD12864引脚如下:

FPGA开发板得提供,3.3v电压,5v电压,普通io都是3.3v电压

DB:数据脚,得用双向io,因为程序里面需要读取液晶的应答(普通io3.3v可以)

E:?输出引脚即可,普通io3.3v可以

RW:?输出引脚即可,普通io3.3v可以

RS:?输出引脚即可,普通io3.3v可以

PSB:串行还是并行,接+5v为并行,0v为串行,这个不能悬空,而且一定要接+5v(接3.3v行不行,没有测试,不敢乱说)

V0:这个是控制屏幕显示对比度的,接5v为最高对比度,0v为最低对比度,但是这样根本看不出来屏幕有显示,很坑,还以为是驱动程序没写对,所以最好直接接+5v,先保证屏幕一些正常,把程序调试正确,最后再来调一下对比度即可,即调这个引脚的电压值。其实这个引脚悬空也行,因为lcd12864背后自带了一个电位器,可以调,拧紧的方向为增强对比度,而且很灵敏,调一点点即可,对比度高,屏幕明显看起来有紫红色,对比度太低甚至不显示的程度,屏幕看起来是淡蓝色

VCC:+5v,记住:不能接3.3v,只能5v(这个问题坑了我一天时间,我以为跟数据脚用一样的3.3v就可以,其实不行)

GND:0V但是我发现接不接好像都可以,挺奇怪的,但是最好接上吧

BLA:背光板的正极,+5v,3.3v都可以,只是亮度不同,不影响时序以及应答,不接也行,就没有背光了而已

BLK:背光板负极,0v

?

首先保证以上引脚电压都接正确,否则程序正确了也没有显示,而且不会应答,程序陷入死循环!!!比如,我就是把vcc接了+3.3v,被这个问题整整搞了大半天,心累!!!手头也没有万用表,示波器等高端设备,自己也只有通过一根线连接这个引脚和一个led来测试哪个引脚电平的高低,一点点尝试,怀疑每一个地方,第二天中午12.30,失败了156次后,正准备放弃的时候,稀里糊涂的换了一下VCC引脚为5V,结果程序竟然跑起来了,显示也正确了,你知道我当时有多开心吗,比中了一个亿还开心,真想告诉全世界!!!那种无数次失败后成功的喜悦,真的是太好了!所以这里想告诉大家,失败是成功之母,经历了无数次失败后,你已经积累了大量的知识,阅历和运气,只要你肯坚持下去,你一定会成功的!

?

下面是我的FPGA?nios?驱动12864的程序:(我为什么不上传呢,因为这样你下载可能就需要积分或者啥的,雅思托福的区别我感觉不方便,既然大家都是追求技术,我也能体会大家现在的心情,我写这个的目的也不是为了赚积分,或者图什么利益,我就是想记录下自己踩过的坑,分享给大家,希望大家少走弯路。所以我直接写在博客里面,这样你可以直接复制)

注:这个是LCD12864的驱动程序,至于为什么偶尔出现1602的字样,英文美文是因为这个驱动程序我是从LCD1602驱动程序移植过来的,因为这两个屏幕的驱动程序很相似,甚至不用改一行程序也能显示少数的字符,所以大家知道这么回事就行

LCD12864.h

LCD12864.c

从上面的代码我们可以看出,因为FPGA?nios我用的是100MHZ主频,速度太快(实际上一点也不快,我测试过了,一条a++自加指令都要差不多30个时钟周期,即整个nios只相当于3MHZ主频左右的单片机,算非常慢的cpu了),我们需要在指令之间插入延时1us比较好,才能匹配液晶屏需要的时序,这里我用的是自己写的延时函数,当然你也可以用库函数,ussleep(int?us);我自己写的delay延时函数如下:

最后在主函数里面这样调用,lcd12864液晶屏幕即可显示:

经过测试,整个程序完全o98k,放心用吧!!!运行效果如下:

FPGA nios软核编写液晶屏LCD12864驱动程序源码以及注意事项,本人亲自踩坑,重要!!!的更多相关文章

  1. 关于Quartus构建nios软核以及eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解

    这不是一篇构建nios的教程,而是遇到的各种问题以及解决方法.至于构建教程,网上一大把,我推荐正点原子的FPGA教程,比较新,比较详细,通俗易懂!!! 这里以一个点亮LED灯的Nios软核为例,很明显 ...

  2. FPGA的软核与硬核

    硬核 zynq和pynq系列的fpga都是双ARM/Cortex-A9构成,这里的ARM处理器为硬核,Cortex-A9部分为FPGA部分.即整体分为两部分:PS/PL.PS部分为A9处理器部分,PL ...

  3. [转] - 使用Qt作窗口截屏(含源码)

    截屏(screenshot),就是将屏幕上的东西拷贝下来存成图片文件.介绍的好像有点多余:(,那我们就直接切入正题. QPixmap提供了两个函数grabWidget和grabWindow可以将屏幕上 ...

  4. 36.QT-解决无边框界面拖动卡屏问题(附带源码)

    1.简介 看到很多才学QT的人都会问为啥无边框拖动为啥会花屏? 那是因为你每次拖动的过程中都一直在调用move()函数让QT重新绘制界面,如果资源过大,就会导致当前图形还未绘制完,便又重新改变坐标了, ...

  5. 仿iphone动态萤火虫锁屏应用安卓源码

    该源码是仿iphone动态萤火虫锁屏应用源码,源码SkyLock,这也是最近弄了一款锁屏,苦于市场百般阻拦与锁屏应用数量实在太多,于是将它拿出来开源:废话不多说,希望大家能够希望,更多说明请看下面的吧 ...

  6. leaflet-webpack 入门开发系列三地图分屏对比(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  7. 硬核干货:4W字从源码上分析JUC线程池ThreadPoolExecutor的实现原理

    前提 很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章.之前在分析扩展线程池实现可回调的Future时候曾经提到并发 ...

  8. android后台截屏实现(1)--源码编译

    前段时间接到任务要实现后台截图并上传的功能,在网上查了好久,发现遇到这类问题的人还不少.经过一番对比后发现还是修改并编译源码中的screencap类然后通过JNI来调用这种方法比较可靠,而其他的在ja ...

  9. 硬核剖析Java锁底层AQS源码,深入理解底层架构设计

    我们常见的并发锁ReentrantLock.CountDownLatch.Semaphore.CyclicBarrier都是基于AQS实现的,所以说不懂AQS实现原理的,就不能说了解Java锁. 上篇 ...

随机推荐

  1. Linux if[......] then ......else...... fi

    条件表达式 if [ -f  file ]    如果文件存在if [ -d ...   ]    如果目录存在if [ -s file  ]    如果文件存在且非空 if [ -r file  ] ...

  2. Java面向对象01——什么是面向对象

    面向过程&面向对象 面向过程思想(微观): 步骤清晰简单,第一步做什么,第二部做什么....... 面向过程适合处理一些较为简单的问题 面向对象思想(宏观): 物以类聚,分类的思维模式,思考问 ...

  3. curl的基本使用

    基本使用 1. 初始化 初始化非常简单,只需要调用curl_init()函数即可,他会返回一个curl句柄,后边几乎其他关于curl的设置,关闭等函数都需要使用这个句柄 $curl = curl_in ...

  4. Golang语言系列-10-包

    包 自定义包 package _0calc import ( "fmt" ) /* [Go语言的包] 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基 ...

  5. shell 获取当前路径 和 2>&1 &的作用

    #!/bin/bash current_path=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) nohup $curren ...

  6. Redis奇怪的姿势

    Redis奇怪的姿势 写在前面 之前渗透 摸鱼 时和小伙伴发现了一个redis,存在未授权,是win服务器但是没有路径,度娘了之后发现了这个姿势,特此学习记录一下. 写入启动项 环境搭建 window ...

  7. 012 基于FPGA的网口通信实例设计【转载】

    一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计 ...

  8. 教你IO流来便利电脑磁盘所有文件,把图片放到一个文件夹里(会发现什么不可告人的密码)

    一.需求 我要把C盘下面的所有图片都拿出来,放到一个新文件夹中.今天小编一身正气,看看有没有什么意外发现!!学会看看自己的盘,悄悄的哦!!! 二.代码展示(运行时间可能有点长) import java ...

  9. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    参考网址:图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) - 51CTO.COM 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath ...

  10. C#硬件访问(摄像头、麦克风)

    #需要引用:AForge类库.Microsoft.DirectX using System;using System.Windows.Forms;namespace CameraTest{ publi ...