一些实用的函数2.如何使输入的密码变*号。3.短暂显示。4.按任意键继续

char* hidden_input(void)//隐藏式输入密码,用法:strcpy(*dest,hidden_input()),输入密码到给定字符串里
{
  stdin->_IO_read_ptr = stdin->_IO_read_end;//清空缓冲区
  static char p[21]={};
  int  i=0;
    do
    {
        p[i]=getch();
        if((int)p[i]==10)//是回车
    {
      p[i]='\0';    
            break;
    }
        if((int)p[i]==127)//是退格
        {
            if(i==0)
            {
                printf("\a");
                continue;
            }
            i=i-1;
            printf("\b \b");
        }
        else
        {
            i=i+1;
            printf("*");
        }
    }while(p[i]!='\n' && i<20);
	printf("\n");
	if(i==20)
	{
    	p[19]='\0';
    	printf("密码请不要越界哦\n");
    }
    if(p[0]=='\0')
    {
    	printf("密码为空,已自动置为初始密码\n");
    	strcpy(p,"123456");
    	anykey_continue();
    }
  	return p;
}

3.短暂显示

void msg_show(const char* msg, float sec)//短暂显示提示信息
{
    printf("%s",msg);
    fflush(stdout);
    usleep(sec*1000000);
}

4. 按任意键继续

void msg_show(const char* msg, float sec)//短暂显示提示信息
{
    printf("%s",msg);
    fflush(stdout);
    usleep(sec*1000000);
}

实验题目:“数字密码锁”设计与实现实验目的:1.掌握GPIO的输入(按键)和输出(蜂鸣器、LED)功能的基本原理和编程方法。2.理解简单的状态机设计和逻辑控制。3.培养创新思维和实际问题解决能力。4.通过GPIO实现一个简单的数字密码锁系统。实验设备:1.正点原子STM32F407探索者开发板1块。2.USB调试线1根。3.电脑1台(安装有KeilMDK或其他STM32开发工具)。4.开发板自带的按键、蜂鸣器和LED灯。实验原理:本实验通过GPIO实现一个简单的数字密码锁。用户通过按键输入预设的密码,系统通过蜂鸣器和LED灯提供反馈。实验中不使用中断和定时器功能,仅通过软件延时实现按键扫描和状态控制。实验内容:1.硬件资源分配: 使用开发板上的4个按键作为数字输入(假设分别代表数字1、234)。使用开发板上的蜂鸣器作为声音反馈设备。使用开发板上的LED灯作为状态指示设备(如输入正确、错误、解锁成功等)。2.密码锁逻辑设计:密码设置:预设一个4密码(如“1234”),用户需要通过按键依次输入4位数字。输入逻辑:按下按键时,通过轮询扫描检测按键状态。每次按键后,蜂鸣器发出短暂的“滴”声,表示按键被识别,LED灯闪烁一次。如果输入的数字与预设密码一致,LED灯显示绿色,蜂鸣器发出“解锁成功”的声音(如连续三声“滴”)。如果输入错误,LED灯显示红色,蜂鸣器发出“错误提示音”(如两声“滴”)。用户有3输入机会,如果3次都失败,系统锁定,LED灯闪烁红色并发出警告音。解锁成功:LED灯持续显示绿色,蜂鸣器发出解锁成功的声音。按下任意按键可重新开始。 锁定状态:LED灯闪烁红色,蜂鸣器发出警告音。按下任意按键可重置密码锁,重新开始输入3.实验验证:将编译好的程序下载到开发板中。按下按键输入密码,观察LED灯和蜂鸣器的反馈是否符合预期。验证密码正确时是否解锁成功,密码错误时是否提示错误。验证多次输入失败后是否进入锁定状态。4.拓展实验:增加密码修改功能,通过特定按键组合进入密码设置模式。使用多个LED灯显示不同的状态(如输入中、错误、成功等)。增加密码长度或复杂度,提高安全性。实验要求:1.提交实验报告,内容包括实验目的、实验原理、实验步骤、实验代码、实验结果以及实验心得。2.在实验报告中详细说明GPIO初始化的配置过程,解释代码中各个参数的含义。
最新发布
04-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xiaoyu1381

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

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

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

打赏作者

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

抵扣说明:

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

余额充值