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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7577|回復: 10
收起左側

小型家用燃氣鍋爐單片機控制系統的設計(Proteus仿真+程序)

  [復制鏈接]
ID:520804 發表于 2019-5-10 10:41 | 顯示全部樓層 |閱讀模式
這個是我以前做的設計,主要的是內容是小型家用燃氣鍋爐單片機控制系統的設計。主要的實現就是可以顯示當前的溫度,可以設置當前的溫度,并且當實際的溫度超過此時的溫度是就會報警。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
捕獲.PNG

1. 設計任務
2. 整體方案設計
3. 系統硬件電路設計
3.1 時鐘電路
3.2 復位電路
3.3 溫度檢測電路設計
3.4水位檢測模塊
3.5顯示電路設計
3.6報警電路設計
3.7 按鍵電路設計
3.8加水模塊與加熱模塊
4. 系統程序設計
4.1 主程序流程圖
4.2 溫度顯示程序流程圖
5. 系統調試
5.1 Proteus軟件仿真調試
6. 程序清單
7.小結


小型家用燃氣鍋爐單片機控制系統的設計

鍋爐是一種熱能轉換設備,由鍋和爐兩大主體和保證其安全經濟連續運行的附件,儀表附屬設備,自控和保護系統組成。近年來采用以天然氣,液化石油氣為燃料的中小型燃氣鍋爐具有 高效、環境污染小,發熱量大甚至無污染等特點,受到普遍歡迎。隨著科技的發展以及各種客觀條件的具備,生活采暖用燃氣鍋 爐的應用也必將得到進一步的發展與推廣。隨著燃料不斷補給,燃料充足,城市燃氣 管網逐步完善,燃氣使用率逐步會提高。小型家用燃氣鍋爐的使用作為集 中供暖的一個很好補充或替代它必將被越來越多的人關注和選用成為趨勢。目前市場上家用燃氣鍋爐為進口,價格高,售后服務不夠完善,不利于燃氣鍋爐的推廣使用,研制燃氣鍋爐的公司亦相對較少。因此研制開發小型家用燃氣鍋爐就具有現實的意義與客觀的市場價值。本設計將結合小型家用燃氣鍋爐實際的需要,利用 MCS-51 系列單片機為核心器件組成溫度控制系統,采用溫度采集技術,通過運行和分析研究,以期正確認識和全面理解利用單片機實現溫度采集技術在過程控制中的應用。
1. 設計任務

結合實際情況,基于AT89C51單片機設計一個小型家用燃氣鍋爐單片機控制系統。

該系統應滿足的功能要求為:

(1) 可以檢測水位的高低;

(2) 可以檢測當前溫度;

(3) 可以自動報警;

(4) 可以自動控制加水;

主要硬件設備:AT89C51、溫度傳感器DS18B20、LCD1602液晶顯示器、繼電器、74LSO4 、74LS244等。

2. 整體方案設計

采用 AT89S51 單片機、溫度傳感器 DS18B20 和液晶顯示器 LCD1602 等核心部件。該方案采用液晶顯示器來顯示水位的上下限值、當前水位、預先設定的溫度報警值和當前采集的溫度值。用不銹鋼管制作成的裝置放于水位上下限。鍋爐采用電加熱的方式,水源由水泵供給,水溫可以通過按鍵預置,由溫度傳感器檢測水的溫度并送給單片機, 然后單片機將實際水溫送至 LCD1602液晶顯示,同時單片機將采集到的實際水溫與預置溫度相比較, 若實際溫度在預置溫度范圍內,就關閉電熱絲;若實際水溫不在預置溫度范圍內,就接通電熱絲給鍋爐加熱,若超過預置溫度極限,控制系統就會報警。由 74LS04和 74LS244組成的水位檢測電路的四個探針來檢測水位并將采集到的信息送給單片機,當水位高于最高水位時,就關閉水泵;當水位低于下限水位時,就打開水泵;當水位低于或高于極限水位時,就會報警。


0.png
圖2-1 基于單片機的小型家用燃氣鍋爐控制系統原理圖

本系統硬件主要由燃燒器、繼電器、溫度檢測器、顯示系統等幾部分組成。各模塊的主要功能如下:

  • 繼電器功能接通燃燒器電源
  • 顯示屏的作用是可以顯示當前時刻的溫度以及用戶設定的溫度;
  • 溫度檢測器的作用是可以檢測當前的溫度;
3. 系統硬件電路設計
3.1 時鐘電路
AT89S51 的時鐘可由內部產生也可以由外部產生。
在這個設計中只是用了內部產生。利用芯片內部振蕩電路,在 XTAL1,XTAL2的引腳上外接定時元件,內部振蕩器便能產生自激振蕩,定時元件可以采用石英晶體和電容組成的并聯諧振電路,它與單片機的接法的如圖所示。晶體可以在 1.2MHz~12MHz 之間所選,電容可以在 20~60pF 之間所選,通常選擇 30pF 左右,電容 C6,C7 的大小對振蕩頻率有微小的影響,可起頻率微調作用。
圖3-1 時鐘電路結構圖

3.2 復位電路
系統的復位電路是由 RC 電路組成,外加一個手動復位按鈕。剛上電時或者觸動 按鈕后 C5 兩端的電壓為 0,這時 RST 為高電平,而其高電平保持時間是由 R 和 C 的時間常數決定,由公式τ=R*C可知,C 充電的時間常數 τ 等于 0.22ms,遠遠大于 2μs,即使 RST 高電平的時間保持 2μs 以上,確保了單片機正常復位。
圖3-1 復位電路結構圖
圖3-3 時鐘電路復位電路與單片機的連接圖

3.3 溫度檢測電路設計

溫度采集電路只有一個DS18B20溫度傳感器,它與單片機的接口比較簡單,所示。只要給傳感器5V的供電并把它的單總線接到單片機的P口就可以了。

圖3-4 溫度檢測模塊結構圖

3.4水位檢測模塊
水位檢測模塊由芯片 74LS04和芯片74LS244及其附加電路組成。具體電路
如圖所示。四個探針分別接在鍋爐連通器從下到上的四個位置,當水位為 0
時,四個探針全被懸空,74LS04的四個輸入端全被上拉電阻拉成高電平,經過
非門之后變為低電平,再經過緩沖芯片 74LS244輸送給單片機并在液晶顯示屏上顯示。當水位上升到探針 1 處時,由于水的導電性,使 74LS04的 A1輸入端為低電平,經過非門之后變為高電平, 再經過緩沖芯片 74LS244輸送給單片機。此時,單片機認為水位為百分之二十五,并在液晶顯示屏上顯示。以此類推,單片機會依次檢測到的水位是百分之五十,百分之七十五,百分之百。完成對水位的檢測。
圖3-5 溫度檢測模塊結構圖

3.5顯示電路設計
本系統采用LCD1602作為顯示模塊,其主要功能是 顯示水位的上下限值、當前水位、預先設定的溫度報警值和當前采集的溫度值。其中 VDD 接 5V 電源用于顯示 LCD 液晶顯示芯片的工作 ,VL 串接阻值 10K 歐姆的滑動變阻器是為了調節 LCD液晶顯示芯片字符的亮度,當阻值越大時,LCD液晶顯示越模糊。用滑動變阻器 能更好的調節LCD液晶字符顯示的亮度,合適于鍋爐的水位于水溫的觀察。 要想使顯示器正常的工作需在連接P0口之前接一上拉電阻。
圖3-6 顯示模塊結構圖

3.6報警電路設計
本系統采用喇叭進行報警,該部分電路與單片機的接口如圖所示。 電路由限流電阻R8、三極管Q1和喇叭組成。這個電路并不是一般的放大電路,三極管不是工作在放大狀態,而是工作在飽和狀態和截止狀態。當基極為低電平時,晶體管處于飽和狀態,飽和電壓為UCES=0.3V,此時,喇叭鳴叫。當基極為高電平時,晶體管截止,相當于開路,輸出為高電平,喇叭停止鳴叫。
圖3-7 報警電路結構圖

3.7 按鍵電路設計
本系統為符合實際要求,進入系統之前首先對溫度報警值的設置。本系統有三個 按鍵分別為 K1,K2,K3.
如圖所示。
  • K1 設置鍋爐溫度報警值的溫度值增加按鍵。K1 每按下一次,溫度報警值顯 示加比上一次值增加一度。
  • K2 設置鍋爐溫度報警值的溫度值減少按鍵。K1 每按下一次,溫度報警值顯 示比上一次值減少一度。
  • K3 溫度報警值確定值。
圖3-8 按鍵模塊結構圖
3.8加水模塊與加熱模塊
小型開水鍋爐控制系統執行機構通過繼電器來控制加熱電熱絲和水泵來實
現水位和水溫的自動控制,具體加水控制電路如圖所示。
加熱控制類似加水控制,不再贅述
圖3-9 執行模塊結構圖
4. 系統程序設計
4.1 主程序流程圖

本系統進入執行時先對鍋爐水位進行與設定的水位上下限進行判斷,然后按條件不同處理結果。當鍋爐水位滿足條件的時候再對鍋爐的水溫采樣監控,并進行相應的處理


4.2 溫度顯示程序流程圖
溫度部分程序的主要功能是負責溫度的實時顯示、 讀出并處理 DS18B20的測
量溫度值,溫度測量每 1S進行一次。

5. 系統調試
5.1 Proteus軟件仿真調試
利用 protues軟件進行仿真,能夠實現預期目標,如圖 ,系統能夠正常
顯示當前鍋爐狀態,在第一行顯示當前溫度,第二行顯示當前水位。當按下圖中
按鍵時, LCD1602進入溫度設置界面,如圖 ,按下按鈕一次可實現設
置溫度加一攝氏度。按下按鈕一次可實現設置溫度減一攝氏度。當再次按下
按鍵時,系統重新恢復如圖界面。經調試,各項功能均能夠很好的實現,包括溫度的控制和水位的自動調節。


7.小結

在本次的實際過程中,我明白了一個完整的控制系統的設計過程。從明白我們的設計的目的開始,以目的為主要的標準來進行模塊以及電路元器件的選擇。根據自己所需要的東西以及想要達到的目標進行設計編程。用keil軟件導出hex文件之后導入進單片機,沒有錯誤的話就可以仿真了。我是采用protues進行仿真的,在仿真之前需要把程序導入到單片機當中,我是第一次完成這樣的任務,中間也經歷了很多的挫折,最主要的問題還是顯示屏lcd1602的使用。但是在于同學的交流當中都一一解決,讓我明白了自己與他人的差距,也更加深刻的體會到了合作的重要性。對今后的學習和生活有重要的意義。


6. 程序清單
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit DQ=P3^3;//ds18b20 與單片機連接口
  5. sbit alarm=P3^6;// 蜂鳴器與單片機連接口
  6. sbit jidian1=P3^7;// 水位控制繼電器與單片機連接口
  7. sbit jidianqi2 = P1^0;
  8. sbit RS=P2^0;
  9. sbit RW=P2^1;
  10. sbit EN=P2^2;
  11. sbit control = P1^6;
  12. sbit add_key = P1^7;
  13. sbit sub_key = P3^4;
  14. uchar control_flag = 0;
  15. uint wendu = 350;
  16. unsigned char code str1[]={"T:"};
  17. unsigned char str2[]={"C:"};
  18. unsigned char code str3[]={"W: "};
  19. uchar data disdata[5]={1,0,1,0,0};
  20. uint tvalue;// 溫度值
  21. uchar tflag;// 溫度正負標志
  22. unsigned char k=0;
  23. /*************************lcd1602 程序**************************/
  24. void delay1ms(unsigned int ms)//延時 1 毫秒(不夠精確的)
  25. {unsigned int i,j;
  26. for(i=0;i<ms;i++)
  27. for(j=0;j<100;j++)
  28. ;
  29. }
  30. void wr_com(unsigned char com)//寫指令
  31. {
  32. delay1ms(1);
  33. RS=0;
  34. RW=0;
  35. EN=0;
  36. P0=com;
  37. delay1ms(1);
  38. EN=1;
  39. delay1ms(1);
  40. EN=0;
  41. }
  42. void wr_dat(unsigned char dat)// 寫數據
  43. {
  44. delay1ms(1);;
  45. RS=1;
  46. RW=0;
  47. EN=0;
  48. P0=dat;
  49. delay1ms(1);
  50. EN=1;
  51. delay1ms(1);
  52. EN=0;
  53. }
  54. /********** 延時函數 ,毫秒級 ***************/
  55. void delayms(unsigned int t)// 延時函數
  56. {
  57. unsigned int i, j;
  58. for( i = t; i > 0; i-- )
  59. {
  60. for( j = 110; j > 0; j-- );
  61. }
  62. }
  63. void lcd_init()// 初始化設置
  64. {delay1ms(15);
  65. wr_com(0x38);delay1ms(5);
  66. wr_com(0x08);delay1ms(5);
  67. wr_com(0x01);delay1ms(5);
  68. wr_com(0x06);delay1ms(5);
  69. wr_com(0x0c);delay1ms(5);
  70. }
  71. /******************* 讀水位 ************************/
  72. void readlevel()
  73. {
  74. P2|=0xf0;
  75. if((P2&0XF0)==0X00)
  76. k= 0;
  77. else if((P2&0XF0)==0X10)
  78. k=25;
  79. else if((P2&0XF0)==0X30)
  80. k=50;
  81. else if((P2&0XF0)==0X70)
  82. k=75;
  83. else if((P2&0XF0)==0XF0)
  84. k=100;
  85. }
  86. /********************* 溫度和水位報警 ***********************/
  87. void alarming() // 報警模塊
  88. {
  89. uchar i;
  90. if(k==0||tvalue<0)// 溫度低于零度或者水位為 0 時短報警
  91. {
  92. for(i=6;i>0;i--)
  93. {
  94. alarm=0;
  95. delay1ms(100);
  96. alarm=1;
  97. delay1ms(100);
  98. }
  99. }
  100. if(k==100||tvalue>95)// 溫度高于 95 度或者水位為 100%時長報警
  101. {
  102. alarm=0;
  103. delay1ms(1000);
  104. alarm=1;
  105. }
  106. if(k==25)//水位過低報警
  107. {
  108. uchar j;
  109. for(j=3;j>0;j--)
  110. {
  111. alarm=0;
  112. delay1ms(300);
  113. alarm=1;
  114. delay1ms(300);
  115. }
  116. }
  117. if(k==75||k==50)// 不報警,延時 1 秒用于水位顯示
  118. {
  119. delay1ms(1000);
  120. }
  121. }
  122. /*************** 繼電器控制上水 ****************************/
  123. void jiashui() // 繼電器控制上水
  124. {
  125. if(k<50)
  126. jidian1=0;
  127. if(k==100)
  128. jidian1=1;
  129. }
  130. /*************** 繼電器控制加熱 ****************************/
  131. void jiare() // 繼電器控制加熱
  132. {
  133. if ( wendu >= tvalue )
  134. {
  135. jidianqi2 = 0;
  136. }
  137. else
  138. {
  139. jidianqi2 = 1;
  140. }
  141. }
  142. /******************** 水位顯示 *************************/
  143. void leveldisp() // 水位顯示函數
  144. {
  145. disdata[0]=k/100+0x30;//百位數
  146. disdata[1]=k%100/10+0x30;//十位數
  147. disdata[2]=k%10+0x30;//個位數
  148. if(disdata[0]==0x30)
  149. {
  150. disdata[0]=0x20;// 如果百位為 0,不顯示
  151. if(disdata[1]==0x30)
  152. {
  153. disdata[1]=0x20;// 如果百位為 0,十位為 0 也不顯示
  154. }
  155. }
  156. wr_com(0xc4);
  157. wr_dat(disdata[0]);// 顯示百位
  158. wr_com(0xc5);
  159. wr_dat(disdata[1]);// 顯示十位
  160. wr_com(0xc6);
  161. wr_dat(disdata[2]);// 顯示個位
  162. wr_com(0xc7);
  163. wr_dat(0x25);// 顯示百分號
  164. }
  165. /*******************ds1820 程序*********************/
  166. void delay_18B20(unsigned int i)//延時 1 微秒
  167. {
  168. while(i--);
  169. }
  170. void ds1820rst()//ds1820 復位
  171. {
  172. unsigned char x=0;
  173. DQ = 1; //DQ 復位
  174. delay_18B20(4); //延時
  175. DQ = 0; //DQ 拉低
  176. delay_18B20(100); //精確延時大于 480us
  177. DQ = 1; // 拉高
  178. delay_18B20(40);
  179. }
  180. uchar ds1820rd()/*讀數據*/
  181. {
  182. unsigned char i=0;
  183. unsigned char dat = 0;
  184. for (i=8;i>0;i--)
  185. {
  186. DQ = 0; //給脈沖信號
  187. dat>>=1;
  188. DQ = 1; //給脈沖信號
  189. if(DQ)
  190. dat|=0x80;
  191. delay_18B20(10);
  192. }
  193. return(dat);
  194. }
  195. void ds1820wr(uchar wdata)//寫數據
  196. {unsigned char i=0;
  197. for (i=8; i>0; i--)
  198. {
  199. DQ = 0;
  200. DQ = wdata&0x01;
  201. delay_18B20(10);
  202. DQ = 1;
  203. wdata>>=1;
  204. }
  205. }
  206. read_temp()// 讀取溫度值并轉換
  207. {
  208. uchar a,b;
  209. ds1820rst();
  210. ds1820wr(0xcc);//跳過讀序列號
  211. ds1820wr(0x44);//啟動溫度轉換
  212. ds1820rst();
  213. ds1820wr(0xcc);//跳過讀序列號
  214. ds1820wr(0xbe);//讀取溫度
  215. a=ds1820rd();
  216. b=ds1820rd();
  217. tvalue=b;
  218. tvalue<<=8;
  219. tvalue=tvalue|a;
  220. if(tvalue<0x0fff)
  221. tflag=0;
  222. else
  223. {
  224. tvalue=~tvalue+1;
  225. tflag=1;
  226. }
  227. tvalue=tvalue*(0.625);// 溫度值擴大 10 倍,精確到 1 位小數
  228. return(tvalue);
  229. }

  230. /************** 溫度顯示 ****************************/
  231. void ds1820disp() // 溫度顯示
  232. {
  233. uchar flagdat;
  234. disdata[0]=tvalue/1000+0x30;//百位數
  235. disdata[1]=tvalue%1000/100+0x30;//十位數
  236. disdata[2]=tvalue%100/10+0x30;//個位數
  237. disdata[3]=tvalue%10+0x30;//小數位
  238. if(tflag==0)
  239. flagdat=0x20;// 正溫度不顯示符號
  240. else
  241. flagdat=0x2d;// 負溫度顯示負號
  242. if(disdata[0]==0x30)
  243. {
  244. disdata[0]=0x20;// 如果百位為 0,不顯示
  245. if(disdata[1]==0x30)
  246. {
  247. disdata[1]=0x20;// 如果百位為 0,十位為 0 也不顯示
  248. }
  249. }
  250. wr_com(0x82);
  251. wr_dat(flagdat);// 顯示符號位
  252. wr_com(0x83);
  253. wr_dat(disdata[0]);// 顯示百位
  254. wr_com(0x84);
  255. wr_dat(disdata[1]);// 顯示十位
  256. wr_com(0x85);
  257. wr_dat(disdata[2]);// 顯示個位
  258. wr_com(0x86);
  259. wr_dat(0x2e);// 顯示小數點
  260. wr_com(0x87);
  261. wr_dat(disdata[3]);// 顯示小數位
  262. }
  263. void display(unsigned char *p)
  264. {
  265. while(*p!='\0')
  266. {
  267. wr_dat(*p);
  268. p++;
  269. delay1ms(1);
  270. }
  271. }
  272. void init_play()// 初始化顯示
  273. {
  274. //              wr_com(0x01);
  275.               wr_com(0x80);
  276.               display(str1);
  277.               read_temp();// 讀取溫度
  278.               ds1820disp();//顯示溫度
  279.               wr_com(0xc0);
  280.               display(str3);
  281.               readlevel();// 讀取水位
  282.               leveldisp();// 顯示水位
  283. }
  284. void control_play( void )// 設定溫度顯示
  285. {
  286.               uchar flagdat;
  287.               //wr_com(0x01);
  288.               wr_com(0x89); //輸入設定溫度
  289.               display(str2);// 顯示設定溫度
  290.               disdata[0]=wendu/1000+0x30;//百位數
  291.               disdata[1]=wendu %1000/100+0x30;//十位數
  292.               disdata[2]=wendu%100/10+0x30;//個位數
  293.               disdata[3]=wendu%10+0x30;//小數位
  294.               if(tflag==0)
  295.               flagdat=0x20;// 正溫度不顯示符號
  296.               else
  297.               flagdat=0x2d;// 負溫度顯示負號
  298.               if(disdata[0]==0x30)
  299.               {
  300.               disdata[0]=0x20;// 如果百位為 0,不顯示
  301.               if(disdata[1]==0x30)
  302.               {
  303.               disdata[1]=0x20;// 如果百位為 0,十位為 0 也不顯示
  304.               }
  305.               }
  306.               wr_com(0x8B);
  307.               wr_dat(disdata[0]);// 顯示百位
  308.               wr_com(0x8C);
  309.               wr_dat(disdata[1]);// 顯示十位
  310.               wr_com(0x8D);
  311.               wr_dat(disdata[2]);// 顯示個位
  312.               wr_com(0x8E);
  313.               wr_dat(0x2e);// 顯示小數點
  314.               wr_com(0x8F);
  315.               wr_dat(disdata[3]);// 顯示小數位

  316. }
  317. /************** 按鍵控制模塊 *************/
  318. void key_scan( void ) // 按鍵控制模塊
  319. {
  320.               static uchar i = 0;
  321.               if ( 0 == control )
  322.               {
  323.               delayms( 10 );
  324.               while ( 0 == control );
  325.               wr_com(0x01);
  326.               control_flag = 1;
  327.               i++;
  328.               if ( i >= 2 )
  329.               {
  330.               i = 0;
  331. ……………………

  332. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png
全部資料51hei下載地址:
附件.zip (456.31 KB, 下載次數: 142)

評分

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

查看全部評分

回復

使用道具 舉報

ID:538291 發表于 2019-5-14 20:23 | 顯示全部樓層
感謝感謝
回復

使用道具 舉報

ID:748803 發表于 2020-5-11 09:09 | 顯示全部樓層
感謝
回復

使用道具 舉報

ID:748868 發表于 2020-5-12 13:59 | 顯示全部樓層
感謝樓主!
回復

使用道具 舉報

ID:748868 發表于 2020-5-14 11:28 | 顯示全部樓層
老哥,你的報警程序沒有調用,編譯有警告。請問老哥proteus仿真整體圖是不是不全啊?我聯機調試有問題
回復

使用道具 舉報

ID:815578 發表于 2020-8-23 15:49 | 顯示全部樓層
您好:我是做鍋爐生產,我們有開發自控的需求,如有興趣,請聯系我
回復

使用道具 舉報

ID:863329 發表于 2020-12-21 12:54 | 顯示全部樓層
LCD 不顯示啊
回復

使用道具 舉報

ID:866311 發表于 2020-12-24 08:55 來自手機 | 顯示全部樓層
DaDaoWanYan 發表于 2020-5-14 11:28
老哥,你的報警程序沒有調用,編譯有警告。請問老哥proteus仿真整體圖是不是不全啊?我聯機調試有問題

小哥,你的調試出來了嗎?我這邊有點弄不出來,可以看一下你的完整版的唄?
回復

使用道具 舉報

ID:866311 發表于 2020-12-25 10:25 來自手機 | 顯示全部樓層
少加點糖 發表于 2020-5-11 09:09
感謝

能不能看一下您的調試成功的完整版
回復

使用道具 舉報

ID:1051028 發表于 2022-11-8 16:04 | 顯示全部樓層
ygj1926 發表于 2020-12-25 10:25
能不能看一下您的調試成功的完整版

請問xd調整好了嗎
回復

使用道具 舉報

ID:824664 發表于 2023-3-15 08:11 | 顯示全部樓層
內容豐富實用,一定好好學學學習。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 热re99久久精品国99热观看 | 男人天堂网av | 午夜小电影 | 精品粉嫩aⅴ一区二区三区四区 | 色婷婷影院 | 精品九九在线 | 国产美女一区二区 | 亚洲国产一区二区三区在线观看 | 黄免费观看视频 | 久久99精品久久久 | 一区二区国产在线观看 | 亚洲国产成人精品女人久久久 | 亚洲国产精品日韩av不卡在线 | 亚洲国产一区二区三区 | 欧美男人亚洲天堂 | 亚洲精品免费在线 | 91在线精品秘密一区二区 | 成人精品久久日伦片大全免费 | a级免费黄色片 | 精品九九| 日韩国产在线 | 欧美性生活一区二区三区 | 久久精品国产一区 | 做a的各种视频 | a免费视频| 亚洲成色777777在线观看影院 | 日韩精品视频在线 | 成人免费视频网站 | 欧美成人a∨高清免费观看 欧美日韩中 | www.黄色网 | 一级片免费在线观看 | 成人精品毛片 | 国产精品成人在线 | 国产亚洲精品久久情网 | 国产蜜臀97一区二区三区 | 欧美一区二区三区 | 91短视频网址 | 亚洲成av人片在线观看 | 在线观看视频亚洲 | 久久看看 | 日韩欧美视频免费在线观看 |