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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10390|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)的DS1302時(shí)鐘proteus仿真及源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
DS1302時(shí)鐘仿真。如果要掉電時(shí)間還可以走的話,第一次仿真把設(shè)置的時(shí)間下載進(jìn)單片機(jī)時(shí)間會(huì)自動(dòng)存入DS1302內(nèi)部寄存器中,再把程序中的賦值時(shí)間語(yǔ)句刪掉,在下載單片機(jī)一次。DS1302內(nèi)部就會(huì)自行計(jì)時(shí)。


源程序:
  1.          #include<reg51.h>     //包含單片機(jī)寄存器的頭文件
  2. #include<intrins.h>   //包含_nop_()函數(shù)定義的頭文件
  3. unsigned char code digit[10]={"0123456789"};   //定義字符數(shù)組顯示數(shù)字
  4. sbit DATA=P1^1;   //位定義1302芯片的接口,數(shù)據(jù)輸出端定義在P1.1引腳
  5. sbit RST=P1^2;    //位定義1302芯片的接口,復(fù)位端口定義在P1.1引腳
  6. sbit SCLK=P1^0;   //位定義1302芯片的接口,時(shí)鐘輸出端口定義在P1.1引腳
  7. /*****************************************************
  8. 函數(shù)功能:延時(shí)若干微秒
  9. 入口參數(shù):n
  10. ***************************************************/
  11. void delaynus(unsigned char n)
  12. {
  13. unsigned char i;
  14. for(i=0;i<n;i++)
  15.       ;
  16. }
  17. /*****************************************************
  18. 函數(shù)功能:向1302寫一個(gè)字節(jié)數(shù)據(jù)
  19. 入口參數(shù):x
  20. ***************************************************/
  21. void Write1302(unsigned char dat)
  22. {
  23.   unsigned char i;
  24.   SCLK=0;            //拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備
  25.   delaynus(2);       //稍微等待,使硬件做好準(zhǔn)備
  26.   for(i=0;i<8;i++)      //連續(xù)寫8個(gè)二進(jìn)制位數(shù)據(jù)
  27.     {
  28.             DATA=dat&0x01;    //取出dat的第0位數(shù)據(jù)寫入1302
  29.                 delaynus(2);       //稍微等待,使硬件做好準(zhǔn)備
  30.                  SCLK=1;           //上升沿寫入數(shù)據(jù)
  31.                  delaynus(2);      //稍微等待,使硬件做好準(zhǔn)備
  32.                  SCLK=0;           //重新拉低SCLK,形成脈沖
  33.                  dat>>=1;          //將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫入下一個(gè)數(shù)據(jù)位
  34.           }
  35.         
  36. }
  37. /*****************************************************
  38. 函數(shù)功能:根據(jù)命令字,向1302寫一個(gè)字節(jié)數(shù)據(jù)
  39. 入口參數(shù):Cmd,儲(chǔ)存命令字;dat,儲(chǔ)存待寫的數(shù)據(jù)
  40. ***************************************************/
  41. void WriteSet1302(unsigned char Cmd,unsigned char dat)
  42. {
  43.    RST=0;           //禁止數(shù)據(jù)傳遞
  44.    SCLK=0;          //確保寫數(shù)居前SCLK被拉低
  45.         RST=1;           //啟動(dòng)數(shù)據(jù)傳輸
  46.         delaynus(2);     //稍微等待,使硬件做好準(zhǔn)備
  47.         Write1302(Cmd);  //寫入命令字
  48.         Write1302(dat);  //寫數(shù)據(jù)
  49.         SCLK=1;          //將時(shí)鐘電平置于已知狀態(tài)
  50.         RST=0;           //禁止數(shù)據(jù)傳遞
  51. }
  52. /*****************************************************
  53. 函數(shù)功能:從1302讀一個(gè)字節(jié)數(shù)據(jù)
  54. 入口參數(shù):x
  55. ***************************************************/
  56. unsigned char Read1302(void)
  57. {
  58.    unsigned char i,dat;
  59.         delaynus(2);       //稍微等待,使硬件做好準(zhǔn)備
  60.         for(i=0;i<8;i++)   //連續(xù)讀8個(gè)二進(jìn)制位數(shù)據(jù)
  61.          {
  62.            dat>>=1;       //將dat的各數(shù)據(jù)位右移1位,因?yàn)橄茸x出的是字節(jié)的最低位
  63.                 if(DATA==1)    //如果讀出的數(shù)據(jù)是1
  64.                  dat|=0x80;    //將1取出,寫在dat的最高位
  65.                  SCLK=1;       //將SCLK置于高電平,為下降沿讀出
  66.                  delaynus(2);  //稍微等待
  67.                  SCLK=0;       //拉低SCLK,形成脈沖下降沿
  68.                  delaynus(2);  //稍微等待
  69.           }         
  70.   return dat;        //將讀出的數(shù)據(jù)返回
  71. }  
  72. /*****************************************************
  73. 函數(shù)功能:根據(jù)命令字,從1302讀取一個(gè)字節(jié)數(shù)據(jù)
  74. 入口參數(shù):Cmd
  75. ***************************************************/
  76. unsigned char  ReadSet1302(unsigned char Cmd)
  77. {
  78.   unsigned char dat;
  79.   RST=0;                 //拉低RST
  80.   SCLK=0;                //確保寫數(shù)居前SCLK被拉低
  81.   RST=1;                 //啟動(dòng)數(shù)據(jù)傳輸
  82.   Write1302(Cmd);       //寫入命令字
  83.   dat=Read1302();       //讀出數(shù)據(jù)
  84.   SCLK=1;              //將時(shí)鐘電平置于已知狀態(tài)
  85.   RST=0;               //禁止數(shù)據(jù)傳遞
  86.   return dat;          //將讀出的數(shù)據(jù)返回
  87. }

  88. //函數(shù)功能: 1302進(jìn)行初始化設(shè)置

  89. void Init_DS1302(void)
  90. {
  91.     WriteSet1302(0x8E,0x00);                 //根據(jù)寫狀態(tài)寄存器命令字,寫入不保護(hù)指令
  92. /*           WriteSet1302(0x80,((0/10)<<4|(0%10)));   //根據(jù)寫秒寄存器命令字,寫入秒的初始值
  93.         WriteSet1302(0x82,((4/10)<<4|(4%10)));   //根據(jù)寫分寄存器命令字,寫入分的初始值
  94.         WriteSet1302(0x84,((12/10)<<4|(12%10))); //根據(jù)寫小時(shí)寄存器命令字,寫入小時(shí)的初始值
  95.         WriteSet1302(0x86,((9/10)<<4|(9%10))); //根據(jù)寫日寄存器命令字,寫入日的初始值
  96.         WriteSet1302(0x88,((10/10)<<4|(10%10))); //根據(jù)寫月寄存器命令字,寫入月的初始值
  97.         WriteSet1302(0x8c,((13/10)<<4|(13%10)));   //根據(jù)年存器命令字,寫入年的初始值
  98.   */}



  99. /*******************************************************************************
  100. 以下是對(duì)液晶模塊的操作程序
  101. *******************************************************************************/
  102. sbit RS=P3^5;           //寄存器選擇位
  103. sbit RW=P3^6;           //讀寫選擇位
  104. sbit E=P3^4;            //使能信號(hào)位
  105. sbit BF=P0^7;           //忙碌標(biāo)志位,,將BF位定義為P0.7引腳
  106. /*****************************************************
  107. 函數(shù)功能:延時(shí)1ms
  108. (3j+2)*i=(3×33+2)×10=1010(微秒),可以認(rèn)為是1毫秒
  109. ***************************************************/
  110. void delay1ms()
  111. {
  112.    unsigned char i,j;        
  113.          for(i=0;i<10;i++)
  114.           for(j=0;j<33;j++)
  115.            ;                 
  116. }
  117. /*****************************************************
  118. 函數(shù)功能:延時(shí)若干毫秒
  119. 入口參數(shù):n
  120. ***************************************************/
  121. void delaynms(unsigned char n)
  122. {
  123.    unsigned char i;
  124.         for(i=0;i<n;i++)
  125.            delay1ms();
  126. }
  127. /*****************************************************
  128. 函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)
  129. 返回值:result。result=1,忙碌;result=0,不忙
  130. ***************************************************/
  131. bit BusyTest(void)
  132.   {
  133.     bit result;
  134.         RS=0;       //根據(jù)規(guī)定,RS為低電平,RW為高電平時(shí),可以讀狀態(tài)
  135.     RW=1;
  136.     E=1;        //E=1,才允許讀寫
  137.     _nop_();   //空操作
  138.     _nop_();
  139.     _nop_();
  140.     _nop_();   //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間        
  141.     result=BF;  //將忙碌標(biāo)志電平賦給result
  142.    E=0;         //將E恢復(fù)低電平
  143.    return result;
  144.   }
  145. /*****************************************************
  146. 函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊
  147. 入口參數(shù):dictate
  148. ***************************************************/
  149. void WriteInstruction (unsigned char dictate)
  150. {   
  151.     while(BusyTest()==1);   //如果忙就等待
  152.          RS=0;                  //根據(jù)規(guī)定,RS和R/W同時(shí)為低電平時(shí),可以寫入指令
  153.          RW=0;   
  154.          E=0;                   //E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖,
  155.                            // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"
  156.          _nop_();
  157.          _nop_();               //空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
  158.          P0=dictate;            //將數(shù)據(jù)送入P0口,即寫入指令或地址
  159.          _nop_();
  160.          _nop_();
  161.          _nop_();
  162.          _nop_();               //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
  163.          E=1;                   //E置高電平
  164.          _nop_();
  165.          _nop_();
  166.          _nop_();
  167.          _nop_();               //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
  168.           E=0;                  //當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開(kāi)始執(zhí)行命令
  169. }
  170. /*****************************************************
  171. 函數(shù)功能:指定字符顯示的實(shí)際地址
  172. 入口參數(shù):x
  173. ***************************************************/
  174. void WriteAddress(unsigned char x)
  175. {
  176.      WriteInstruction(x|0x80); //顯示位置的確定方法規(guī)定為"80H+地址碼x"
  177. }
  178. /*****************************************************
  179. 函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入液晶模塊
  180. 入口參數(shù):y(為字符常量)
  181. ***************************************************/
  182. void WriteData(unsigned char y)
  183. {
  184.     while(BusyTest()==1);  
  185.           RS=1;           //RS為高電平,RW為低電平時(shí),可以寫入數(shù)據(jù)
  186.           RW=0;
  187.           E=0;            //E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖,
  188.                      // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"
  189.           P0=y;           //將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊
  190.           _nop_();
  191.           _nop_();
  192.            _nop_();
  193.      _nop_();       //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
  194.           E=1;           //E置高電平
  195.           _nop_();
  196.           _nop_();
  197.           _nop_();
  198.          _nop_();        //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
  199.          E=0;            //當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開(kāi)始執(zhí)行命令
  200. }
  201. /*****************************************************
  202. 函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化設(shè)置
  203. ***************************************************/
  204. void LcdInitiate(void)
  205. {
  206.     delaynms(15);               //延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長(zhǎng)的反應(yīng)時(shí)間
  207.     WriteInstruction(0x38);     //顯示模式設(shè)置:16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口
  208.         delaynms(5);                //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間
  209.     WriteInstruction(0x38);
  210.         delaynms(5);               //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間
  211.         WriteInstruction(0x38);     //連續(xù)三次,確保初始化成功
  212.         delaynms(5);               //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間
  213.         WriteInstruction(0x0c);     //顯示模式設(shè)置:顯示開(kāi),無(wú)光標(biāo),光標(biāo)不閃爍
  214.         delaynms(5);               //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間
  215.         WriteInstruction(0x06);     //顯示模式設(shè)置:光標(biāo)右移,字符不移
  216.         delaynms(5);                //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間
  217.         WriteInstruction(0x01);     //清屏幕指令,將以前的顯示內(nèi)容清除
  218.         delaynms(5);             //延時(shí)5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間

  219. }
  220. /**************************************************************
  221. 以下是1302數(shù)據(jù)的顯示程序
  222. **************************************************************/
  223. /*****************************************************
  224. 函數(shù)功能:顯示秒
  225. 入口參數(shù):x
  226. ***************************************************/
  227. void DisplaySecond(unsigned char x)
  228. {
  229. unsigned char i,j;     //j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位
  230.         i=x/10;//取十位
  231.         j=x%10;//取個(gè)位     
  232.         WriteAddress(0x49);    //寫顯示地址,將在第2行第7列開(kāi)始顯示
  233.         WriteData(digit[i]);    //將百位數(shù)字的字符常量寫入LCD
  234.         WriteData(digit[j]);    //將十位數(shù)字的字符常量寫入LCD
  235.         delaynms(50);         //延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間   
  236. }

  237. /*****************************************************
  238. 函數(shù)功能:顯示分鐘
  239. 入口參數(shù):x
  240. ***************************************************/
  241. void DisplayMinute(unsigned char x)
  242. {
  243. unsigned char i,j;     //j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位
  244.         i=x/10;//取十位
  245.         j=x%10;//取個(gè)位     
  246.         WriteAddress(0x46);    //寫顯示地址,將在第2行第7列開(kāi)始顯示
  247.         WriteData(digit[i]);    //將百位數(shù)字的字符常量寫入LCD
  248.         WriteData(digit[j]);    //將十位數(shù)字的字符常量寫入LCD
  249.         delaynms(50);         //延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間   
  250. }
  251. /*****************************************************
  252. 函數(shù)功能:顯示小時(shí)
  253. 入口參數(shù):x
  254. ***************************************************/
  255. void DisplayHour(unsigned char x)
  256. {
  257. unsigned char i,j;     //j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位
  258.         i=x/10;//取十位
  259.         j=x%10;//取個(gè)位     
  260.         WriteAddress(0x43);    //寫顯示地址,將在第2行第7列開(kāi)始顯示
  261.         WriteData(digit[i]);    //將百位數(shù)字的字符常量寫入LCD
  262.         WriteData(digit[j]);    //將十位數(shù)字的字符常量寫入LCD
  263.         delaynms(50);         //延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間   
  264. }
  265. /*****************************************************
  266. 函數(shù)功能:顯示日
  267. 入口參數(shù):x
  268. ***************************************************/
  269. void DisplayDay(unsigned char x)
  270. {
  271. unsigned char i,j;     //j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位
  272.         i=x/10;//取十位
  273.         j=x%10;//取個(gè)位     
  274.         WriteAddress(0x0c);    //寫顯示地址,將在第2行第7列開(kāi)始顯示
  275.         WriteData(digit[i]);    //將百位數(shù)字的字符常量寫入LCD
  276.         WriteData(digit[j]);    //將十位數(shù)字的字符常量寫入LCD
  277.         delaynms(50);         //延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間   
  278. }
  279. /*****************************************************
  280. 函數(shù)功能:顯示月
  281. 入口參數(shù):x
  282. ***************************************************/
  283. void DisplayMonth(unsigned char x)
  284. {
  285. unsigned char i,j;     //j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位
  286.         i=x/10;//取十位
  287.         j=x%10;//取個(gè)位     
  288.         WriteAddress(0x09);    //寫顯示地址,將在第2行第7列開(kāi)始顯示
  289.         WriteData(digit[i]);    //將百位數(shù)字的字符常量寫入LCD
  290.         WriteData(digit[j]);    //將十位數(shù)字的字符常量寫入LCD
  291.         delaynms(50);         //延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間   
  292. }
  293. /*****************************************************
  294. 函數(shù)功能:顯示年
  295. 入口參數(shù):x
  296. ***************************************************/
  297. void DisplayYear(unsigned char x)
  298. {
  299. unsigned char i,j;
  300.         i=x/10;//取十位
  301.         j=x%10;//取個(gè)位     
  302.         WriteAddress(0x06);    //寫顯示地址,將在第2行第7列開(kāi)始顯示
  303.         WriteData(digit[i]);    //將百位數(shù)字的字符常量寫入LCD
  304.         WriteData(digit[j]);    //將十位數(shù)字的字符常量寫入LCD
  305.         delaynms(50);         //延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間   
  306. }

  307. /*****************************************************
  308. 函數(shù)功能:主函數(shù)
  309. ***************************************************/
  310. void main(void)
  311. {
  312.   unsigned char second,minute,hour,day,month,year;      //分別儲(chǔ)存苗、分、小時(shí),日,月,年
  313.   unsigned char ReadValue;   //儲(chǔ)存從1302讀取的數(shù)據(jù)
  314.   LcdInitiate();             //將液晶初始化
  315.   WriteAddress(0x01);  //寫Date的顯示地址,將在第1行第2列開(kāi)始顯示
  316.   WriteData('D');      //將字符常量寫入LCD
  317.   WriteData('a');      //將字符常量寫入LCD
  318.   WriteData('t');      //將字符常量寫入LCD
  319.   WriteData('e');      //將字符常量寫入LCD
  320.   WriteData(':');      //將字符常量寫入LCD
  321.   WriteAddress(0x08);  //寫年月分隔符的顯示地址, 顯示在第1行第9列
  322.   WriteData('-');      //將字符常量寫入LCD
  323.   WriteAddress(0x0b);  //寫月日分隔符的顯示地址, 顯示在第1行第12列
  324.   WriteData('-');      //將字符常量寫入LCD
  325.   WriteAddress(0x45);  //寫小時(shí)與分鐘分隔符的顯示地址, 顯示在第2行第6列
  326.   WriteData(':');      //將字符常量寫入LCD
  327.   WriteAddress(0x48);  //寫分鐘與秒分隔符的顯示地址, 顯示在第2行第9列
  328.   WriteData(':');      //將字符常量寫入LCD
  329.   Init_DS1302();       //將1302初始化        
  330.   while(1)
  331.     {
  332.           ReadValue = ReadSet1302(0x81);   //從秒寄存器讀數(shù)據(jù)
  333.      second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化
  334.           DisplaySecond(second);          //顯示秒
  335.           ReadValue = ReadSet1302(0x83);  //從分寄存器讀
  336.      minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //將讀出數(shù)據(jù)轉(zhuǎn)化
  337.           DisplayMinute(minute);               //顯示分
  338.      ReadValue = ReadSet1302(0x85);  //從分寄存器讀
  339.      hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //將讀出數(shù)據(jù)轉(zhuǎn)化
  340.           DisplayHour(hour);                     //顯示小時(shí)
  341.      ReadValue = ReadSet1302(0x87);  //從分寄存器讀
  342.      day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //將讀出數(shù)據(jù)轉(zhuǎn)化
  343.           DisplayDay(day);                //顯示日
  344.           ReadValue = ReadSet1302(0x89);  //從分寄存器讀
  345.      month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //將讀出數(shù)據(jù)轉(zhuǎn)化
  346.           DisplayMonth(month);            //顯示月
  347.           ReadValue = ReadSet1302(0x8d);  //從分寄存器讀
  348.      year=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //將讀出數(shù)據(jù)轉(zhuǎn)化
  349.           DisplayYear(year);              //顯示年
  350.          }
  351. }
復(fù)制代碼

全部資料下載: DS1302時(shí)鐘.rar (63.5 KB, 下載次數(shù): 202)

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

使用道具 舉報(bào)

沙發(fā)
ID:192316 發(fā)表于 2017-5-6 11:11 | 只看該作者
看看什么樣子的
回復(fù)

使用道具 舉報(bào)

板凳
ID:264775 發(fā)表于 2017-12-21 14:05 | 只看該作者
你買了嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:511557 發(fā)表于 2019-4-25 11:07 | 只看該作者
下載看看
回復(fù)

使用道具 舉報(bào)

5#
ID:1014616 發(fā)表于 2022-4-6 15:22 | 只看該作者
太棒了太棒了,感謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久中文字 | 国产精品中文 | 欧美国产精品一区二区三区 | 精精国产xxxx视频在线 | 日韩一区二区三区视频在线播放 | 国产精品美女久久久久aⅴ国产馆 | 在线视频中文字幕 | 国产免费xxx | 欧美日韩亚洲在线 | 欧美国产精品一区二区 | 国产中文字幕在线观看 | 日韩一区二区三区在线播放 | 亚洲永久免费 | 国产97视频在线观看 | 羞羞视频在线网站观看 | 成人在线日韩 | 国产精品美女久久久久久不卡 | 欧美中文字幕在线观看 | 在线观看视频h | 亚洲精品视频在线 | 色视频在线观看 | 国产成人高清视频 | 不卡一区二区三区四区 | 国产精品一区二区三区四区 | 欧美 日韩 在线播放 | 亚洲一区成人 | 日韩成人精品在线观看 | 久在线视频播放免费视频 | 一区二区三区国产 | 男人天堂手机在线视频 | 国产日产欧产精品精品推荐蛮挑 | 亚洲精品视频在线看 | 日韩欧美中文 | 天天操 夜夜操 | 毛片在线看片 | 成人精品免费视频 | 亚洲欧美日韩精品久久亚洲区 | 久久一区二区三区电影 | 久久久精品一区二区三区 | 蜜桃传媒av | 国产偷录叫床高潮录音 |