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

📄 main.c

📁 //液晶显示初始化ini_OCMJ(void)和驱动程序sub_lcd(uchar in)。 //占用I/O口为 #define LCD_OUT P4 //sbit LCD_BUSY=P3^6
💻 C
字号:
#include"upsd3300.h"
#include"intrins.h"
#include"absacc.h"
#include"math.h"
#define uchar unsigned char
#define uint unsigned int           
#include"LCD_DR.C"           //液晶显示初始化ini_OCMJ(void)和驱动程序sub_lcd(uchar in)。
                             //占用I/O口为 #define LCD_OUT P4
                             //sbit LCD_BUSY=P3^6;
                             //sbit LCD_REQ=P3^7;

#include"keyscan.c"         //占用P4
#include"ad197.c"
#include"da1230.c"
#include"firstp.c"
#include"secondp.c"
#define cshu0 2.0475
uint code xx[31]={70,165,177,189,201,213,222,232,243,255,
                  268,281,294,307,320,331,344,357,369,382,
                  394,404,416,429,441,452,464,476,489,500,509};    //查表用
////////////////////////////////////////////////////////////////////////////////
//全局变量
/////////////////////////////////////
uchar kk[5]={0,0,0,0,0};//存贮设定值。
uint  jgw1=0;
 unsigned int ad_vaul;
uchar r; 
/////////////////////////////////////////////

uint  sdz;        //设定值

void pid (void)//dac自调

{ 
     _nop_();
   if(jgw1>sdz){ if((jgw1-sdz)>50)
                   {ad_vaul= ad_vaul+20;}
                   else ad_vaul= ad_vaul++;
                         da_zh(ad_vaul);}
	  else if (jgw1<sdz) 
	         {if((jgw1-sdz)<50)
	            {ad_vaul= ad_vaul-20;}
	  	      else ad_vaul= ad_vaul--;
                        da_zh(ad_vaul);
                       }                     
 }

	

void adjust()
{ 

unsigned char j[6],k[5],i;
j[0]=(jgw1)/100;
 k[4]=(jgw1)%100;
 j[2]=k[4]/10;
  j[3]=k[4]%10;
for(i=0;i<4;i++)       //步进加1后,设置电流值部分数显
                                { sub_lcd(0xf9); 
                                  sub_lcd(0x09+i);
				  sub_lcd(0x20);
                                  if(i!=1)
    				   sub_lcd(0x30+j[i]);
       				    else
         			    sub_lcd(0x2e);
        			} 
pid();
}

void adc()
{
  unsigned char aa;
  unsigned int me[10];
 for(aa=0;aa<10;aa++)
              { me[aa]=ad_cy();         //AD采样过来的值
                   _nop_();
                  _nop_();
                 _nop_();
                
              } 
           
   jgw1=(me[0]+me[1]+me[2]+me[3]+me[4]+me[5]+me[6]+me[7]+me[8]+me[9])/10;
   _nop_(); 
   if(jgw1<=30)
   {jgw1 = xx[jgw1]/10;}
     else if (jgw1<=35)
        {jgw1 = jgw1*1.65;}
         else if (jgw1<=40)
          {jgw1 = jgw1*1.6;}
           else if (jgw1<=45)
            {jgw1 = jgw1*1.55;}
              else if (jgw1<=50)
                {jgw1 = jgw1*1.51;}
                 else if (jgw1<=55)
                   {jgw1 = jgw1*1.5;}
                      else if (jgw1<=60)
                       {jgw1 = jgw1*1.47;}
                          else if (jgw1<=65)
                            {jgw1 = jgw1*1.44;}
                               else if (jgw1<=70)
                                 {jgw1 = jgw1*1.42;}
                                    else if (jgw1<=75)
                                      {jgw1 = jgw1*1.41;}
                                          else if (jgw1<=80)
                                            {jgw1 = jgw1*1.395;}
                                              else if (jgw1<=85)
                                                 {jgw1 = jgw1*1.385;}
                                                    else if (jgw1<=90)
                                                      {jgw1 = jgw1*1.375;}
                                                        else if (jgw1<=95)
                                                          {jgw1 = jgw1*1.365;}
                                                             else if (jgw1<=100)
                                                              {jgw1 = jgw1*1.355;}
                                                                 else if (jgw1<=105)
                                                                   {jgw1 = jgw1*1.347;}
                                                                     else if (jgw1<=110)
                                                                       {jgw1 = jgw1*1.34;}
                                                                          else if (jgw1<=115)
                                                                           {jgw1 = jgw1*1.334;}
         else if (jgw1<=120)
          {jgw1 = jgw1*1.328;}
           else if (jgw1<=125)
            {jgw1 = jgw1*1.322;}
              else if (jgw1<=130)
                {jgw1 = jgw1*1.316;}
                  else if (jgw1<=135)
                     {jgw1 = jgw1*1.312;}
                       else if (jgw1<=140)
                        {jgw1 = jgw1*1.309;}
                            else if (jgw1<=145)
                              {jgw1 = jgw1*1.305;}
                                else if (jgw1<=150)
                                   {jgw1 = jgw1*1.3;}
                                      else if (jgw1<=155)
                                         {jgw1 = jgw1*1.295;}
                                           else  {jgw1 = jgw1*1.29;}
}



 void main(void)
{  uchar cc=0; 
   uchar  wei[5]={0,0,0,0,0};
   uint  zhongz[3]={0,0,0};
 
  
  //申明部分
        // 键值
 
      //设定值个数计数器
start:da_zh(0);
r=0;
 jgw1=0;
    ini_OCMJ();              //液晶初始化
        first_p();
        second_p();
   
while(r<6)
{       switch(get_key())
       {   case 0x0a: goto start;
           case 0x00: {   if(r!=1) { kk[r]=0;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;
          case 0x01: {   if(r!=1) { kk[r]=1;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;

          case 0x02: {   if(r!=1) { kk[r]=2;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;
         case 0x03: {   if(r!=1) { kk[r]=3;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;
          case 0x04: {   if(r!=1) { kk[r]=4;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;
        case 0x05: {   if(r!=1) { kk[r]=5;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;
          case 0x06: {   if(r!=1) { kk[r]=6;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;

          case 0x07: {   if(r!=1) { kk[r]=7;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;

          case 0x08: {   if(r!=1) { kk[r]=8;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;

           case 0x09: {   if(r!=1) { kk[r]=9;
                                     
                                     sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x30+kk[r]);
                                       r++;
                                      }
                          
                       }break;

           case 0x0f:{               sub_lcd(0xf9);
                                      sub_lcd(0x09+r);       
                                      sub_lcd(0x10);
                                       sub_lcd(0x2e);
                                       r++;} break;
           case 0x0d: {r--;
                       kk[r]=0;
                       sub_lcd(0xf9);
                       sub_lcd(0x09+r);       
                       sub_lcd(0x10);
                       sub_lcd(0x20);
                          
                      } break;
           case 0x0b:{ r=6;}break;
           default: break;           
       }
}

 
           _nop_();
        sdz = kk[0]*1000+kk[2]*100+kk[3]*10+kk[4];
        ad_vaul=(2000-sdz)*cshu0;                //设定值送给DA;
        da_zh(ad_vaul);         //DA 转换输出.
        _nop_();
        while(1)
        {
        adc();
        adjust();
        cc=get_key();
        if(cc==0x0c||cc==0x0e)
        {goto last;}
        }
        //
        while(1)
         { 
         adc();
         adjust();	
     last: switch(get_key())
            {  case 0x0c: { sdz=sdz+1;                                   // sdz步进加1后更新。
                            wei[0]=sdz/1000;
                            zhongz[0]=sdz%1000;
                            wei[2]=zhongz[0]/100;
                             zhongz[1]=zhongz[0]%100;
                             wei[3]=zhongz[1]/10;
                             wei[4]=zhongz[1]%10;
                             for(zhongz[2]=0;zhongz[2]<5;zhongz[2]++)       //步进加1后,设置电流值部分数显
                                { sub_lcd(0xf9); 
                                  sub_lcd(0x09+zhongz[2]);
				  sub_lcd(0x10);
                                  if(zhongz[2]!=1)
    				   sub_lcd(0x30+wei[zhongz[2]]);
       				    else
         			    sub_lcd(0x2e);
        			}
                           }  break;
            
                 case 0x0e: {
                 	     sdz=sdz-1;                                   //sdz步进减1后更新  
                             wei[0]=sdz/1000;
                             zhongz[0]=sdz%1000;
                             wei[2]=zhongz[0]/100;
                             zhongz[1]=zhongz[0]%100;
                             wei[3]=zhongz[1]/10;
                             wei[4]=zhongz[1]%10;
                             for(zhongz[2]=0;zhongz[2]<5;zhongz[2]++)    //步进减1后,设置电流值部分数显        
                                { sub_lcd(0xf9); 
									sub_lcd(0x09+zhongz[2]);
										sub_lcd(0x10);
        								 if(zhongz[2]!=1)
    									sub_lcd(0x30+wei[zhongz[2]]);
       											 else
         									 sub_lcd(0x2e);
        							}


                             } break;
                   case 0x0a: goto start;break;
                  default: break;



            } 
         }
        
          
         


}













⌨️ 快捷键说明

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