📄 mima.c
字号:
#include <reg51.h>
#include <intrins.h>
#define EXTERN_YEJING
#include "yejing.h"
#include "MiMa.h"
#define EXTERN_I2C
#include "i2c.h"
///////////////////////////变量定义///////////////////////////////////////////////
bit inputmima;///////////密码正确与否标志/////
bit inputzhanghao;///////帐号正确与否标志/////
bit configxinmima;///////设置新密码成功与否标志//////////
uchar Sab1[7];//={0,0,0,0,0,0,0};////帐号输入寄存变量/////
uchar Sab2[7];//={0,0,0,0,0,0,0};////密码输入寄存变量/////
uchar Sab3[7];/////////////////////新密码输入寄存变量//////
uchar Sab4[6];/////////第一次输入新密码后,新密码的寄存变量//与写AT24C01有关////
uchar k;//// k的值反映程序当前是在处理帐号,还是密码,还是新密码,还是其他等/////
int m1,m2,m3;/////m1、m2和m3的值反映了在输入帐号和密码、新密码时共输入了几位数字///////
uchar number; /////输入密码错误的次数标志/////////
bit flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8,flag9,flag10,flag11,flag12;//,flag13;
//////////////////////////各种标志,可控制程序的走向/////////////
uchar z2,z3;///////第几次密码输入正确的标志/////
uchar g_i; //////确定在处理哪个客户的帐号和密码////////
////////////////////////////////////////////////////////////////////////////////////
///////////////////////////键盘处理函数:共有7个模块///////////////////////////////////////////////
//////用户按正常流程连续操作,可分别进入到7个模块中,并可成功进入界面。用户在每个模块中的////////
//////每一步操作中如果有意停留系统会在预定的时间到达后自动退出bit Keyboard_Process(void)函数//////
//////////(之后的模块均不执行)///////////////////////////////////////////////////////////////////
bit Keyboard_Process(void)/////成功进入界面,返回1,否则返回0/////////
{
inputmima=0;///////////密码正确与否标志/////
inputzhanghao=0;///////帐号正确与否标志/////
configxinmima=0;
k=0;//// k的值反映当前是处理帐号还是密码/////
m1=-1;m2=-1;m3=-1;/////m1和m2的值反映了在输入帐号和密码时共输入了几位数字///////
number=0; /////输入密码错误的次数/////////
z2=z3=111;///////第几次密码输入正确的标志/////
P0=0x8f; /////键盘的正常工作赋值//////////////////////
///////////////////////////// 模块1 ///////////////////////////////////////////////////////////
if((P00&P01&P02&P03)==0)/////第1个if(P26&P25&P24&P23==0)开始////////
{
flag1=1;
LcdWriteCommand(0x01,1); //显示清屏///
Disp_strings(0,0," 您有帐号吗? %");///您有帐号吗?////
Disp_strings(0,1,"有请按 Y%"); ///有请按 Y//////
while((P00&P01&P02&P03)==0);/////等待键释放/////
Wooae(flag1);/////保证能从此处退出第1个if(P26&P25&P24&P23==0),此处后面的程序均不要执行/////////
}/////第一个if(P26&P25&P24&P23==0)结束////////
//////////////////////////////////////////////////////////////////////////////////////////////////
////////////////// 模块2 //如果用户继续往下面操作,进入模块2////////////////////////////////////
if((P00&P01&P02&P03)==0)/////第2个if(P26&P25&P24&P23==0)开始///////
{
uchar keynum1;
flag2=1;
keynum1=Get_KeyNum();
// while((P00&P01&P02&P03)==0);/////等待键释放后执行键功能函数/////
switch(keynum1)
{
case 10: LcdWriteCommand(0x01,1); //显示清屏///
Disp_strings(0,0,"请输入帐号: %");///请输入帐号: ////
k=10; break;
default : LcdWriteCommand(0x01,1); //显示清屏///
Disp_strings(0,0,"没有按提示操作! %");///没有按提示操作!////
Delay400Ms();Delay400Ms();
break;///此情况没有按提示操作,认为是误操作,会很快退出///////
}/////switch结构结束////
Wooae(flag2);/////保证能从此处退出第2个if(P26&P25&P24&P23==0),此处后面的程序均不要执行/////////
}/////第2个if(P26&P25&P24&P23==0)结束///////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// 模块3 //如果用户继续往下面操作,进入模块3//////////////////////////////////////////////
///////////////////////////先处理帐号:k=10的情况///////////////////////////////////////////
while(((P00&P01&P02&P03)==0)&&(k==10))
{
uchar keynum2;
flag3=1; flag4=0;flag5=0;
keynum2=Get_KeyNum();
// while((P00&P01&P02&P03)==0);/////等待键释放后执行键功能函数/////
m1++;
if(m1<=6)
{
switch(keynum2)
{
case 0: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=0; break;
case 1: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=1; break;
case 2: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=2; break;
case 3: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=3; break;
case 4: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=4; break;
case 5: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=5; break;
case 6: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=6; break;
case 7: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=7; break;
case 8: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=8; break;
case 9: Disp_strings(m1,1,"* %");///显示"* " ////
Sab1[m1]=9; break;
case 10: Disp_strings(m1,1,"Y %");///显示"Y " ////表示确认//
Delay400Ms();Delay400Ms();
ZhangHao_hit_Y_Process(); /////调用帐号按Y处理函数//////
break;
case 11: Disp_strings(m1,1,"N %");///显示"N " ////表示取消//
Delay400Ms();Delay400Ms();
LcdWriteCommand(0x01,1); //显示清屏///
Disp_strings(0,0,"本次输入有误! %");///本次输入有误!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -