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. vue keep-alive的实现原理和缓存策略

    使用 <!-- 基本 --> <keep-alive> <component :is="view"></component> < ...

  2. SoundPool概率性无声问题

    public class SoundManager { private static SoundManager instance; private SoundPool mSoundPool; priv ...

  3. js hook

    //cookie hook (function () { 'use strict'; var cookie_cache = document.cookie; Object.defineProperty ...

  4. Go测试技术分享(一):场景化接口Case编写

    一.前言 本人负责的支付清结算方向的测试工作,在测试项目中,会出现流程化的接口调用,请求完一个接口后,继续请求另一个接口(这里的接口可以指Http,也指rpc接口),这里以一个真实场景为例:用户在平台 ...

  5. Arp欺骗和DNS投毒

    中间人攻击 ARP缓存攻击 ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址.简单来说,就 ...

  6. 又一开源项目爆火于GitHub,Android高级插件化强化实战

    一.插件化起源 插件化技术最初源于免安装运行 Apk的想法,这个免安装的 Apk 就可以理解为插件,而支持插件的 app 我们一般叫 宿主. 想必大家都知道,在 Android 系统中,应用是以 Ap ...

  7. Java代码编写、代码优化技巧总结

    随着工作经验的积累,在代码编写和优化方面,个人的心得体会总结以及有些从网上或书本中看到的有用技巧 1. 判断何时使用keySet()和entrySet() 获取Map 的key 和value 当循环中 ...

  8. Blazor+Dapr+K8s微服务之状态管理

    1         状态管理服务器端接口 1.1         添加Dapr.AspNetCore包 在DaprTest1.Server项目中添加Dapr.AspNetCore包,该包实现了ASP. ...

  9. luogu P6239 奇怪的道路

    奇怪的道路 我看不出来是状压的状压 好吧,其实看到k的范围应该去往状压方面想的. 然后,题目中说"任何一个城市都与恰好偶数条道路相连(0也被认为是偶数)". 所以,奇偶,两种状态可 ...

  10. 题解 P3322 [SDOI2015]排序

    题解 仔细审题,我们会发现 小 \(A\) 认为两个操作序列不同,当且仅当操作个数不同,或者至少一个操作不同(种类不同或者操作位置不同). 所以,对于一种操作,不管是交换哪两段,都算作同一种操作,只会 ...