一段在STM32上实现密码设置功能的小程序

本程序适用于:1:会C语言,玩过STM32,懂得STM32外部电路的并且会举一反三的同学
    2:会C或者C++语言,玩过界面,只需把按键按下变成界面按钮按下,存eeprom变成读写文件即可
                    3:如果只会C语言,了解一下思想、

                    4:如果只会硬件,没问题,软件学学也没想象中的那么难

void set_password(void)
{
	char i,j = 0;                   
	char password_buf[6] = {0};     //临时存储,为了把密码存储到eeprom
	int m=0;  //用作密码成功判断
	int k = -1;//密码,范围0~9
	char store[50] = {0};           //为了lcd显示存储的数据
	_REINPUT: 
	delay(MSec(80));                //延时函数,需自己封装,如带操作系统,根据系统性质编写,如若无系统,两个for循环也行
	LCD_Show("请按键设置密码:");//LCD显示函数,需自己封装
	j = 0;
	m = 0;
	while(1)
	{
		k = -1;
		if(scan_key_down("PE1"))          //判断按键按下函数,自己根据STM32的IO性质以及实际硬件电路编写
		{
			delay(MSec(50));
			if(scan_key_down("PE1"))
			{
				for(i=0;i<300;i++)
				{
					delay(MSec(100));
					if(((i%5)==0)&&(i!=0))     //5的倍数才能进if,也起延时作用
					{
						k++;
						if(k>9)
						{
							k = 0;     //限制密码范围为9以内
						}
						sprintf(store,"密码第%d位: %d",j+1,k);   // 配合LCD输出
						LCD_Show(store);
					}
					if(read_IO("PE1")==1)      //检测松开按键函数,松开按键跳出循环,k为密码的一位
					{
						break;
					}
				}
				m++;
				password_buf[j] = k;    //密码存储
				j++;
				if(j>5)                 //限制密码位数
				{
					j=0;
					k=-1;
				}		
			}
		}
		if(scan_key_down("PE2"))//按下按键选定模式,用另一个按键
		{
			delay(MSec(50));
			if(scan_key_down("PE2"))
			{
				if(m%6==0&&m!=0)
				{
					LCD_Show("密码设置OK!");
					for(i=0;i<6;i++)
					{
						printf("密码第%d位:%d\n",i+1,passwordBuf[i]);
						eeprom_wr8((char)password_buf[i],900+i);     //密码写进eeprom
						delay(MSec(10));
					}
					delay(Sec(2));
				}
				else
				{
					LCD_Show("密码设置NG!");
					LCD_Show("请重新输入密码!");
					delay(Sec(2));
					goto _REINPUT;         //调回开始重新执行
				}
				break;
			}
		}
		delay(MSec(20));
	}
}

欢迎爱技术的小伙伴一起交流,如有错误,希望告知,一起改正,共同进步。

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯咖啡半杯糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值