密码登录与改写是人机界面非常常见的一个功能,本文将功能利用屏上面独立实现,节省了单片机不必要的代码,另外保存密码也是占用的屏独立的flash存储区域,DGUS2是可以支持C语言编程的,本文给大家分享下,顺便也是做一个支持C编程的DGUS2软件的参考例子借鉴吧。
https://pan.baidu.com/s/1kqtnumJJpFgYLxT6zLaKYQ
原demo和C编译器软件下载链接

   /*软件版本:DWIN C Compiler 1.1.0.4程序功能:T5DGUSos的C编译器入门学习参考系列例程1-密码登录与改写更新时间:2018年11月01日 DGUS变量地址分配:地址1000-1001H密码登录框地址1002-1003H密码改写框1地址1004-1005H密码改写框2地址1006-1006H重建密码按键返回地址1008-1009地址进行将数据库存放的密码的读出来在屏上面参与比较。*/int main(){char Variable_Addr[8]={0};            //traditional rules ,not rule C99 (传统的用法必须在一个代码块的开始处声明变量,不能像C99那样)char i=0;                          //char Switch_Page[4]={0x5a,0x01,0x00,0x00}; //页面切换07密码正确页面 02错误页面 char Vp_Clear[10]={0};//清空密码改写框1、2和重建密码按键返回按键char Supervisor_Password[4]={0x00,0x02,0x2c,0xc8};//142536=00 02 2c c8  赋值超级密码char Read_Flash[8]={0x5a,0x00,0x10,0x08,0x10,0x08,0x00,0x02};    //数据库读操作char Write_Flash[8]={0xa5,0x00,0x10,0x08,0x10,0x02,0x00,0x02};   //数据库写操作char RW_Flash_Flag[2]={0};  char RW_Flash_Value[4]={0};// char Change_Password_Button[4]={0};// *************密码登录***********************    read_dgus_vp(0x1000,Variable_Addr,2);   //读密码框是否为0,如果为0,for (i=0;i<4;i++){if(Variable_Addr[i]==0) //{}else                                //{  write_dgus_vp(0x0008,Read_Flash,4);    //读5a a5 0b 82 0008 5a00 1008 1008 0002read_dgus_vp(0x1008,RW_Flash_Value,2);do{read_dgus_vp(0x0008,RW_Flash_Flag,1);}while(RW_Flash_Flag[0]==0x5A); if (tests(Variable_Addr,RW_Flash_Value,4)==0){Switch_Page[3]=7;write_dgus_vp(0x0084,Switch_Page,2);           write_dgus_vp(0x1000,Vp_Clear,2);}else                                //先比较是否为万能密码142536=00 02 2c c8{if (tests(Variable_Addr,Supervisor_Password,4)==0){Switch_Page[3]=7;write_dgus_vp(0x0084,Switch_Page,2);           write_dgus_vp(0x1000,Vp_Clear,2);}else{Switch_Page[3]=2;write_dgus_vp(0x0084,Switch_Page,2);           write_dgus_vp(0x1000,Vp_Clear,2);}}}        }// *************密码改写***********************  read_dgus_vp(0x1006,Variable_Addr,2); //读重建密码按钮是否按下如果按下了,说明进行了密码改写操作,if((Variable_Addr[0]==0)&&(Variable_Addr[1]==0x5a))//{read_dgus_vp(0x1002,Variable_Addr,4);    //读输入密码框1、2是否为0,如果为0不执行for (i=0;i<8;i++){if(Variable_Addr[i]==0) //{  write_dgus_vp(0x1006,Vp_Clear,2);   // 清空按键值}else   {if (tests(Variable_Addr,Variable_Addr+4,4)==0) //比较密码改写框1、2是否相等,相等将密码保存到数据库,并跳转提示页面6{write_dgus_vp(0x0008,Write_Flash,4);    //写5a a5 0b 82 0008 a5 00 1008 1002 0002do{read_dgus_vp(0x0008,RW_Flash_Flag,2);}while(RW_Flash_Flag[0]==0xa5); Switch_Page[3]=6;write_dgus_vp(0x0084,Switch_Page,2);    write_dgus_vp(0x1002,Vp_Clear,5);   break;}else        //比较密码改写框1、2是否相等,不相等跳转提示页面6{Switch_Page[3]=5;write_dgus_vp(0x0084,Switch_Page,2);    write_dgus_vp(0x1002,Vp_Clear,5);}}}        }return 0;
}// *******************************************void Time0_IRQHandler(void)  //定时器0 函数体
{
}
void Time1_IRQHandler(void) //定时器1 函数体
{
}
void Time2_IRQHandler(void) //定时器2 函数体
{
}

经过测试摸索,第一步是要将0.和1.lib库文件下载,然后在用c编译器,和OS汇编相比效率至少可以提高很多,对于有些极端的项目设计到复杂计算的,使用C语言会方便很多,但是目前行数限制大概1000-1400行,所以有些复杂多的项目用C可能不够写,只适合实现中小型的功能。
迪文C编译的难度同样还是在于对DGUS系统变量接口地址定义的理解,比如数据库操作的时候,需要判断读写标志是否清空,页面切换的地址,尤其是不要和DGUS1的混为一起用,有一个新手最容易犯错误的地方是DGUS屏的按键返回,当屏的按键按下之后,这个地址里面的值会一直在的,所以通常os里面如果有判断按键按下的动作,在程序执行完之后,是需要依照自己的需要将按键键值清空,不然会一直执行按键按下之后的程序。

特别补充说明,这个迪文c编译器仅仅适用于迪文t5和T5L

此外T5L系列的DGUS 还可以支持80c51的真正意义上面的通用keil软件编写的c

迪文DGUS2利用屏的C编译器实现密码登录与改写功能相关推荐

  1. 迪文DWIN串口屏的使用经验分享

    迪文的串口屏,性价比高,质量稳定可靠,屏的种类多,消费类,工业类,医疗.军工.特殊行业等苛刻应用类,各个尺寸均有设计.所以基本能用得上,我分享一下各种屏的使用经验,希望能对大家有帮助. 浅谈迪文屏的发 ...

  2. 迪文DWIN串口屏的使用经验分享(最新添加了T5L新产品体验)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42846972/arti ...

  3. 迪文DGUS智能屏如何轻松实现3D动画

    三维立体的视觉效果已经被广泛应用于人机交互中,三维图形逼真的显示效果往往可以更加直接的传递出视觉信息,减少用户的信息解读门槛. 传统的三维立体静态.动态画面的显示往往对于 GPU 的图像处理性能.显示 ...

  4. 如何设置迪文T5L串口屏的防盗版功能?

    根据用户对项目工程保密性的需求,迪文科技的T5L串口屏的加密方式主要体现以下两个方面: 一.DGUS软件设置 在制作UI素材文件时,用户可以选择图片素材加密方式,加密后,即使第三方拿到工程下载文件也无 ...

  5. 开源:基于迪文T5L智能屏的PID温控器方案

    --来自迪文开发者论坛用户 该温控器方案基于 DMG80480C043_02W 智能屏设计,通过 DS18B20.MLX90614 分别采集设备入.出口温度值给到 T5L 芯片处理,并将温度值实时显示 ...

  6. 迪文科技串口屏如何实现多国语言显示

    如果要用到多国语言,我们需要用到UNICODE的字库,对于UNICODE字库我们可以使用迪文自主研发的专用的字库生成工具,也可以使用市面上常见的第三方字库生成工具,如ts3等. 具体操作步骤: (1) ...

  7. 迪文触摸串口屏 实例应用(2)——创建工程

    一.简介 写这篇文章是因为,迪文屏幕坑有点多. 照着人家官网给出的创建工程步骤按部就班得做是不行的. (遇到问题多打几次客服,有人问我为啥多打几遍,这里吐槽一下,我有次打客服技术人员告诉我,我的屏幕他 ...

  8. 分享|基于迪文T5L智能屏的净水机智能控制系统方案

    --来自迪文开发者论坛用户开源案例 整体方案基于评估板 EKT043 设计,单 T5L 芯片处理屏幕显示触摸以及外部系统的控制: 接收并处理由高压传感器监测到的高.低压开关信号,实时显示数值在屏幕上: ...

  9. 迪文触摸串口屏 实例应用(1)——安装编译和下载

    一.开发环境简介 1.1开发软件下载 这里提供3种下载方式,推荐第三种!!!! 官网下载 官网下载:http://www.dwin.com.cn/home/Index/Index 找适合自己的屏的配套 ...

最新文章

  1. 一张图看懂华为2018年年报
  2. 快讯|工业大数据产业发展联盟成立,助力我国产业生态集聚
  3. apache 域名跳转
  4. 用STS创建Maven的Web项目转
  5. gulp+PC前端静态页面项目开发
  6. 网络通信中TCP出现的黏包以及解决方法 socket 模拟黏包
  7. arch 还原pacman_如何使用Pacman在Arch Linux中安装Go
  8. php为什么要创建类,php – 是否有理由为单一功能创建类?
  9. 【机器人】激光测距传感器的数据处理步骤
  10. 802.11ax速览
  11. W25Q16 driver(转)
  12. QT分析之QApplication的初始化
  13. C语言 | 输出魔方矩阵
  14. 浅谈一下前后端分离(什么是前后端分离以及前后端分离的原理)
  15. 网吧web电影服务器系统,网吧WEB、游戏、影视服务器应用需求分析
  16. Poisson方程的五点差分格式例题求解-Matlab实现
  17. outlook2010签名设置 怎麼用html 设置名片,windows10系统下Outlook2010如何设置邮箱签名...
  18. 文章阅读——Mysql技术内幕
  19. Unity Shader Graph 使用安装步骤缺失材质球,以及场景原本物体材质球丢失问题解决
  20. 加法和加法的实现——算术逻辑电路——计算机组成原理

热门文章

  1. java数组内存溢出_Java内存溢出问题总结
  2. linux 终端 screem,Linux screen实操指南
  3. 论文推荐:CCNet用于语义分割的交叉注意力
  4. python画图局部放大图代码
  5. swf swc swz RSLs ant
  6. python脚本快速入门
  7. 监督学习,非监督学习与半监督学习
  8. 网络爬虫的合法性讨论
  9. comsol与matlab连接使用学习笔记 1 基础设置
  10. 科研油猴脚本使用记录