1.功能实现: a) 每次按键有按键提示音; b) 要求密码为6位,从矩阵键盘直接输入,不需要数码管显示输入信息;密码输入正确后,提供声光指示;连续3次输入错误,提供声光报警; C) 密码能够被修改。
2.矩阵键盘扫描说明:
单片机源程序如下:
- /**
- **********************************************
- * File Name : main.c
- * Description : Main program body
- * Function : stm32f103 Test
- * Created on : 2018年
- * Author : KACHEN
- * Team : ETA(hnjdzy)
- **********************************************
- **/
- #include "public.h"
- int count,m;
- int main(void)
- {
-
- char Password[6] = {'1', '2', '3', '4', '5', '6'}; //初始密码设置
- led_init();
- bell_init();
- keyboard_init();
-
- while(1)
- {
-
- read_keyvalue();
- if(deposit[0] == '#')//密码修改
- {
- PEout(0)=1; //led提示
- delay_ms(300);
- PEout(0)=0;
- delay_ms(300);
- read_keyvalue();//读取按键值
- for(m=0;m<6;m++)
- {
- PEout(m)=1; //led提示
- delay_ms(100);
- PEout(m)=0;
- delay_ms(100);
- Password[m]=deposit[m] ; //保存六位密码
-
- }
- }
- else
- {
- //判断输入的六位密码是否和初始密码相同
- if((deposit[0] == Password[0]) & (deposit[1] == Password[1]) & (deposit[2] == Password[2])
- & (deposit[3] == Password[3]) & (deposit[4] == Password[4]) & ( deposit[5] == Password[5]))
- {
- bell_display(200); //密码正确提示
- GPIO_SetBits(GPIOE, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_6 | GPIO_Pin_7);
- delay_ms(200);
- bell_display(200);
- GPIO_ResetBits(GPIOE, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_6 | GPIO_Pin_7);
- delay_ms(200);
- }
- else if(count++ == 2) //密码错误报警
- {
- count = 0;
- bell_display(1000);
- GPIO_SetBits(GPIOE, GPIO_Pin_All);
- delay_ms(1000);
- bell_display(1000);
- GPIO_ResetBits(GPIOE, GPIO_Pin_All);
- delay_ms(1000);
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
Test 3.rar
(353.84 KB, 下载次数: 351)
|