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和小键盘,上电,就可以测试运行结果了。