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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12467|回復: 26
收起左側

剛學單片機DIY個12864紅外遙控時鐘萬年歷

  [復制鏈接]
ID:39072 發表于 2017-9-4 20:57 | 顯示全部樓層 |閱讀模式
剛學單片機DIY個12864紅外遙控時鐘萬年歷
包含 單片機源代碼和燒錄固件  AD9原理圖 PCB圖
12864.JPG

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
sch.JPG pcb.JPG

0.png

單片機源程序如下:
  1. /*---------------------------------------------------------------------------
  2.         李春林的智能時鐘程序
  3.         單 片 機:STC89C52RC
  4.         晶    振:11.0592MHz
  5.         時鐘芯片:DS1302
  6.         液 晶 屏:12864-ST7920
  7.         功能描述: 大數字顯示時間;能顯示農歷、溫度和設置鬧鈴;有整點報時功能
  8.                           紅外遙控和按鍵都能設置時間和鬧鐘
  9.         說          明:LCD12864使用并口連接方式,PSB、RST接高電平
  10.         修改日志:無

  11. ------------------------------------------------------------------------------*/

  12. /*-------------------------------頭文件---------------------------------------*/
  13. #include <reg52.h>
  14. #include <intrins.h>
  15. #include "LCD12864.h"
  16. #include "DS1302.h"
  17. #include "DS18B20.h"
  18. #include "nongli.h"
  19. #include "displaytime.h"
  20. #include "zt.h"
  21. #include "bell.h"
  22. #include "HW.H"
  23. #include "delay.h"

  24. #define uint  unsigned int
  25. #define uchar unsigned char

  26. /*--------------------定義按鍵-----------------------------------------------*/
  27. sbit K1  = P1^0; //K1-設置
  28. sbit K2  = P1^1; //K2-確認、返回
  29. sbit K3  = P1^2; //K3-加
  30. sbit K4  = P1^3; //K4-減
  31. //sbit K5  = P1^4; //按鍵K5-鬧鐘的打開與關閉 在"hw.h"中定義

  32. /*---------------------函數聲明------------------------------*/             
  33. void ds_w0(void);
  34. void ds_w(void);
  35. void Conver_week(bit c,uchar year,uchar month,uchar day);
  36. /*-----------------------------定義全局變量------------------------------*/
  37. bit  w=0;    //調時標志位

  38. unsigned char yy,mo,dd,xq,hh,mm,ss,month_moon,day_moon,week,tiangan,dizhi,moontemp1,moontemp2;//定義時間映射全局變量(專用寄存器)
  39. signed char address,item,item0,max,mini;
  40. unsigned char clk_ala[2]={0x00,0x00};//鬧鐘數據存放初,始值為00:00
  41. unsigned char hour,minute,time;//用于鬧鈴的設置



  42. /*-----------------------------日期、時間設置函數-----------------------------*/

  43. void tiaozheng(void){
  44.         yy = read_clock(0x8d);//調用1302時鐘數據中的年數據,從地址0x8d中
  45.         mo = read_clock(0x89);//調用1302時鐘數據中的月數據,從地址0x89中
  46.         dd = read_clock(0x87);//從1302芯片中讀取日數據,從地址0x87中
  47.         week = read_clock(0x8b);//從1302芯片中讀取星期數據,從地址0x8b中
  48.         //----------------------------------
  49.         lcm_w_test(0,0x80);
  50.         lcm_w_word("20");//顯示內容字符20
  51.         lcm_w_test(1,(yy/16)+0x30);//函數參數1,代表本行寫數據,YY/16+0X30得出年十位數字的顯示碼地址,送顯示       
  52.         lcm_w_test(1,yy%16+0x30);//函數
  53.         lcm_w_word("年");
  54.         //----------------------------------
  55.         lcm_w_test(1,(mo/16)+0x30);
  56.         lcm_w_test(1,mo%16+0x30);//與16取余數,得到月份的個位數,加0x30得到該數字的液晶內定顯示碼送顯示
  57.         lcm_w_word("月");//調用字符顯示函數,顯示文字 月
  58.         //----------------------------------
  59. /*
  60.         lcm_w_test(0,0x88);//第一個參數0,表示本行寫入LCM的是指令,指定顯示位置88H(第三行左端)
  61.         lcm_w_word("星期");//調用字符顯示函數,顯示文字 星期
  62.         lcm_w_test(1,mo%16+0x30);//與16取余數,得到月份的個位數,加0x30得到該數字的液晶內定顯示碼送顯示
  63. */
  64.         //----------------------------------
  65.         lcm_w_test(1,(dd/16)+0x30);
  66.         lcm_w_test(1,dd%16+0x30);//第一個1參數,表示本行寫數據,日數據與16取余得個位數,加0x30得到顯示碼
  67.         lcm_w_word("日");//顯示字符 日
  68.         //----------------------------------
  69.         if(read_clock(0x85) != hh){//如果程序中的小時與1302芯片中的不同,
  70.                 hh = read_clock(0x85);//刷新程序中的小時數據
  71.         }
  72.         lcm_w_test(0,0x91);//第一個參數0,表示本行寫入LCM的是指令,指定顯示位置88H(第三行左端)
  73.         lcm_w_test(1,(hh/16)+0x30);//顯示十位
  74.         lcm_w_test(1,hh%16+0x30);//顯示個位
  75.         lcm_w_word("時");
  76.         //----------------------------------
  77.         if(read_clock(0x83) != mm){//如果1302芯片中的分鐘數據與程序中的分鐘變量不相等               
  78.                 mm = read_clock(0x83);//刷新程序中的分鐘數據
  79.         }
  80.         lcm_w_test(1,(mm/16)+0x30);//向液晶寫數據,顯示分鐘的十位數
  81.         lcm_w_test(1,mm%16+0x30);//向液晶寫數據,顯示分鐘的個位數
  82.         lcm_w_word("分");
  83.         //----------------------------------
  84.         if(read_clock(0x81) != ss){//如果1302芯片中的分鐘數據與程序中的秒鐘變量不相等(0x81為讀秒數據0x80為寫秒數據)               
  85.                 ss = read_clock(0x81);//刷新程序中的秒鐘數據
  86.         }
  87.         lcm_w_test(1,(ss/16)+0x30);//向液晶寫數據,顯示分鐘的十位數
  88.         lcm_w_test(1,ss%16+0x30);//向液晶寫數據,顯示分鐘的個位數
  89.         lcm_w_word("秒");

  90. //////////////////////////////////////////////////////////////////////
  91.         //=========顯示鬧鐘的設置時間===================       
  92.        
  93.         hour=clk_ala[0];        //取出上一次的鬧鐘小時值
  94.         minute=clk_ala[1];         //取出上一次的鬧鐘分鐘值
  95.        
  96.         lcm_w_test(0,0x88);
  97.         lcm_w_word("鬧鐘---");
  98.         //----------------------------       
  99.         lcm_w_test(1,(hour/10)+0x30);//顯示小時十位
  100.         lcm_w_test(1,(hour%10)+0x30);//顯示小時個位
  101.         //----------------------------
  102.           lcm_w_word(":");
  103.         //----------------------------
  104.         lcm_w_test(1,(minute/10)+0x30);//顯示分鐘的十位
  105.         lcm_w_test(1,(minute%10)+0x30);//顯示分鐘的個位
  106.         //----------------------------
  107.         lcm_w_word("----");


  108. /////////////////////////////////////////////////////////////////////////

  109. }
  110. /*****************************************************************************/
  111. //被調數據加一或減一,并檢查數據范圍,寫入1302指定地址保存
  112. void ds_w(void)
  113. {
  114.         item0=time;
  115.         item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;//時間的調整
  116.         if(K3 == 0||key_add==1){//如果按動上調鍵
  117.          item++;//數加 1  
  118.         }
  119.         if(K4 == 0||key_minish==1){//如果按動下調鍵
  120.            item--;//數減 1
  121.         }
  122.         if(item>max)  item=mini;//查看數值是否在有效范圍之內   
  123.         if(item<mini) item=max;//如果數值小于最小值,則自動等于最大值           
  124.         write_clock(0x8e,0x00);//允許寫1302芯片操作
  125.         write_clock(address,(item/10)*16+item%10);//轉換成16進制寫入1302
  126.         write_clock(0x8e,0x80);//寫保護,禁止寫操作
  127. }

  128. /********************************************************************/
  129. //===============鬧鐘時間的加減設置======================
  130. void ds_w0(void)
  131. {
  132.   item0=time;

  133.   if(K3 == 0||key_add==1){//如果按動上調鍵
  134.         item0++;//數加 1
  135.         }
  136.   if(K4 == 0||key_minish==1){//如果按動下調鍵
  137.         item0--;//數減 1
  138.         }
  139.   if(item0>max) item0=mini;//查看數值是否在有效范圍之內
  140.   if(item0<mini)item0=max;//如果數值小于最小值,則自動等于最大值
  141.   time=item0;//調整后的時間重新賦值給time(time為hour或minute),這步很重要,沒有將無法更新鬧鐘數據
  142. }


  143. /**********************************************************************************************************/
  144. //調整時間子函數,設置鍵、數據范圍、上調加一,下調減一功能。
  145. void Set_time(unsigned char sel){ //根據選擇調整的相應項目加1并寫入DS1302,函數參數是按動設置鍵的次數
  146.   
  147.         write_com(0x30); write_com(0x06);

  148.         lcm_w_test(0,0x98);//第一參數0表示本行寫入指令,指定下面行的 調整 顯示起始位置為9AH
  149.         lcm_w_word(">>調整>>    <<<<");//調用字符顯示函數,顯示 調整字樣
  150.   
  151. /*        if(sel==8)  {lcm_w_word("星期");address=0x8a; max=7;mini=1;          
  152.      tiaozheng();
  153.      ds_w();
  154.      tiaozheng();
  155.           }
  156. */
  157. //================================================================
  158.         lcm_w_test(0,0x9c);
  159.         if(sel==7)  {lcm_w_word("鬧鐘分"); time=minute;max=59;mini=0;        
  160.          tiaozheng();//顯示調整前的內容
  161.      ds_w0();//設置鬧鐘
  162.          clk_ala[1]=time;//把更新后的分鐘數據重新保存
  163.      tiaozheng();//顯示調整后的內容
  164.           }//按動8次顯示 調整鬧鐘的分鐘部分
  165.         if(sel==6)  {lcm_w_word("鬧鐘時");time=hour; max=23;mini=0;
  166.      tiaozheng();
  167.      ds_w0();
  168.          clk_ala[0]=time;//把更新后的小時數據重新保存
  169.      tiaozheng();
  170.           }//按動7次顯示 調整鬧鐘的小時部分
  171. //================================================================

  172.         if(sel==5)  {lcm_w_word("秒鐘");address=0x80; max=59;mini=0;          
  173.         tiaozheng();  //調用日期、時間調整函數
  174.            ds_w();                  //被調數據加一或減一函數
  175.            tiaozheng();
  176.    
  177.         }        //秒6,按動6次顯示 調整秒鐘   
  178.                 //并指定秒鐘數據寫入1302芯片的寫入地址是0x80,秒鐘數據的最大值是59,最小值是0

  179.         if(sel==4)  {lcm_w_word("分鐘");address=0x82; max=59;mini=0;
  180.            tiaozheng();
  181.            ds_w();
  182.            tiaozheng();
  183.   
  184.         }        //分鐘5,按動5次顯示 調整分鐘
  185.                 //并指定分鐘數據寫入1302芯片的地址是0x82,分鐘數據的最大值是59,最小值是0

  186.         if(sel==3)  {lcm_w_word("小時");address=0x84; max=23;mini=0;
  187.   
  188.             tiaozheng();
  189.            ds_w();
  190.            tiaozheng();
  191.   
  192.         }        //小時4,按動4次顯示 調整小時
  193.                 //規定小時數據寫入1302芯片的位置是0x84,小時數據最大值23,最小值是0
  194.   

  195.         if(sel==2)  {lcm_w_word("日期");address=0x86;
  196.                 mo = read_clock(0x89);//讀月數據
  197.                 moontemp1=mo/16;
  198.                 moontemp2=mo%16;
  199.                 mo=moontemp1*10+moontemp2;//轉換成10進制月份數據

  200.       yy = read_clock(0x8d);//讀年數據
  201.       moontemp1=yy/16;
  202.                 moontemp2=yy%16;
  203.                 yy=moontemp1*10+moontemp2;//轉換成10進制年份數據

  204.       if(mo==2&&yy%4!=0){max=28;mini=1;}//平年2月28天
  205.                 if(mo==2&&yy%4==0){max=29;mini=1;}//閏年2月29天
  206.                 if(mo==1||mo==3||mo==5||mo==7||mo==8||mo==10||mo==12){max=31;mini=1;}//31天的月份
  207.                 if(mo==4||mo==6||mo==9||mo==11){max=30;mini=1;}//30天的月份
  208.                 tiaozheng();
  209.                 ds_w();
  210.                 tiaozheng(); //調用日期、時間調整函數

  211.   }        //日3,按動3次顯示 調整日期
  212.                 //規定日期數據寫入1302的位置地址是0x86,日期最大值31,最小值是1



  213.   if(sel==1)  {lcm_w_word("月份");address=0x88; max=12;mini=1;
  214.      tiaozheng();
  215.      ds_w();
  216.      tiaozheng();
  217.   
  218.    }        //月2,按動2次顯示 調整月份
  219.                 //規定月份寫入1302的位置地址是0x88,月份最大值12,最小值1


  220.   if(sel==0)  {lcm_w_word("年份");address=0x8c; max=99; mini=0;
  221.          tiaozheng();
  222.      ds_w();                //被調數據加一或減一函數
  223.      tiaozheng();        //調用日期、時間調整函數

  224.    }        //年1,按動1次顯示 調整年份,
  225.                 //規定年份寫入1302的地址是0x8c,年份的最大值99,最小值0

  226. }

  227. /*********************************************************************
  228. **********************************************************************
  229. **************             主函數                                  ****************
  230. **********************************************************************
  231. /********************************************************************/
  232. void main()
  233. {       
  234.         unsigned char e=0,f=0,tmp,i;                     

  235.     IE = 0x81;    //允許總中斷中斷,使能 INT0 外部中斷
  236.     TCON = 0x01;  //觸發方式為脈沖負邊沿觸發   
  237.     IRIN=1;       //IO口初始化
  238.     BEEP=1;
  239.         K1=1;K2=1;K3=1;K4=1;
  240.        
  241.        
  242.         Init_1302();                //時鐘芯片初始化
  243.         lcm_init();                        //液晶初始化
  244.         welcome0();  //調用歡迎信息1
  245.         DelayM(2000);//延時
  246.         //welcome();DelayM(1000);  //調用歡迎信息2                
  247.         lcm_clr();            //清屏
  248.         Clean_12864_GDRAM();         //清屏
  249.         while(1)
  250.         {


  251.                 if (w == 0)                  //正常走時
  252.                 {
  253.                         displaydate();         //顯示日期
  254.                         displaynl();         //顯示農歷
  255.                         displaytime();         //顯示時間
  256.                         read_temp();         //讀取溫度
  257.                         ds1820disp();          //顯示溫度
  258.                         displayxq();         //顯示星期
  259.                                
  260.                 //=================以下是鬧鐘的相關處理===================
  261.                        
  262.                         if(ala_flag==1){//鬧鐘標志位               
  263.                         set1616pic(6,1,0,2);} //顯示"鬧鐘圖標"               
  264.                     else{                                                                               
  265.                         set1616pic(6,1,0,3);}//關閉"鬧鐘圖標"顯示

  266.                         //----------------------------------------
  267.                         tmp=read_clock(0x85);//取出1302小時
  268.                         i = tmp/16;
  269.                         tmp = tmp&0x0f;
  270.                         tmp = tmp + i*10;
  271.                         if(clk_ala[0]==tmp)//與鬧鐘設定的小時值相同
  272.                                 {
  273.                                 tmp=read_clock(0x83);//取出1302分鐘
  274.                                 i = tmp/16;
  275.                                 tmp = tmp&0x0f;
  276.                                 tmp = tmp + i*10;
  277.                                         if(clk_ala[1]==tmp)//與鬧鐘設定的分鐘值相同
  278.                                           {
  279.                                                 if(ala_flag==1)//鬧鐘打開
  280.                                                   {
  281.                                                         alarmbeep();//鬧鈴聲響1分鐘后自動關閉,
  282.                                                         DelayM(200);//控制鬧鐘響的間隔即頻率
  283.                                                    }
  284.                                                 else BEEP=1;//關閉蜂鳴器
  285.                                            }
  286.                                          else BEEP=1;//關閉蜂鳴器
  287.                                 }
  288.                         //==============鬧鐘處理結束=======================
  289.                 }       
  290.                 else {} //========否則啟動調時=========================
  291.          
  292.      
  293. /*---------------按鍵及紅外遙控設置時間------------------------------*/               
  294.                 if (K1 == 0||key_manue==1)         
  295.                 {                 
  296.                        
  297.                         DelayM(8);                       //按鍵消抖
  298. /*當是調時狀態 本鍵用于調整下一項---------------------------------------------------*/               
  299.                         if((K1 == 0 && w == 1)||(key_manue==1&&w==1))      //
  300.                         {
  301.                                        
  302.                                 e++;
  303.                                 if (e >= 8 ) {e = 0;}
  304.                              while(! K1 );            //等待鍵松開
  305.                           key_manue=0;
  306.                                 Set_time(e); beep();          //調整                               
  307.                         }
  308. /*當是正常狀態時就進入調時狀態---------------------------------------------------*/               
  309.                         if((K1 == 0 && w == 0)||(key_manue==1&&w==0))  //
  310.                         {       
  311.                                 key_manue=0;
  312.                                 lcm_clr();            
  313.                                 Clean_12864_GDRAM();   //清屏
  314.                                 w=1;                       //進入調時
  315.                                 Set_time(e);beep();
  316.                         }
  317.                            while(K1 == 0);            //等待鍵松開
  318.                 }
  319. /*當在調時狀態時就退出調時---------------------------------------------------*/               
  320.                 if (K2 == 0||key_ok==1)                   //
  321.                 {        beep();
  322.                         DelayM(8);
  323.                         if((K2 == 0 && w == 1)||(key_ok==1&&w==1))
  324.                         {                       
  325.                                 w = 0;                       //退出調時
  326.                                 e = 0;                           //"下一項"計數器清0                                                               
  327.                         }
  328.                         if((K2 == 0 && w == 0)||(key_ok==1&&w==0))
  329.                         {
  330.                                 lcm_clr(); Clean_12864_GDRAM();
  331.                                 write_com(0x30); write_com(0x06);
  332.                                 welcome();       
  333.                                 while(K2 == 0); //按下K2是顯示歡迎信息
  334.                                 DelayM(500);key_ok=0;//紅外"OK"按鍵按下時顯示0.5秒鐘的歡迎界面2                                 
  335.                         }
  336.                         lcm_clr(); Clean_12864_GDRAM();
  337. ……………………

  338. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
萬年歷01ok.zip (841.17 KB, 下載次數: 289)




評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:312815 發表于 2018-6-28 23:26 | 顯示全部樓層
感謝分享;正需要這個
回復

使用道具 舉報

ID:260833 發表于 2018-6-29 20:07 | 顯示全部樓層
為什么我的老是顯示一會兒就不顯示
回復

使用道具 舉報

ID:380389 發表于 2018-7-29 10:20 來自觸屏版 | 顯示全部樓層
很好,很實用,收藏了
回復

使用道具 舉報

ID:367948 發表于 2018-7-31 09:22 | 顯示全部樓層
感謝樓主分享資料,正在學習
回復

使用道具 舉報

ID:380389 發表于 2018-7-31 14:38 來自觸屏版 | 顯示全部樓層
感謝分享,字體好看
回復

使用道具 舉報

ID:363686 發表于 2018-8-10 06:58 | 顯示全部樓層
學習貼,收藏了,謝謝分享&#128591;
回復

使用道具 舉報

ID:324871 發表于 2018-8-10 11:06 | 顯示全部樓層
對這個12864顯示大字體不太懂,想參考一下。
回復

使用道具 舉報

ID:372098 發表于 2019-3-25 12:00 | 顯示全部樓層
好東西,剛好想做一個
回復

使用道具 舉報

ID:404374 發表于 2019-4-4 08:54 | 顯示全部樓層
下載了,時間顯示不出來啊
回復

使用道具 舉報

ID:508635 發表于 2019-4-10 12:06 | 顯示全部樓層
怎么才能下載呢,金幣不足好難受啊
回復

使用道具 舉報

ID:404374 發表于 2019-5-9 20:12 | 顯示全部樓層
鬧鐘不能用是為什么那個大佬知道?
回復

使用道具 舉報

ID:404374 發表于 2019-5-9 20:13 | 顯示全部樓層
xsj1877578806 發表于 2018-7-29 10:20
很好,很實用,收藏了

鬧鐘可以用嗎
回復

使用道具 舉報

ID:550025 發表于 2019-5-29 11:38 | 顯示全部樓層
感謝分享;正需要這個
回復

使用道具 舉報

ID:543653 發表于 2019-5-29 20:28 | 顯示全部樓層
樓主剛學都做這么好啊,真是厲害!
回復

使用道具 舉報

ID:323741 發表于 2019-5-30 16:06 | 顯示全部樓層
大字體怎么顯示?求教
回復

使用道具 舉報

ID:551975 發表于 2019-6-2 13:44 | 顯示全部樓層
可以給封裝嗎
回復

使用道具 舉報

ID:544558 發表于 2019-6-2 21:03 | 顯示全部樓層
請問KEY的封裝是什么呀
回復

使用道具 舉報

ID:343165 發表于 2019-6-2 23:04 | 顯示全部樓層
這個按鍵是什么型號的?
回復

使用道具 舉報

ID:111376 發表于 2019-12-30 20:41 | 顯示全部樓層
測試效果很好,太好了,感謝分享
回復

使用道具 舉報

ID:620287 發表于 2019-12-31 07:49 來自觸屏版 | 顯示全部樓層
Mahdi_51 發表于 2019-4-10 12:06
怎么才能下載呢,金幣不足好難受啊

金幣可以通過你手上現有的單片機類的資料,在此網站共享出來就可以獲取
回復

使用道具 舉報

ID:641703 發表于 2020-6-3 16:03 | 顯示全部樓層

感謝分享;正需要這個
回復

使用道具 舉報

ID:768919 發表于 2020-6-3 22:18 | 顯示全部樓層
正需要這個
回復

使用道具 舉報

ID:171297 發表于 2021-11-28 18:54 | 顯示全部樓層
溫度顯示不動!
回復

使用道具 舉報

ID:242298 發表于 2022-2-12 06:28 | 顯示全部樓層
溫度顯示不動!
求解答@
回復

使用道具 舉報

ID:59830 發表于 2022-2-12 20:32 | 顯示全部樓層
看見顯示UI圖片,覺得挺好看呢. 看一下代碼.
回復

使用道具 舉報

ID:149988 發表于 2022-2-19 08:34 | 顯示全部樓層
您好,程序中有計算農歷部分嗎?謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区国产在线观看 | 亚洲久久一区 | 国产精品夜间视频香蕉 | 亚洲欧美国产视频 | 九九色综合 | 91免费小视频 | 久草网址 | 成年男女免费视频网站 | 午夜欧美| 国产婷婷精品 | 人和拘一级毛片c | 日韩成人免费在线视频 | 不卡一二三区 | av片免费 | 国产一级黄色网 | 性欧美hd| 亚洲一一在线 | 97精品超碰一区二区三区 | 91青青草视频 | 久久一二区 | 男女网站在线观看 | 欧美精品在线一区 | 涩涩导航 | 国产东北一级毛片 | 男女羞羞免费视频 | 特级黄一级播放 | 在线黄色影院 | 亚洲 成人 在线 | 欧美九九 | www亚洲精品 | 国产精品国产成人国产三级 | 久久一热| 亚洲精品大全 | 成人激情视频 | 成人一区二区三区在线 | 亚洲aⅴ| 99精品国产一区二区三区 | 久久av一区| 欧美一级欧美一级在线播放 | 国产午夜精品一区二区 | 伊人久久精品一区二区三区 |