while(cBufferPS[ctemp]==0xaa);//返回

0xaa说明键盘无动作

putchar(cBufferPS[ctemp]);

CharsWrite((0+ctemp),2,“*”);//在对应的

位置上显示*号

在用户完成输入之后,不论用户输入的密码是否正确,

都需要再一次清屏,准备显示接下来的内容。

Ctemp=check_ps();//该函数执行完成。说

明用户输入完成6位密码

ClearLcd();//清屏LCD

delay_us(80);//等待清屏指令完成

如果用户输入正确,则应依次显示存储在EEPROM中的数据,然后显示“PreSsanykeytoexit.。.”,等待用户输入任意键退出。在显示的时候应该要注意,

1.如果遇到‘%’号,说明读取一组密码结束,应该等待若干秒钟以方便用户观看密码·

2.如果遇到’$’号,说明所有密码已经读取,等待若干秒钟并退出,

3.如果一组密码的字符数大于16,则应该让LCD换行显示。

charuemp_show[2]=(0);//用于LCD显示数据

ctemp=0;//显示位置初始化,在LCD的第0列

uemp_show[1]=0;//用于存储显示数据的数组

的结束标志

while(EEPROM_read(iAddress)!=$’)

{

if(EEPROM_read(iAddress)==“%”)//-

组密码读取完成

{

putchar(0xod);

putchar(0xoa);//回车换行

delay_ms(4000);//delay4s,以方便用户察看

ClearLcd();//清屏LCD

delay_us(80);

ctemp=0;//下一组密码在LCD上的起始位置

}

+else

{

putchar(EEPROM_read(iAddress));

temp_show[0]=EEPROM_read(iAddress);

ctemp++;

if(ctemp《18)//一组密码的总数小于16

个,在LCD第一行显示

{

CharsWrite((ctemp-1),1,temp_show);

//显示一个字符

}

else//多于16个的,在LCD第二行显示

{

CharsWrite((Ctemp-18),2,

temp_show);//第二行显示一个字符

}

}

iAddress++;

;

putchar(0xod);

putchar(0xoa);//回车换行

delay_ms(4000);//delay4s,用于显示最后一组字符串

iAddress=7;

puts(”按任意键退出”);

ClearLcd();//清屏LCD

delay_us(80);

CharsWrite(0,1,”Pressanykey”);

CharsWrite(0,2,”toexit…”);//icdshow

”pressanykeytoexit”

ctemp=0;

do

ctemp=sCAN_keyboard();

while(ctemp==0xaa);//等待用户出入任意键退出

如果用户输入错误,则直接显示“PassWord

error!”2秒钟即可。

CharsWrite(0,1,”PassWorderror!“);

delay_ms(2000);

将工程编译以后下载入ATmega16,插上LCD和小键盘,上电,就可以测试运行结果了。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查