main.c
来自「这是一个我以前用AT89S52单片机做的128-64液晶屏的驱动显示程序」· C语言 代码 · 共 107 行
C
107 行
#include<reg52.h>
#include<intrins.h>
#include"12864-pin.h"
#include"BMP.h"
#define NOP
/*菜单函数;*/
extern void menu_operate(); // 主菜单界面
extern void menu_main();
extern void menu1(); // 子菜单;
extern void menu2();
extern void menu3();
extern void menu4();
extern void menu5();
extern void menu6();
extern void menu7();
extern void menu8();
bit compare(uchar *key); //密码核对;
bit VOI=0; // 声音开关
/////////////////////////////////////////////////////////////////////////
/////////按键声音///////////////////////////////////////////////////
void voice()
{
p37=0;
delay(30);
p37=1;
}
/////////////////////////////////////////////////////////////
///////密码错误画面/////////////////////////////////////////////
void key_error(void)
{
clrgdram();
clrddram();
send_i(0x0c); //关光标;
gotoxy(2,1);
LCD_puts("密码错误",8);
delay(800);
}
//////////////////////////////////////////////////////////////////////////////////
/////////密码输入///////////////////////////////////////////
void putkey(uchar *k)
{
uchar i;
for(i=0;i<6;i++)
{
(*k)=gotkey();
if(*k==15) write_appoint(i,0); // 万能开机方式:初始化密码为000000
if(VOI==1) voice(); // 按键声音
LCD_puts("*",1);
k++;
}
}
////////////////////////////////////////////////////////////////////////////////////////
main()
{
uchar i=0,keym[6];
init_LCD();
loop:
clrgdram();
clrddram();
putsBmp(0,0,8,32,BMP);
gotoxy(0,2); // 设置文本输出位置
LCD_puts("开机密码",8);
send_i(0x8c); // 设置DDRAM 光标位置;
send_i(0x0e); //开光标;
LCD_puts(" ",1);
putkey(keym); // 输入密码
if(compare(keym)==1) //密码比较;
menu_operate(); //系统菜单;
else
{
key_error();
goto loop; // 错误则返回;
}
}
/*////////////////////////////////////////////////////////////////
/////密码核对,*/////////////////////////////////////////////////*/
bit compare(uchar *key)
{
uchar k,i=0;
while(1)
{
k=read_appoint(i);
if(*key==15) return 1; // 系统后门:万能开机
if((*key++)==k) i++;
else break;
}
if(i==6) return 1;
else return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?