数值移位显示:功能:就像我们用的计算器那样,每按一次递增一位!我现在只做了2位的!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <reg52.h>
unsigned char smduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
unsigned char smwei[]={0xfe,0xFd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};
void jishi_ms(unsigned char ms)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
void main ()
{
unsigned char jz;
unsigned char js;
unsigned char g;
unsigned char s;
unsigned char smw;
bit flag ;
while(1)
{
//*************************************这段是4*4键盘,直接用8个IO口,没有任何上拉或下拉。
P1=0xf0;
if(P1!=0xf0)
{
jishi_ms(5);
if(P1!=0xf0)jz=P1;
P1=0x0f;
jz=jz|P1;
switch(jz)
{
case 0xee:js=0;break;
case 0xde:js=1;break;
case 0xbe:js=2;break;
case 0x7e:js=3;break;
case 0xed:js=4;break;
case 0xdd:js=5;break;
case 0xbd:js=6;break;
case 0x7d:js=7;break;
case 0xeb:js=8;break;
case 0xdb:js=9;break;
case 0xbb:js=10;break;
case 0x7b:js=11;break;
case 0xe7:js=12;break;
case 0xd7:js=13;break;
case 0xb7:js=14;break;
case 0x77:js=15;break;
default:break;
}
}
//************************************************下面就是检察了
if(P1!=0xf0)
{
if(js<9)
{
flag=1;
if(smw==0)
{
g=js;
}
/* if(smw==1)//如果加上这条语句就错了,改到下面就好了
{
s=g;
g=js;
} */
}
}
else
{
if(flag==1)
{
if(smw==1)//改到这里
{
s=g;
g=js;
}
smw++;
flag=0;
}
P2=smwei[3];
P0=smduan[g];
jishi_ms(5);
P2=smwei[2];
P0=smduan;
jishi_ms(5);
}
}
}