【开源】密码验证 利用指针对DGUS变量操作的C51代码
本帖最后由 rxz505260 于 2023-1-31 10:47 编辑代码功能:
只做输入密码验证切换到需要的页面
代码中密码写死,可以添加代码从norflash读取和修改密码
#define PASSWORD_INPUT_VP 0x502E //密码输入框起始地址 双字 502E-502F
u8 compare(u8* input,u8* password,u8 len);//密码比较函数
void Page_Change(u16 PageID);//页面切换函数
void encrypted_login_handler()
{
u8 i=0;
u8 variable_input={0,0,0,0}; //密码框输入的数据
u8 Vp_Clear={0,0,0,0}; //密码比对后密码框清零数据
u8 passdword={0x07,0x5B,0xCD,0x15}; //定义密码 123456789 也可从norflash读取
//密码登录******************************************
Read_Dgusii_Vp(PASSWORD_INPUT_VP,variable_input,2); //读密码框数据到数组variable_input
for (i=0;i<4;i++)
{
if(variable_input==0) {} //密码框数据为0则无效
else //密码框数据非0开始比较
{
//将输入值和正确密码传入比较函数,传入的为数据指针
if (compare((u8*)&variable_input,(u8*)&passdword,4)==4)//比对数组的4个数都通过
{
Page_Change(14); //跳转页面14
Write_Dgusii_Vp(PASSWORD_INPUT_VP,(u8*)&Vp_Clear,2); //密码框清零
}
else //比对失败
{
Page_Change(12);
Write_Dgusii_Vp(PASSWORD_INPUT_VP,(u8*)&Vp_Clear,2);
}
}
}
}
/*****************************************************************************
函 数 名: u8 compare(u8* input,u8* password,u8 len)
功能描述: 比对输入数据和预设密码值
输入参数: u8* input:传入输入的密码数据指针,u8* password:传入正确的密码指针,u8 len:比较数据的个数
输出参数: 返回比较成功的次数
*****************************************************************************/
u8 compare(u8* input,u8* password,u8 len)//密码比较函数
{
u16 i=0;
while (i<len)
{
if(*input==*password) //顺序比较输入值和预设密码
i++;
else
break; //如遇不相等,则退出
input+=1;
password+=1;
}
return i;//返回
}
/*****************************************************************************
函 数 名:void Page_Change(u16 PageID)
功能描述:页面切换
输入参数: u16 PageID 页面号
输出参数: 无
*****************************************************************************/
void Page_Change(u16 PageID)
{
u8 buf;
buf = 0x5a;
buf = 0x01;
buf = (u8)(PageID >> 8);
buf = (u8)PageID;
Write_Dgusii_Vp(0x84,buf,2);
do
{
delay_us(500);
Read_Dgusii_Vp(0x14,buf,2);
}while(*(u16*)buf!=PageID);
buf = 0;
buf = 0;
buf = 0;
buf = 0;
Write_Dgusii_Vp(0x16,buf,2);
}
学习学习 你好楼主,有对应的整体工程文件吗,GUI+C 可以发我吗,1021315914@qq.com,谢谢楼主 楼主把核心业务逻辑贴出来了,赞赞赞
你好楼主,有对应的整体工程文件吗,GUI+C 可以发我吗,1663782879@qq.com,谢谢楼主 学习下楼主的核心代码,赞 谢谢楼主。目前开发的项目正需要。学习了。
页:
[1]