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

📄 shukongdianyuanyuandaima.txt

📁 此程序是为51开发的数控电源所写
💻 TXT
字号:
http://blog.21ic.com/user1/2695/archives/2006/18469.html


#i nclude<reg52.h>

#i nclude<absacc.h>

#i nclude<math.h>

#i nclude<stdio.h>

#define DAC0832 XBYTE[0X7FFF]

unsigned char code table0[]={0xfd,0x61,0xdb,0xf3, 0x67,0xb7,0xbf,0xe1, 

                              0xff,0xf7};

unsigned char code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0, 

                              0xfe,0xf6,0x80,0x40,0x20,0x10,0x08};

unsigned char k;

unsigned char t;

unsigned char s[3];

void delay1200ms(void) //延时模块

      { 

       unsigned char m,n,k;

       for(k=20;k>0;k--)

       for(m=120;m>0;m--) 

       for(n=248;n>0;n--);

      }  

 void delay10ms(void) 

      { 

       unsigned char m,n;

       for(m=20;m>0;m--) 

       for(n=248;n>0;n--);

      }  

void output(void)//输出模块

{

 t=s[2]*100+s[1]*10+s[0];

 if(t<=179)

   DAC0832=t;

 }

void clear(void)//清零模块

{ 

 SCON=0x00;

 TI=0;

 s[2]=0;

 SBUF=table[0];

 while(!TI);

 TI=0;

 s[1]=0;

 SBUF=table0[0];

 while(!TI);

 TI=0;

 s[0]=0;

 SBUF=table[0];

 while(!TI);

 output();

 }

 

void getch(void)//键盘模块

{   unsigned char X,Y,Z;

    unsigned char h;

    h=1;

    while(h)  

   { 

    P1=0xff;

       P1=0x0f;       

       if(P1!=0x0f)    

       {delay10ms();    

        if(P1!=0x0f)   

       {

        h=0;

        X=P1;          

        P1=0xf0;       

        Y=P1;          

       Z=X|Y;         

        switch ( Z )   

             {

              case 0x7e: k=0; break; 

              case 0x7d: k=1; break; 

              case 0x7b: k=2; break; 

              case 0x77: k=3; break; 

              case 0xbe: k=4; break; 

              case 0xbd: k=5; break; 

              case 0xbb: k=6; break; 

              case 0xb7: k=7; break; 

              case 0xde: k=8; break; 

              case 0xdd: k=9; break; 

              case 0xdb: k=10;break; 

              case 0xd7: k=11;break; 

              case 0xee: k=12;break; 

              case 0xed: k=13;break; 

              case 0xeb: k=14;break; 

              case 0xe7: k=15;break; 

              }

 

      }

      }

     }

 }

void increase(void)//步进加模块

{

 if(t==179)

   t=179;

 else

   t++;

   DAC0832=t;

   SCON=0x00;

   TI=0;

   SBUF=table[t/100];

   while(!TI);

   s[2]=t/100;

   TI=0;

   SBUF=table0[t%100/10];

   while(!TI);

   s[1]=t%100/10;

   TI=0;

   s[0]=0;

   SBUF=table[t%10];

   while(!TI);

   s[0]=t%10;

   output();

}

void decrease(void)//步进减模块

{

 if(t==0)

   t=0;

 else

   t--;

   DAC0832=t;

   SCON=0x00;

   TI=0;

   SBUF=table[t/100];

   while(!TI);

   s[2]=t/100;

   TI=0;

   SBUF=table0[t%100/10];

   while(!TI);

   s[1]=t%100/10;

   TI=0;

   s[0]=0;

   SBUF=table[t%10];

   while(!TI);

   s[0]=t%10;

   output();

}

void set(void)//置数模块

{ 

 clear();

 SCON=0x00;

 TI=0;

 delay1200ms();

 getch();

 s[2]=k;

 SBUF=table[k];

 while(!TI);

 delay1200ms();

 TI=0;

 getch();

 s[1]=k;

 SBUF=table0[k];

 while(!TI);

 delay1200ms();

 TI=0;

 getch();

 s[0]=k;

 SBUF=table[k];

 while(!TI);

 }

 

void main(void)//主函数

 {

 clear();

 while(1)

 { 

  getch();

  switch(k)

          {

           case 10:   clear();break;

           case 11:   set();break;

           case 12:   increase();break;

           case 13:   decrease();break;

           case 15:   output();break;

           default:  break;

          }

 

  delay1200ms();            

 }

 }

 

⌨️ 快捷键说明

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