SingleYork 发表于 2025-5-5 19:56:20

AI单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】

大家好,我是『芯知识学堂』的SingleYork,
上一讲笔者给大家介绍了AI单片机与淘晶驰串口屏通讯例程之03【单片机程序解析】,
今天笔者要跟大家分享的淘晶驰串口屏的密码登录与密码修改功能的实现。
很多项目中,为了保护某些参数不被随意修改,往往需要增加密码来保护,
这也是触摸屏常用的一个功能,那么淘晶驰的串口屏,要如何实现密码登录功能呢?
首先,我们在之前建好的HDMI工程中添加2个页面,
一个是登录页面login_page,另外一个是密码修改页面password_page,
同时将其背景图片换成对应的图片:
(1)login_page页面
(2)password_page页面
接下来在原本添加的t14文本的“按键弹起”事件中,我们添加如下代码:

这行代码的功能就是当该文本框被按下时,跳转到login_page页面,
同时这里也做了“是否已经登录成功”的判断:
1、若已登录成功,则点击该文本框时退出登录,同时隐藏“密码修改”控件;2、未登录成功,跳转到login_page页面进行登录操作。
这里用到了2个新的指令“page”和“vis”,这两个指令的用法如下:


另外,还有一个login_success变量用于判断是否成功登录,该变量的定义是在Program.s文件中:

同时,在main_page页面的“前初始化”事件中,我们针对“密码修改”控件做了一些处理,即:
1、若已登录成功,则显示“密码修改”控件;2、若未登录成功,则隐藏“密码修改”控件;

同时,我们也让“密码登录”控件t14的文本显示做出一些改变,
这样的话,就可以比较清楚的知道当前到底是“已登录”状态还是“未登录”状态了:

在login_page页面中,我们先添加一个返回按钮控件,用于返回到main_page页面:

再添加一个文本控件,命名为password,用于临时存储密码,密码最大长度为10个字符:

继续添加一个数字变量,用于暂存从用户存储区读出的数据,
后续会用到这个变量来判断串口屏在下载完工程后,是否是第一次上电,然后配置一些默认的参数:

刚才添加的这两个控件只是用于临时存储数据,调试用,
因此,正常运行的时候我们是不希望他们显示出来,所以在页面初始化的时候,需要将这两个控件隐藏:

接下来我们再添加一个文本控件,在用户输入密码错误的时候提示用户:

继续添加一个文本控件,作为密码的输入框,通常在输入密码时我们是不太希望被别人看到,
所以需要将其pw属性设置为“是”,这样的话,在输入密码的时候就不会显示真是的密码文本,会以“*”来显示:

继续添加数字键盘上的控件,笔者使用的是按钮控件,
添加好控件并在该控件的弹起事件中添加如下代码,其他属性参考下图即可:

其他的几个数字也是用同样的方式,
只有“回删”和“确定”两个按键的按键弹起事件中的代码有所区别,
其中“回删”的代码如下:

“确定”按键的功能就稍微多一些,需要对输入的密码进行判断:
1、当输入的密码为我们设定的“普通密码”或不可修改的“超级密码”时,
则登录成功并跳转到main_page页面;
2、当输入的密码不是我们设定的“普通密码”或不可修改的“超级密码”时,
则在t0文本控件中显示“密码错误,请重新输入密码”提醒用户。

另外,在login_page页面初始化的时候,我们还需要做如下处理:
1、从用户存储区0的位置读取4个字节的数据到init_num控件中,
用于判断串口屏是否是第一次上电;
2、如果串口屏是第一次上电,那么使用默认密码并将默认密码存储到用户存储区20的位置,
同时也将“是否是第一次上电”的标志存储到用户存储区0的位置;
3、从用户存储区20的位置读取数据到password文本控件中,
用于后续密码的判断,读取的数据量为password控件最大设置(txt_maxl)值+1;

这里又用到了2个新的指令“repo”和“wepo”,关于这两个指令的详细用法如下:

继续添加一个“触摸捕捉”控件,用于触摸串口屏时让蜂鸣器发出提示音:

接下来,我们切换到password_page页面,这个页面大部分控件的内容跟login_page页面一样,
笔者这里只介绍不一样的地方,想通的地方就不再赘述。
首先是添加一个“变量”控件,命名为pd_select,用于区分密码输入框选中的是哪一个,该变量的初始值设置为0:

接下来在password_page页面前初始化事件中添加如下代码,
这断代码的作用也是用于区分当前选中的是第1次密码输入框还是第2次密码输入框:

在用户点击第1次密码输入框时,响应如下代码:

在用户点击第2次密码输入框时,响应如下代码:

通过改变变量pd_select的值以及两个文本输入框背景色,
就可以让用户很方便的知道当前选中的是哪一个密码输入框了。
1、当用户选择的是第1次密码的输入框时,数字按键按下时就在第1次密码输入框中显示;2、当用户选择的是第2次密码的输入框时,数字按键按下时就在第2次密码输入框中显示;

两次密码都输入完成后,我们就可以点击“确认”,来对比两次输入的密码是否一致,
如果一致,则密码修改成功;
如果两次密码不一致,则提示用户“两次密码不一致”,让用户重新输入新的密码:

当然咯,这里没有考虑两次密码都没有输入的情况,
感兴趣的小伙伴们可以自行添加判断逻辑试一下。
最后,再添加一个“触摸捕捉”控件来实现触控提示音的效果:

至此,单片机与淘晶驰串口屏的通讯例程就讲完了,在生成生产文件后,
我们将HDMI工程文件下载到串口屏中,并将单片机板跟屏连接起来,就可以看到如下的效果了:
https://v.qq.com/x/page/c308824xwzx.html

最后附上整个项目的源码,需要的小伙伴们可以自行下载:





Tuier 发表于 2026-1-8 17:19:54

楼主你好,下载了你的程序,想请教一个问题:
测量ADC的值要显示到串口屏的x0和x1控件上。研究了你的单片机程序,没有找到怎么把adc的值传到串口屏的。单片机程序里两个通道测量的结果应该是ADC0_VALUE和ADC1_VALUE,对吧?要把浮点数传递给串口屏显示,按照我仅有的学到的知识是通过语句printf("")或者是串口发送字符串函数usart_sendspr()来传递的,你的程序找不到相关发送程序,还望楼主指教,谢谢!
页: [1]
查看完整版本: AI单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】