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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9006|回復(fù): 0
收起左側(cè)

雙通道電壓采集電路設(shè)計(jì) 完整的單片機(jī)課程設(shè)計(jì)下載帶程序

[復(fù)制鏈接]
ID:125201 發(fā)表于 2016-6-5 11:22 | 顯示全部樓層 |閱讀模式
附件里面有設(shè)計(jì)任務(wù),根據(jù)附件原理圖改正里面的程序。完整的word文檔請?jiān)诒疚淖詈笙螺d附件,下面是部分內(nèi)容預(yù)覽:

0.png


目     錄
一、原理 ……………………………………………………………………………………………1
二、硬件介紹 ………………………………………………………………………………………1
   2.1 單片機(jī)介紹…………………………………………………………………………………1
2.2 AT24C02I2C數(shù)據(jù)存儲(chǔ) ……………………………………………………………………2
   2.3 PCF8591 A/D轉(zhuǎn)換 …………………………………………………………………………2
   2.4 LCD1602 液晶顯示模塊……………………………………………………………………3
   硬件連接及工作過程簡介………………………………………………………………………4
   3.1 硬件連接……………………………………………………………………………………4
   3.2 工作過程簡介………………………………………………………………………………5
三、工作流程圖 ……………………………………………………………………………………6
四、程序清單 ………………………………………………………………………………………7
五、PCB圖 …………………………………………………………………………………………18
六、總結(jié)……………………………………………………………………………………………18
八、參考文獻(xiàn)………………………………………………………………………………………19


一、原理本文所設(shè)計(jì)的是一種以單片機(jī)STC12C5A60S2(引腳排序及基本功能同AT89S51)作為主控芯片的雙通道電壓采集電路,將采集到的模擬信號(hào)電壓值利用PCF8591來進(jìn)行模數(shù)轉(zhuǎn)換,PCF8591是一個(gè)單片集成、單獨(dú)供電、低功耗、8-bitCMOS數(shù)據(jù)獲取信號(hào)。其中PCF8591共有4個(gè)模擬輸入、一個(gè)模擬輸出和一個(gè)串行口I2C總線接口,通過PLCF8591將轉(zhuǎn)換成的數(shù)字信號(hào)電壓值傳給液晶顯示屏,并將所測電壓值在LCD1602液晶顯示屏中顯示出來,而且要利用AT24C04設(shè)置電壓上下限,在電壓超出上下限時(shí)顯示屏要有所表示.本文主要針對(duì)雙通道的數(shù)據(jù)采集與顯示,繼而推廣多通道數(shù)據(jù)采集的方法,重點(diǎn)分析介紹了基于AT89S51數(shù)字電壓采集的硬件設(shè)計(jì)和軟件設(shè)計(jì)。

0.png
圖3-1硬件連接原理圖


0.png

SDA、SCL是IIC數(shù)據(jù)線和時(shí)鐘線,可連接于單片機(jī)任何IO管腳在。在本次設(shè)計(jì)中通過芯片AT24C02來編寫所測電壓的上下限值。
我們這次試驗(yàn)所測得電壓是直流電壓0至5伏是模擬信號(hào)由于我們所測得電壓要在 LCD1602 液晶顯示屏中顯示出來,但是LCD1602液晶顯示屏接受和表達(dá)數(shù)字信號(hào),所以要用PCF8591 A/D轉(zhuǎn)換芯片把采集的模擬信號(hào)電壓值轉(zhuǎn)換成數(shù)值信號(hào),經(jīng)過AT89S51再把信號(hào)傳給LCD液晶顯示屏,最終在液晶顯示屏上顯示出電壓值。如果采集的電壓值在設(shè)定的電壓值之間,則電壓值能在液晶顯示屏上顯示出電壓,如果超出了則在液晶顯示屏上有所表示。在此次試驗(yàn)中因?yàn)槭请p通道采集電壓,所以我們測兩條電路的電壓,我在這兩條電路上各串聯(lián)了一個(gè)滑動(dòng)變阻器,用來改變所測的電壓值。

五、程序清單
  1. #include "common.h"

  2. float v_low = 2.8;  //電壓范圍下限
  3. float v_high = 4.5;  //電壓范圍上限
  4. uchar BUF[2];  //從at24c04中讀取的數(shù)據(jù)存儲(chǔ)在這
  5. uchar w_buf[2]; //寫入at24c04中的數(shù)據(jù)存在這里

  6. //延時(shí)函數(shù)大約1ms
  7. void delay_ms(int ms)
  8. {
  9.         int i;
  10.         while(ms--)
  11.         {
  12.         for(i=0;i<100;i++);
  13.         }
  14. }

  15. //連續(xù)寫入兩個(gè)數(shù)據(jù)
  16. void AT24C04_Write(uchar dat_1,uchar dat_2)
  17. {
  18.         AT24C04_Start(); //起始信號(hào)
  19.         AT24C04_SendByte(0xa0); //發(fā)送設(shè)備地址+寫信號(hào)
  20.         AT24C04_SendByte(0x00); //發(fā)送存儲(chǔ)單元地址
  21.         AT24C04_SendByte(dat_1); //寫入數(shù)據(jù)1
  22.         AT24C04_SendByte(dat_2); //寫入數(shù)據(jù)2
  23.         AT24C04_Stop(); //停止信號(hào)
  24. }

  25. //連續(xù)讀出兩個(gè)數(shù)據(jù)
  26. void AT24C04_ReadPage()
  27. {
  28. uchar i;
  29. AT24C04_Start(); //起始信號(hào)
  30. AT24C04_SendByte(0xa0); //發(fā)送設(shè)備地址+寫信號(hào)
  31. AT24C04_SendByte(0x00); //發(fā)送存儲(chǔ)單元地址
  32. AT24C04_Start(); //起始信號(hào)
  33. AT24C04_SendByte(0xa1); //發(fā)送設(shè)備地址+讀信號(hào)
  34. for (i=0; i<2; i++)
  35. {
  36. BUF[i] = AT24C04_RecvByte();
  37. if (i == 1)
  38. {
  39. AT24C04_SendACK(1); //最后一個(gè)數(shù)據(jù)需要會(huì)NAK
  40. }
  41. else
  42. {
  43. AT24C04_SendACK(0); //回應(yīng)ACK
  44. }
  45. }
  46. AT24C04_Stop(); //停止信號(hào)
  47. }

  48. //LCD顯示數(shù)字處理函數(shù)
  49. void show_num(uchar num,uchar flag)
  50. {
  51.         uchar temp[3],i;
  52.         float re_val;  //電壓實(shí)際值
  53.         float read_low,read_h; //將從AT24C04中讀取電壓范圍數(shù)據(jù)轉(zhuǎn)化成對(duì)應(yīng)小數(shù)形式

  54.         re_val = num/255.0*5.0; //實(shí)際電壓計(jì)算公式

  55.         num = re_val*10; //保留一位小數(shù)

  56.          AT24C04_ReadPage();//從AT24C04中讀取電壓范圍數(shù)據(jù),存儲(chǔ)在BUF數(shù)組中
  57.                                           // BUF[0]表示下限,BUF[1]表示上限
  58.         //存入AT24C04中的數(shù)據(jù)是uchar unsigned型,在這里轉(zhuǎn)化成float型
  59.         read_low =         BUF[0]/10.0;
  60.         read_h  = BUF[1]/10.0;
  61.         if(re_val >= read_low && re_val <= read_h) //如果電壓在范圍內(nèi)
  62.            {
  63.                 temp[0] = num/10 + '0';
  64.                 temp[1] = '.';
  65.                 temp[2] = num%10 + '0';
  66.                 }else if(re_val < read_low ) //如果低于設(shè)定值
  67.            {
  68.                    temp[0] = 'L';
  69.                 temp[1] = 'O';
  70.                 temp[2] = 'W';           
  71.            }else if(re_val > read_h ) //如果高于設(shè)定值
  72.            {
  73.                    temp[0] = 'H';
  74.                 temp[1] = 'I';
  75.                 temp[2] = 'G';         
  76.                 }
  77.         
  78.   for(i=0;i<3;i++)                 //用液晶顯示結(jié)果
  79.   {
  80.            LCD_Manifest(flag,3+i,temp[i]);
  81.   }

  82.         //顯示電壓范圍的上限
  83.     num = read_h * 10;
  84.         temp[0] = num/10 + '0';
  85.         temp[1] = '.';
  86.         temp[2] = num%10 + '0';
  87.   for(i=0;i<3;i++)                 //用液晶顯示結(jié)果
  88.   {
  89.           LCD_Manifest(1,12+i,temp[i]);
  90.   }

  91.    //顯示電壓范圍的下限
  92.     num = read_low * 10;
  93.         temp[0] = num/10 + '0';
  94.         temp[1] = '.';
  95.         temp[2] = num%10 + '0';
  96.   for(i=0;i<3;i++)                 //用液晶顯示結(jié)果
  97.   {
  98.           LCD_Manifest(2,12+i,temp[i]);
  99.   }
  100. }

  101. //主函數(shù)
  102. void main()
  103. {
  104.         uchar val;        //電壓值

  105.         LCD_Init();          //液晶初始化
  106.         IIC_Init();         //I2C總線初始化

  107.          w_buf[0] =         v_low*10;
  108.         w_buf[1] =         v_high*10;
  109.         AT24C04_Write(w_buf[0],w_buf[1]); //將數(shù)據(jù)寫入AT24C04

  110.         LCD_Manifest(1,0,'V');        //在lcd1602中顯示字符
  111.         LCD_Manifest(1,1,'1');
  112.         LCD_Manifest(1,2,':');
  113.         LCD_Manifest(2,0,'V');
  114.         LCD_Manifest(2,1,'2');
  115.         LCD_Manifest(2,2,':');

  116.         LCD_Manifest(1,10,'H');
  117.         LCD_Manifest(1,11,':');
  118.         LCD_Manifest(2,10,'L');
  119.         LCD_Manifest(2,11,':');


  120.         while(1)
  121.         {
  122.                 //按鍵檢測程序
  123.                 if(key_1 == 0)           //調(diào)節(jié)范圍的下限
  124.                 {
  125.                    delay_ms(100); //延時(shí)消除抖動(dòng)
  126.                    if(key_1 == 0)
  127.                    {
  128.                   //         v_low = v_low - 0.1;
  129.                         // if(v_low < 0.0)
  130.                          //  v_low = v_high;

  131.                         w_buf[0] =         v_low*10;
  132.                         w_buf[1] =         v_high*10;
  133.                         AT24C04_Write(w_buf[0],w_buf[1]); //將數(shù)據(jù)寫入AT24C04
  134.                    }
  135.                 }
  136.                 if(key_2 == 0)                //調(diào)節(jié)范圍的上限
  137.                 {
  138.                    delay_ms(100); //延時(shí)消除抖動(dòng)
  139.                    if(key_2 == 0)
  140.                    {
  141.                             v_high = v_high + 0.1;
  142.                          if(v_high > 5.0)
  143.                            v_high = v_low;

  144.                         w_buf[0] =         v_low*10;
  145.                         w_buf[1] =         v_high*10;
  146.                         AT24C04_Write(w_buf[0],w_buf[1]); //將數(shù)據(jù)寫入AT24C04
  147.                    }
  148.                 }


  149.            ADC_Send_Byte(0x90,0x41);//通道一ADC轉(zhuǎn)換         
  150.            val=ADC_Receive_Byte(0x90);        //讀取AD轉(zhuǎn)換的值
  151.            show_num(val,1);
  152.            ADC_Send_Byte(0x90,0x42);//通道二ADC轉(zhuǎn)換         
  153.            val=ADC_Receive_Byte(0x90);        //讀取AD轉(zhuǎn)換的值
  154.            show_num(val,2);


  155.         }
  156. }

  157. #include<iic.h>
  158. void IIC_Init()//總線初始化
  159. {
  160.   
  161.   SCL=1;
  162.   IIC_DELAY();
  163.   SDA=1;
  164.   IIC_DELAY();
  165. }
  166. void IIC_Start() //啟動(dòng)信號(hào)
  167. {

  168.   SDA=1;
  169.   IIC_DELAY();
  170.   SCL=1;
  171.   IIC_DELAY();
  172.   SDA=0;
  173.   IIC_DELAY();
  174. }
  175. void IIC_Stop()        //停止信號(hào)
  176. {
  177.   
  178.    SDA=0;
  179.    IIC_DELAY();
  180.    SCL=1;
  181.    IIC_DELAY();
  182.    SDA=1;
  183.    IIC_DELAY();
  184. }
  185. void IIC_Ack() //應(yīng)答信號(hào)
  186. {
  187.    unsigned char i;
  188.    SCL=1;
  189.    IIC_DELAY();;
  190.    while((SDA==1)&&(i<255))i++;
  191.    SCL=0;
  192.    IIC_DELAY();
  193. }
  194. void IIC_Write_Byte(u8 date)//寫一個(gè)字節(jié)
  195. {
  196.    u8 i,temp;
  197.    temp=date;
  198.    for(i=0;i<8;i++)
  199.    {
  200.              temp=temp<<1;
  201.           SCL=0;
  202.           IIC_DELAY();
  203.           SDA=CY;//最高位將移入PSW寄存器的CY位中,然后將CY賦給SDA
  204.           IIC_DELAY();
  205.           SCL=1;
  206.           IIC_DELAY();
  207.    }
  208.    SCL=0;
  209.    IIC_DELAY();
  210.    SDA=1;
  211.    IIC_DELAY();
  212. }
  213. u8 IIC_Read_Byte()//讀一個(gè)字節(jié)
  214. {
  215.    u8 i,temp;
  216.    for(i=0;i<8;i++)
  217.    {
  218.           SCL=0;
  219.           IIC_DELAY();
  220.           temp=(temp<<1)|SDA;
  221.           IIC_DELAY();
  222.           SCL=1;
  223.           IIC_DELAY();
  224.    }
  225.    SCL=0;
  226.    IIC_DELAY();
  227.    SDA=1;
  228.    IIC_DELAY();
  229.    return temp;
  230. }
  231. #include <reg51.h>
  232. #include"lcd1602.h"
  233. void delay(u8 z)//延時(shí)函數(shù)
  234. {
  235.   unsigned char x,y;
  236.   for(x=z;x>0;x--)
  237.     for(y=110;y>0;y--);
  238. }


  239. void LCD_Write_Cmd(u8 com )//液晶寫命令
  240. {
  241.    LCD_RS=0;//選擇寫命令模式
  242.    LCD_dat=com;//將要寫的命令字送到數(shù)據(jù)總線上
  243.    delay(1);
  244.    LCD_E=1;//使能端給一高脈沖,高脈沖有效
  245.    delay(1);
  246.    LCD_E=0;
  247. }
  248. void LCD_Write_Data(u8 date)//數(shù)據(jù)寫命令
  249. {
  250.    LCD_RS=1;//選擇寫數(shù)據(jù)模式
  251.    LCD_dat=date;
  252.    delay(1);
  253.    LCD_E=1;//使能端給一高脈沖,高脈沖有效
  254.    delay(1);
  255.    LCD_E=0;
  256. }
  257. void LCD_Init()//液晶初始化
  258. {
  259.   
  260.    LCD_WR=0;
  261.    LCD_Write_Cmd(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
  262.    LCD_Write_Cmd(0x0c);//設(shè)置開顯示,不顯示光標(biāo)
  263.    LCD_Write_Cmd(0x06);//寫一個(gè)字符后地址指針自動(dòng)加1

  264.    LCD_Write_Cmd(0x80);//數(shù)據(jù)指針定位到第一行第一個(gè)字處

  265. }
  266. // 使得寫命令和寫數(shù)據(jù)通過一個(gè)函數(shù)完成
  267. void LCD_Manifest(u8 row,u8 add,u8 date)
  268. {
  269.          if(row==1)          LCD_Write_Cmd(0x80+add);
  270.         if(row==2)         LCD_Write_Cmd(0xc0+add);
  271.         LCD_Write_Data(date);
  272. }
  273. #include"iic.h"
  274. #include"pcf8591.h"

  275. //ADC發(fā)送字節(jié)[命令]數(shù)據(jù)函數(shù)
  276. void ADC_Send_Byte(u8 addr,u8 com)
  277. {
  278.    IIC_Start();              //啟動(dòng)總線
  279.    IIC_Write_Byte(addr);           //發(fā)送器件地址
  280.    IIC_Ack();
  281.    IIC_Write_Byte(com);             //發(fā)送數(shù)據(jù)
  282.    IIC_Ack();
  283.    IIC_Stop();              //結(jié)束總線
  284. }

  285. //ADC讀字節(jié)數(shù)據(jù)函數(shù)
  286. u8 ADC_Receive_Byte(u8 addr)
  287. {
  288.    u8 c;
  289.    IIC_Start();          //啟動(dòng)總線
  290.    IIC_Write_Byte(addr+1);      //發(fā)送器件地址,如果是讀則最低位為1即0x91
  291.    IIC_Ack();
  292.    c=IIC_Read_Byte();          //讀取數(shù)據(jù)

  293.    IIC_Ack();          //發(fā)送非就答位
  294.    IIC_Stop();           //結(jié)束總線
  295.    return(c);
  296. }
  297. #include"AT24C04.h"
  298. void Delay5us()
  299. {
  300. BYTE n = 4;
  301. while (n--)
  302. {
  303. _nop_();
  304. _nop_();
  305. }
  306. }
  307. void Delay5ms()
  308. {
  309. WORD n = 2500;
  310. while (n--)
  311. {
  312. _nop_();
  313. _nop_();
  314. _nop_();
  315. _nop_();
  316. _nop_();
  317. }
  318. }
  319. void AT24C04_Start()
  320. {
  321. AT_SDA = 1; //拉高數(shù)據(jù)線
  322. AT_SCL = 1; //拉高時(shí)鐘線
  323. Delay5us(); //延時(shí)
  324. AT_SDA = 0; //產(chǎn)生下降沿
  325. Delay5us(); //延時(shí)
  326. AT_SCL = 0; //拉低時(shí)鐘線
  327. }
  328. void AT24C04_Stop()
  329. {
  330. AT_SDA = 0; //拉低數(shù)據(jù)線
  331. AT_SCL = 1; //拉高時(shí)鐘線
  332. Delay5us(); //延時(shí)
  333. AT_SDA = 1; //產(chǎn)生上升沿
  334. Delay5us(); //延時(shí)
  335. }
  336. void AT24C04_SendACK(bit ack)
  337. {
  338. AT_SDA = ack; //寫應(yīng)答信號(hào)
  339. AT_SCL = 1; //拉高時(shí)鐘線
  340. Delay5us(); //延時(shí)
  341. AT_SCL = 0; //拉低時(shí)鐘線
  342. Delay5us(); //延時(shí)
  343. }
  344. bit AT24C04_RecvACK()
  345. {
  346. AT_SCL = 1; //拉高時(shí)鐘線
  347. Delay5us(); //延時(shí)
  348. CY = AT_SDA; //讀應(yīng)答信號(hào)
  349. AT_SCL = 0; //拉低時(shí)鐘線
  350. Delay5us(); //延時(shí)
  351. return CY;
  352. }
  353. void AT24C04_SendByte(BYTE dat)
  354. {
  355. BYTE i;
  356. for (i=0; i<8; i++) //8位計(jì)數(shù)器
  357. {
  358. dat <<= 1; //移出數(shù)據(jù)的最高位
  359. AT_SDA = CY; //送數(shù)據(jù)口
  360. AT_SCL = 1; //拉高時(shí)鐘線
  361. Delay5us(); //延時(shí)
  362. AT_SCL = 0; //拉低時(shí)鐘線
  363. Delay5us(); //延時(shí)
  364. }
  365. AT24C04_RecvACK();
  366. }
  367. BYTE AT24C04_RecvByte()
  368. {
  369. BYTE i;
  370. BYTE dat = 0;
  371. AT_SDA = 1; //使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù)
  372. for (i=0; i<8; i++) //8位計(jì)數(shù)器
  373. {
  374. dat <<= 1;
  375. AT_SCL = 1; //拉高時(shí)鐘線
  376. Delay5us(); //延時(shí)
  377. dat |= AT_SDA; //讀數(shù)據(jù)
  378. AT_SCL = 0; //拉低時(shí)鐘線
  379. Delay5us(); //延時(shí)
  380. }
  381. return dat;
  382. }

復(fù)制代碼
0.png
七、總結(jié)
本次課程設(shè)計(jì),我學(xué)到了很多的東西,對(duì)匯編語言程序設(shè)計(jì)加深了理解和掌握,我們這次設(shè)計(jì)的要求主要是熟悉微型計(jì)算機(jī)技術(shù)中所學(xué)到的幾中芯片的使用,掌握它們的初始化編程,并學(xué)會(huì)他們的基本應(yīng)用,這是一個(gè)比較全面的設(shè)計(jì),和以前的實(shí)驗(yàn)相比較復(fù)雜很多,一方面要求我們設(shè)計(jì)硬件電路,另一方面需要對(duì)設(shè)計(jì)的硬件電路進(jìn)行編程,這就需要軟件和硬件相結(jié)合,具體的電路具體分析,在此次設(shè)計(jì)中還用到了AT24C02芯片,在此次之前我們從沒用到這個(gè)芯片,對(duì)這個(gè)芯片非常陌生,而且網(wǎng)上也沒有什么系統(tǒng)的解釋,和AT89S51的管腳的連線也不清楚,但是最后通過不停地調(diào)試,最后還是被解決了。通過這次課程設(shè)計(jì)后,我對(duì)學(xué)硬件有了一定的體會(huì),它要求我們認(rèn)真仔細(xì)的做好每個(gè)環(huán)節(jié),對(duì)所有的問題要考慮周全,它和軟件不同,對(duì)具體的電路要編寫適合該電路的程序,電路一改,程序也要跟著改,從中我也學(xué)會(huì)了很多實(shí)際應(yīng)用的知識(shí)。通過本次設(shè)計(jì),我才發(fā)現(xiàn)我所學(xué)的東西的膚淺,知識(shí)面的不牢固,在選擇方案的時(shí)候,產(chǎn)生模棱兩可的情況。經(jīng)常是邊設(shè)計(jì)邊復(fù)習(xí)學(xué)習(xí)過的課本知識(shí)。這些使我知道“紙上談兵”是絕對(duì)不行,只有通過實(shí)踐,自己親自動(dòng)手試一試,才能發(fā)現(xiàn)自己知識(shí)的缺陷,才能更好的與所學(xué)的知識(shí)相結(jié)合。在課程設(shè)計(jì)中我們每個(gè)人都能學(xué)到很多,有很大的收獲。做任何事情所要有的態(tài)度和心態(tài),首先我明白了做學(xué)問要一絲不茍,對(duì)于出現(xiàn)的任何問題和偏差都不要輕視,要通過正確的途徑去解決,在做事情的過程中要有耐心和毅力,不要一遇到困難就打退堂鼓,只要堅(jiān)持下去就可以找到思路去解決問題的。在工作中要學(xué)會(huì)與人合作的態(tài)度,認(rèn)真聽取別人的意見,這樣做起事情來就可以事倍功半。

課程設(shè)計(jì)任務(wù)書下載: 任務(wù)書10----雙通道電壓采集電路設(shè)計(jì)(LCD顯示).doc (36.5 KB, 下載次數(shù): 19)
完整的設(shè)計(jì)文檔下載: 單片機(jī)課設(shè).doc (214.5 KB, 下載次數(shù): 49)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: www.久久久久久久久久久 | 欧美一级片黄色 | 亚洲天堂二区 | 欧美一级在线免费 | 综合久久av| 久久久毛片 | 毛片一区二区 | 午夜小视频在线播放 | 亚洲一二三在线观看 | 在线观看成年人视频 | 蜜桃精品视频在线 | 日韩精品久久久 | 欧美日韩精品一区二区三区四区 | 国产精品色哟哟网站 | 奇米影视首页 | 在线观看成人av | 在线三级网址 | 国产亚洲一区二区三区在线观看 | 干干干日日日 | 欧美一级黄色片在线观看 | 日本在线免费 | 欧美一区二区免费在线 | www.色婷婷 | 国产一级一级国产 | 99精品视频一区二区三区 | 不卡在线视频 | 午夜电影日韩 | 国产一级特黄aaa大片评分 | 国产98色在线 | 日韩 | 精品久久一区 | 亚洲精品视频导航 | 欧美久久国产精品 | 亚洲一区二区免费视频 | 免费在线观看一区二区三区 | 国产精品99999| 九九综合 | 男女羞羞视频免费 | 免费中文字幕日韩欧美 | 亚洲天堂一区 | 久久久久一区二区三区四区 | 久草网在线视频 |