lcd12864菜单
最近一段时间学习了一下lcd12864屏幕的驱动(本人使用的是带字库的st7920驱动芯片)。
1.该屏幕可以是串行驱动,或者并行驱动。
2.该屏幕的显示分为2部分,文字显示区DDRAM,图像显示区GDRAM。
3.该屏幕主要使用用途: ①制作LCD菜单 ②自己DIY制作贪吃蛇,俄罗斯方块等
【注意】.
1.st7920驱动的lcd12864如果使用串行通信的话,读出来的数据都是0,也就是不可以描点作图了。
2.我手中的这块屏幕使用并行口通信的话读忙标志也经常出错,可以改用读忙时不操作屏幕,延时100us时间。
描点(比较费时间,感觉项目上使用客户接受不了):
描点作图需要的话 lcd坐标系理解:以左上角为0点;长边向右方向为x轴;短边向下方向为y轴;将下边两行移动到上边两行的右边,形成 (256行*32列)的坐标。
由于该屏是按字节x轴方向写入的,一次写8位,所以形成了(256/16 * 32)16行 * 32列 的坐标系。
x轴方向坐标每写一次可以自动增长一位;y轴方向坐标不自动增长;x轴和y轴的起始坐标偏移都是0x80,所有最后的坐标需要加上0x80。
【步奏】
1.按照时序图写好读数据,写数据,写命令等指令
2.按照坐标系描一个点,秒点是需要读出该字节的原本值
3.按照一定算法实现线(这里我使用的是Bresenham画线算法)
4.按照一定算法实现各种图形界面。
5.按照一定算法将图形界面改成自己喜欢的游戏。
制作菜单:
1.lcd菜单制作主要分为3种方式
方式一:定义一个结构体,结构体成员包括:所有的键值对应操作,函数指针。
该方法主要是通过返回不同的键值,来执行不同的函数。
方式二:定义一个结构体,结构体成员包括:所有的键值对应操作,函数指针,双向链表。
该方法主要是通过返回不同的键值,来执行不同的函数,该方法比上一个方法在逻辑思维了更加具体。
方式三:采用真正意义上的状态机思想,实现菜单。
2.方法优劣
方式一和方式二:优点修改方便 缺点占用内存大
方式三:优点占用内存小 缺点优点修改麻烦
以一个RTU界面来说:该界面大概有100个参数,这方式和方式二至少需要100*5个字节的内容
lcd12864菜单的更多相关文章
- FPGA nios通过驱动LCD12864实现菜单界面和uart串口通信
因为csdn无法插入视频,无法展示我这个实现的效果,这里我截了一些图,应该基本上也能明白了: 基本功能就是如图片所示,里面采用了菜单结构(这里编程需要一定得c语言编程技巧与数据结构知识),gpa是什么 ...
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- Electron使用与学习--(基本使用与菜单操作)
对于electron是个新手,下面纯属个人理解.如有错误,欢迎指出. 一.安装 如果你本地按照github上的 # Install the `electron` command globally ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(74)-微信公众平台开发-自定义菜单
系列目录 引言 1.如果不借用Senparc.Weixin SDK自定义菜单,编码起来,工作量是非常之大 2.但是借助SDK似乎一切都是简单得不要不要的 3.自定义菜单无需要建立数据库表 4.自定义菜 ...
- Android菜单项内容大全
一.介绍: 菜单是许多应用中常见的用户界面组件. Android3.0版本以前,Android设备会提供一个专用"菜单"按钮呈现常用的一些用户操作, Android3.0版本以后, ...
- 张高兴的 UWP 开发笔记:汉堡菜单进阶
不同于Windows 8应用,Windows 10引入了"汉堡菜单"这一导航模式.说具体点,就拿官方的天气应用来说,左上角三条横杠的图标外加一个SplitView控件组成的这一导航 ...
- ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑
闲话不说,先上图: 这是IOS上的显示效果,代码如下: HTML部分: <body ng-app="starter" ng-controller="actionsh ...
- Xamarin.Android之ActionBar与菜单
一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在Android 3.0 以上的版本中,我们已经可以使用ActionBar提供的Tab来实现这种效果,而不需要我们自己去实 ...
- 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)
本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
随机推荐
- 自制Amiibo 踩坑/填坑 指南
去年买了台老版NS,后来得知有Amiibo这种东西的存在,但是学校附近都买不到. 再后来网上看见有人在X宝卖自制卡片,就寻思着是否能自己 DIY一套,于是掉坑里. 要想使用自制Amiibo,一共要做两 ...
- x64汇编第四讲,c / C++中调用x64汇编
目录 x64汇编第四讲,c / C++中调用x64汇编 一丶简介 1.说明 二丶C/C++调用 asm64.asm函数. 1.配置asm参与生成 2.给Asm文件添加函数代码 3.C/C++调用asm ...
- An internal error occurred during: "Synchronizing"
An internal error occurred during: "Synchronizing" “同步”期间发生内部错误. 处理方法 :单个文件进行更新,将无法更新的文件进行 ...
- OO助教的退休感想
深夜失眠+刚赶完火车的胡言乱语,切莫当真,择日修改 一年前,我在学姐的怂恿鼓励下,加上了吴老师的微信,表达了想担任下学期的OO助教的想法.三天后,我到新主楼参加OO助教的面试,其实还是蛮紧张的,毕竟自 ...
- “sockaddr”: “struct”类型重定义的错误的解决办法《转》
原帖地址:https://blog.csdn.net/clever101/article/details/100163301 windows.h和winsock2.h存在有类型重定义,往往体现在VC程 ...
- Spring 事务小结
@Override@Transactionalpublic void add() { this.in();} public void in(){ NyOrder nyOrder=new NyOrder ...
- Java:JSON和Map相互转换
Java:JSON与Map相互转换 需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0 ...
- Python统计数据库中的数据量【含MySQL、Oracle】
Python程序文件如下: # -*- coding: utf-8 # File : start.py # Author : baoshan import json import pymysql im ...
- SketchyGAN: Towards Diverse and Realistic Sketch to Image Synthesis - 1 - 论文学习
https://github.com/wchen342/SketchyGAN Abstract 从人体草图中合成逼真的图像是计算机图形学和视觉学中的一个具有挑战性的课题.现有的方法要么需要精确的边缘图 ...
- java面试题实战三
华为优招面试经验. 1.笔试(这部分按照华为以前的风格不会为难人的,认真做AC一道题就可以进面试了,我编程能力一般吧,做了一道半而已,-_-||!) 2.测评(性格测试,不要太偏激就行了) 3.面试分 ...