很好的作品,谢谢分享。
下面是楼主的mima.h文件:
- #ifndef _MIMA_H_
- #define _MIMA_H_
- #include"mima.h"
- #include<reg51.h>
- #include"lcd.h"
- #include"keyscan.h"
- #define A 0x0a //输入密码
- #define enter 0x0b // 确认
- #define B 0x0c //修改密码
- #define backspace 0x0d //退格
- #define D 0x0e // 关锁
- /*比较密码函数,密码正确返回1,不正确返回0*/
- bit mimaduibi(unsigned char *shuru1,unsigned char *shuru2)
- {
- unsigned char i;
- for(i=0;i<7;i++)
- {
- if(shuru1[i]!=shuru2[i])
- return 0;
- }
- return 1;
- }
- /*选择输入密码或修改密码函数,输入密码返回A,修改密码返回B*/
- unsigned char step_choose()//选择输入密码或修改密码处理函数
- {
- unsigned char key;
- key=0xff;
- write_com(0x06);//写一个字符后地址指针加 1
- write_com(0x01);//显示清零,数据指针清零
- lcd_pos(0,0);
- write_zfc("Input password ");
- lcd_pos(1,0);
- write_zfc(" Press key A ");
- while((key!=A)&&(key!=B))
- key=keyscan();
- return key;
- }
- /*输入密码函数,密码正确返回1,错误返回0*/
- bit input_mima(unsigned char *mima)//输入密码函数
- {
- unsigned char count,key;
- lcd_pos(1,0);
- for(count=0;count<8;count++)
- {
- delay(100);
- if(count<7)
- {
- do{key=keyscan();}//扫描键盘
- while(key==0xff);
- if((key!=backspace)&&(key!=A)&&(key!=enter))//不是退格也不是确认键
- {
- write_dat('*');//是数字键显示*
- mima[count]=key;
- }
- if(key==backspace)//是退格键
- {
- if(count>0)
- {
- lcd_pos(1,--count);//光标前移一位
- write_dat(' ');//清空一位
- mima[count] =' ';//写空
- lcd_pos(1,count);
- count--; //密码计数器减一 ,因为循环后会+1,所以在这里要加1
- }
- }
- if(key==enter) //没完成密码输入返回错误信息
- {
- lcd_pos(0,0);
- return(0);
- }
- }
- if(count==7)
- {
- do{key=keyscan();}
- while((key!=backspace)&&(key!=enter));
- if(key==backspace)
- {
- lcd_pos(1,--count);
- write_dat(' ');
- mima[count]=' ';
- lcd_pos(1,count);
- count--;
- }
- if(key==enter) //密码位数正确
- {
- return(1); //返回1正确信号
- }
- }
- }
-
- }
- #endif
复制代码
|