最近一段时间学习了一下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菜单的更多相关文章

  1. FPGA nios通过驱动LCD12864实现菜单界面和uart串口通信

    因为csdn无法插入视频,无法展示我这个实现的效果,这里我截了一些图,应该基本上也能明白了: 基本功能就是如图片所示,里面采用了菜单结构(这里编程需要一定得c语言编程技巧与数据结构知识),gpa是什么 ...

  2. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  3. Electron使用与学习--(基本使用与菜单操作)

    对于electron是个新手,下面纯属个人理解.如有错误,欢迎指出.   一.安装 如果你本地按照github上的 # Install the `electron` command globally ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(74)-微信公众平台开发-自定义菜单

    系列目录 引言 1.如果不借用Senparc.Weixin SDK自定义菜单,编码起来,工作量是非常之大 2.但是借助SDK似乎一切都是简单得不要不要的 3.自定义菜单无需要建立数据库表 4.自定义菜 ...

  5. Android菜单项内容大全

    一.介绍: 菜单是许多应用中常见的用户界面组件. Android3.0版本以前,Android设备会提供一个专用"菜单"按钮呈现常用的一些用户操作, Android3.0版本以后, ...

  6. 张高兴的 UWP 开发笔记:汉堡菜单进阶

    不同于Windows 8应用,Windows 10引入了"汉堡菜单"这一导航模式.说具体点,就拿官方的天气应用来说,左上角三条横杠的图标外加一个SplitView控件组成的这一导航 ...

  7. ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑

    闲话不说,先上图: 这是IOS上的显示效果,代码如下: HTML部分: <body ng-app="starter" ng-controller="actionsh ...

  8. Xamarin.Android之ActionBar与菜单

    一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在Android 3.0 以上的版本中,我们已经可以使用ActionBar提供的Tab来实现这种效果,而不需要我们自己去实 ...

  9. 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)

    本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

随机推荐

  1. 组件&Props

    组件允许你将Ui拆分为独立可复用的代码片段,并对每个片段进行独立构思.本指南只在介绍组件的相关概念.你可以参考详细组件 API. 组件,从概念上类似与JavaScript函数.它接受任意的入参(既“p ...

  2. 【13NOIP提高组】转圈游戏(信息学奥赛一本通 1875)(洛谷 1965)

    题目描述 nn 个小描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号 ...

  3. 配送城市地址联动选择JQuery

    记录一次使用jq实现3层地址联动选择流程!效果如图. 需要引入 jq.js.layer.js.layui.js.layui.css (icon图标) 二.选中后页面展示效果 三.页面展示HTML &l ...

  4. linux高性能服务器编程 (七) --Linux服务器程序规范

    第七章 LInux 服务器程序规范 1)linux服务器程序一般以后台进程形式运行.后台进程又称为守护进程,是没有控制终端的,所以不会受到外界的干扰.守护进程的父进程通常是init进程(PID为1的进 ...

  5. 避免MySQL出现重复数据处理方法

    对于常规的MySQL数据表中可能存在重复的数据,有些情况是允许重复数据的存在,有些情况是不允许的,这个时候我们就需要查找并删除这些重复数据,以下是具体的处理方法! 方法一:防止表中出现重复数据 当表中 ...

  6. Mongoose 数据校验

    什么是mongoose数据校验 用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证 mongoose里面定义Schema:字段类型,修饰符.默认参数 .数据校验都是 ...

  7. python字符串转整形异常

    python字符串转整形异常 问题 在使用int("xx")转化字符串为整形时,如果字符串是float形式,这样转化会异常 int('3.0') Traceback (most r ...

  8. Python开发:OpenCV版本差异所引发的cv2.findContours()函数传参问题

    一.问题如下: cv2.findContours()这个方法是用来找出轮廓值的: # cv2.findContours找出轮廓值,cv2.RETR_EXTERNAL表示图像的外轮廓 binary, c ...

  9. [.NET逆向] [入门级]de4dot参数详解

    为了避免被0xd4d(de4dot作者)认为是"N00bUser"为了认识到Some of the advanced options may be incompatible, ca ...

  10. 使用SpringEL功能来动态化模板数据

    在类似excel导出功能里,如果excel的格式很复杂,通过程序去动态生成格式显然是很吃力的,我们可以采用模板文件+动态表达式占位来生成目标文件. 如果只是纯粹生成纯文本,使用freemarker等模 ...