标题:
单片机数据存储出问题
[打印本页]
作者:
rrrlll
时间:
2017-10-16 20:40
标题:
单片机数据存储出问题
我做的是密码锁,删除数据不能全部删除,会有一位乱的数据遗留,这是怎么回事啊
以下是我的程序
#include<reg52.h>
#include"1602.h"
#include"delay.h"
#include"keyboard.h"
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit beep=P1^5;
unsigned char data password[]={1,2,3,4,5,6};
void sound()
{
int t=2000;
while(t--)
{
beep=~beep;
delay(50);
}
}
/*------------------------------------------------
Ö÷³ÌÐò
------------------------------------------------*/
main()
{
unsigned char num,i,j;
unsigned char passwordtemp[6],inputtimes;
unsigned char passwordlength,PLEN;
bit Flag;
PLEN=sizeof(password)/sizeof(password[0]);
LCD_Init();
DelayMs(10);
LCD_Clear();
LCD_Write_String(0,0," Welcome! ");
LCD_Write_String(0,1,"Input password!");
while (1)
{
num=KeyPro();
if(num!=0xff)
{
if(i==0)
LCD_Write_String(0,1," ");
if(i<6)
{
passwordtemp[i]=num;
LCD_Write_Char(i,1,num+'0');
}
if(num=='A')
{
i=0;
LCD_Clear();
LCD_Init();
LCD_Write_Char(i,1,num+'0');
passwordtemp[i]=0;
}
i++;
if(i==7)
{
passwordlength=i-1;
i=0;
if(passwordlength==PLEN)
{
Flag=1;
for(j=0;j<PLEN;j++)
Flag=Flag&&(passwordtemp[j]==password[j]);
}
if(Flag)
{
LCD_Write_String(0,1," ");
LCD_Write_String(0,1," Lock open!");
LED1=0;
LED2=0;
inputtimes=0;
Flag=0;
}
else
{
LCD_Write_String(0,1," ");
LCD_Write_String(0,1," try again!!!");
sound();
inputtimes++;
if(inputtimes==3)
{
LCD_Write_String(0,1," ");
LCD_Write_String(0,1,"Wrong 3 times!");
while(1);
}
}
}
}
}
}
复制代码
作者:
yzwzfyz
时间:
2017-10-17 19:44
删除与显示构思不好!
删除只需在记录区做个标记,显示时看到这个标记就不显示(或显示一个提示信息)。你看这个建议如何?
作者:
rrrlll
时间:
2017-10-17 21:10
if(num=='B') { i=-2; LCD_Clear(); LCD_Init(); i++; if(i==0) LCD_Write_String(0,1," "); if(i<6) { LCD_Write_Data(password[i]); password[i]=num; LCD_Write_Char(i,1,num+'0'); } if(i==7) { LCD_Write_String(0,0," new password "); LCD_Write_String(0,1," "); LCD_Write_Char(i,1,num+'0'); Flag=1; }
作者:
rrrlll
时间:
2017-10-17 21:11
删除的程序可以用吗,我之前的问题已经解决了
if(num=='B')
{
i=-2;
LCD_Clear();
LCD_Init();
i++;
if(i==0)
LCD_Write_String(0,1," ");
if(i<6)
{
LCD_Write_Data(password[i]);
password[i]=num;
LCD_Write_Char(i,1,num+'0');
}
if(i==7)
{
LCD_Write_String(0,0," new password ");
LCD_Write_String(0,1," ");
LCD_Write_Char(i,1,num+'0');
Flag=1;
}
作者:
zl2168
时间:
2017-10-17 21:14
你要删除什么数据?是密码锁EPROM中的密码数据吗?
作者:
rrrlll
时间:
2017-10-17 21:28
修改这里面的数据password[]={1,2,3,4,5,6},一直修改不了,程序好像没有进去执行
作者:
usb123
时间:
2017-10-17 22:26
一般请教别人找问题的程序问题,,你首先要做到一个好的注释,方便别人快速的找到你的问题,你这样发程序,比人还要重头研究一遍
作者:
zl2168
时间:
2017-10-18 21:08
rrrlll 发表于 2017-10-17 21:28
修改这里面的数据password[]={1,2,3,4,5,6},一直修改不了,程序好像没有进去执行
在定义password[]时不要赋值,在程序运行后在赋值和修改。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1