久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 24420|回復: 10
打印 上一主題 下一主題
收起左側

普通氬弧焊改冷焊機程序,已經成功。

  [復制鏈接]
跳轉到指定樓層
樓主
ID:434779 發表于 2018-11-28 11:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

#include<reg52.h>
#include <intrins.h>  //因為用到_nop_();
#include<stdio.h>
typedef unsigned char uchar;
sbit SCL = P2^0;      //注意P1、P2、P3口有內部上拉電阻,P0需外接上拉電阻,
sbit SDA = P2^1;

sbit key = P1^3;  //按鍵檢測腳
sbit qiang1 = P3^4;         //  <<<<控制輸入接焊槍                           A
sbit qiang2 = P3^6;                //  >>>>焊槍電平變脈沖>>>>去外部中斷0P3.2腳>>>>>>>>>>>
sbit ming = P3^5;         // 接蜂鳴器
sbit kong = P3^7;  //  控制輸出腳
uchar moshi0,m1,moshi4,moshi5,moshi6,moshi7,j,x,y,jin,dan,liant,lianh;     //j用于計數50ms的個數的全局變量 x暫存鍵值y暫存判斷數值       
uchar x0,x1,x2,x3,x4,x5,x6,k,y0,y1,y2,y3,y4,y5,y6;                                                                   // jin焊槍開關按下的標記        dan單次焊接是否開始標記
                                                                   //   lian        連續焊接是否開始標記         lianh連續焊接工作與間歇的標記
uchar code bihua[11] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};  
//共陰0-9的LED筆劃{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80}
//共陰0-9的LED筆劃0      1    2   3   4   5   6    7   8    9    點dep
//共陽0-9的LED筆劃{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7f};
uchar code xuan[8] = {0x08,0x09,0x0A,0x0B,0x0C,0x0d,0x0e,0x0f};
uchar ReceivedData[8];//用于接收8個字節數據(1頁)的數組
uchar jieshou[8];        //用于存儲8個字節數據(1頁)的數組
uchar moshi1[8];
//延時5us子程序
void delay5us(void)
{
_nop_();
_nop_();  
_nop_();
_nop_();
_nop_();
}
//10ms定時器0中斷函數
void timer0() interrupt 1     //j是個全局變量,不是返回值,所以這里還是void。
{
TH0 = (65536-10000)/256;  //12MHz時每10ms一次定時器中斷
TL0 = (65536-10000)%256;
j++;
  qiang2 =1 ;
  delay5us();//        給外部中斷0的信號
qiang2 =0;                      //判斷j,數據放在中斷里處理
}
//約2ms的延時
void delay(uchar t)
{
uchar x,y;
for(x=0;x<t;x++)
  for(y=0;y<250;y++)
   ;
}
//I2C初始化
void InitI2C(void)
{
SDA = 1;   //總線空閑時,因各設備都是集電極或漏極開路,上拉電阻使SDA和SCL線都保持高電平。
SCL = 1;
delay5us();
}
//產生I2C開始信號
void StartI2C(void)
{
SDA = 1;   //SDA在SCL為高期間由高變低表示開始,所以先要高
SCL = 1;
delay5us();   //時序圖要求tSU.STA(Start Set-up Time)大于4.7us
SDA = 0;   //注意SDA拉低前后都要維持5us以上!
delay5us();   //tHD.STA(Start Hold Time)大于4us
SCL = 0;   //拉低SCL,準備發送或接收數據(這兩句也可在寫或讀字節的程序中先將SCL置0,延時)
delay5us();
}
//產生I2C結束信號
void StopI2C(void)
{
SDA = 0;   //SDA在SCL為高期間由低變高,說明結束
SCL = 1;
delay5us();
SDA = 1;
delay5us();
}
//發送方在發完一個字節后檢測接收方有沒有應答。返回應答成功否。
bit ChkAck(void)
{  
  bit SDAtemp;
SDA=1;  //釋放SDA(置1),然后等待接收方應答將它拉低。
SCL=1;  //WriteI2CByte中寫完一字節后又將SCL拉低,這里拉高產生第9個時鐘上升沿,然后在SCL為高期間對SDA進行檢測
delay5us();
SDAtemp = SDA; //如果不用暫存變量,直接return SDA,就不會執行后面的SCL = 0,檢測期間的第9個時鐘就不完整了
SCL=0;
delay5us();
return SDAtemp;
}
//51作為主機時,如果接收數據,模擬產生應答時序。形參Ack為0,則應答0,為1不應答。
void AckAsMaster(bit Ack)
{
if(!Ack)
  SDA = 0;
else
  SDA = 1;
delay5us();
SCL = 1;  //主機控制SCL時序。關鍵是保證在SCL脈沖上升沿之前SDA數據已穩定即可。
delay5us();
SCL = 0;
delay5us();
}
void WriteI2CByte(uchar);
uchar ReadI2CByte();
//頁寫。輸入兩參數,一個為首字地址,另一個是指向待寫入數據數組的指針(括號內第二個參數也可寫作uchar ToSDAdataBuffer[],即數組名代表首地址)。
bit PageWrite(uchar WordAddress,uchar *ToSDAdataBuffer)
{
    //下面的程序我用的if嵌套,網上有些程序是順序結構,但因為遇到return就返回主程序不再往下執行,所以效果是一樣的。
uchar i;
StartI2C();
WriteI2CByte(0xa0);//最后一位不屬于地址。E2PROM一般前四位為1010,這里A2~A0接地,為0,最后一位0表示寫
if(!ChkAck())
{    //檢查應答函數返回0說明從機應答0成功。
  WriteI2CByte(WordAddress); //寫8-bit data word address,(24C02有2kbits,所以數據字有2048/8=256個,故地址線有8位)
  if(!ChkAck())
  {
   for(i = 0; i < 8; i++)
   {
    WriteI2CByte(ToSDAdataBuffer[i]);
    if(ChkAck())
        {
                 //這里可添加錯誤處理代碼。如用幾個LED的亮滅組合表示此I2C器件有問題,類似主板錯誤提示。
     return 1;//一般返回1表示異常,且遇到return就退出整個子程序。
    }
   }
   StopI2C();      //寫完發送結束信號。
   return 0;        //一般返回0表示程序正常
  }
  else{   
   return 1;        //之前可添加錯誤處理代碼。
  }
}
else{   
  return 1;
}
}
//不能用Current Address Read,因為那是24C02數據字地址計數器上次操作后加1的值;而SEQUENTIAL_READ如果不給一個要讀取的開始地址,會從頭輸出,
//所以需要Random Read的開始部分,但不要停止信號。
bit SequentialRead(uchar WordAddress)
{
uchar i;
StartI2C();
WriteI2CByte(0xa0);
if (!ChkAck())
{
     WriteI2CByte(WordAddress);
  if (!ChkAck())
  {
   StartI2C();  //the microcontroller must generate another start condition
   WriteI2CByte(0xa1); //Device Address后的1說明是讀,24C02內部就是根據最后這位來判斷是從SDA上讀數,還是往SDA上送數
   //之所以設為1是讀,是因為根據WriteI2CByte子程序,最后給SDA賦1,P3^4就維持1,這樣24C02內部Dout為高就將SDA拉低;如果最后一位是0,24C02沒能力拉高!
   if (!ChkAck())
   {
    for(i = 0;i < 8;i++)
        {
     ReceivedData[i] = ReadI2CByte();
     AckAsMaster(0); //51此時接收數據,調用應答的函數(置SDA為0)
    }
    AckAsMaster(1);     //NO ACK.The microcontroller does not respond with a zero but does generate a following stop condition.
    StopI2C();
    return 0;
   }
   else{
    return 1;           //之前可添加錯誤處理代碼。
   }
  }
  else{
   return 1;
  }
}
else{
  return 1;
}
}
//往I2C總線寫一個字節的數據(即將一個字節的數據發送到SDA上)
void  WriteI2CByte(uchar ByteData)
{
uchar i,temp;
temp = ByteData;
//  (StartI2C()最后已經先將SCL變0了):
for(i=0;i<8;i++){
  temp <<=  1; //左移一位,I2C要求由MSB最高位開始,移出的CY即要發送到SDA上的數據。下面考慮時序:
  SDA    =  CY; //此時SCL已為低,每次移一位送出去(下次進循環后SDA還保持著上次發出去的數據)
  delay5us();  //SDA IN數據變化中點SCL上升沿中點的一段時間是tSU.DAT,即數據建立時間Data In Set-up Time,需大于200ns,多延無所謂
  SCL    =  1;
  delay5us();  //tHIGH即Clock Pulse Width High,最小4us
  SCL    =  0;
  delay5us();  //tLOW即Clock Pulse Width Low,最小4.7us
              }   
}
//讀取I2C總線一個字節的數據
uchar  ReadI2CByte()    //串行總線,51一位位接收從機發送到SDA上的數據,這里只考慮數據已在SDA上時如何存下來這幾位,組成一個字節
{
uchar i,ByteData;
SDA = 1;            //SCL在ChkAck中已經置0了。注意SCL時序仍然由主機控制!24C02只能將SDA由高拉低,象橡皮筋松手又恢復高,而下面只是讀SDA,沒賦值
      //其實程序中多處給SDA置1都可省,因為檢查應答時為0就正常,無所謂,寫字節時也無所謂,就是在讀之前要保證SDA為1!
      //因之前有WriteI2CByte(0xa1); 其實這句也可省略。
delay5us();   //24C02作為發送方在第9個時鐘的negative edge clocks data out of each device,所以現在SDA上為新數據
for(i=0;i<8;i++)
{
  SCL = 1;  //置時鐘線為高使數據線上數據有效
  delay5us();
  ByteData = (ByteData<<1)|SDA; //SDA上已是新數據了,讀之。data不管以前多少,左移后最右邊為0,和SDA"按位或"后MLB就是SDA
  SCL = 0;
  delay5us();
   }
return ByteData;
}

void time0_Init(void) //        定時器0,的初始化      
{  
  TMOD = 0x01;    //方式1的16位計數器
TH0  = (65536-10000)/256;
TL0  = (65536-10000)%256;
TR0  = 1;     //啟動定時器0工作  
ET0  = 1; //開T0的中斷
IT0 = 1;  //負邊沿觸發   IT0 = 0;  //低電平觸發  
EX0 = 1;  //開外部中斷0   
EA = 1;   //開總中斷  
}

void Outside_Init(void) //        外部中斷0,1 的初始化      
{  
   EX0 = 1;  //開外部中斷0  
   IT0 = 1;  //負邊沿觸發   IT0 = 0;  //低電平觸發   
   EA = 1;   //開總中斷  
}
        void Outside_Int1(void) interrupt 0 using 1  // 外部中斷0 的中斷處理
        {  
     if( moshi1[4]==0xf0&jieshou[0]>0&qiang1==0)  //焊槍開關已按下且單焊
           {if (dan==0 )
             {j=0;
                 dan=1;
                 kong=1;                  //開始焊接
                 ming =1;
              TMOD = 0x01;    //方式1的16位計數器
                 TH0  = (65536-10000)/256;                        //        定時器0,的初始化
                 TL0  = (65536-10000)%256;
                 TR0  = 1;     //啟動定時器0工作  
                 ET0  = 1; //開T0的中斷  
                  }
                         else if(jieshou[0]==j)
                         { ET0  = 0;   //關T0的中斷
               TR0  = 0;   //關定時器0  
                           kong=0;           //停止焊接
                           ming =0;
                         }
                         ;
                 }
         else if (moshi1[5]==0xf0&jieshou[0]>0&jieshou[1]>0 &qiang1==0) //焊槍開關已按下且連焊
                 {
                if  (lianh==0& liant==1&qiang1==0 )
             {lianh=1;
                  liant=0;
                  j=0;
                 kong=1;                  //開始焊接
                 ming =1;
             TMOD = 0x01;    //方式1的16位計數器
                 TH0  = (65536-10000)/256;                        //        定時器0,的初始化
                 TL0  = (65536-10000)%256;
                 TR0  = 1;     //啟動定時器0工作  
                 ET0  = 1; //開T0的中斷  //        定時器0,的初始化  
                  }
                         else if(lianh==1&liant==0&qiang1==0)
                     {
                                 if(jieshou[0]==j)
                                         {
                                           j=0;
                                           kong=0;           //停止焊接
                                           ming =0;       
                                          liant=1;
                     }
                                   ;
                         }
                         else if(lianh==1&liant==1&qiang1==0)
                     {
                                 if(jieshou[1]==j)
                                         {
                                           j=0;
                                           kong=1;           //重新開始焊接
                                           ming =1;       
                                         lianh=1;
                                         liant=0;
                                        }
                                        ;
                         }
                         ;
          }
         else if (moshi1[6]==0xf0&qiang1==0 )  //焊槍開關已按下且氬弧焊
                 {j=0;
                 ET0  = 0;   //關T0的中斷
         TR0  = 0;   //關定時器0  
                    kong=1;           //開始焊接
                  ming =1;
                }
          else if (j==50 )
                 {        y0=0;
                        y1=0;
                        y2=0;
                        y3=0; //按鍵標記
                        y4=0;
                        y5=0;
                        y6=0;
                           }
                        }  
void anjianchushi(void)  //按鍵標記初始化
{y0=0; //按鍵標記
        y1=0;
        y2=0;
        y3=0; //按鍵標記
        y4=0;
        y5=0;
        y6=0; //按鍵標記
}
main(void)
{
uchar i;
moshi0=25;
m1=25;
moshi4 =0xf0;
moshi5 =0x00;
moshi6 =0x00;
moshi7 =0x00;
jin=0;//焊槍開關控制焊槍的標記
begin:
ming =0;// 發光管
kong =0;//  控制輸出腳去繼電器
qiang1 =1;//控制輸入接焊槍開關
qiang2 =1; //焊槍電平變脈沖>>>>去外部中斷0P3.2腳
P0 = 0x00;
InitI2C();
//注意在24C02中用到的頁寫和順序讀的地址是同一個,且必須是8的整數倍,即每頁的首地址才行,如0x08,0x20等。因為24C02頁寫時后三位地址自動加1,
//When the word address,internally generated, reaches the page boundary, the following byte is placed at the beginning of the same page.
//而順序讀時只有在達到整個存儲區邊界時才會roll over。所以,如讀寫都用0x32這個地址,由于不是8的整數倍,只有前6個數顯示是正確的,最后兩個數
//雖然又從頭寫在了該頁的前面,但SequentialRead確讀到了該頁之外的兩個存儲單元,造成錯誤。
//if (PageWrite(0x08,canshu) == 0)        // 寫原始焊接參數           canshu[8] = {0x19,25,25,25,25,25,25,25};
// {delay(100);  //          行頁寫操作,設從地址00開始,沒問題就延遲一下
if(SequentialRead(0x08) == 0)           //讀取24C02焊接參數
    {        delay(100);
                   for(i = 0; i < 8; i++)
                   {
                    jieshou[i] = ReceivedData[i];
                    delay5us();
                        }

                           x0=jieshou[0]/10;
                                          moshi1[0]=bihua[x0];
                                     x1=jieshou[0]%10;
                                          moshi1[1]=bihua[x1];
                                          x2=jieshou[1]/10;
                                          moshi1[2]=bihua[x2];
                                          x3 =jieshou[1]%10;
                                          moshi1[3]=bihua[x3];
                                         moshi1[4]=jieshou[4] ;

                                    moshi1[5]=jieshou[5] ;

                                         moshi1[6]=jieshou[6] ;

                                        moshi1[7]=jieshou[7] ;
                                                                        //        }                  
                while(1)
                {
                xian:
       for(y = 0; y < 8; y++)
                                {
                                P0 = moshi1[y];                  //顯示24C02數據
                                P1 =  xuan[y];
                                delay(4);  //延時4個2ms
                                                        if(key==0)        //按鍵判斷
                                                                        { delay(200);
                                                                                if(key==0)
                                                                                {
                                                        if(y==0&y0==0)
                                                        { x = ReceivedData[0];          
                                                   x=x-1;        //焊接時間減少
                                                 while(x >99)
                                                        {
                                                        x=0        ;
                                                        }
                                                   ReceivedData[0]=x;
                               if (PageWrite(0x08, ReceivedData) == 0)
                                                 delay(200);
                                                        anjianchushi(); //按鍵標記初始化
                                                        y0=1;
                       time0_Init(); //        定時器0,的初始化
                                           j=0;     
                                                delay5us();
                                                goto begin ;
                                                }
                                                         else if        (y==1&y1==0)       
                                                                {x = ReceivedData[0];          
                                                   x=x+1;        //焊接時間減少
                                                 while(x >99)
                                                        {
                                                        x=99        ;
                                                        }
                                                   ReceivedData[0]=x;
                               if (PageWrite(0x08, ReceivedData) == 0)
                                                 delay(200);
                                                        anjianchushi();          //按鍵標記初始化
                                                        y1=1;
                                 time0_Init(); //        定時器0,的初始化   
                                           j=0;      
                                                    delay5us();
                                                goto begin ;
                                                                 }
                                                                   else if(y==2&y2==0)
                                                                                { x = ReceivedData[1];          
                                                                                   x=x-1;        //焊接時間減少
                                                                                 while(x >99)
                                                                                        {
                                                                                        x=0        ;
                                                                                        }
                                                                                   ReceivedData[1]=x;
                                                               if (PageWrite(0x08, ReceivedData) == 0)
                                                                                 delay(200);
                                                                                anjianchushi(); //按鍵標記初始化
                                                                      y2=1;
                                                  time0_Init(); //        定時器0,的初始化  
                                                                                   j=0;        
                                                                                 delay5us();
                                                                                goto begin ;
                                                                                }
                                                                                        else if(y==3&y3==0)
                                                                                        { x = ReceivedData[1];          
                                                                                           x=x+1;        //焊接時間減少
                                                                                         while(x >99)
                                                                                                {
                                                                                                x=99        ;
                                                                                                }
                                                                                           ReceivedData[1]=x;
                                                                       if (PageWrite(0x08, ReceivedData) == 0)
                                                                                         delay(200);
                                                                                                anjianchushi();         //按鍵標記初始化
                                                                              y3=1;
                                                    time0_Init(); //        定時器0,的初始化   
                                                                                                   j=0;      
                                                                                     delay5us();
                                                                                        goto begin ;
                                                                                                }
                                                                                                else if(y==4&y4==0)
                                                                                                 {  ReceivedData[4] =0xf0;        //單焊標記
                                                                                                          ReceivedData[5] =0x00;
                                                                                                          ReceivedData[6] =0x00;
                                                                                                           if (PageWrite(0x08, ReceivedData) == 0)
                                                                                                         delay(200);
                                                                                                        anjianchushi();
                                                                                y4=1;
                                                     time0_Init(); //        定時器0,的初始化   
                                                                                                           j=0;      
                                                                                                 delay5us();                                               
                                                                                            goto begin ;
                                                                                                 }
                                                                                                else if(y==5&y5==0)
                                                                                                 { ReceivedData[4] =0x00;
                                                                                                          ReceivedData[5] =0xf0;          //連焊標記
                                                                                                          ReceivedData[6] =0x00;
                                                                                                    if (PageWrite(0x08, ReceivedData) == 0)
                                                                                                            delay(200);
                                                                                                        anjianchushi();            //按鍵標記初始化         
                                                                                y5=1;
                                                      time0_Init(); //        定時器0,的初始化   
                                                                                                   j=0;      
                                                                                delay5us();
                                                                                                goto begin ;                                                 
                                                                                                           }
                                                                                                        else if(y==6&y6==0)
                                                                                                         {ReceivedData[4] =0x00;
                                                                                                          ReceivedData[5] =0x00;
                                                                                                          ReceivedData[6] =0xf0; //氬弧焊標記
                                                                                                    if (PageWrite(0x08, ReceivedData) == 0)
                                                                                                            delay(200);
                                                                                                anjianchushi();           //按鍵標記初始化
                                                                                y6=1;
                                                      time0_Init(); //        定時器0,的初始化  
                                                                                                   j=0;        
                                                                                                    delay5us();
                                                                                                        goto begin ;
                                                                                                  }                                                                
                                                                                }
                                                                                 }
                                                                 else if(qiang1==1&jin==1)                         //焊槍開關已經松開
                                                                        {
                                                                         EA   = 0;//關總中斷
                                         kong=0;           //停止焊接
                                                                           ming =0;
                                                                        jin=0;
                                                                        dan=0;
                                                                        lianh=0;
                                                                    liant=1;
                                                                    }
                                 else  if  (qiang1==0)          //焊槍開關按下
                                                                        {       
                                                                         if(jin==0)   //又按下時
                                                                   { jin=1  ;
                                                                     Outside_Init(); //        外部中斷0,1 的初始化
                                                                            delay5us();
                                                                          qiang2 =1 ;
                                                                          delay5us();//        給外部中斷0的信號
                                                                         qiang2 =0;
                                                                         goto xian;       
                                                                }
                                                                  else                  //一直未松開
                                                                   { ; //        goto xian;       
                                                                   }
                                                                                }
                                                                       
                                }
                }
         }
   }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-11-28 16:14 | 只看該作者
能分享電路和圖片嗎?
回復

使用道具 舉報

板凳
ID:469337 發表于 2019-1-16 18:54 來自手機 | 只看該作者
admin 發表于 2018-11-28 16:14
能分享電路和圖片嗎?

有原理圖分享嗎
回復

使用道具 舉報

地板
ID:399179 發表于 2019-1-16 19:19 來自手機 | 只看該作者
能不能分享原理圖?謝謝!
回復

使用道具 舉報

5#
ID:410355 發表于 2019-6-9 15:51 | 只看該作者
你好,能和說一下原理嗎
回復

使用道具 舉報

6#
ID:646809 發表于 2019-11-21 20:38 | 只看該作者
你好,請教 一下,你發表的 普通氬弧焊改冷焊機程序,已經成功,是用在那種氬弧焊機的芯片上。要怎么改裝
回復

使用道具 舉報

7#
ID:399179 發表于 2019-11-30 20:04 來自手機 | 只看該作者
能不能把原理圖發上來?謝謝!
回復

使用道具 舉報

8#
ID:60965 發表于 2020-2-11 15:58 | 只看該作者
原理圖能共享嗎?
回復

使用道具 舉報

9#
ID:689120 發表于 2020-5-16 11:09 | 只看該作者
好題材,可是沒有教程。
回復

使用道具 舉報

10#
ID:33544 發表于 2021-1-9 19:44 | 只看該作者

原理圖能共享嗎?
回復

使用道具 舉報

11#
ID:33544 發表于 2021-5-11 21:49 | 只看該作者
一點有沒有、
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 夜操| 亚洲国产精品va在线看黑人 | 久久久久久久久久爱 | 污污的网站在线观看 | 国产激情一区二区三区 | 欧美精品一区二区三区在线四季 | 亚洲激情在线视频 | 午夜视频在线 | 97高清国语自产拍 | 奇色影视| 亚洲资源在线 | 一级欧美一级日韩片免费观看 | 成人欧美一区二区三区在线播放 | 国产成人精品视频在线观看 | 99久久精品免费看国产高清 | 久久久久久久久综合 | 在线伊人网 | 麻豆hd | 国产高清视频一区 | 色香婷婷 | 一级做a爰片性色毛片16美国 | 麻豆久久久久久久 | a级毛片国产 | 亚洲一区二区三区免费视频 | 国产精品欧美一区二区 | 日韩av一二三区 | 色婷婷综合久久久中字幕精品久久 | av大片 | 伊人免费在线观看 | 久久久影院 | 国产成人综合网 | 精品福利一区二区三区 | 福利视频一区二区 | 欧美另类视频在线 | 天天天天操 | 亚洲在线高清 | 国产成人久久精品一区二区三区 | 一区二区在线免费观看 | 国产精品美女一区二区 | 男女啪啪网址 | 国产精品中文字幕在线播放 |