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

📄 display1.c

📁 基于S51单片机的C源码 对学习S51单片机的同学很有帮助 包含了实验室的和多模块程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                    0x01,0x3B,0x42,0x12,0x38,0x14,0x04,0x33,0x00,0x10,0x7e,0x44,0x28,0x4D,0x60,0xff,
                  //  A    b   C    d    E    F    A.   b.    C.  D.  E.   F.
                    0xa0,0x8C,0xcA,0x8A,0xc4,0xe4,0x20,0x0C,0x4A,0x0A,0x44,0x64,0x24,0x47,0x60,0xff};
code uchar wei[12]={0xff,0xff,      0xfe,   0xfd,   0xfb,   0xf7,          0xef,   0xdf,   0xbf,     0x7f, 0xff};
//                  P3.7   P3.6    P2.0    P2.1    P2.2    P2.3           P2.4    P2.5    P2.6      P2.7   P3.5

dis_wei=0xff;
disw0=disw1=diswa=1; //P3^7;

key_enable=0;   //1;
dis_out=0xff;
key_value=KEYBORD;  key0=disw0; key1=disw1;  flag_key0=1; //dis_wei;
key_enable=1;


key_enable=1;

dis_out=0xff;  //seg[dis_buff[dis_p]];
switch(dis_p){
    case 0:
         //diswb=1;
         //for(i=0;i<30;i++){}
         disw1=disw2=disw3=disw4=disw5=disw6=disw7=disw8=disw9=diswa=1;
         disw0=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 1:
         //disw0=1;
         //for(i=0;i<30;i++){}
         //disw0=disw2=disw3=disw4=disw5=disw6=disw7=disw8=disw9=diswa=diswb=1;
         disw0=1;  disw1=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 2:
         //disw1=1;
         //for(i=0;i<30;i++){}
         //disw1=disw0=disw3=disw4=disw5=disw6=disw7=disw8=disw9=diswa=diswb=1;
         disw1=1; disw2=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 3:
         //disw2=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw0=disw4=disw5=disw6=disw7=disw8=disw9=diswa=diswb=1;
         disw2=1; disw3=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 4:
         //disw3=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw0=disw5=disw6=disw7=disw8=disw9=diswa=diswb=1;
         disw3=1; disw4=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 5:
         //disw4=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw4=disw0=disw6=disw7=disw8=disw9=diswa=diswb=1;
         disw4=1; disw5=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 6:
         //disw5=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw4=disw5=disw0=disw7=disw8=disw9=diswa=diswb=1;
         disw5=1; disw6=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 7:
         //disw6=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw4=disw5=disw6=disw0=disw8=disw9=diswa=diswb=1;
         disw6=1; disw7=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 8:
         //disw7=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw4=disw5=disw6=disw7=disw0=disw9=diswa=diswb=1;
         disw7=1; disw8=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 9:
         //disw8=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw4=disw5=disw6=disw7=disw8=disw0=diswa=diswb=1;
         disw8=1;disw9=0;
         dis_out=dis_buff[dis_p];  //bit display
         break;
    case 10:
         //disw9=1;
         //for(i=0;i<30;i++){}
         //disw1=disw2=disw3=disw4=disw5=disw6=disw7=disw8=disw9=disw0=diswb=1;
         disw9=1; diswa=0;
         dis_out=dis_buff[dis_p];  //位操作
         break;
    default:
         disw0=1;
         disw1=disw2=disw3=disw4=disw5=disw6=disw7=disw8=disw9=diswa=1;
         break;
    }

dis_p++;
if(dis_p>10)dis_p=0;  //&=0x07; //3??


/*
switch(dis_p){
    case 0:
         dis_wei2=1; dis_wei0=0; //dis_wei1=dis_wei2=1;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 1:
         dis_wei0=1;  dis_wei1=0;
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 2:
         dis_wei0=dis_wei1=dis_wei2=1;
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
         dis_wei&=wei[dis_p];
         dis_out=seg[dis_buff[dis_p]];
         break;
    case 9:
         //dis_wei0=dis_wei1=dis_wei2=1;
         dis_wei&=wei[dis_p];
         dis_out=dis_buff[dis_p];
         break;
    case 10:
         dis_wei2=0; //dis_wei0=dis_wei1=1;
         dis_out=dis_buff[dis_p];
         break;
    default:
         dis_wei2=dis_wei0=dis_wei1=1;
         dis_p=0;
         break;
    }
dis_p++;
if(dis_p>10)dis_p=0;  //&=0x07; //3??
      */
us250++;
if(!(us250^122)){
    us250=0;
    ms50++; T_key++;
    if(ms50&0x20){
         ms50=0;
        second++; second1++; second_COM++;
        if(second>=60){
              second=0; minuter++;
              }
        }
    }
}
/*********************************************************/
void t1int(void) interrupt 3 using 2
{
return;
}
/*---------------------------------------------------------*/
void itoa(int x,unsigned char *str2)
{
data unsigned int n;
data unsigned char chn,*p,str1[5],*str;
data unsigned char i,j;
str=str2;
if(x<0){
	*str++='-';
	x=-x;
	}
n=x;
p=str1;
j=0;
while(n!=0){
	chn=n%10;
	n=n/10;
	*p++=chn+'0';
	j++;
	}
if(j!=0){
	p--;
	for(i=0;i<j;i++)*str++=*p--;
	}
else    *str++='0';
*str=0;
return;
}
/*---------------------------------------------------------*/
/*----------------------------------------------------*/
/*
chl=1,2,3 select display the LED view window
*/
void display(uint x1,uchar chl1)
{
data uchar str[5],*p,i,chl;
data uint x;
x=x1; chl=chl1;
p=str;
if(x>9999)x=9999;
itoa(x,str);
for(i=0;i<4;i++)str[i]&=0x0f;
//str[2]|=0x10;
if(x<=999){
	if(x>99){
              //for(i=0;i<3;i++)str[i]=str[i-1]; str[0]=0x0f;
              }else{
              if(x>9){
                  str[2]=str[1]; str[1]=str[0];   str[0]=0x0f;
                  }else{
                  str[2]=str[0]; str[1]=0x10;  str[0]=0x0f;
                  }
	      }
	}
if(x<=999) str[1]|=0x10;
if(x<1150){
     if(chl==1)for(i=0;i<3;i++)dis_buff[i]=str[i];
             else
             for(i=0;i<3;i++)dis_buff[3+i]=str[i];
     }else{
     if(chl==1)for(i=0;i<3;i++)dis_buff[i]=0x0a;   //display '---'
             else
             for(i=0;i<3;i++)dis_buff[3+i]=0x0a;   //display '---'
     }
}
/*----------------------------------------------------*/
/*----------------------------------------------------*/
void is_up_down_key(char *buff,uchar n)
{
data char *p1;
//n=n1;
p1=buff;
if(key_up){
	*(p1+n)+=1;
	if(speed==1) *(p1+n)+=10;
	}else{

	*(p1+n)-=1;
	if(speed==1) *(p1+n)-=10;
	}
while(key_sfr!=0xff)getkey();
key_sfr0=0;
}
/*----------------------------------------------------*/
/*----------------------------------------------------*/
void is_up_down_key2(char *buff,uchar n)
{
data char *p1;
//n=n1;
p1=buff;
if(key_up2){
	*(p1+n)+=1;
	if(speed==1) *(p1+n)+=10;
	}else{

	*(p1+n)-=1;
	if(speed==1) *(p1+n)-=10;
	}
while(key_sfr!=0xff)getkey();
key_sfr0=0;
}
/*----------------------------------------------------*/
/*---------------------------------------------------------*/



void main(void)
{
data uchar work,i,ch,ch1,count1;
data uint count;
SP=0xef;
P2=P3=P0=0xff;
for(count=0;count<0xd0;count++){ ch=0; }
for(count=0;count<0xd000;count++){ ch=0; rst_wdog();}

/*
for(i=0;i<16;i++)str[i]=i+'0';
save_buff(str,1);
for(i=0;i<16;i++)str[i]=0;
get_buff(str,1);
*/
init_t0();
IT0=IT1=1;
PX0=1; PX1=1; IE0=IE1=0; EX0=EX1=1;
for(i=0;i<12;i++) dis_buff[i]=0x0f;
dis_buff[9]=0x0ff; dis_buff[10]=0x0ff;
//dis_buff[0]=COM_buff[0]=0;  dis_buff[1]=COM_buff[1]=0;  // }  //i+count;
COM_ptr=0; busy=0; flag_COM=0;
/*
dis_buff[1]=2;
dis_buff[2]=0x0a;
dis_buff[3]=4;
*/
//call_sub_set1();

work=second;
count=0;  count1=0; COM_key=0; int_key=1;
while(1){
     while(work==second){  //==work){
           if(flag_COM) break;  //{
                  //flag_COM=0;
                  //dis_buff[COM_buff[0]]=COM_buff[1];
                  //}
           rst_wdog();
           }
     work=second;
     IT0=IT1=1;
     PX0=1; PX1=1; TR0=ET0=EX0=EX1=EA=1;

     //second1=0;
     getkey();
     if(key_sfr!=0xff){
           COM_key=key_sfr; //取键值 0---8
           int_key=0;  //发送按键中断申请脉冲
           for(i=0;i<5;i++){}
           int_key=1;
      	   flag_key=0;
	   while(key_sfr!=0xff){getkey();flag_key=0;}
	   key_sfr0=0;
           }else{
           COM_key=0xff;
           }
//   if(key_set) call_sub_set1();
//   if(key_set2) call_sub_set2();
   if(flag_COM){
       //dis_buff[6]++; if(dis_buff[6]>9)dis_buff[6]=0;
       flag_COM=0;
       //dis_buff[COM_buff[0]]=COM_buff[1];
       ch=COM_buff[0]&0x0f;
       //if(flag_unit2)ch=unit2[COM_buff[0]]; else ch=unit1[COM_buff[0]];
       ch=ch&0x0f;
       if(ch<0x09){
          ch1=COM_buff[1]&0x8f;
          if(ch1&0x80)ch1=(ch1&0x0f)|0x10;
          dis_buff[ch]=ch1;   //COM_buff[1]&0x0f;
          }else{
          if(ch<0x0b)dis_buff[ch]=~COM_buff[1];   //位操作 bit=0 lamp on
          }
       COM_buff[0]=0xff;
       }
   if(busy){
       if(second_COM>2){  busy=0; flag_COM=0;}
       }
   //dis_buff[0]=COM_buff[0];  dis_buff[1]=COM_buff[1];
   //dis_buff[4]=dis_buff[5]=dis_buff[7]=0x0f;
   //dis_buff[8]=count;
   //for(i=0;i<11;i++)dis_buff[i]=count+i;
   count++;   count1++;
   if(count>40)count=0;
     }
}

⌨️ 快捷键说明

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