色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項目 > 基于AB32VG1的Mini示波器

基于AB32VG1的Mini示波器

基于AB32VG1芯片制作Mini示波器,硬件部分參考老劉愛搗鼓等開源作品,謝謝他們無私的開源精神。

是唐棠啊 是唐棠啊

分享
0 喜歡這個項目
團隊介紹

是唐棠啊 是唐棠啊

團隊成員

是唐棠啊 學生

分享
項目簡介
基于AB32VG1芯片制作Mini示波器,硬件部分參考老劉愛搗鼓等開源作品,謝謝他們無私的開源精神。
硬件說明

項目架構.png

        Mini示波器采用了一套成本低廉但高效的硬件,配合層次化的軟件框架,實現對常規低頻信號波形的采集、分析、顯示。

        硬件部分的主要工作有:電源管理(5V、2.5V、-5V);對信號的衰減、限幅、偏置。最后將處理好的電壓信號送入AB32VG1的ADC外設,進行數據采集。由于ADC外設只能采集正電壓,因此我們通過增加偏置電壓的方式,將負電壓抬高來采集。

        

        電源管理模塊由三部分組成。第一部分輸出+5V直流電壓,供給MCU和運放;第二部分輸出-5V直流電壓,供給運放;第三部分輸出正2.5V直流電壓,作為偏置電壓。取2.5V的原因是,正好是5V的一半,作為測量負電壓的參考基準點。下面我們進行詳細說明:

    電源輸出+5V部分。這里是由外部+5V電壓直接供給,作為整個電路系統的電源。


        電源輸出-5V部分。選擇ICL7660電源芯片,將+5V轉換成-5V。ICL7660是Maxim公司生產的小功率極性反轉電源轉換器。ICL7660的靜態電流典型值為170μA,輸入電壓范圍為1.5-10V,只需外接10μF的小體積電容效率高達98%合輸出功率可達700mW(以DIP封裝為例),符合輸出100mA的要求。


        電源輸出+2.5V部分。采用TL431芯片,把+5V降到+2.5V。TL431是可控精密穩壓源。它的輸出電壓用兩個電阻就可以任意的設置到從Vref(2.5V)到36V范圍內的任何值。


        前置采樣這一部分作用是對直流信號和交流信號分別處理,同時進行電壓的衰減,和進行限幅保護。信號進入電路以后,首先經過一個開關,撥動開關決定是否串接一個電容進入電阻,如果串接的電容,那么根據“通交阻直”的特性,將對交流信號和直流信號進行區分。之后經過兩個串聯電阻分壓,和并聯電容濾除毛刺。0歐電阻過去,是四個1N4148,兩兩方向相同,一正一反并聯在電路上。將信號限幅在正負1.5V。


        TL074是一種在單片集成電路中配有高電壓雙極晶體管的輸入運算放大器,一個芯片帶有四個運放。這里使用了其中的三個,第一個運放的作用是對信號進行了放大處理,將輸入進來的電壓信號(<=±1.4V)放大到正負2.5V,然后緊接一級運放做電壓跟隨器,之后接入2.5V的偏置電壓,最后將信號輸入MCU的ADC外設引腳。


        調試電路主要用于串口下載和仿真調試,引出了MCU的串口引腳和電源引腳。人機交互電路分為旋鈕電路和按鍵電路。旋鈕電路選擇EC11,支持單擊、旋轉、按下旋轉;按鍵電路有三個,對應復位按鈕,設置按鍵,切換選項按鍵。要注意的是EC11的A和B引腳,需要上拉電阻下拉電容。


        主控電路這一部分主要包含MCU模塊、顯示屏電路、指示燈電路。MCU負責ADC數據采樣,和對人機交互部分的電路進行控制;顯示屏電路的核心是OLED顯示屏,主要進行界面顯示和波形顯示,對信號處理后結果的一個直觀反饋;指示燈電路的作用是顯示電源狀態和ADC工作狀態,方便對整個心態進行一個直觀的觀察。


軟件說明

        軟件部分的主要工作有:底層驅動SDK框架、ADC濾波算法、波形數據處理、人機交互界面。SDK提供基本的模塊和外設驅動支持,濾波算法去除噪聲和毛刺,波形處理計算電壓值和頻率,并為波形顯示做準備;人機交互界面提供屏幕顯示(OLED屏)和操作方式(旋鈕和按鍵)。


        首先打開Rtt studio創建AB32VG1開發板的工程,如下圖所示:

    

        由此已經創建好基于這款AB32VG1芯片開發板的基礎工程,點擊編譯看看是否有沒有配置的選項導致編譯失敗。

        在建立好基礎工程并且編譯完成無錯后,下一步驟先添加官方ADC驅動,第一步打開軟件包中心,點擊更多配置找到使用ADC設備驅動程序選項點擊添加,如下圖所示:



        然后點擊保存,由此官方ADC驅動添加完成。






        在adc_config.h文件添加如下代碼:

#ifndef LIBRARIES_HAL_DRIVERS_CONFIG_ADC_CONFIG_H_
#define LIBRARIES_HAL_DRIVERS_CONFIG_ADC_CONFIG_H_

#include

        

        在drv_adc.c文件中添加如下代碼:

#include "drv_gpio.h"


#ifdef BSP_USING_ADC9

#include "adc_config.h"

#define LOG_TAG             "drv.adc"
#include


        在ab32vg1_hal_conf.h中開啟使用adc:

#define HAL_ADC_MODULE_ENABLED


#ifdef HAL_ADC_MODULE_ENABLED
#include "ab32vg1_hal_adc.h"
#endif


        由此我們添加完成了ADC的所以驅動,下一步驟編寫上層ADC應用,在application文件新建一個.c文件,并在里面添加如下代碼:

#include
#include "chart.h"
//#include "stdio.h"

uint16 *pADCSampling;       //指向ADC實時采樣的指針
uint16 waveBuf[SAMPLE_NUM]; //經過計算整理后的波形數據
uint8 triPre;               //觸發位置前方等值點
uint8 triAft;               //觸發位置后方等值點
uint16 plotADCMax, plotADCMin;


void GetWaveData()
{
    pADCSampling = GetWaveADC(ADC_DSO, ScaleH);
}
/*@note 
	#define ADC_DSO ADC_CHS_06  ADC采樣通道設置
	int8 ScaleH = 2; //時間區間,0-11對應500ms-100us
*/


/* 獲得自動量程縱軸上下限
   Calculate voltage range for Auto Range*/
void getRulerV()
{
    //自動量程,根據采樣點的最大最小值,按500mV擴大范圍取整,作為垂直標尺范圍mV
    if (ScaleV_Auto == 1)
    {
        if (VMax / 100 % 10 >= 5)
            RulerVMax = (VMax + 500) / 1000 * 1000;
        else
            RulerVMax = VMax / 1000 * 1000 + 500;

        if (VMin / 100 % 10 >= 5)
            RulerVMin = VMin / 1000 * 1000 + 500;
        else
            RulerVMin = VMin / 1000 * 1000;

        if (RulerVMax > MAX_V)
            RulerVMax = MAX_V;

        if (RulerVMin < MIN_V)
            RulerVMin = MIN_V;
    }
}

/* 計算波長
   Calculate wave length*/
bit getWaveLength(uint16 triLevel, bit right_or_left)
{
    int16 i;
    uint8 tri_pre = 255;
    uint8 tri_aft = 255;
    uint8 triPos_tmp;
    bit triSlope_tmp;
    bit triFail = 1;
    /* 查找距離屏幕中心最近的觸發點
       Search the trigger poiont closest to the center of chart */
    if (right_or_left) //向右查找臨時觸發點 / Search right side
    {
        for (i = TriPos + TriPosOffset; i < SAMPLE_NUM - 2; i++)
        {
            if (GetTriggerPos(*(ADCbuf + i), *(ADCbuf + i + 1), triLevel, 1)) //按上升沿查找 / Search on rising edge
            {
                triPos_tmp = i;
                triSlope_tmp = 1;
                triFail = 0;
                break;
            }
            else if (GetTriggerPos(*(ADCbuf + i), *(ADCbuf + i + 1), triLevel, 0)) //按下降沿查找 / Search on falling edge
            {
                triPos_tmp = i;
                triSlope_tmp = 0;
                triFail = 0;
                break;
            }
        }
    }
    else //向左查找臨時觸發點 / Search left side
    {
        for (i = TriPos + TriPosOffset; i > 0; i--)
        {
            if (GetTriggerPos(*(ADCbuf + i), *(ADCbuf + i + 1), triLevel, 1)) //按上升沿查找 / Search on rising edge
            {
                triPos_tmp = i;
                triSlope_tmp = 1;
                triFail = 0;
                break;
            }
            else if (GetTriggerPos(*(ADCbuf + i), *(ADCbuf + i + 1), triLevel, 0)) //按下降沿查找 / Search on falling edge
            {
                triPos_tmp = i;
                triSlope_tmp = 0;
                triFail = 0;
                break;
            }
        }
    }

    if (!triFail)
    {
        for (i = triPos_tmp; i >= 0; i--) //查詢觸發位置左側的等值點 / Search equal point left side
        {
            if (triSlope_tmp) //上升觸發,查找下降點 / Trigger on rising edge, search on falling edge
            {
                if (*(ADCbuf + i) >= triLevel && *(ADCbuf + i + 1) <= triLevel)
                {
                    tri_pre = i;
                    break;
                }
            }
            else //下降觸發,查找上升點 / Trigger on falling edge, search on rising edge
            {
                if (*(ADCbuf + i) <= triLevel && *(ADCbuf + i + 1) >= triLevel)
                {
                    tri_pre = i;
                    break;
                }
            }
        }

        for (i = triPos_tmp; i < SAMPLE_NUM - 1; i++) //查詢觸發位置右側的等值點 / Search equal point right side
        {
            if (triSlope_tmp) //上升觸發,查找下降點 / Trigger on rising edge, search on falling edge
            {
                if (*(ADCbuf + i) >= triLevel && *(ADCbuf + i + 1) <= triLevel)
                {
                    tri_aft = i;
                    break;
                }
            }
            else //下降觸發,查找上升點 / Trigger on falling edge, search on rising edge
            {
                if (*(ADCbuf + i) <= triLevel && *(ADCbuf + i + 1) >= triLevel)
                {
                    tri_aft = i;
                    break;
                }
            }
        }
    }
    if (tri_pre == 255 || tri_aft == 255 || (tri_pre == tri_aft))
    {
        WaveLength = 0;
        return 0;
    }
    else
    {
        WaveLength = tri_aft - tri_pre;
        return 1;
    }
}

/* 計算波形頻率
   Calculate the wave frequency*/
void getWaveFreq()
{
    uint16 m_num; //求和次數
    uint8 n_num;  //求平均值右移位數

    //ADC停止采樣時,每次動作都會顯示波形頻率,因此不求平均值
    if (!ADCRunning)
    {
        WaveLengthSumNum = 0;
        WaveLengthSum = 0;
    }

    //自動模式下為了讓頻率不頻繁變動,取平均值,大于等于100ms區間不取平均值,一個原因是100ms波形變化慢,所以頻率跳動不頻繁,
    //另一方面越長的時間區間取平均值的延遲越高,影響使用體驗
    else if (TriMode == 0 && ScaleH > 2)
    {
        switch (ScaleH)
        {
        case 3: //50ms
            m_num = 2;
            n_num = 1;
            break;

        case 4: //20ms
            m_num = 4;
            n_num = 2;
            break;

        default: //<10ms
            m_num = 8;
            n_num = 3;
            break;
        }

        WaveLengthSum += WaveLength;

        //達到求和次數后
        if (++WaveLengthSumNum >= m_num)
        {
            WaveLength = WaveLengthSum >> n_num; //求波長平均值
            WaveLengthSumNum = 0;                //清零波長求和次數
            WaveLengthSum = 0;                   //清零波長總和
        }

        //沒達到求和次數,則返回,WaveFreq保持不變
        else
            return;
    }

    switch (ScaleH)
    {
    case 0:                                      //500ms
        WaveFreq = (float)50 / WaveLength + 0.5; //WaveFreq=25000/(500*WaveLength);
        break;

    case 1:                          //200ms
        WaveFreq = 125 / WaveLength; //WaveFreq=25000/(200*WaveLength);
        break;

    case 2:                          //100ms
        WaveFreq = 250 / WaveLength; //WaveFreq=25000/(100*WaveLength);
        break;

    case 3:                          //50ms
        WaveFreq = 500 / WaveLength; //WaveFreq=25000/(50*WaveLength);
        break;

    case 4:                           //20ms
        WaveFreq = 1250 / WaveLength; //WaveFreq=25000/(20*WaveLength);
        break;

    case 5:                           //10ms
        WaveFreq = 2500 / WaveLength; //WaveFreq=25000/(10*WaveLength);
        break;

    case 6:                           //5ms
        WaveFreq = 5000 / WaveLength; //WaveFreq=25000/(5*WaveLength);
        break;

    case 7:                            //2ms
        WaveFreq = 12500 / WaveLength; //WaveFreq=25000/(2*WaveLength);
        break;

    case 8:                            //1ms
        WaveFreq = 25000 / WaveLength; //WaveFreq=25000/(1*WaveLength);
        break;

    case 9:                            //500us
        WaveFreq = 50000 / WaveLength; //WaveFreq=25000000/(500*WaveLength);
        break;

    case 10:                            //200us
        WaveFreq = 125000 / WaveLength; //WaveFreq=25000000/(200*WaveLength);
        break;

    case 11:                            //100us
        WaveFreq = 250000 / WaveLength; //WaveFreq=25000000/(100*WaveLength);
        break;
    }
}

/* 將mv轉換為ADC
   Convert voltage in mV to ADC*/
uint16 Convert_mv_ADC(uint16 mv, uint16 *BGV, uint16 ADCbg, uint16 lsb)
{
    uint16 ADC;
    ADC = (uint32)mv * ADCbg * 100 / (*BGV) / lsb;
    return ADC;
}

/* 將mv轉換為ADC
   Convert ADC to voltage in mV */
uint16 c_ADC_mv(uint16 ADC, uint16 *BGV, uint16 BGADC, uint16 lsb)
{
    uint16 mv;
    mv = (uint32)ADC * *BGV * lsb / BGADC / 100;
    return mv;
}

/* 將uint16格式的mV轉化為字符型V
   Convert voltage in mV to string*/
uint8 *c_mv_V(uint16 v)
{
    static uint8 s[5];

    if (v < 10000)
    {
        s[0] = v / 1000 + '0';
        s[1] = '.';
        s[2] = v / 100 % 10 + '0';
        s[3] = v / 10 % 10 + '0';
        s[4] = '\0';
    }
    else
    {
        s[0] = v / 10000 + '0';
        s[1] = v / 1000 % 10 + '0';
        s[2] = '.';
        s[3] = v / 100 % 10 + '0';
        s[4] = '\0';
    }

    return s;
}

/* 轉換波形頻率為字符
   Convert frequency to string */
uint8 *c_WaveFreq_Str()
{
    static uint8 s[5];
    if (WaveFreq == 0)
    {
        s[0] = '*';
        s[1] = '*';
        s[2] = '*';
        s[3] = '*';
        s[4] = '\0';
    }
    else if (WaveFreq >= 10000000)
    {
        s[0] = WaveFreq / 10000000 + '0';
        s[2] = ((WaveFreq) / 1000000) % 10 + '0';
        s[3] = 'M';
        s[4] = '\0';
    }
    else if (WaveFreq >= 1000000)
    {
        s[0] = WaveFreq / 1000000 + '0';
        s[1] = '.';
        s[2] = ((WaveFreq) / 100000) % 10 + '0';
        s[3] = 'M';
        s[4] = '\0';
    }
    else if (WaveFreq >= 100000)
    {
        s[0] = WaveFreq / 100000 + '0';
        s[1] = (WaveFreq / 10000) % 10 + '0';
        s[2] = ((WaveFreq) / 1000) % 10 + '0';
        s[3] = 'k';
        s[4] = '\0';
    }
    else if (WaveFreq >= 10000)
    {
        s[0] = WaveFreq / 10000 + '0';
        s[1] = ((WaveFreq) / 1000) % 10 + '0';
        s[2] = 'k';
        s[3] = '\0';
    }
    else if (WaveFreq >= 1000)
    {
        s[0] = WaveFreq / 1000 + '0';
        s[1] = '.';
        if ((WaveFreq / 10) % 10 > 5)
            s[2] = ((WaveFreq) / 100) % 10 + '0';
        else
            s[2] = ((WaveFreq) / 100) % 10 + '0';
        s[3] = 'k';
        s[4] = '\0';
    }
    else if (WaveFreq >= 100)
    {
        s[0] = WaveFreq / 100 + '0';
        s[1] = (WaveFreq / 10) % 10 + '0';
        s[2] = (WaveFreq) % 10 + '0';
        s[3] = '\0';
    }
    else if (WaveFreq >= 10)
    {
        s[0] = WaveFreq / 10 + '0';
        s[1] = (WaveFreq) % 10 + '0';
        s[2] = '\0';
    }
    else if (WaveFreq >= 1)
    {
        s[0] = (WaveFreq) % 10 + '0';
        s[1] = '\0';
    }
    return s;
}

/* 將采樣值的映射到屏幕的顯示范圍,并反轉
   Remap sampling data to display range and inverse */
uint16 remap(uint16 val, uint16 rangeMax, uint16 rangeMin, uint16 rangeMaxNew, uint16 rangeMinNew)
{
    if (val > rangeMax)
        val = rangeMax;
    else if (val < rangeMin)
        val = rangeMin;

    val = rangeMinNew + (uint32)(rangeMax - val) * (rangeMaxNew - rangeMinNew) / (rangeMax - rangeMin);
    return val;
}

/* 獲取觸發點位置
   Get Trigger Position */
bit GetTriggerPos(uint16 d1, uint16 d2, uint16 dTrigger, bit triSlope)
{
    /*  上升沿觸發
        Trigger on Rising Edge  */
    if (triSlope)
    {
        if (d1 <= dTrigger && d2 >= dTrigger)
        {
            return 1;
        }
    }

    /*  下降沿觸發
        Trigger on Falling Edge */
    else
    {
        if (d1 >= dTrigger && d2 <= dTrigger)
        {
            return 1;
        }
    }

    return 0;
}

/* 分析采樣數據
   Analyse sampling date */
void AnalyseData()
{
    int16 i;
    uint16 tmp;
    uint16 adcMax = 0;
    uint16 adcMin = 4095;
    uint16 adcMid = 0;
    uint16 plotADCMid = 0;
    if (ADCComplete)
    {
        ScaleH_tmp = ScaleH; //記錄完成采樣的時間區間,由于采樣點的數量較少,因此不支持實時根據時間區間縮放波形,時間區間改變則清空波形
        //將采樣點復制到另一個數組,避免采樣中斷造成數據混亂
        //若采樣被中斷,則使用緩存中舊采樣點顯示波形
        for (i = 0; i < SAMPLE_NUM; i++)
        {
            *(ADCbuf + i) = *(pADCSampling + i);
        }

        //計算觸發點位置
        //ADC采樣停止時,TriPos不變,所以不進行下列計算
        TriPos = SAMPLE_NUM / 2;
        TriFail = 1; //置位觸發失敗標志
        for (i = ((CHART_H_MAX - CHART_H_MIN) >> 1); i < SAMPLE_NUM - ((CHART_H_MAX - CHART_H_MIN) >> 1); i++)
        {
            if (GetTriggerPos(*(ADCbuf + i), *(ADCbuf + i + 1), TriggerADC, TriSlope))
            {
                TriPos = i;
                TriFail = 0; //清零觸發失敗標志
                break;
            }
        }
        TriPosOffset = 0;
    }

    /*  獲取屏幕顯示波形的最大和最小值
        Get the MAX and MIN value of waveform on display*/
    for (i = 0; i <= 100; i++)
    {
        tmp = *(ADCbuf + TriPos + TriPosOffset - 50 + i);
        if (tmp > adcMax)
            adcMax = tmp;
        else if (tmp < adcMin)
            adcMin = tmp;
    }

    //將采樣點的最大最小采樣值轉換成電壓值mV
    VMax = c_ADC_mv(adcMax, BGV, ADCbg, Lsb);
    VMin = c_ADC_mv(adcMin, BGV, ADCbg, Lsb);

    //獲得垂直標尺的上下限
    getRulerV();

    //用垂直標尺mV范圍反求出ADC值的范圍作為圖表的顯示上下限
    plotADCMax = Convert_mv_ADC(RulerVMax, BGV, ADCbg, Lsb);
    plotADCMin = Convert_mv_ADC(RulerVMin, BGV, ADCbg, Lsb);

    //計算波形的頻率
    //如果當前的時間區間和采樣數據的時間間隔一致則進行頻率計算
    //為避免ADC采樣出錯時頻率跳變厲害,計算波長時使用電壓標尺的中點和波幅中點的較小值
    //如果遇到頻率跳變無法讀取,將自動量程切換至合適的手動量程即可
    adcMid = (adcMax + adcMin) >> 1;
    plotADCMid = (plotADCMax + plotADCMin) >> 1;
    if (getWaveLength(adcMid < plotADCMid ? adcMid : plotADCMid, 1) || getWaveLength(adcMid < plotADCMid ? adcMid : plotADCMid, 0))
    {
        getWaveFreq();
    }
    else
    {
        WaveFreq = 0;
    }

    //映射采樣值至屏幕的顯示范圍
    for (i = 0; i < SAMPLE_NUM; i++)
    {
        waveBuf[i] = remap(*(ADCbuf + i), plotADCMax, plotADCMin, CHART_V_MAX, CHART_V_MIN);
    }
}

/* 繪制主界面
   Draw main interface */
void PlotChart(void)
{
    uint8 i;
    uint8 *s;

    if (ClearDisplay)
    {
        ClearDisplay = 0;
        OLED_Clear();

        /* 圖表邊框
           波形橫向繪圖區101格,26~126
           波形縱向繪圖區45格,8~52
           Frame of chart 45x101*/
        OLED_DrawHLine(CHART_H_MIN, CHART_V_MIN, 4);
        OLED_DrawHLine(CHART_H_MIN, CHART_V_MAX, 4);
        OLED_DrawHLine(CHART_H_MAX - 3, CHART_V_MIN, 4);
        OLED_DrawHLine(CHART_H_MAX - 3, CHART_V_MAX, 4);
        OLED_DrawHLine(CHART_H_MIN + 25 - 2, CHART_V_MIN, 5);
        OLED_DrawHLine(CHART_H_MIN + 25 - 2, CHART_V_MAX, 5);
        OLED_DrawHLine(CHART_H_MIN + 50 - 2, CHART_V_MIN, 5);
        OLED_DrawHLine(CHART_H_MIN + 50 - 2, CHART_V_MAX, 5);
        OLED_DrawHLine(CHART_H_MIN + 75 - 2, CHART_V_MIN, 5);
        OLED_DrawHLine(CHART_H_MIN + 75 - 2, CHART_V_MAX, 5);
        OLED_DrawVLine(CHART_H_MIN - 1, CHART_V_MIN, CHART_V_MAX - CHART_V_MIN + 1);
        OLED_DrawVLine(CHART_H_MAX + 1, CHART_V_MIN, CHART_V_MAX - CHART_V_MIN + 1);

        /* 圖表虛線網格
           Grid of chart */
        for (i = 0; i < 15; i++)
        {
            OLED_DrawHLine(CHART_H_MIN + 7 * i, CHART_V_MIN + ((CHART_V_MAX - CHART_V_MIN) >> 1), 3);
        }
        for (i = 0; i < 6; i++)
        {
            OLED_DrawVLine(CHART_H_MIN + 25, CHART_V_MIN + 1 + i * 8, 3);
            OLED_DrawVLine(CHART_H_MIN + 50, CHART_V_MIN + 1 + i * 8, 3);
            OLED_DrawVLine(CHART_H_MIN + 75, CHART_V_MIN + 1 + i * 8, 3);
        }

        /* 波形位置標尺
           Ruler for waveform position*/
        OLED_DrawHLine(0, 62, 25);
        OLED_DrawVLine(0, 60, 3);
        OLED_DrawVLine(24, 60, 3);
        OLED_DrawVLine((TriPos + TriPosOffset - 50) * 24 / 119, 58, 4);

        /* 波形電壓范圍
           Voltage range of waveform*/
        OLED_Set_Pos(26, 56);
        s = c_mv_V(VMin);
        OLED_DrawString(s);
        OLED_DrawString("-");
        s = c_mv_V(VMax);
        OLED_DrawString(s);
        OLED_DrawString("V");
    }

    OLED_Overlap(0); //設置繪圖模式為覆蓋

    /* 頻率
       Frequency */
    OLED_Set_Pos(92, 0);
    OLED_DrawString("      ");
    OLED_Set_Pos(92, 0);
    s = c_WaveFreq_Str();
    OLED_DrawString(s);
    OLED_DrawString("Hz");

    /* 自動量程標志
       Flag for Auto Range*/
    if (ScaleV_Auto == 1)
    {
        OLED_Set_Pos(0, 0);
        OLED_DrawString("Auto");
    }
    else
    {
        OLED_Set_Pos(0, 0);
        OLED_DrawString("    ");
    }

    /* 觸發值
       Trigger Level */
    OLED_Set_Pos(33, 0);
    if (OptionInChart == 2 && !WaveScroll)
    {
        OLED_DrawVLine(69, 0, 8);
        OLED_Reverse(1);
    }
    else
    {
        OLED_Reverse(1);
        OLED_DrawVLine(69, 0, 8);
        OLED_Reverse(0);
    }
    s = c_mv_V(TriLevel);
    OLED_DrawString("T");
    OLED_DrawString(s);
    OLED_DrawString("V");
    OLED_Reverse(0);

    /* 觸發方向標志
       Trigger Slope */
    if (OptionInChart == 3 && !WaveScroll)
    {
        OLED_DrawVLine(71, 0, 8);
        OLED_DrawVLine(78, 0, 8);
        OLED_Reverse(1);
    }
    else
    {
        OLED_Reverse(1);
        OLED_DrawVLine(71, 0, 8);
        OLED_DrawVLine(78, 0, 8);
        OLED_Reverse(0);
    }
    if (TriSlope)
    {
        OLED_DrawChar(72, 0, 123); //123上箭頭,上升沿觸發
    }
    else
    {
        OLED_DrawChar(72, 0, 124); //124下箭頭,下降沿觸發
    }
    OLED_Reverse(0);

    /* 觸發方式標志
       Trigger Mode */
    if (OptionInChart == 4 && !WaveScroll)
    {
        OLED_DrawVLine(86, 0, 8);
        OLED_Reverse(1);
    }
    else
    {
        OLED_Reverse(1);
        OLED_DrawVLine(86, 0, 8);
        OLED_Reverse(0);
    }
    OLED_Set_Pos(80, 0);
    if (TriMode == 0)
    {
        OLED_DrawString("A");
    }
    else if (TriMode == 1)
    {
        OLED_DrawString("N");
    }
    else if (TriMode == 2)
    {
        OLED_DrawString("S");
    }
    OLED_Reverse(0);

    /* 觸發失敗標志
       Flag for Trigger Fail*/
    if (TriFail)
    {
        OLED_Set_Pos(0, 24);
        OLED_DrawString("Fail");
    }

    //繪制運行/停止標志
    //    if (TriS && ADCRuning)
    //    {
    //        OLED_Set_Pos(0, 16);
    //        OLED_DrawString("Wait");
    //    }
    if (ADCRunning)
    {
        OLED_Set_Pos(0, 16);
        OLED_DrawString("Run ");
    }
    else
    {
        OLED_Set_Pos(0, 16);
        OLED_DrawString("Stop");
    }

    /* 橫軸時間區間
       Seconds per division */
    OLED_Set_Pos(97, 56);
    OLED_DrawString("     ");
    if (OptionInChart == 0 && !WaveScroll)
    {
        OLED_Reverse(1);
    }
    OLED_Set_Pos(97, 56);
    OLED_DrawString(ScaleHTxt[ScaleH]);
    OLED_Reverse(0);

    /* 縱軸電壓區間
       Ruler for Voltage */
    OLED_Set_Pos(0, 8);
    OLED_DrawString("    ");
    if (OptionInChart == 1 && !WaveScroll)
    {
        OLED_Reverse(1);
    }
    s = c_mv_V(RulerVMax);
    OLED_Set_Pos(0, 8);
    OLED_DrawString(s);
    OLED_Reverse(0);
    s = c_mv_V(RulerVMin);
    OLED_Set_Pos(0, 46);
    OLED_DrawString(s);

    OLED_Overlap(1); //恢復繪圖模式為疊加
}

/* 繪制波形
   Draw waveform*/
void PlotWave(void)
{
    uint8 i;
    //Vector Mode
    if (PlotMode == 0)
    {
        for (i = 0; i < (CHART_H_MAX - CHART_H_MIN); i++)
        {
            OLED_DrawLine(
                i + CHART_H_MIN,
                waveBuf[TriPos + TriPosOffset - ((CHART_H_MAX - CHART_H_MIN) >> 1) + i],
                i + CHART_H_MIN + 1,
                waveBuf[TriPos + TriPosOffset - ((CHART_H_MAX - CHART_H_MIN) >> 1) + i + 1]);
        }
    }
    //Dots Mode
    if (PlotMode == 1)
    {
        for (i = 0; i <= (CHART_H_MAX - CHART_H_MIN); i++)
        {
            OLED_DrawPixel(i + CHART_H_MIN, waveBuf[TriPos + TriPosOffset - ((CHART_H_MAX - CHART_H_MIN) >> 1) + i]);
        }
    }
}

/* 繪制設置界面
   Draw settings */
void PlotSettings()
{
    if (ClearDisplay)
    {
        ClearDisplay = 0;
        OLED_Clear();

        //LOGO
        OLED_DrawBMP(18, 24, 18 + 82 - 1, 24 + 13 - 1, MINIDSO, sizeof(MINIDSO) / sizeof(MINIDSO[0]));

        //Version
        OLED_Set_Pos(102, 30);
        OLED_DrawString("V0.3");

        //CopyRight
        OLED_Set_Pos(30, 39);
        OLED_DrawString("By Creative Lau");
        OLED_Set_Pos(44, 48);
        OLED_DrwCHS_16x16(0);
        OLED_DrwCHS_16x16(1);
        OLED_DrwCHS_16x16(2);
        OLED_DrwCHS_16x16(3);
        OLED_DrwCHS_16x16(4);
    }

    OLED_Overlap(0);

    /* 選項
       Options */
    /* DrawMode */
    OLED_Set_Pos(0, 0);
  &nbs
演示效果

這是演示視頻:

評論區(0 )
主站蜘蛛池模板: 久久久国产精品 | 男女作爱bbbbbbbbb | 国产精品无码制服丝袜 | 日本人做爰全过程 | 台湾佬中文娱乐22vvvv | 天堂在线视频免费 | 又色又爽又黄的视频软件app | 99爱这里只有精品 | 91亚洲国产成人久久精品网站 | 日本免费精品一区二区三区 | 2019国产精品| 亚洲蜜臀av乱码久久精品蜜桃 | 亚洲第一网站男人都懂 | 污污内射在线观看一区二区少妇 | 成年人网站免费视频 | 玩丰满熟妇xxxx视频 | 日韩成人在线观看 | 欧美亚洲自拍偷拍 | 亚洲成av人无码综合在线观看 | 北条麻妃一区二区三区在线 | 国产成人无码区免费内射一片色欲 | 国产性xxxxx 国产性―交―乱―色―情人 | 欧美色欧美亚洲高清在线视频 | 不卡黄色 | 亚洲在av极品无码天堂手机版 | 中文字幕亚洲精品久久女人 | 国产传媒一区二区三区 | 潘金莲4级淫片aaaa | 另类二区 | 韩国精品一区二区三区四区 | 制服.丝袜.亚洲.中文.综合懂色 | 国产一级小视频 | 一本大道东京热无码aⅴ | 国产高清中文字幕 | 亚洲色成人www永久网站 | 国产精品专区在线 | 99精品久久久久久久免费看蜜月 | 狠狠躁天天躁无码中文字幕 | 不卡免费av | 久久久午夜精品 | 免费污片网站 | 狠狠色狠狠干 | 欧美黑人猛交 | 伊在人天堂亚洲香蕉精品区 | 日韩成人高清视频在线观看 | 精品偷自拍另类在线观看 | 91五月色国产在线观看 | 欧美丰满大乳大屁股毛片图片 | 国产欧美做爰xxxⅹ在线观看 | 毛片24种姿势无遮无拦 | 国产日韩三级 | 一区二区三区视频在线 | 国产成人夜色高潮福利影视 | 神马午夜av | 国产嫩草在线观看视频 | 亚洲成av人的天堂在线观看 | 一级欧美一级日韩片 | 日韩欧美一区二区三区在线 | 国产精品五月天 | 麻豆一区二区在线 | 国产 欧美 视频一区二区三区 | 久久人人爽人人爽爽久久 | 国产一区二区三区精品在线观看 | 国产av夜夜欢一区二区三区 | 依依激情网 | 妺妺窝人体色www看人体 | 啪啪拍网站 | 国产午夜精品久久精品电影 | 欧美午夜精品久久久久免费视 | 狠狠色噜噜狠狠狠888奇米 | 午夜黄色小视频 | 男女做视频md806xyz | 国产超碰久久av青草 | 精品国产亚洲一区二区三区 | 无遮挡又爽又刺激的视频 | 99自拍视频 | 亚洲日韩欧洲乱码av夜夜摸 | 欧美一级特黄aaaaaa大片在线观看 | 俄罗斯兽交黑人又大又粗水汪汪 | 国产精品免费一区二区三区都可以 | 在线免费看黄色片 | 欧美精品久久久久久久监狱 | 亚洲熟妇无码另类久久久 | 亚洲aⅴ天上人间在线观看 亚洲aⅴ在线 | 亚洲午夜成人片 | 男人巨茎大战欧美白妇 | 久久精品日产第一区二区三区 | 亚洲色图av在线 | 亚洲精品无码久久久久久久 | 特黄大片又粗又大又暴 | 欧美日韩一区在线 | 综合亚洲网| 国产精品一区二区三区免费 | 米奇777超碰欧美日韩亚洲 | 亚洲国产精品久 | 精品九九久久 | 亚洲激情视频在线观看 | 国产91精品一区二区绿帽 | 亚洲国产精品无码久久久 | 丰满大乳少妇毛片视频 | 日韩小视频在线观看 | 女人16一毛片 | 国产精品永久久久 | 国产伦精品一区二区三区免费观看 | 久久久久免费看黄a片app | 粗壮挺进人妻水蜜桃成熟 | 毛片aaaaa | 亚洲国产第一页 | 亚洲男人天堂2017 | 丰满人妻熟妇乱又伦精品 | 尤物一区二区 | 色依依av在线 | 亚洲综合伊人久久综合 | 国产午夜精品免费一区二区三区视频 | 国产精品美女www爽爽爽视频 | 免费网站色 | 黑人精品xxx一区一二区 | 欧美成人精品三级在线观看播放 | 国产av永久无码天堂影院 | 欧美精品高清在线观看 | 国产免费一区二区三区在线观看 | 中文字幕乱码一区二区三区四区 | 伊人久久综合影院 | vr成人啪啪影视 | 成人动漫视频 | 久久国产精品久久久久久 | 亚洲精品视频免费在线观看 | 男女裸体做爰猛烈全过程9制片 | 国产精品xxx | 3344永久在线观看视频免费 | 国产精品视频入口 | 高中生粉嫩无套第一次 | 国产高清一区二区三区四区 | 免费一区二区三区视频在线 | 成人区人妻精品一区二区不卡视频 | 91黄色免费看| 亚洲精品激情 | 精品成人69xx.xyz | 午夜无遮挡 | 杨幂一区二区国产精品 | 久草青青视频 | 日韩伦理在线视频 | 国产精品久久久久久久久借妻 | 美日韩中文字幕 | 国产欧美中文字幕 | 国产小视频精品 | 亚洲中出 | 99久久人人爽亚洲精品美女 | 黑人做爰xxxⅹ性少妇69小说 | 日本美女久久 | 国产一区二区三区视频 | 九九色| 久久久久久国产精品免费播放 | 国产欧美日韩视频在线观看 | 中文字幕人妻熟女人妻 | 韩国日本在线观看 | 日韩人妻无码精品无码中文字幕 | 久久露脸| 欧美大片高清免费观看 | 中文字幕国产在线观看 | 香蕉成人臿臿在线观看 | 亚洲卡一 | h黄动漫日本www免费视频网站 | 亚洲狠狠 | 欧美三级黄色大片 | 九九自拍偷拍 | 嫩草视频免费观看 | 涩涩屋www视频在线观看高清 | 国产精品国产三级国产aⅴ入口 | 嫩草视频免费观看 | 小舞同人18吸乳羞羞在线观看 | 在线观看三区 | 亚洲视频在线播放 | 老熟妇高潮一区二区三区 | 青青草这里只有精品 | 亚洲成人精品久久久 | 成人久久久久久久久久久 | 国产激情一区二区三区 | 四虎播放 | 特大黑人娇小亚洲女 | 狠狠操天天操 | 免费超爽视频在线观看 | 国产精品久久久久久久久免费樱桃 | 国精产品一区二区三区有限公司 | 久久久久成人片免费观看蜜芽 | 精品欧美小视频在线观看 | 精品国产乱码久久久软件使用方法 | 一二区视频 | 国产色多传媒网站 | 波多野结衣在线精品视频 | 国产精品一区亚洲二区日本三区 | 国产精品久久久国产盗摄 | 少妇公车张开腿迎合巨大视频 | 国产精品视频一区二区免费不卡 | 337p亚洲欧洲色噜噜噜 | 黄色大片在线播放 | 欧美日韩在线视频一区二区 | 日韩免费网站 | 国产3级在线| 久久黄色视 | 亚洲精品图片一区15p | 欧美丰满熟妇bbbbbb百度 | 国产情侣自拍小视频 | 国产91精品一区二区 | 国产视频一区二区 | 欧美国产综合欧美视频 | 爱色成人网| 羞羞动漫在线看免费 | 四虎影院在线观看免费 | 天天摸天天爽 | 日韩成年人视频 | www.色五月| 久久99精品久久久久久动态图 | 成人在线一区二区三区 | 国产精品久久久久久人妻精品 | 人妻激情文学 | 广州毛片 | 国产精品美女久久久久图片 | 麻豆一区二区在线 | 欧美一区不卡 | 久久久久久久久久久久久久久久久久久久 | 久久99精品国产99久久6男男 | 亚洲最大福利网站 | 久久久久亚洲国产av麻豆 | 日韩一二三四区 | 狠狠操天天操夜夜操 | 国产最爽的乱淫视频国语对白 | 国产又色又爽又黄又免费 | 日韩成人在线视频观看 | 亚洲色欲在线播放一区二区三区 | 午夜精品久久久久久久蜜桃 | 51精品视频在线视频观看 | 国产猛烈高潮尖叫视频免费 | 中文字幕在线观看视频一区 | 久久久久一 | 黑人黄色一级片 | 在线观看三级网站 | 性一交一性一色一性一乱 | xxnn成人免费视频 | 久久久久综合精品福利啪啪 | 大rb狠狠地给你这y荡的视频 | 久久精品无码观看tv | 精品人妻中文无码av在线 | 久久免费视频在线观看 | 亚洲色大成网站www永久男同 | 国色天香亚欧乱码 | 在线资源av| 不卡国产一区二区三区四区 | 色男人网| √新版天堂资源在线资源 | 国产欧美一区二区三区视频 | 国产熟妇高潮叫床视频播放 | 91嫩草精品少妇 | 99精品免费在线观看 | 黄色大毛片 | 国产又黄又猛又粗又爽的视频 | 亚洲网站免费观看 | 国产原创一区二区 | 健美运动员性猛交xxxxx | 成人性生交大片免费网站 | 黄色动漫在线免费观看 | 丰满少妇xbxb毛片日本视频 | av不卡一区二区 | 国产男女视频网站 | 小视频在线观看 | www.久久综合 | 日韩三级一区二区 | 欧美裸体xxxx极品少妇软件 | 2019中文字幕在线观看 | 182tv在线观看免费午夜免费线路 | 国产玖玖在线 | 亚洲精品国产crm | 久久综合中文 | 干干干操操操 | 欧美牲交a免费 | 成人免费在线视频观看 | 日本三级在线 | 国产又粗又黄又爽又硬的免费视频 | 国产精品国产三级国产三级人妇 | 大地资源影视在线播放观看高清视频 | 国产精品久久久久久一区二区 | 美女脱了内裤张开腿让男人桶网站 | 久久精品国产欧美亚洲人人爽 | 99久久99久国产黄毛片 | 国产r级在线| 一区二区三区无码高清视频 | 久久男人av资源网站 | 中文成人在线 | 饥渴少妇激情毛片视频 | 和粗大男人做爰过程 | 日产国产欧美视频一区精品 | 国产综合精品视频 | 狼人伊人干 | 香蕉视频在线看 | 国产一国产二国产三 | 少妇人妻互换不带套 | 亚洲aⅴ天堂av天堂无码麻豆 | 国产成人欧美 | 免费色播| 亚洲娇小与黑人巨大交 | 免费在线性爱视频 | 国产亚洲系列 | 亚洲欧美日韩国产综合精品二区 | 成年网站在线免费观看 | 日韩一卡二卡三卡 | 老色69久久九九精品高潮 | 高清av一区二区三区 | 久操久热 | 日韩精品视频在线观看一区二区 | 人妻少妇av中文字幕乱码 | 婷婷九月丁香 | jizzjizz国产 | 成年人性生活免费视频 | 亚洲精品成人在线视频 | 8x福利精品第一导航 | 爱爱视频欧美 | 国产精品国产三级国产专区51区 | 一级二级三级毛片 | 一区免费在线 | 午夜视频免费在线 | av无码不卡在线观看免费 | 亚洲不卡av不卡一区二区 | 国产在线日韩 | 综合人妻久久一区二区精品 | 免费理伦片在线播放网站 | 日欧美老女人 | 黄色毛片在线看 | www日本xxxx| 国产第3页 | 日日碰狠狠躁久久躁婷婷 | 国产精东天美av影视传媒 | 亚洲欧美色图小说 | 四虎成人精品国产永久免费无码 | 国产网红主播三级精品视频 | 波多野结衣美乳人妻hd电影欧美 | 色综合久久88色综合天天免费 | 免费网站av | 欧美性生交xxxxx久久久缅北 | 免费无码av片在线观看中文 | 天堂中文字幕在线观看 | 亚洲精品乱码久久久久久黑人 | 国产精品久久国产 | 色av中文字幕 | 四虎影成人精品a片 | 一级黄色在线播放 | 四虎在线免费播放 | 山林妇女勾搭老头av | 51精品久久久久久久蜜臀 | 成年人福利 | 国产成人免费9x9x | 伊人干综合 | 伊人五月综合 | 日韩精品中文字幕在线观看 | 最新在线中文字幕 | 国产特级视频 | 午夜精品久久久久久中宇牛牛影视 | 91视频免费在观看 | 大肉大捧一进一出视频 | 奇米网88狠狠狠 | 久久久久色 | 19禁国产精品福利视频 | 青青草黄色 | 在线免费一级片 | 大香焦久久| 麻豆资源| 国产精品久久久久久久久久尿 | 干干天天 | 在线国产中文字幕 | 亚洲狼人综合 | 亚洲国产精品无码久久久 | 韩日视频在线 | 99久久无色码中文字幕人妻 | 国产黑丝啪啪 | 男人视频网站 | 国产精品爽爽久久 | 日本丰满大乳mm | 136导航fldh福利视频微拍 | 亚拍精品一区二区三区探花 | 人妻中出无码一区二区三区 | 色婷婷综合久久久久中文一区二区 | 少妇三级全黄 | 久久久久久久国产精品毛片 | 久久狼人天堂 | 香蕉视频网址 | 国产精品久久久不卡 | 91精品国产高清一区二区三密臀 | 亚洲一区日韩 | 天堂中文在线8 | 在线看片黄 | 懂色一区二区三区久久久 | 国产91精品激烈高潮白浆 | 香蕉中文网 | 337p日本欧洲亚洲大胆色噜噜 | 中国一级特黄真人毛片 | 久久www免费人成看片美女图 | 欧美日韩国产免费一区二区三区 | 99热在线国产 | 国产精品白浆一区二小说 | 久久蜜桃精品一区二区三区综合网 | 波多野结衣网址 | 成人免费视频国产免费 | 激情视频区 | 国产精品美女久久久久久久久 | 亚洲人成网亚洲欧洲无码久久 | 国产区第一页 | 中文字幕乱码久久午夜不卡 | 夜夜草天天干 | 精品国产一区二区三区不卡蜜臂 | 四虎影视永久免费观看在线 | 亚洲人成在线观看 | 性做久久久久久久久久 | 97人妻熟女成人免费视频色戒 | 久久久久久伊人高潮影院 | 男人扒开女人双腿猛进视频 | 激情五月综合网 | 天堂av播放 | 大胆欧美gogo免费视频一二区 | 日韩第一视频 | 日韩av不卡在线 | 在线免费一区二区 | 国产在线精品一区二区三区不卡 | 亚洲jizzjizz | 无码国产精品成人 | 好吊操av| 性xxx欧美 | 成人福利在线 | 国产情侣一区二区三区 | 国产精品v欧美精品v日韩 | 亚洲精品久久国产高清 | chinese少妇国语对白 | 丰满少妇在线观看网站 | 国产精品女主播一区二区三区 | 久久一级片视频 | 国产小视频免费 | 久久97精品| 久久婷婷五月综合色精品 | 成人午夜高潮a∨猛片 | 免费在线看黄色片 | 麻豆视频在线免费看 | 亚洲一区二区视频在线观看 | 日本污网站 | 日韩尤物 | 亚洲第一黄色网址 | 蜜桃视频无码区在线观看 | 国产成人无码一区二区三区在线 | 蜜臀av性久久久久蜜臀aⅴ麻豆 | 韩国三级hd中文字幕叫床浴室 | 国产精品久久久久久久久电影网 | 欧美一级三级在线观看 | 久久久久免费精品国产小说色大师 | 天天拍夜夜爽 | 大奶子在线观看 | 久久国产精品免费一区二区三区 | 一级特黄av | 中文字幕久热 | 欧美激情国产精品免费 | 女神思瑞女神久久一区二区 | 亚洲精品网站在线 | 91偷自产一区二区三区蜜臀 | 香港三级日本三级妇三级 | 亚洲精品国产拍在线 | 久久综合五月 | 女同 另类 激情 重口 | 国产精品免费视频网站 | 欧美浓毛大泬视频 | 色综合91| 毛茸茸日本熟妇高潮 | 亚洲日本乱码在线观看 | 亚洲成av | 久久91精品国产91久久久 | 性色av浪潮av | 亚洲精品福利网站 | 交专区videossex非洲 | 久久人人爽人人爽人人片ⅴ | 香蕉久久一区二区不卡无毒影院 | 99热只有这里有精品 | a√视频在线观看 | 无码人妻精品一区二区三区9厂 | 天堂av资源网 | 国产在线无| 无收费看污网站 | 欧美第一夜 | 国产乱码久久久久 | 久久久久久久久久久网 | k频道国产在线观看 | 激情综合啪啪 | 成人在线手机视频 | 亚洲欧美国产一区二区 | 国产伦精品一区二区三区视频免费 | 噜噜噜天天躁狠狠躁夜夜精品 | 超碰成人免费 | 男人的天堂手机在线 | 成人免费色视频 | 亚洲无线观看国产精品 | 少妇熟女高潮流白浆 | 欧美日韩亚洲另类 | 精品极品三大极久久久久 | 亚洲精品无码永久在线观看性色 | 91porny真实丨国产jk | 国产成人精品免费 | 三个少妇的按摩69xx | 尤物视频在线免费观看 | 国产精品成人av性教育 | 在线播放免费人成毛片乱码 | 婚后打屁股高h1v1调教 | 天干夜天干天天天爽视频 | 日韩乱码人妻无码中文字幕 | 欧美另类人妖 | 美日韩视频 | 日本特黄 | 在线免费观看成年人视频 | 网站在线免费网站在线免费观看国产网页 | 人妻少妇-嫩草影院 | 国产精品麻豆免费观看 | 欧美伊人久久大香线蕉综合 | 黑人vs日本人ⅹxxxhd | 国产乱人伦偷精品视频免下载 | 中文天堂在线视频 | 777亚洲精品乱码久久久久久 | 国产清纯白嫩初黑人高生在线观看 | 国产欧美日韩成人 | 精品黄色在线 | 亚洲国色天香卡2卡3卡4 | yyy6080韩国三级理论 | 无码日韩精品一区二区免费 | 午夜精品久久 | 午夜在线国语中文字幕视频 | 欧美成人精品a∨在线观看 香蕉av福利精品导航 | 人妻aⅴ无码一区二区三区 日本一卡2卡3卡四卡精品网站 | 欧美成人性生交大片免费看 | 久久亚洲精中文字幕冲田杏梨 | 蜜臀久久99精品久久久 | 九色在线视频 | 国产femdom调教7777 | 精品久久影院 | 国产1区二区 | 欧美性生活网 | 久久久亚洲麻豆日韩精品一区三区 | 五月天一区二区 | 少妇精品久久久一区二区三区 | 男女性色大片免费网站 | 日本国产一区二区三区在线观看 | 日本久久中文字幕 | 国产精华xxx | 欧美又粗又长又爽做受 | 欧美国产亚洲日韩在线二区 | 日本黄区免费视频观看 | 国产精品白嫩白嫩大学美女 | 无码av波多野结衣久久 | 少妇 av| 一个添下面两个吃奶把腿扒开 | 波多野结衣一区二区三区四区 | 亚洲色图欧洲色图 | 在线观看黄网址 | 在线播放av网站 | 四个黑人玩一个少妇四p | 国产精品国产三级国产专区53 | 五月丁香花 | 人妻中文字幕乱人伦在线 | 午夜毛片在线 | 国产人人精品 | 中国妇女做爰视频 | 国产乱码视频 | 三级三级18女男 | 成人在线免费网址 | 国产第一福利影院 | 日本中文在线播放 | 少妇久久久久久被弄到高潮 | 成人动漫在线观看免费 | 一本大道久久a久久综合婷婷 | 我和丰满老女人性销魂 | 国产国产精品人在线视 | 少妇特黄a一区二区三区 | 久久久久久成人毛片免费看 | 久草在线在线精品观看 | 国产精品污www在线观看 | 国模小黎自慰gogo人体 | 色吧在线视频 | 日本特级黄色录像 | 麻花豆传媒剧国产免费mv入口 | 麻豆成人免费视频 | 精品久久久中文字幕 | 亚洲精品少妇一区二区 | 日日嗨av一区二区三区四区 | 午夜电影网va内射 | 国产亚av手机在线观看 | 曰韩内射六十七十老熟女影视 | 亚洲天堂中文字幕在线观看 | 成人精品视频一区二区三区 | 欧洲a老妇女黄大片 | 国产又粗又猛又爽69xx | 伊人精品成人久久综合 | 熟女视频一区二区在线观看 | 九九在线精品视频 | 免费观看理伦片在线播放 | 91国内精品野花午夜精品 | 精品人妻人人做人人爽夜夜爽 | 91午夜精品亚洲一区二区三区 | 爱情岛亚洲论坛入口 | 国产精品亚洲а∨天堂免在线 | 亚洲日韩一页精品发布 | 综合成人在线 | 国产精品九九 | 欧美一级录像 | 青青草精品| 国产露出视频 | 亚洲视频综合 | 成人片在线播放 | 校园春色自拍偷拍 | 又色又爽又黄的视频软件app | 成品片a人免费进入 | 日韩免费一区二区 | 国产对白老熟女正在播放 | 国毛片 | 日韩在线一区二区三区 |