資源簡介
單片機密碼鎖.zip

代碼片段和文件信息
#include?
unsigned?char?show[8]={00000000};
unsigned?char?code?seg7_table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x710x400x000x500x5c};
unsigned?char?code?wei_table[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};
unsigned?char?code?err[]={0x0e0x120x120x130x120x110x110x11};
unsigned?char?count=0;
unsigned?long?ab;
unsigned?char?flag=0;
//unsigned?char?flag1=1;
unsigned?char?key_code;
bit?key_press=0;
void?delay(long?dly)
{
while(dly--);
}
void?disp(long?dat)
{
????
bit?flag1=0;????
long?e;
unsigned?char?i;
e=dat;
?if(e==0)?
{
for(i=0;i<7;i++)
{
show[i]=0x11;
}
show[7]=0x00;
}
else?if((e>99999999)||(e<-9999999))
{
????????for(i=0;i<8;i++)
{
?show[i]=err[i];
}
}
else
{
????if(e<0)
{
flag1=1;
e=-e;
}
for(i=0;i<8;i++)
{
if(e>=1)
{
????show[7-i]=e%10;
e=e/10;
}
else
{
????if(flag1==1)
{
show[7-i]=0x10;
flag1=0;
}
else
{
show[7-i]=0x11;
}
}
}
}
}
void?read_key() //4X4矩陣鍵盤說明:行為輸入,列為輸出
{
????char?xy;
char?i;
P1=0xf0;
if(P1!=0xf0)
{
delay(1000);
if(P1!=0xf0)
{
????y=P1;?
x=0xfe;
for(i=0;i<4;i++)
{
P1=x?|0xf0;
if((P1?&?0xf0)!=0xf0)
{
x=P1;
key_code=y?|?(x?&?0x0f);
key_press=1;
}
x=(x<<1)+0x01;
}
switch(key_code)
{
case?0xee:????key_code=7;break;
case?0xde:????key_code=8;break;
case?0xbe:????key_code=9;break;
case?0x7e:????key_code=14;break;
????????????????????? case?0xed:????key_code=4;break;
case?0xdd:????key_code=5;break;
case?0xbd:????key_code=6;break;
case?0x7d:????key_code=13;break;?
case?0xeb:????key_code=1;break;
case?0xdb:????key_code=2;break;
case?0xbb:????key_code=3;break;
case?0x7b:????key_code=12;break;
????????????????????? case?0xe7:????key_code=15;break;
case?0xd7:????key_code=0;break;
case?0xb7:????key_code=16;break;
case?0x77:????key_code=11;break;
}
???
}
}
}
void?calculate()
{
??????if(key_code<10)
??{
???????if(flag==0)
???{
??????a=a*10+key_code;?
??disp(a);
}
???else
???{
??????b=b*10+key_code;?
??disp(b);
}
??????}
??else
??{
?????switch(key_code)
{
case?11:flag=1;break;
case?12:flag=2;break;
case?13:flag=3;break;
case?14:flag=4;break;
case?15:a=0;b=0;disp(a);flag=0;break;
case?16:{
switch(flag)
{
case?1:a=a+b;disp(a);b=0;break;
case?2:a=a-b;disp(a);b=0;break;
case?3:a=a*b;disp(a);b=0;break;
case?4:a=a/b;disp(a);b=0;break;
}
}
}
??}
?????
?????
}
void?main()
{
????TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
EA=1;
ET0=1;
a=0;
b=0;
disp(a);
// get_keycode();
while(1)?
{
read_key();
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-08-29?23:06??簡易計算器\
?????文件????????8139??2018-04-25?13:51??簡易計算器\counter
?????文件????????3316??2018-04-25?13:51??簡易計算器\counter.c
?????文件????????4534??2018-04-25?13:51??簡易計算器\counter.hex
?????文件??????????46??2018-04-25?13:51??簡易計算器\counter.lnp
?????文件???????10137??2018-04-25?13:51??簡易計算器\counter.LST
?????文件???????13692??2018-04-25?13:51??簡易計算器\counter.M51
?????文件????????9869??2018-04-25?13:51??簡易計算器\counter.OBJ
?????文件?????????757??2018-04-25?13:51??簡易計算器\counter.plg
?????文件???????55217??2018-04-25?13:51??簡易計算器\counter.uvopt
?????文件???????13234??2018-04-18?16:29??簡易計算器\counter.uvproj
?????文件???????55221??2018-04-25?13:48??簡易計算器\counter_uvopt.bak
?????文件???????????0??2018-04-18?16:26??簡易計算器\counter_uvproj.bak
?????文件???????97430??2018-04-25?13:54??簡易計算器\jycounter.DSN
?????文件?????????768??2018-04-25?15:32??簡易計算器\jycounter.PWI
?????文件???????97428??2018-04-25?13:52??簡易計算器\Last?Loaded?jycounter.DBK
- 上一篇:基于單片機的智能照明系統
- 下一篇:基于verilog的串口實現
評論
共有 條評論