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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12025|回復: 10
打印 上一主題 下一主題
收起左側

帶詳細注釋的LCD1602屏幕單片機電子時鐘程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發表于 2016-1-16 05:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //按K1按鍵進入設定狀態
  2. //按K2,依次進入鬧鐘功能是否啟用,鬧鐘時,分秒,年,月,日及時間時,分,秒的設置,直到退出設置狀態
  3. //按K3,調整是否起用鬧鐘和調節鬧鐘時,分,秒,年,月,日,時間的時,分,秒的數字
  4. //LCD第二排中間顯示小喇叭,表示啟用鬧鐘功能,無則禁止鬧鐘功能(可在調整狀態進行設置)
  5. //正常狀態,LCD上排最前面顯示自定義字符,LCD下排最前面閃動"RICHMCU"
  6. //設置狀態,LCD上排最前面顯示"P",下排最前面在設置鬧鐘時間時顯示"alarm:",其它狀態顯示"time"
  7. //年代變化2000--2099,星期自動轉換
  8. //程序中有自定義字符寫入
  9. #include <reg51.h>
  10. #include <intrins.h>
  11. unsigned char code dis_week[]={"SUN,MON,TUE,WED,THU,FRI,SAT"};
  12. unsigned char code para_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5}; //星期月參變數
  13. unsigned char data dis_buf1[16];  //lcd上排顯示緩沖區
  14. unsigned char data dis_buf2[16];  //lcd下排顯示緩沖區  
  15. unsigned char data year,month,date,week;//年、月、日、星期
  16. unsigned char data armhour,armmin,armsec;//鬧鐘時、分、秒
  17. unsigned char data hour,min,sec,sec100; //時、分、秒、百分之一秒
  18. unsigned char data flag,vkey,skey;//設置狀態計數標志、按鍵先前值、按鍵當前值
  19. bit alarm; //標識是否啟用鬧鐘,1--啟用,0--關閉
  20. sbit  rs = P3^7;    //LCD數據/命令選擇端(H/L)
  21. sbit  rw = P3^6;    //LCD讀/寫選擇端(H/L)
  22. sbit  ep = P3^5;    //LCD使能控制
  23. sbit PRE = P1^0;    //調整鍵(AN3)
  24. sbit SET = P1^1;    //調整鍵(AN4)
  25. sbit SPK = P3^3;   
  26. void delayms(unsigned char ms); //延時程序
  27. bit  lcd_busy();    //測試LCD忙碌狀態程序
  28. void lcd_wcmd(char cmd);  //寫入指令到LCD程序
  29. void lcd_wdat(char dat);  //寫入數據到LCD程序
  30. void lcd_pos(char pos);   //LCD數據指針位置程序
  31. void lcd_init();    //LCD初始化設定程序
  32. void pro_timedate();   //時間日期處理程序
  33. void pro_display();    //顯示處理程序
  34. void pro_key();     //按鍵處理程序
  35. void time_alarm();    //定時報警功能(鬧鐘)
  36. unsigned char scan_key();  //按鍵掃描程序
  37. unsigned char week_proc();  //星期自動計算與顯示函數
  38. bit leap_year();    //判斷是否為閏年
  39. void lcd_sef_chr();    //LCD自定義字符程序
  40. void update_disbuf(unsigned char t1,unsigned char t2[],unsigned char dis_h,unsigned char dis_m,unsigned char dis_s);   
  41.         //更新顯示緩沖區函數

  42. // 延時程序
  43. void delay(unsigned char ms)
  44. { while(ms--)
  45. { unsigned char i;
  46.   for(i = 0; i< 250; i++)   
  47.   {
  48.    _nop_();      //執行一條_nop_()指令為一個機器周期
  49.    _nop_();
  50.    _nop_();
  51.    _nop_();
  52.   }
  53. }
  54. }  

  55. //測試LCD忙碌狀態
  56. bit lcd_busy()
  57. {
  58. bit result;
  59. rs = 0;
  60. rw = 1;
  61. ep = 1;
  62. _nop_();
  63. _nop_();
  64. _nop_();
  65. _nop_();
  66. result =(bit)(P0&0x80); //LCD的D0--D7中,D7=1為忙碌,D7=0為空閑
  67. ep = 0;
  68. return result;
  69. }
  70. //寫入指令到LCD
  71. void lcd_wcmd(char cmd)
  72. {      
  73. while(lcd_busy()); //當lcd_busy為1時,再次檢測LCD忙碌狀態,lcd-busy為0時,開始寫指令
  74. rs = 0;
  75. rw = 0;
  76. ep = 0;
  77. _nop_();
  78. _nop_();
  79. P0 = cmd;
  80. _nop_();
  81. _nop_();
  82. _nop_();
  83. _nop_();
  84. ep = 1;
  85. _nop_();
  86. _nop_();
  87. _nop_();
  88. _nop_();
  89. ep = 0;  
  90. }
  91. //寫入數據到LCD
  92. void lcd_wdat(char dat)
  93. {      
  94. while(lcd_busy()); //當lcd_busy為1時,再次檢測LCD忙碌狀態,lcd-busy為0時,開始寫數據
  95. rs = 1;
  96. rw = 0;
  97. ep = 0;
  98. P0 = dat;
  99. _nop_();
  100. _nop_();
  101. _nop_();
  102. _nop_();
  103. ep = 1;
  104. _nop_();
  105. _nop_();
  106. _nop_();
  107. _nop_();
  108. ep = 0;
  109. }
  110. //LCD數據指針位置程序
  111. void lcd_pos(char pos)
  112. {      
  113. lcd_wcmd(pos|0x80); //數據指針=80+地址碼(00H~27H,40H~67H)
  114. }

  115. //設定二個自定義字符,(注意:LCD1602中自定義字符的地址為0x00--0x07,即可定義8個字符)
  116. //這里我們設定把一個自定義字符放在0x00位置(000),另一個放在0x01位子(001)
  117. void lcd_sef_chr()
  118. { //第一個自定義字符
  119. lcd_wcmd(0x40); //"01 000 000"  第1行地址 (D7D6為地址設定命令形式D5D4D3為字符存放位置(0--7),D2D1D0為字符行地址(0--7))
  120.    lcd_wdat(0x1f); //"XXX 11111" 第1行數據(D7D6D5為XXX,表示為任意數(一般用000),D4D3D2D1D0為字符行數據(1-點亮,0-熄滅)
  121. lcd_wcmd(0x41); //"01 000 001"  第2行地址
  122.    lcd_wdat(0x11); //"XXX 10001" 第2行數據
  123. lcd_wcmd(0x42); //"01 000 010"  第3行地址
  124.    lcd_wdat(0x15); //"XXX 10101" 第3行數據
  125. lcd_wcmd(0x43); //"01 000 011"  第4行地址
  126.    lcd_wdat(0x11); //"XXX 10001" 第4行數據
  127. lcd_wcmd(0x44); //"01 000 100"  第5行地址
  128.    lcd_wdat(0x1f); //"XXX 11111" 第5行數據
  129. lcd_wcmd(0x45); //"01 000 101"  第6行地址
  130.    lcd_wdat(0x0a); //"XXX 01010" 第6行數據
  131. lcd_wcmd(0x46); //"01 000 110"  第7行地址
  132.    lcd_wdat(0x1f); //"XXX 11111" 第7行數據
  133. lcd_wcmd(0x47); //"01 000 111"  第8行地址
  134.    lcd_wdat(0x00); //"XXX 00000" 第8行數據
  135. //第二個自定義字符
  136. lcd_wcmd(0x48); //"01 001 000"  第1行地址
  137.    lcd_wdat(0x01); //"XXX 00001" 第1行數據
  138. lcd_wcmd(0x49); //"01 001 001"  第2行地址
  139.    lcd_wdat(0x1b); //"XXX 11011" 第2行數據
  140. lcd_wcmd(0x4a); //"01 001 010"  第3行地址
  141.    lcd_wdat(0x1d); //"XXX 11101" 第3行數據
  142. lcd_wcmd(0x4b); //"01 001 011"  第4行地址
  143.    lcd_wdat(0x19); //"XXX 11001" 第4行數據
  144. lcd_wcmd(0x4c); //"01 001 100"  第5行地址
  145.    lcd_wdat(0x1d); //"XXX 11101" 第5行數據
  146. lcd_wcmd(0x4d); //"01 001 101"  第6行地址
  147.    lcd_wdat(0x1b); //"XXX 11011" 第6行數據
  148. lcd_wcmd(0x4e); //"01 001 110"  第7行地址
  149.    lcd_wdat(0x01); //"XXX 00001" 第7行數據
  150. lcd_wcmd(0x4f); //"01 001 111"  第8行地址
  151.    lcd_wdat(0x00); //"XXX 00000" 第8行數據


  152. }
  153. //LCD初始化設定
  154. void lcd_init()
  155. {      
  156. lcd_wcmd(0x38);  //設置LCD為16X2顯示,5X7點陣,八位數據借口
  157. delay(1);
  158. lcd_wcmd(0x0c);  //LCD開顯示及光標設置(光標不閃爍,不顯示"-")
  159. delay(1);
  160. lcd_wcmd(0x06);  //LCD顯示光標移動設置(光標地址指針加1,整屏顯示不移動)
  161. delay(1);
  162. lcd_wcmd(0x01);  //清除LCD的顯示內容
  163. delay(1);
  164. }
  165. //閏年的計算
  166. bit leap_year()
  167. {
  168. bit leap;
  169. if((year%4==0&&year%100!=0)||year%400==0)//閏年的條件
  170.   leap=1;
  171. else
  172.   leap=0;
  173. return leap;
  174. }
  175. //星期的自動運算和處理
  176. unsigned char week_proc()
  177. { unsigned char num_leap;
  178. unsigned char c;
  179. num_leap=year/4-year/100+year/400;//自00年起到year所經歷的閏年數
  180. if( leap_year()&& month<=2 )   //既是閏年且是1月和2月
  181.   c=5;
  182. else
  183.   c=6;
  184. week=(year+para_month[month]+date+num_leap+c)%7;//計算對應的星期
  185. return week;
  186. }
  187. //更新顯示緩沖區
  188. void update_disbuf(unsigned char t1,unsigned char t2[],unsigned char dis_h,unsigned char dis_m,unsigned char dis_s)
  189. { dis_buf1[0]=t1;    //
  190. dis_buf1[1]=0x20;    //空格
  191. dis_buf1[2]=50;    //'2'
  192. dis_buf1[3]=48;             //'0'
  193. dis_buf1[4]=year/10+48;
  194. dis_buf1[5]=year%10+48;
  195. dis_buf1[6]=0x2d;
  196. dis_buf1[7]=month/10+48;
  197. dis_buf1[8]=month%10+48;
  198. dis_buf1[9]=0x2d;    //'-'
  199. dis_buf1[10]=date/10+48;
  200. dis_buf1[11]=date%10+48;
  201. dis_buf1[12]=0x20;
  202. dis_buf1[13]=dis_week[4*week];
  203. dis_buf1[14]=dis_week[4*week+1];
  204. dis_buf1[15]=dis_week[4*week+2];
  205. dis_buf2[0]=t2[0];
  206. dis_buf2[1]=t2[1];
  207. dis_buf2[2]=t2[2];
  208. dis_buf2[3]=t2[3];
  209. dis_buf2[4]=t2[4];
  210. dis_buf2[5]=t2[5];
  211. dis_buf2[6]=t2[6];   //空格
  212.   if (alarm)
  213.   dis_buf2[7]=0x01;  //alarm=1,顯示鬧鐘啟用標致(第二個自定義字符)
  214. else
  215.   dis_buf2[7]=0x20;  //alarm=0,不顯示鬧鐘啟用標致
  216. dis_buf2[8]=dis_h/10+48;
  217. dis_buf2[9]=dis_h%10+48;
  218. dis_buf2[10]=0x3a;   //':'
  219. dis_buf2[11]=dis_m/10+48;
  220. dis_buf2[12]=dis_m%10+48;
  221. dis_buf2[13]=0x3a;
  222. dis_buf2[14]=dis_s/10+48;
  223. dis_buf2[15]=dis_s%10+48;
  224. }
  225. //時間和日期處理程序
  226. void pro_timedate()
  227. {
  228. sec++;
  229. if(sec > 59)
  230.   {sec = 0;
  231.    min++;
  232.    if(min>59)
  233.    {min=0;
  234.     hour++;
  235.     if(hour>23)
  236.     {hour=0;
  237.      date++;
  238.      if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
  239.       if (date>31) {date=1;month++;}     //大月31天
  240.      if (month==4||month==6||month==9||month==11)  
  241.        if (date>30) {date=1;month++;}     //小月30天
  242.      if (month==2)   
  243.       {if( leap_year())        //閏年的條件
  244.       {if (date>29) {date=1;month++;}}   //閏年2月為29天
  245.       else
  246.       {if (date>28) {date=1;month++;}}   //平年2月為28天
  247.       }   
  248.      if (month>12) {month=1;year++;}
  249.      if (year>99) year=0;
  250.     }
  251.    }
  252.   }
  253. week_proc();
  254. if (sec==armsec && min==armmin && hour==armhour)   
  255.   {if (alarm)
  256.    TR1=1;     //鬧鐘啟用時,報警時間到,啟動Timer1
  257.   }
  258. }
  259. //顯示處理程序
  260. void pro_display()
  261. { unsigned char i;
  262. lcd_pos(0x00);
  263. for (i=0;i<=15;i++)
  264.   {lcd_wdat(dis_buf1[i]);}
  265. lcd_pos(0x40);
  266. for (i=0;i<=15;i++)
  267.   {lcd_wdat(dis_buf2[i]);}
  268. }
  269. //Timer0中斷處理程序,秒的產生
  270. void timer0() interrupt 1
  271. {
  272. TH0=0xD8;   
  273. TL0=0xF0;  
  274. sec100++;
  275. if(sec100 >= 100) //1秒時間 (100*10ms=1000ms=1s)
  276.   {sec100 = 0;
  277.    pro_timedate();//調用時間和日期處理程序
  278.   }
  279. if (sec&0x01)          //"RICHMCU"閃一秒,停一秒
  280.   update_disbuf(0x00,"       ",hour,min,sec);    //0x00表示顯示00位置的自定義字符  
  281. else
  282.   update_disbuf(0x00,"RICHMCU",hour,min,sec);
  283. pro_display();  //調用顯示處理函數

  284. }

  285. //按鍵掃描程序
  286. unsigned char  scan_key()
  287. {
  288. skey=0x00;         //給變量vkey置初值
  289. skey|=PRE;         //讀取PRE鍵的狀態
  290. skey=skey<<1;        //將PRE鍵的狀態存于skey的B1位
  291. skey|=SET;         //讀取SET鍵的狀態,并存于skey的B0位
  292. return skey;        //返回skey的鍵值(即PRE,SET的狀態)
  293. }
  294. //外部中斷INT0中斷處理程序
  295. void int0() interrupt 0
  296. {  
  297.   TR0=0;         //禁止Timer0
  298.   IE=0;         //禁止中斷
  299.   lcd_wcmd(0x0e);       //顯示光標"_",整個光標不閃爍
  300.   alarm=1;
  301.   update_disbuf(0x50,"alarm:",armhour,armmin,armsec); //更新顯示數據,0x50表示要顯示"P"
  302.   pro_display();       //調用顯示處理程序
  303.   lcd_pos(0x47);          //使光標位于第一個調整項下      
  304.   flag=0;         
  305.   vkey=0x03;
  306.   while(flag^0x0a)
  307.    {skey = scan_key();     //掃描按鍵狀態
  308.    if (skey^vkey)      //若skey與vkey相同,跳出循環,相異執行循環體
  309.     { delay(10);     //去按鍵抖動
  310.      skey = scan_key();   //轉回掃描按鍵狀態   
  311.      if (skey^vkey)    //若skey與vkey相同,跳出循環,相異執行循環體  
  312.        { vkey=skey;   //將skey的值付給vkey
  313.        if (skey==0x01)  //PRE鍵按下
  314.         {  flag++; //調整標志位加1
  315.           switch (flag) //將光標置于相應調整位置
  316.           {
  317.               
  318.            case 1: lcd_pos(0x49);break;  //光標置小時報警設置位置      
  319.            case 2: lcd_pos(0x4c);break;  //光標置分鐘報警設置位置     
  320.            case 3: lcd_pos(0x4f);break;  //光標置秒時報警設置位置
  321.            
  322.            case 4: update_disbuf(0x50,"time: ",hour,min,sec);
  323.              pro_display();
  324.              lcd_pos(0x05);break;  //光標置年調整位置            
  325.            case 5: lcd_pos(0x08);break;  //光標置月調整位置
  326.            case 6: lcd_pos(0x0b);break;  //光標置日調整位置
  327.            
  328.            case 7: lcd_pos(0x49);break;  //光標置時調整位置
  329.            case 8: lcd_pos(0x4c);break;  //光標置分調整位置
  330.            case 9: lcd_pos(0x4f);break;  //光標置秒調整位置
  331.             
  332.            default:break;
  333.           }
  334.         }
  335.        if (skey==0x02)      //SET鍵按下
  336.         { pro_key();  //轉設置按鍵處理程序
  337.         }
  338.       }
  339.     }        
  340.    }        
  341.   lcd_wcmd(0x0c);       //設置LCD開顯示及光標不閃爍,不顯示"-"
  342.   lcd_wcmd(0x01);          //清除LCD的顯示內容
  343.   IE=0x8f;             //CPU開中斷,INT0,INT1,開中斷
  344.   TR0=1;         //Timer0啟動
  345. }

  346. //主程序,初始化及初值設定
  347. void main()
  348. {
  349. lcd_init();                      //初始化LCD
  350. lcd_sef_chr();      //寫入自定義字符號
  351. hour=0;min=0;sec=0;        //開機時的時,分,秒顯示
  352. armhour=0;armmin=0;armsec=0;  //開機時的時,分,秒報警初值
  353. year= 5; month=1;date=1;       //開機時的年,月,日,星期顯示
  354. week_proc();
  355. alarm=1;       //初始開機,啟用鬧鐘
  356. IE = 0x8f;       //CPU開中斷,INT0,INT1,Timer0,Timer1開中斷
  357. IP = 0x04;       //設置INT0為中斷最高優先級
  358. IT0=0;IT1=0;      //外部INT0,INT1設置為電平觸發方式(注意,觸發不要選邊沿方式,易誤動)
  359. TMOD = 0x11;      //Timer0,Timer1工作于模式1, 16位定時方式
  360. TH0 = 0xdc;TL0 = 0x00;    //Timer0置10ms定時初值  
  361. TH1 = 0xff;TL1 = 0x00;    //Timer1置初值  
  362. TR0 = 1;       //Timer0啟動
  363. TR1 = 0;
  364. while(1);
  365. }
  366. //設置按鍵處理程序
  367. void pro_key()
  368. {
  369. switch (flag)
  370.   {
  371.   case 0:alarm=!alarm;   //啟用或關閉鬧鐘(alarm=1:啟用,alarm=0:關閉)
  372.     update_disbuf(0x50,"alarm:",armhour,armmin,armsec); //更新顯示數據
  373.     pro_display();          //調用顯示處理
  374.     lcd_pos(0x47);break;        //光標回到原調整位置
  375.   case 1:armhour++;
  376.     if (armhour>23) armhour=0;
  377.     update_disbuf(0x50,"alarm:",armhour,armmin,armsec); //更新顯示數據
  378.     pro_display();          //調用顯示處理
  379.     lcd_pos(0x49);break;        //光標回到原調整位置
  380.   case 2:armmin++;
  381.     if (armmin>59) armmin=0;
  382.     update_disbuf(0x50,"alarm:",armhour,armmin,armsec);
  383.     pro_display();
  384.     lcd_pos(0x4c);break;
  385.   case 3:armsec++;
  386.     if (armsec>59) armsec=0;
  387.     update_disbuf(0x50,"alarm:",armhour,armmin,armsec);
  388.     pro_display();
  389.     lcd_pos(0x4f);break;
  390.   case 4:year++;
  391.     if (year> 99) year= 0;
  392.     week_proc();                        //星期自動運算
  393.     update_disbuf(0x50,"time: ",hour,min,sec);
  394.     pro_display();
  395.     lcd_pos(0x05);break;
  396.    case 5:month++;
  397.     if (month>12) month=1;
  398.     week_proc();      //星期自動運算
  399.     update_disbuf(0x50,"time: ",hour,min,sec);
  400.     pro_display();
  401.     lcd_pos(0x08);break;
  402.   case 6:date++;
  403.     if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
  404.      if (date>31) date=1;   //大月31天
  405.     if (month==4||month==6||month==9||month==11)  
  406.       if (date>30) date=1;   //小月30天
  407.     if (month==2)   
  408.      {if(leap_year())    //閏年的條件
  409.       {if (date>29) date=1;}  //閏年2月為29天
  410.       else
  411.       {if (date>28) date=1;}}  //平年2月為28天
  412.     week_proc();         //星期自動運算
  413.     update_disbuf(0x50,"time: ",hour,min,sec);
  414.     pro_display();
  415.     lcd_pos(0x0b);break;
  416.   
  417.   case 7:hour++;
  418.     if (hour>23) hour=0;
  419.     update_disbuf(0x50,"time: ",hour,min,sec);
  420.     pro_display();
  421.     lcd_pos(0x49);break;
  422.   case 8:min++;
  423.     if (min>59) min=0;
  424.     update_disbuf(0x50,"time: ",hour,min,sec);
  425.     pro_display();
  426.     lcd_pos(0x4c);break;
  427.   case 9:sec++;
  428.     if (sec>59) sec=0;
  429.     update_disbuf(0x50,"time: ",hour,min,sec);
  430.     pro_display();
  431.     lcd_pos(0x4f);break;
  432.   default: break ;            
  433.   }
  434. }
  435. //Timer1中斷處理程序,產生報警的聲音
  436. void timer1() interrupt 3
  437. {
  438. TH1=0xff;   
  439. TL1=0x00;
  440. SPK=~SPK;

  441.    
  442. }
  443. //外部中斷INT1中斷處理程序,停止報警聲音
  444. void int1() interrupt 2
  445. {
  446. if(TR1)
  447.   TR1=0;   
  448. }
復制代碼


評分

參與人數 1黑幣 +8 收起 理由
stkh + 8 淡定

查看全部評分

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

使用道具 舉報

沙發
ID:104763 發表于 2016-3-12 21:08 | 只看該作者
學習了
回復

使用道具 舉報

板凳
ID:195749 發表于 2017-5-3 17:15 | 只看該作者
void time_alarm();這個程序沒有寫
回復

使用道具 舉報

地板
ID:251052 發表于 2017-11-25 03:12 | 只看該作者
少了一個函數吧?time_alarm

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:77707 發表于 2018-3-24 21:11 | 只看該作者
樓主發的這個程序,不錯嗎!我試了很好,謝謝分享!
回復

使用道具 舉報

6#
ID:348323 發表于 2018-9-27 21:09 | 只看該作者
設置狀態和正常狀態怎么切換?
回復

使用道具 舉報

7#
ID:383998 發表于 2018-9-28 11:30 | 只看該作者
好樣地!那里弄來的啊!
回復

使用道具 舉報

8#
ID:307643 發表于 2018-9-28 17:10 | 只看該作者
帶幾張實物圖就更好了
回復

使用道具 舉報

9#
ID:409679 發表于 2018-10-17 16:43 | 只看該作者
很好,碼一下。
回復

使用道具 舉報

10#
ID:410182 發表于 2018-10-18 16:49 | 只看該作者
子函數寫在主函數前面可以不要申明吧
回復

使用道具 舉報

11#
ID:501909 發表于 2019-4-9 21:19 | 只看該作者
你好,有原理圖嗎?

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产馆在线真实露脸 | 国产精品欧美一区二区三区 | 人人玩人人添人人澡欧美 | 国产中文字幕在线观看 | 日韩中文字幕视频在线观看 | 国产精品影视在线观看 | 亚洲精品电影在线 | 国产精品一区二区三区久久 | 欧美三级成人理伦 | 亚洲成人网在线观看 | 精品欧美一区二区在线观看视频 | 国产午夜精品一区二区三区在线观看 | 91精品久久久久久久久久入口 | 黄色一级免费 | 午夜精品久久久久久久星辰影院 | 国产精品91久久久久久 | 久久久精品视频免费看 | 日本视频在线播放 | 欧美黄在线观看 | 欧美 日本 国产 | 欧美日韩国产一区二区三区 | 午夜资源 | 亚洲国产成人精品女人久久久 | 请别相信他免费喜剧电影在线观看 | 午夜免费小视频 | 国产亚洲精品久久久久动 | 欧美国产日韩在线观看 | 国产黄a一级 | 欧美日韩久久精品 | 成人在线中文字幕 | 99re6在线 | 中文字幕免费在线 | 久久综合伊人 | wwwxxx国产 | 亚洲成av | 91中文字幕 | 午夜精 | 四虎最新 | 99国产精品视频免费观看一公开 | 毛片久久久 | 一级国产精品一级国产精品片 |