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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 43863|回復: 86
收起左側

單片機與DS18B20設計溫度報警器程序 可設置上下限

  [復制鏈接]
ID:70650 發表于 2014-12-18 01:27 | 顯示全部樓層 |閱讀模式
在51hei論壇找了幾天資料后。昨天開始使用模塊化編程,讓DS18B20在液晶上顯示。中間出現了一些問題,糾結了一天。后來才發現在.h文件里面用到的一些變量我只聲明了,但是沒在.c文件里面進行定義,導致了編譯出現很多警告,而且液晶顯示不正常。

這個問題發現之后,我又接著把程序修改了一下,加上了按鍵調節報警溫度的上下限,并且可以切換顯示測到的溫度和自己設置的報警溫度,嘿嘿程序就在下面

180645nb488ir9g9b8edb9.jpg.thumb.jpg

工程40文件.zip (63.44 KB, 下載次數: 1102)

評分

參與人數 5黑幣 +25 收起 理由
wyx13777 + 5 很給力!
ficklelww + 5 很給力!
lzj602015234 + 5 很給力!
1136918172 + 5 很給力!
h832ea + 5 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:70650 發表于 2014-12-18 01:29 | 顯示全部樓層
主要代碼預覽
DS18B20.c文件:
  1. //------------------------------------------------------
  2. //用數碼管與DS18B20設計溫度報警器
  3. //------------------------------------------------------
  4. //本例將報警溫度設為高:40度 低:-3度,當DS18B20感知到溫度達到此臨界值時
  5. //系統發出報警聲
  6. #include <REG52.H>
  7. #include <intrins.h>
  8. #include "delay.h"
  9. #include "DS18B20.h"

  10. uchar display_digit[4]={0,0,0,0};                  //待顯示的各溫度數位
  11. uchar LCD_display[16]="                ";                  //LCD顯示的溫度值
  12. uchar LCD_alarm_display[16]="H:      L:      ";          //顯示報警溫度
  13. bit HI_Alarm=0,LO_Alarm=0;                 //高低溫報警標志
  14. bit DS18B20_IS_OK;                        //傳感器正常標志

  15. //溫度小數位對照表
  16. uchar code df_table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
  17. //報警溫度上下限,為進行正負數比較,此處注意設為char類型
  18. //取值范圍為-128~+127,DS18B20支持范圍為-50~+125
  19. char Alarm_temp_HL[4]={30,-3,0,0};//報警溫度預設及存儲

  20. uchar currentT=0;                                                  //當前讀取的溫度整數部分
  21. uchar temp_value[]={0x00,0x00};                          //從DS18B20讀取的溫度值
  22. //初始化DS18B20
  23. uchar init_DS18B20()
  24. {
  25.         uchar status;
  26.         DQ=1; delay(8);
  27.         DQ=0; delay(90);
  28.         DQ=1; delay(8);
  29.         status=DQ;
  30.         delay(100);
  31.         DQ=1;
  32.         return status;          //初始化成功時返回0
  33. }

  34. //讀一字節
  35. uchar readonebyte()
  36. {
  37.         uchar i,dat=0;
  38.         DQ=1; _nop_();
  39.         for(i=0;i<8;i++)
  40.         {
  41.            DQ=0;dat>>=1;
  42.            DQ=1;_nop_();_nop_();//拉高,延時進行采樣 單總線是進行與的
  43.            if(DQ) dat|=0x80;  //如果DQ是1,把1存到dat里
  44.            delay(30);DQ=1;
  45.         }
  46.         return dat;
  47. }

  48. //寫一字節
  49. void writeonebyte(uchar dat)
  50. {
  51.         uchar i;
  52.         for(i=0;i<8;i++)
  53.         {
  54.                 DQ=0;DQ=dat&0x01; //先取最低位,先讀的也是最低位
  55.                 delay(5);DQ=1;dat>>=1;
  56.         }
  57. }

  58. //讀取溫度值
  59. void read_temp()
  60. {
  61.         if(init_DS18B20()==1)        //DS18B20故障
  62.                 DS18B20_IS_OK=0;
  63.         else
  64.         {
  65.                 writeonebyte(0xcc);          //跳過序列號
  66.                 writeonebyte(0x44);          //啟動溫度轉換
  67.                 init_DS18B20();
  68.                 writeonebyte(0xcc);          //跳過序列號
  69.                 writeonebyte(0xbe);          //讀取溫度寄存器
  70.                 temp_value[0]=readonebyte(); //        溫度低8位
  71.                 temp_value[1]=readonebyte(); //        溫度高8位
  72.                 Alarm_temp_HL[2]=readonebyte(); //報警溫度TH
  73.                 Alarm_temp_HL[3]=readonebyte(); //報警溫度TL
  74.                 DS18B20_IS_OK=1;
  75.         }       
  76. }

  77. //設置DS18B20溫度報警值
  78. void set_Alarm_temp()
  79. {
  80.         init_DS18B20();
  81.         writeonebyte(0xcc);          //跳過序列號
  82.         writeonebyte(0x4e);          //將設定的溫度報警值寫入DS18B20
  83.         writeonebyte(Alarm_temp_HL[0]);  //寫TH
  84.     writeonebyte(Alarm_temp_HL[1]);  //寫TL
  85.     writeonebyte(0x7f);                                //12位精度
  86.         init_DS18B20();
  87.         writeonebyte(0xcc);          //跳過序列號
  88.         writeonebyte(0x48);          //溫度報警值存入DS18B20
  89. }

  90. //在液晶上顯示溫度處理
  91. void chuli_temp()
  92. {
  93. //------------------顯示溫度處理-------------------------
  94.         uchar ng=0;           //負數標識
  95.         uchar t=150;                 //延時值
  96.         char signed_current_temp;                //注意類型為char
  97.         //如果為負數則取反加1,并設置負號標識及負號顯示位置
  98.         if((temp_value[1]&0xf8)==0xf8)
  99.         {
  100.                 temp_value[1]=~temp_value[1];
  101.                 temp_value[0]=~temp_value[0]+1;
  102.                 if(temp_value[0]==0x00) temp_value[1]++;
  103.                 ng=1;
  104.        
  105.         }
  106.   //查表得到溫度小數部分
  107.   display_digit[0]=df_table[temp_value[0]&0x0f];
  108.   //獲取溫度整數部分(無符號)
  109.   currentT=((temp_value[0]&0xf0)>>4)|((temp_value[1]&0x07)<<4);
  110.   //有符號的當前溫度值,注意定義為char,其值可為-128~+127
  111.   signed_current_temp=ng?-currentT:currentT;
  112.   //高低溫報警標志設置(與定義為char類型的Alarm_temp_HL比較,這樣可區分正負比較)
  113.   HI_Alarm=signed_current_temp>=Alarm_temp_HL[2]? 1 : 0;
  114.   LO_Alarm=signed_current_temp<=Alarm_temp_HL[3]? 1 : 0;
  115.   //將整數部分分解為三位待顯示數字
  116.   display_digit[3]=currentT/100;
  117.   display_digit[2]=currentT%100/10;
  118.   display_digit[1]=currentT%10;
  119.   //LCD顯示數據
  120.   LCD_display[2]=display_digit[3]+'0';          //bai
  121.   LCD_display[3]=display_digit[2]+'0';          //shi
  122.   LCD_display[4]=display_digit[1]+'0';          //ge
  123.   LCD_display[5]='.';
  124.   LCD_display[6]=display_digit[0]+'0';          //xiaoshu
  125.   LCD_display[7]=0xdf;                                 //。
  126.   LCD_display[8]=0x43;                                 // C

  127.   if(display_digit[3]==0)                          
  128.           {
  129.                     LCD_display[2]=' ';                        //高位為0則不顯示               
  130.                   if(display_digit[2]==0)
  131.                   {
  132.                           LCD_display[3]=' ';
  133.                   }
  134.           }
  135.         //負號顯示在恰當位置
  136.         if(ng)
  137.                   {
  138.                           if(LCD_display[3]==' ')
  139.                                 LCD_display[3]='-';
  140.                         else if(LCD_display[2]==' ')
  141.                                 LCD_display[2]='-';
  142.                         else LCD_display[1]='-';
  143.                   }
  144. //------------------------------------------------------

  145. }

  146. void chuli_alarm_temp()
  147. {
  148. //---------------------報警溫度處理---------------------
  149.    uchar ng;
  150.    //由于Alarm_temp_HL類型為char 故可以直接進行正負比較
  151.    //高溫報警值
  152.    ng=0;
  153.    if(Alarm_temp_HL[2]<0)
  154.    {
  155.               Alarm_temp_HL[2]=~Alarm_temp_HL[2]+1;
  156.            ng=1;
  157.    }
  158.    //分解高溫各數位到待顯示數組中
  159.    LCD_alarm_display[3]=Alarm_temp_HL[2]/100+'0';
  160.    LCD_alarm_display[4]=Alarm_temp_HL[2]%100/10+'0';
  161.    LCD_alarm_display[5]=Alarm_temp_HL[2]%10+'0';
  162.    //屏蔽高位不為0的
  163.    if(LCD_alarm_display[3]=='0') LCD_alarm_display[3]=' ';
  164.    if(LCD_alarm_display[3]==' ' && LCD_alarm_display[4]=='0')
  165.        LCD_alarm_display[4]=' ';
  166.         //'-' 顯示
  167.    if(ng)
  168.    {
  169.                    if(LCD_alarm_display[4]==' ') LCD_alarm_display[4]='-';
  170.                 else
  171.                 if(LCD_alarm_display[3]==' ') LCD_alarm_display[3]='-';
  172.                 else LCD_alarm_display[2]='-';
  173.    }
  174.    //低溫報警值
  175.    ng=0;
  176.    if(Alarm_temp_HL[3]<0)
  177.    {
  178.               Alarm_temp_HL[3]=~Alarm_temp_HL[3]+1;
  179.            ng=1;
  180.    }
  181.    //分解高溫各數位到待顯示數組中
  182.    LCD_alarm_display[11]=Alarm_temp_HL[3]/100+'0';
  183.    LCD_alarm_display[12]=Alarm_temp_HL[3]%100/10+'0';
  184.    LCD_alarm_display[13]=Alarm_temp_HL[3]%10+'0';
  185.    //屏蔽高位不為0的
  186.    if(LCD_alarm_display[11]=='0') LCD_alarm_display[11]=' ';
  187.    if(LCD_alarm_display[11]==' ' && LCD_alarm_display[12]=='0')
  188.        LCD_alarm_display[12]=' ';
  189.         //'-' 顯示
  190.    if(ng)
  191.    {
  192.                    if(LCD_alarm_display[12]==' ') LCD_alarm_display[12]='-';
  193.                 else
  194.                 if(LCD_alarm_display[11]==' ') LCD_alarm_display[11]='-';
  195.                 else LCD_alarm_display[10]='-';
  196.    }
  197. //------------------------------------------------------
  198. }

復制代碼

評分

參與人數 1黑幣 +5 收起 理由
青頂云上 + 5

查看全部評分

回復

使用道具 舉報

ID:70769 發表于 2014-12-20 19:48 | 顯示全部樓層
很好,正需要
回復

使用道具 舉報

ID:76267 發表于 2015-4-6 21:50 | 顯示全部樓層
頂一個
回復

使用道具 舉報

ID:76267 發表于 2015-4-6 21:51 | 顯示全部樓層
樓主,ds1820報警有米有
回復

使用道具 舉報

ID:74826 發表于 2015-4-11 15:34 | 顯示全部樓層
正在做相關方面程序設計,借鑒一下
回復

使用道具 舉報

ID:77724 發表于 2015-4-22 16:19 | 顯示全部樓層
樓主有這個程序的電路圖嗎?
回復

使用道具 舉報

ID:77760 發表于 2015-4-24 16:23 | 顯示全部樓層
謝謝分享,太好了正好需要。
回復

使用道具 舉報

ID:77760 發表于 2015-4-24 16:24 | 顯示全部樓層
謝謝分享,太好了正好需要。
回復

使用道具 舉報

ID:75461 發表于 2015-4-26 10:48 | 顯示全部樓層
好資料,收下了,謝謝
回復

使用道具 舉報

ID:77720 發表于 2015-4-27 14:09 | 顯示全部樓層
,有仿真圖嘛
回復

使用道具 舉報

ID:78521 發表于 2015-4-30 12:33 | 顯示全部樓層
正需要~~~謝謝
回復

使用道具 舉報

ID:78896 發表于 2015-5-4 22:42 | 顯示全部樓層
好東西
回復

使用道具 舉報

ID:66287 發表于 2015-5-29 08:21 | 顯示全部樓層
看看樓主有何獨招,謝謝分享!
回復

使用道具 舉報

ID:81503 發表于 2015-5-29 18:07 | 顯示全部樓層
好東西
回復

使用道具 舉報

ID:7992 發表于 2015-5-30 17:33 | 顯示全部樓層
謝謝你提供的程序,學習一下。
回復

使用道具 舉報

ID:85838 發表于 2015-7-16 15:10 | 顯示全部樓層
好東西
回復

使用道具 舉報

ID:93949 發表于 2015-10-29 07:49 來自觸屏版 | 顯示全部樓層
好東東、太給力了!
回復

使用道具 舉報

ID:66287 發表于 2015-10-29 10:16 | 顯示全部樓層
謝謝樓主的無私奉獻,頂
回復

使用道具 舉報

ID:11064 發表于 2015-11-1 11:53 | 顯示全部樓層
LCD 在線液晶顯示器技術手冊 J12864 中文/JGD12864 中文/FY12864Z
1
液晶顯示模塊技術手冊
J12864 中文/JGD12864 中文/FY12864ZW
:(1)模組背部自帶 10K 3*3 硬封可調電位器,可以調到
對比度
LED 背光極性可調,JP4 為液晶背光正負反接處,此模組
為 4 顆 LED 燈,非普通背光
模組自帶原裝三星正品防靜電電容, 抗干擾性更強 C6 C
串并口可通過兩種方式調節 1 PSB 腳控制 2 JP2 短路到
口 短路到-為串口
自改 3.3V 可通過 JP3 調節, 默認接+級為 5V, 接-為 3.3V
5 加極性電容即可 型號
06A 14FH4,背光電阻 33 歐改成 3.3 歐
回復

使用道具 舉報

ID:11064 發表于 2015-11-3 19:45 | 顯示全部樓層
#include<reg52.h> //包含頭文件,不需要改動,頭文件包含特殊功能寄存器的定義

sbit LED0 = P2^0;   // 用sbit關鍵字定義LED到P2.0端口


void Delay(unsigned int t); //函數聲明
/*------------------------------------------------
                    主函數
------------------------------------------------*/
void main (void)
{
                  
        unsigned int TIME=300,PWM=0;//定義周期并賦值
        while (1)         //主循環
          {
                LED0=1;
                Delay(50000);        //特意加延時,可以看到熄滅的過程

/* 階段1:這個循環中低電平時長從1累加到TIME(周期)的值,我們可以看到燈逐漸變亮 */
                for(PWM=1; PWM<TIME; PWM++)
                {  
                           LED0=0;        //點亮LED  
                           Delay(PWM);//延時長度,300次循環中從1加至299
                           LED0=1;        //熄滅LED
                      Delay(TIME-PWM);//延時長度,300次循環中從299減至1   
                   }

                LED0=0; /*階段2:開始全亮*/

/* 階段3:這個循環中低電平時長從TIME(周期)的值逐減到0,我們可以看到燈逐漸變暗 */
                for(PWM=TIME-1; PWM>0; PWM--)
                { //與逐漸變亮相反的過程
                           LED0=0;
                           Delay(PWM);
                           LED0=1;
                      Delay(TIME - PWM);     
                   }
                     //主循環中添加其他需要一直工作的程序
          }
}
/*------------------------------------------------
延時函數,含有輸入參數 unsigned int t,無返回值
unsigned int 是定義無符號整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
回復

使用道具 舉報

ID:11064 發表于 2015-11-3 19:46 | 顯示全部樓層
#include<reg52.h> //包含頭文件,一般情況不需要改動,
//頭文件包含特殊功能寄存器的定義

sbit LED0=P2^0;// 用sbit 關鍵字 定義 LED到P2.0端口,
sbit LED1=P2^1;
//LED是自己任意定義且容易記憶的符號

void Delay(unsigned int t); //函數聲明
/*------------------------------------------------
                    主函數
------------------------------------------------*/
void main (void)
{
                  //此方法使用bit位對單個端口賦值


        while (1)         //主循環
          {
                  LED0=0;            //將P2.0口賦值 0,對外輸出低電平
                LED1=0;
                  Delay(20000);      //調用延時程序;更改延時數字可以更改延時長度;
                                //用于改變閃爍頻率
                  LED0=1;            //將P2.0口賦值 1,對外輸出高電平
                LED1=1;
                  Delay(20000);
                     //主循環中添加其他需要一直工作的程序
          }
}

/*------------------------------------------------
延時函數,含有輸入參數 unsigned int t,無返回值
unsigned int 是定義無符號整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
回復

使用道具 舉報

ID:11064 發表于 2015-11-3 21:09 | 顯示全部樓層
#include <REG51.H>
#include "array.h"

//--重定義函數變量--//
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

//--定義SPI要使用的 IO--//
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;

//--全局函數聲明--//
void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0);
                                                                                                                                                                                       
/*******************************************************************************
* 函 數 名         : main
* 函數功能                   : 主函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void main(void)
{   
   int k, i, ms;

   //--定義一個指針數據指向漢字--//
   uchar *p[] = {
                                    tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8,
                                 tab9, tab10, tab11, tab12, tab13, tab14, tab15};                                               
        while(1)
        {
                for(i = 0; i < 15; i++)                //總共15個字
                {
                        for(ms = 50; ms > 0; ms--)        //顯示50次,即肉眼可識別的停留時間
                        {
                                for(k = 0; k < 16; k++)                        //顯示一個字
                                {                                                        
                                        //--因為字模軟件取的數組是高電平有效,所以列要取反--//
                                        HC595SendData(~(*(p[i] + 2*k + 1)),~(*(p[i] + 2*k )),
                                                       tab0[2*k],tab0[2*k + 1]);
                                }

                                HC595SendData(0xff,0xff,0,0);                                //清屏                 
                        }
                }                                                                                
        }
}

/*******************************************************************************
* 函 數 名         : HC595SendData
* 函數功能                   : 通過595發送四個字節的數據
* 輸    入         : BT3:第四個595輸出數值
*                  * BT2: 第三個595輸出數值
*                  * BT1:第二個595輸出數值
*                  * BT0:第一個595輸出數值
* 輸    出         : 無
*******************************************************************************/

void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0)
{  
        uchar i;
       
        //--發送第一個字節--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT3 >> 7 ;        //從高位到低位
                BT3 <<= 1;

                S_CLK = 0;
                S_CLK = 1;               
        }

        //--發送第一個字節--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT2 >>7;                //從高位到低位
                BT2 <<= 1;

                S_CLK = 0;
                S_CLK = 1;       
        }

        //--發送第一個字節--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT1 >> 7;                //從高位到低位
                BT1 <<= 1;
                S_CLK = 0;
                S_CLK = 1;       
        }

        //--發送第一個字節--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT0 >> 7;                //從高位到低位
                BT0 <<= 1;
                S_CLK = 0;
                S_CLK = 1;
        }
   
        //--輸出--//
        R_CLK = 0; //set dataline low
        R_CLK = 1; //片選
        R_CLK = 0; //set dataline low
}





回復

使用道具 舉報

ID:80741 發表于 2015-11-6 16:44 | 顯示全部樓層
學習了,下載來,研究研究
回復

使用道具 舉報

ID:98305 發表于 2015-12-4 14:41 | 顯示全部樓層
看看是不是正需要的
回復

使用道具 舉報

ID:102260 發表于 2016-1-7 16:28 | 顯示全部樓層
樓主太棒了
回復

使用道具 舉報

ID:102627 發表于 2016-1-10 13:02 | 顯示全部樓層
樓主太棒啦
回復

使用道具 舉報

ID:112336 發表于 2016-4-5 16:21 | 顯示全部樓層
不錯的,學習一下
回復

使用道具 舉報

ID:119479 發表于 2016-5-9 12:25 | 顯示全部樓層
借鑒下。希望能行
回復

使用道具 舉報

ID:121652 發表于 2016-5-18 11:22 | 顯示全部樓層
為什么我下載燒錄了后LCD上第一行和第二行只顯示了“Now Wen Du”,“NO NO”,并沒有溫度顯示,按鍵也沒反應,樓主求解
回復

使用道具 舉報

ID:123373 發表于 2016-5-26 17:47 | 顯示全部樓層
必須給樓樓點贊
回復

使用道具 舉報

ID:123916 發表于 2016-5-31 20:42 | 顯示全部樓層
謝謝很有用,已經急哭了。。
回復

使用道具 舉報

ID:124367 發表于 2016-6-1 14:47 | 顯示全部樓層
謝謝樓主分享,我遇到的情況和30#一樣的 “LCD上第一行和第二行只顯示了“Now Wen Du”,“NO NO”,并沒有溫度顯示”,想請教下樓主電路圖是什么樣的,雖然已經2年多了....
回復

使用道具 舉報

ID:124627 發表于 2016-6-2 10:04 | 顯示全部樓層
謝謝樓主分享經驗
回復

使用道具 舉報

ID:122434 發表于 2016-6-2 15:49 | 顯示全部樓層
這個必須要好好學習
回復

使用道具 舉報

ID:122434 發表于 2016-6-2 15:50 | 顯示全部樓層
必須給樓樓點贊
回復

使用道具 舉報

ID:128596 發表于 2016-6-29 19:50 | 顯示全部樓層
多謝樓主分享,對我很有幫助
回復

使用道具 舉報

ID:127965 發表于 2016-7-1 07:19 | 顯示全部樓層
jiujiu 發表于 2014-12-18 01:29
主要代碼預覽
DS18B20.c文件:

挺好 謝謝
回復

使用道具 舉報

ID:136144 發表于 2016-8-6 20:58 | 顯示全部樓層
很好,正需要
回復

使用道具 舉報

ID:147529 發表于 2016-11-12 15:38 | 顯示全部樓層
???????????????????
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩不卡 | 午夜性视频 | 欧美日韩在线一区 | 久久久久精 | 国产福利在线 | 二区中文字幕 | 久久久国产一区二区三区 | 成人av电影在线观看 | 色噜噜亚洲男人的天堂 | 一级黄色片网址 | 亚洲精品自在在线观看 | av三级| 天堂一区 | 国产精品视频导航 | 成人久久久久久久久 | 亚洲精品3 | 在线观看免费黄色片 | 91.xxx.高清在线| 69精品久久久久久 | 999久久久 | 91不卡| 亚洲精品久久久一区二区三区 | 91在线免费观看网站 | 欧美成人精品 | 91精品国产综合久久久久久蜜臀 | 久久精品国产亚洲夜色av网站 | 成人深夜福利在线观看 | 成人欧美一区二区三区在线播放 | 精品粉嫩aⅴ一区二区三区四区 | 天堂久久网 | 欧美一区二区三区在线视频 | 欧美啪啪 | 久久精品国产99国产精品 | 日韩免费高清视频 | 天天曰夜夜操 | 久久久久一区二区三区 | 久久久久黑人 | 影音先锋成人资源 | 天天操一操 | 久久精品网| 日韩在线视频精品 |