標(biāo)題:
單片機數(shù)據(jù)存儲出問題
[打印本頁]
作者:
rrrlll
時間:
2017-10-16 20:40
標(biāo)題:
單片機數(shù)據(jù)存儲出問題
我做的是密碼鎖,刪除數(shù)據(jù)不能全部刪除,會有一位亂的數(shù)據(jù)遺留,這是怎么回事啊
以下是我的程序
#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);
}
}
}
}
}
}
復(fù)制代碼
作者:
yzwzfyz
時間:
2017-10-17 19:44
刪除與顯示構(gòu)思不好!
刪除只需在記錄區(qū)做個標(biāo)記,顯示時看到這個標(biāo)記就不顯示(或顯示一個提示信息)。你看這個建議如何?
作者:
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
刪除的程序可以用嗎,我之前的問題已經(jīng)解決了
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
你要刪除什么數(shù)據(jù)?是密碼鎖EPROM中的密碼數(shù)據(jù)嗎?
作者:
rrrlll
時間:
2017-10-17 21:28
修改這里面的數(shù)據(jù)password[]={1,2,3,4,5,6},一直修改不了,程序好像沒有進去執(zhí)行
作者:
usb123
時間:
2017-10-17 22:26
一般請教別人找問題的程序問題,,你首先要做到一個好的注釋,方便別人快速的找到你的問題,你這樣發(fā)程序,比人還要重頭研究一遍
作者:
zl2168
時間:
2017-10-18 21:08
rrrlll 發(fā)表于 2017-10-17 21:28
修改這里面的數(shù)據(jù)password[]={1,2,3,4,5,6},一直修改不了,程序好像沒有進去執(zhí)行
在定義password[]時不要賦值,在程序運行后在賦值和修改。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1