学习目标

将自己所需求的功能函数定义为新的函数

学习概要

1、熟练掌握基础的12864屏幕显示功能

2、根据自己的需求结合已有功能创建自己的函数

3、验证自己的函数

学习内容

1、熟练掌握基础显示(略写)

针对每一个函数,理解熟悉每个函数的输入输出及所表达的功能,能够针对不同的要求进行小范围的修改,对于需要大修改的可以重新编写程序。

void Set_Page_Address(uchar page_addr);//到某一页
void Set_Column_Address(uchar clm_addr);//到某一列
void GotoXY(uchar Paddr, uchar Caddr);到某一行某一列
void Write_Data(uint com,uchar page,uchar clum);//向某一行某一列写入数据
void LCD_Clear(void);//清屏
void Disp_Graphics(const uchar  *gph);//写入一幅图片128*64
void LED_Square_Frame(void);//写入一个矩形边框
void Disp_Ascii1608(const uchar *ptrAscii, uchar startP, uchar startC);//向某一行某一列写入一个16*8的数据
void Disp_Ascii0508(const uchar *ptrAscii, uchar startP, uchar startC);//向某一行某一列写入一个8*5的数据
void Display_Hanzi(const uchar *p,uchar startP, uchar startC);//向某一行某一列写入一个16*16的数据
void Display_Hanzi_Fan(const uchar *p,uchar startP, uchar startC);//反向数据
void Lcm_Init(void);//屏幕初始化

2、自己的所需要求

分析自己每个要求,分别调用上述的函数进行功能实现,可以适当的进行修改,特定的要求可以编写特定的程序,做好每个要求的界面,能够逐一显示各个界面。

//屏幕显示数据优先级分9级【9级最高,1级最低】
//报警时显示报警信息(9级)
//气瓶压力突变(8级)
//电池亏电(6级)
//压力在正常范围内(5级)
//显示屏正常时,显示温度+湿度+电压(1级)
//手动查询数据显示
//系统无操作,显示屏30秒休眠

3、针对每个界面进行编写实现

3.1  显示报警信息

1)运用示例代码和生成想要输出的字符代码

这个界面需要有提示,所以功能为:展示为界面不停地闪烁;提示的界面展现在屏幕的中间;显示“警告!!!”+“方框”以达到提示的作用。方框实现代码和警告字符的代码:

/*****************************************************
Function: Display a Square Frame
Input   : Starting Point(startP,startC),(length,width):(sizeX,sizeY)
******************************************************/
void LED_Square_Frame(uchar startP, uchar startC, uchar sizeX, uchar sizeY)
{uchar i, j, x, y;GotoXY(startP, startC);x = sizeX;y = sizeY;for (i = startP; i < (x + startP); i++){for (j = startC; j < (y + startC); j++){if ((j == startC) || (j == (startC + y-1))){GotoXY(i, j);Send_Data(0xff);}if ((i == startP) && (j > startC) && (j < (startC + y-1))){GotoXY(i, j);Send_Data(0x01);}if ((i == (startP + x-1)) && (j > startC) && (j < (startC + y-1))){GotoXY(i, j);Send_Data(0x80);}}}
}
int main()
{LED_Square_Frame(2, 24, 3, 80);Display_Hanzi(bitsssss[0],2,24);        Display_Hanzi(bitsssss[1],2,40);   Display_Hanzi(bitsssss[2],2,56); Display_Hanzi(bitsssss[3],2,72);        Display_Hanzi(bitsssss[4],2,88);
}

2) 显示结果(失败)

3)  修改程序

跟想要的功能不同,对程序进行修改。

原因:显示方框和显示汉字冲突,不能同时显示

尝试方案:在显示汉字的外面一层显示方框(投机取巧)

/*****************************************************
Function: Display a Square Frame
******************************************************/
void LED_Square_Frame(uchar startP, uchar startC, uchar sizeX, uchar sizeY)
{uchar i, j, x, y;GotoXY(startP, startC);x = sizeX;y = sizeY;for (i = startP; i < (x + startP); i++){for (j = startC; j < (y + startC); j++){   if (((j == startC) || (j == (startC + y - 1))) && (i != startP) && (i != (startP + x - 1))){GotoXY(i, j);Send_Data(0xff);}if ((i == startP) && (j > startC) && (j < (startC + y - 1))){GotoXY(i, j);Send_Data(0x80);}if ((i == (startP + x - 1)) && (j > startC) && (j < (startC + y - 1))){GotoXY(i, j);Send_Data(0x01);}}}
}

4)  显示结果(成功)

3.2  正常显示界面

1) 第一行显示:XXX远程监控系统

第二行显示:温度:

第三行显示:湿度:

第四行显示:压力:

尝试方案:使用显示汉字Display_Hanzi();

/*****************************************************
Function:Display 16x16 lattices of Chinese
******************************************************/
void Display_Hanzi(const uchar *p, uchar startP, uchar startC)
{uchar i, j;for (i = 0; i < 2; i++){GotoXY(startP + i, startC);for (j = 0; j < 16; j++){Send_Data(*p++);}}
}
/*****************************************************
Function:Display on normal time
******************************************************/
void Normal_Display(void)
{uchar i;for( i = 0;i <8;i++){Display_Hanzi(Normal_Display[i],0,i*16);}for( i = 0;i <3;i++){Display_Hanzi(Normal_Display[i+8],2,i*16);}for( i = 0;i <3;i++){Display_Hanzi(Normal_Display[i+11],4,i*16);}for( i = 0;i <3;i++){Display_Hanzi(Normal_Display[i+14],6,i*16);}
}int32_t main(void)
{Lcm_Init();LCD_Clear();Normal_Display();while(1){}
}

2) 显示结果

3.3 其他类似(略)

直接上代码上图

/*****************************************************
Function:Display pressure mutation
******************************************************/
void Pressure_Mutation(void)
{Display_Hanzi(pressure_mutation[0],2,32);  Display_Hanzi(pressure_mutation[1],2,48);Display_Hanzi(pressure_mutation[2],2,64);Display_Hanzi(pressure_mutation[3],2,80);LED_Square_Frame(1, 24, 4, 80);
}

附:图片代码下载链接:https://www.aliyundrive.com/s/dVaLXS3ynPt

二、自己需求函数的模块化相关推荐

  1. JS模块化(二):ES6 模块化

    简介 ECMA推出了官方标准的模块化解决方案,使用 export 导出,import 导入,编码简洁,从语义上更加通俗易懂. let name = 'now'; let fun = () => ...

  2. (二)链表学习之模块化处理

    动态链表 1.动态链表概念 2.动态链表操作接口 2.0数据结构定义 2.1添加节点 2.2显示节点数据 2.3逆转节点 2.4查找节点 2.5查找并修改节点数据 2.6获取节点个数 2.7删除所有节 ...

  3. (五)自制数据同步程序 二次开发(模块化)打包发布说明

    开发过程参考第四篇文章 开发完成后 点击maven install 打包成功如图 打包之后找到 你代码所在的jar文件 创建一个目录 如:data-test将jar包拷贝到里面 如果有第三方包放到li ...

  4. 人工机器:机器人模块化和双足机器人被动行走

    对于机器人,作为服务人或者家庭成员,是否能走进千家万户,还要看机器人的双足是否能够实现. 服务机器人构件: 1.双足机器人的两条腿; 2.被动行走和能源问题; 3.机器组件的模块化; 4.情感作用以及 ...

  5. 硬件模块化开发的例子:LD3320语音模块与Source Insight的使用

    目录 硬件模块化开发的行情 LD3320语音模块使用手册介绍: 语音模块验货测试 硬件连接效果图 测试结果良好 Source Insight代码查看器 创建工程 修改字体 配色方案 中文乱码 关联代码 ...

  6. 数栈产品分享:干货解读数据中台产品「模块化」设计思路

    一.前言 在做企业服务类(ToB)的产品时,我们经常会遇到如下场景: 每个客户拿着他们的需求清单,来咨询我们的产品是否可满足他们的诉求.如图所示: 每个客户的需求有重叠的内容,也有不一样的内容,而这些 ...

  7. 如何“拼”出一个页面-游戏中心模块化实践

    一.背景 vivo游戏中心是一款垂类的应用商店,为用户提供了多元化游戏的下载渠道.随着游戏中心手游品类的丰富,各品类用户的量级也不断增加,不同游戏偏好的用户核心关注点也不同,从预约.测试.首发.更新到 ...

  8. JS模块化的'前世今生'

    一.模块化定义 模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体) ------ 百度百科 模块化的关键字为:单独命名. 特定功能.程序集合 二.原始写 ...

  9. 50道100以内的加减法口算习题及它的模块化改造

    50道100以内的加减法口算习题及它的模块化改造 目录 50道100以内的加减法口算习题及它的模块化改造 前言 一.未经过模块化设计的基础代码 1.代码示例 2.存在的问题 二.分解与模块化 1.分解 ...

最新文章

  1. xcode编辑时闪退的问题解决
  2. JavaWeb显示器
  3. Android Gradle Plugin 源码阅读与编译
  4. pip指定包的安装路径
  5. SAP CRM IBASE对应的搜索实现,动态SQL语句的拼装
  6. 【WebGL】《WebGL编程指南》读书笔记——第5章
  7. 罗永浩吐槽卖小米、苹果被骂,卖华为也被骂,李楠:警惕键盘侠
  8. 基于TCP的Socket网络编程,有图有代码
  9. 100本Python机器学习、深度学习电子书,免费送!
  10. ppt太大怎么压缩变小一点?
  11. PaddleNLP登顶FewCLUE小样本学习榜单;AutoPrompt自动化提示功能直接带你原地起飞
  12. 内容分发网络:请简述 CDN 回源如何工作?
  13. idea自动删除尾行空格(空行中空格)
  14. codevs 2147 数星星
  15. CPU与GPU区别 通俗易懂
  16. 数据库的几个性能指标
  17. 使用Spring Boot实现GraphQL
  18. docker push 时 tag does not exist
  19. 中小学计算机网络教师考试报名时间,中小学教师资格考试网报名流程
  20. AutoJs学习-亲戚关系计算器

热门文章

  1. 给一张图片赋以.jpg结尾的网址
  2. [转帖]美国《工程索引》收录中国科技论文的最新规定
  3. go-cqhttp调用接口
  4. Electron 使用Pepper Flash插件
  5. Vue--Router--路由传参的方法
  6. java单位转换_做一个单位转换的java程序
  7. NRFL2401学习
  8. 华三交换机检测堆叠分裂的三种方法(lacp mad,bfd-mad,arp-mad)
  9. 假设一个录像厅有0,1,2三种不同的录像片可由观众选择放映。录像厅的放映规则为: 1)任何时刻最多只能放映一种录像片,正在放映的录像片是自动循环放映的。最后一个观众主动离开时结束当前录像片的放映。
  10. python 投掷骰子实验