VB muestra la contraseña ingresada por el microcontrolador (diseño de bloqueo de contraseña electrónica)
Después de configurar la contraseña de acuerdo con la tarea experimental, use dos botones para implementar la función de entrada. Ingrese la contraseña correcta. Cuando ingrese la contraseña, se abrirá el bloqueo. ingresado tres veces, el botón se bloqueará durante 3 segundos y se detectará un sonido de alarma al mismo tiempo, no se presiona ningún botón hasta tres veces más tarde, siempre que la función de bloqueo de botones esté activada; Si aún se presionan los botones, el botón se volverá a bloquear durante 3 segundos y se activará la alarma.
2. Principio
Figura 4.32.1
3. Conexión de la placa de hardware del sistema
(1). La línea P0.0/AD0 en el área "Sistema" está conectada al terminal SPK IN en el área "Módulo amplificador de audio";
(2) El altavoz y el terminal SPK OUT en el "Audio". Área del módulo amplificador";
(3). En el área "Sistema de microcontrolador" P2.0/A8-P2.7/A15, utilice un cable de 8 núcleos para conectarse a cualquiera de los "Cuatro estáticos Área de "Pantallas digitales" ABCDEFGH Un terminal;
(4) Conecte el altavoz y el terminal SPK OUT en el área "Módulo amplificador de audio" y conecte P1.0 en el área "Sistema de microcontrolador" al área de "Ocho LED". Módulo". "Terminal L1 en el área;
(5) Conecte P3.6/WR y P3.7/RD en el área "Sistema de microcontrolador" al SP1 en el área "Teclado independiente" con cables y cable del terminal SP2;
4. Contenido del programa
(1). Establezca la contraseña La contraseña de este programa se fija en la memoria ROM del programa. la contraseña es "12345 "Cinco contraseñas.
(2). Preguntas sobre cómo ingresar la contraseña: Gracias, luego una tecla, una tecla de función y otra tecla entre las teclas numéricas. Durante el proceso de entrada, primero ingrese. la longitud de la contraseña, luego ingrese la contraseña de acuerdo con la cantidad de dígitos de la contraseña hasta que se puedan ingresar todas las longitudes después de presionar la tecla de función o ingresar la contraseña para determinar el estado de la contraseña y la correspondiente; proceso de procesamiento.
(3). Función de prohibición de clave: inicializada para permitir que cuando se presiona la tecla, comienza a ingresar al estado de reconocimiento de clave cuando se ingresa la contraseña presionando la tecla, la función de bloqueo de clave. está activado, pero al comienzo de un estado, la contraseña se ingresa incorrectamente tres veces.
Código fuente 5 C
#Contiene contenido
Código de caracteres sin firmar PS [] = {1,2,3,4,5}; >
p>
Código de caracteres sin firmar dispcode [] = {'s 0x3F, 0X06, a 0x5B, 0X4F, 0x66,
0x6d, 0x7d.0X07, a 0x7f, 0x6f, para 0x00 , 0X40} ;
pslen de caracteres sin firmar = 9;
plantilla de caracteres sin firmar;
recuento de bits de tipo de caracteres sin firmar
p>
número de dígitos de caracteres sin firmar
tipo de caracteres sin signo psbuf [9]
bit cmpflag; hibitflag;
bit readErrorFlag;
bit rightflag;
entero sin signo sec3;
entero sin signo AA; >entero sin signo BB;
bit alarmflag;
bit exchangeflag;
centímetros cúbicos sin signo
día entero sin signo
bit okflag;
carácter sin firmar Ok;
carácter sin firmar OKB;
Primario no válido (no válido)
{
tipos de caracteres sin firmar I, J;
P2 = código de distribución [número de dígitos];
TMOD = 0X01; -500) / 256;
p>TL0 = (65536-500)%256;
TR0 = 1
ET0 = 1; >
EA = 1;
p>
Y (1)
{
si (cmpflag == 0)
{
if (P3_6 = = 0) // Tecla de función {
solo (i = 10, I> 0, I - )
para (J = 248; J> 0; de J -
if (P3_6 == 0)
{
if (hibitflag == 0) )/ / Si la tecla está bloqueada
funcount + +; ( funcount == pslen +2) // Antes
Si presiona la tecla de función 1, presione la tecla numérica 1 para completar la longitud de la contraseña input
{
funcount = 0;
cmpflag = 1;
P1 = dispcode [funcount] // Podrás decidir si pulsas el botón de luz o no
}.
{
seg 3 = 0
mientras (P3_6 == 0);
si (P3_7 == 0) / / las teclas numéricas
{
en (i = 10; > 0; I - )
para (J = 248; J& gt; 0; de J - );
Si (P3_7 == 0)
{
Si (hibitflag == 0)
{ p>
cuenta de dígitos + +;
Si (cuenta de dígitos == 10)
{
cuenta de dígitos = 0
P2; = dispcode [digitcount];
If (funcount == 1) // Presione la tecla de función e ingrese la longitud de la contraseña
{
pslen = digitcount;
p>templen = pslen;
De lo contrario, if (funcount> 1) // Iniciar grabación contraseña
{
psbuf [ funcount-2] = recuento de dígitos;
{
sec3 = 0;
También (P3_7 == 0); /p>
Otros/ / Comparación
{
cmpflag = 0;
on (i = 0; I < pslen, I ++)
{
if (!PS [I] = psbuf [I])
{
hibitflag = 1 // Incorrecto; contraseña, activar la función de bloqueo de teclas
I = pslen;
readErrorFlag = 1;
rightflag = 0
cmpflag = 0;
segundos3 = 0;
Ir a uno
CC = 0;
ReadErrorFlag = 0; > rightflag = 1;
hibitflag = 0;
Uno: cmpflag = 0
}
T0 Interrupción no válida 1 uso 0;
=(65536-500)/ 256;
TL0 = (65536-500)%256
Si ((readErrorFlag == 1) & &(rightflag == 0))
{
BB+; <
Si (BB== 800)
{
BB = 0;
bandera de alarma =bandera de alarma;
}
Si (bandera de alarma == 1)
{
P0_0 = P0_0; // Pitido de alarma
}
AA +
Si (AA == 800)
{
AA = 0;
P0_1 = P0_1; // LED2 parpadea
}
Segundos
S
segundos 3 +;
Si (Sec 3 == 6400) /// parpadea cuatro veces (8 transiciones), se restablecerá automáticamente al estado en el que se presionó la tecla ENTER antes
{
sec3 = 0;
hibitflag = 0;
readErrorFlag = 0;
bandera derecha = 0;
cmpflag = 0;
P0_1 = 1;
alarmaflag = 0;
BB = 0
AA = 0; ;
p>If ((readErrorFlag == 0) & & (rightflag == 1)) // Haz un sonido de "ding dong"
{ BR /> P0_1 = 0 ; // LED2 LED encendido desde
CC++;
if (CC <1000)
{
okflag = 1; /p>
else if (CC <2000)
{
okflag = 0 ;
else // Restablecer automáticamente a noticias nacionales
{
readErrorFlag = 0 antes de ENTRAR;
rightflag = 0;
hibitflag = 0
cmpflag = 0; ;
P0_1 = 1; // Eliminación del diodo emisor de luz LED2
CC = 0
Gon = 0
OKB; = 0;
okflag = 0;
P0_0 = 1;
}
Si (okflag == 1)
{
Gon+ +
Si (oka == 2)
{
chu = 0 ; p>
P0_0 =P0_0;
{
OKB + +
Si (okb == 3)
{
OKB = 0
P0_0 =P0_0;