⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shumaguanxianshi.txt

📁 p0口为数码管的字形第四位为数码管控制端 键盘控制 p1低四位 控制 高四位扫描
💻 TXT
字号:
/*数码管键盘显示
通过日期2006-3-28
说明:
 p0口为数码管的字形第四位为数码管控制端

 键盘控制 p1低四位 控制 高四位扫描
*/
#include<reg51.h>
sfr p1=0x90;
sfr p0=0x80;
sbit p10=p1^0;//第4位显示
sbit p11=p1^1;
sbit p12=p1^2;
sbit p13=p1^3;//第一位显示
sbit p14=p1^4;//第4位显示
sbit p15=p1^5;
sbit p16=p1^6;
sbit p17=p1^7;
unsigned char code date[]={0xC0,0xF9,0xA4,0xB0,0x99, //0~4
       0x92,0x82,0xF8,0x80,0x90, //5~9
       0x88,0x83,0xA7,0xA1,0x86,0x8E,0xff}; //A~F
int dat1[4]={16,16,16,16};
void KeyScan(void);
void del1(unsigned char n);
void Dispaly(void);
unsigned char key,flag;
void main()    //主程序
{ while(1) KeyScan();}

void KeyScan(void) //扫描子程序 
{
 p10=0;
    if (!p14){flag=1; key=7;del1(3000);Dispaly();}
    if (!p15){flag=1; key=4; del1(3000);Dispaly();}
    if (!p16){flag=1; key=1;del1(3000);Dispaly();}
    if (!p17){flag=1; key=0;del1(3000);Dispaly();}
 p10=1;

 p11=0;
    if (!p14){flag=1; key=8;del1(3000);Dispaly();}
    if (!p15){flag=1; key=5;del1(3000);Dispaly();}
    if (!p16){flag=1; key=2;del1(3000);Dispaly();}
    if (!p17){flag=1; key=10;del1(3000);Dispaly();}
 p11=1;

 p12=0;
    if (!p14){flag=1; key=9;del1(3000);Dispaly();}
    if (!p15){flag=1; key=6;del1(3000);Dispaly();}
    if (!p16){flag=1; key=3;del1(3000);Dispaly();}
    if (!p17){flag=1; key=11;del1(3000);Dispaly();}
 p12=1;

 p13=0;
    if (!p14){flag=1; key=15;del1(3000);Dispaly();}
    if (!p15){flag=1; key=14;del1(3000);Dispaly();}
    if (!p16){flag=1; key=13; del1(3000);Dispaly();}
    if (!p17){flag=1; key=12;del1(3000);Dispaly();}
 p13=1;

 p10=0;
    if (!p14){flag=1; key=7;del1(3000);Dispaly();}
    if (!p15){flag=1; key=4;del1(3000);Dispaly();}
    if (!p16){flag=1; key=1;del1(3000);Dispaly();}
    if (!p17){flag=1; key=0;del1(3000);Dispaly();}
 p10=1;
Dispaly();
  }
void del1(unsigned char n){unsigned char i;for(i=0;i<n;i++);}

//显示程序
void Dispaly(void)
{int i;
if(flag){
for(i=3;i>0;i--)dat1[i]=dat1[i-1];
dat1[0]=key;}
flag=0;

p13=0;    //第一位
p0=0xff;
p0=date[dat1[0]];
del1(70);
p13=1;

p12=0;   //第2位
p0=0xff;
p0=date[dat1[1]];
del1(70);
p12=1;

p11=0;//第3位
p0=0xff;
p0=date[dat1[2]];
del1(70);
p11=1;

p10=0;//第4位
p0=0xff;
p0=date[dat1[3]];
del1(70);
p10=1;
}
/*数码管动态显示
p0口是字形控制
p1.0~3控制 低电平有效
效果:动态显示累加效果
*/
#include <reg51.h>
sfr p1=0x90;
sfr p0=0x80;
sbit p10=p1^0;//第4位显示
sbit p11=p1^1;
sbit p12=p1^2;
sbit p13=p1^3;//第一位显示

unsigned char code date[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//0~16,及不显示
int    dat2[]={0,0,0,0};
void   del1(void);
void   disp(void);
main()
{
int i;
long k;
while(1)
    {
     for(i=0;i<10;i++)
        {
         dat2[3]=i;
         for (k=0;k<30;k++)disp();//延时显示
        }
     dat2[2]+=1;
     if(dat2[2]>9)
	   {dat2[1]+=1;dat2[2]=0;}
     if(dat2[1]>9)
	   {dat2[0]+=1;dat2[1]=0;}
     if(dat2[0]>9)dat2[0]=0;
    }

}

 void disp(void)
     {
      p13=0;    //第一位像当于个位
      p0=date[dat2[3]]&0x7f;	
      del1();
      p0=0xff;  
      p13=1;

      p12=0;   //第2位
      p0=date[dat2[2]];
     if((!dat2[0])&&(!dat2[1])&&(!dat2[2]))p0=0xff;
      del1();
     p0=0xff;  
      p12=1;

      p11=0;//第3位
      p0=date[dat2[1]];
	  if((!dat2[0])&&(!dat2[1]))p0=0xff;
      del1();
   p0=0xff;  
      p11=1;

      p10=0;//第4位
      p0=date[dat2[0]];
     if(!dat2[0])p0=0xff;
      del1();
   p0=0xff;  
      p10=1;
      }

void del1(void)//显示消震
    {
     int j;
     for (j=0;j<90;j++);
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -