二、自己需求函数的模块化
学习目标
将自己所需求的功能函数定义为新的函数
学习概要
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
二、自己需求函数的模块化相关推荐
- JS模块化(二):ES6 模块化
简介 ECMA推出了官方标准的模块化解决方案,使用 export 导出,import 导入,编码简洁,从语义上更加通俗易懂. let name = 'now'; let fun = () => ...
- (二)链表学习之模块化处理
动态链表 1.动态链表概念 2.动态链表操作接口 2.0数据结构定义 2.1添加节点 2.2显示节点数据 2.3逆转节点 2.4查找节点 2.5查找并修改节点数据 2.6获取节点个数 2.7删除所有节 ...
- (五)自制数据同步程序 二次开发(模块化)打包发布说明
开发过程参考第四篇文章 开发完成后 点击maven install 打包成功如图 打包之后找到 你代码所在的jar文件 创建一个目录 如:data-test将jar包拷贝到里面 如果有第三方包放到li ...
- 人工机器:机器人模块化和双足机器人被动行走
对于机器人,作为服务人或者家庭成员,是否能走进千家万户,还要看机器人的双足是否能够实现. 服务机器人构件: 1.双足机器人的两条腿; 2.被动行走和能源问题; 3.机器组件的模块化; 4.情感作用以及 ...
- 硬件模块化开发的例子:LD3320语音模块与Source Insight的使用
目录 硬件模块化开发的行情 LD3320语音模块使用手册介绍: 语音模块验货测试 硬件连接效果图 测试结果良好 Source Insight代码查看器 创建工程 修改字体 配色方案 中文乱码 关联代码 ...
- 数栈产品分享:干货解读数据中台产品「模块化」设计思路
一.前言 在做企业服务类(ToB)的产品时,我们经常会遇到如下场景: 每个客户拿着他们的需求清单,来咨询我们的产品是否可满足他们的诉求.如图所示: 每个客户的需求有重叠的内容,也有不一样的内容,而这些 ...
- 如何“拼”出一个页面-游戏中心模块化实践
一.背景 vivo游戏中心是一款垂类的应用商店,为用户提供了多元化游戏的下载渠道.随着游戏中心手游品类的丰富,各品类用户的量级也不断增加,不同游戏偏好的用户核心关注点也不同,从预约.测试.首发.更新到 ...
- JS模块化的'前世今生'
一.模块化定义 模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体) ------ 百度百科 模块化的关键字为:单独命名. 特定功能.程序集合 二.原始写 ...
- 50道100以内的加减法口算习题及它的模块化改造
50道100以内的加减法口算习题及它的模块化改造 目录 50道100以内的加减法口算习题及它的模块化改造 前言 一.未经过模块化设计的基础代码 1.代码示例 2.存在的问题 二.分解与模块化 1.分解 ...
最新文章
- xcode编辑时闪退的问题解决
- JavaWeb显示器
- Android Gradle Plugin 源码阅读与编译
- pip指定包的安装路径
- SAP CRM IBASE对应的搜索实现,动态SQL语句的拼装
- 【WebGL】《WebGL编程指南》读书笔记——第5章
- 罗永浩吐槽卖小米、苹果被骂,卖华为也被骂,李楠:警惕键盘侠
- 基于TCP的Socket网络编程,有图有代码
- 100本Python机器学习、深度学习电子书,免费送!
- ppt太大怎么压缩变小一点?
- PaddleNLP登顶FewCLUE小样本学习榜单;AutoPrompt自动化提示功能直接带你原地起飞
- 内容分发网络:请简述 CDN 回源如何工作?
- idea自动删除尾行空格(空行中空格)
- codevs 2147 数星星
- CPU与GPU区别 通俗易懂
- 数据库的几个性能指标
- 使用Spring Boot实现GraphQL
- docker push 时 tag does not exist
- 中小学计算机网络教师考试报名时间,中小学教师资格考试网报名流程
- AutoJs学习-亲戚关系计算器
热门文章
- 给一张图片赋以.jpg结尾的网址
- [转帖]美国《工程索引》收录中国科技论文的最新规定
- go-cqhttp调用接口
- Electron 使用Pepper Flash插件
- Vue--Router--路由传参的方法
- java单位转换_做一个单位转换的java程序
- NRFL2401学习
- 华三交换机检测堆叠分裂的三种方法(lacp mad,bfd-mad,arp-mad)
- 假设一个录像厅有0,1,2三种不同的录像片可由观众选择放映。录像厅的放映规则为: 1)任何时刻最多只能放映一种录像片,正在放映的录像片是自动循环放映的。最后一个观众主动离开时结束当前录像片的放映。
- python 投掷骰子实验