標題: 新年制作——激光投影POV [打印本頁]
作者: 王朗的誘惑 時間: 2019-2-4 21:26
標題: 新年制作——激光投影POV
激光投影POV——不炫酷送黑幣啊……

記得是2017年的一時興起開了這個坑,當時做出來了顯示效果,然后因為學習就一直擱置。過了2年又是我的一時興起,這次總算是把它做完了。
這個制作用的材料:
1. 亞克力板
2. 亞克力鏡子-沒錯,那個反光板是塑料的,買薄的,好加工而且非常輕
3. 筆芯-做支架用
4. CD機的光頭-用了那個電機和塑料底座
5. 5V激光管
6. 單片機-STC15F2K16S2-直插28腳封裝
7. 其他各種元器件-排針、三極管、電阻、電容、排線、洞洞板……
因為電路很簡單,所以沒畫PCB,只有控制板的電路圖,傳感器就是紅外對管,電機驅動就是一個NMOS加上一些濾波電路,后來還拆了個12V電機上的轉速穩定電路裝上了。
[電路圖]單片機IO不是直接驅動激光管啊,都是有PNP三極管的!!這里偷懶沒畫……
工作原理:
電機帶動反光鏡(盡量)勻速旋轉,紅外對管檢測鏡面位置,檢測到鏡面位置給單片機外部中斷信號,單片機開始計時。這個時間結束的時候就是鏡面轉到開始顯示的位置,這時開始點亮激光管,從這里開始原理就和搖搖棒一樣了。
還有個有意思的創新,這回我用上位機串口通信,直接傳送點陣數據過來顯示,這樣就相當于用電腦上面的字庫,解決了漢字字庫的問題,只要上位機文本框里能顯示,單片機就能把它投影出來。不過現在16個點還是有點捉雞,大的東西顯示不了……
[上位機界面]
程序結構:
占用資源:
外部中斷0 紅外對管
定時器0 反光鏡旋轉一圈計時
定時器1 激光點亮延時
定時器2 波特率發生器
串口1
CCP0 電機PWM
CCP1 串口接收定時器-用于判定數據幀
上位機用C#寫的,VS2012編譯,Debug模式。代碼很簡單,而且都是一些事件的觸發,所以沒寫結構出來,直接看代碼就可以,有注釋很容易理解。
注意事項:
1. 單片機工作頻率為27MHz 串口通信波特率默認9600 。基本參數的設置在各個頭文件中。
2. 串口優先級已經調整為最高。
……剩下的想不起來了……等想起來再加吧……
最后……給自己發個廣告:我的微博最近很冷清呀,歡迎捧場~ (其實我從沒在上面發過電子相關的東西……

……)
img-340788e6ae1ad9a70589376608373fe7_qrcode.png (162.92 KB, 下載次數: 128)
下載附件
2019-2-4 21:24 上傳
下位機.zip
(119.04 KB, 下載次數: 56)
2019-2-4 21:16 上傳
點擊文件名下載附件
單片機代碼 使用Keil5編譯
下載積分: 黑幣 -5
上位機.zip
(94.2 KB, 下載次數: 52)
2019-2-4 21:16 上傳
點擊文件名下載附件
C#代碼 使用VS2012編譯 Debug模式
下載積分: 黑幣 -5
作者: admin 時間: 2019-2-5 01:29
樓主的主程序如下:
- #include <STC15.h>
- #include <intrins.h>
- #include "main.h"
- #include "Uart.h"
- #include "U8_PWM.h"
- #include "display.h"
- #include "eeprom.h"
- typedef union
- {
- u8 time8[2];
- u16 time16;
- }TIME;
- volatile TIME t_speed; //記錄定時器值
- volatile u16 speed; //反光鏡轉速 (調試用數據)
- volatile char t_count=0;//,d_count=0; //轉速, 顯示 定時器溢出計數
- volatile u16 d_time = 25000; //點亮激光延時 初始化值用于第一次寫EEPROM
- u8 speed_pwm = 80; //反光鏡轉速 用于控制PWM占空比 初始化值用于第一次寫EEPROM
- void delay_ms(unsigned char ms)
- {
- unsigned int i;
- do{
- i = MAIN_Fosc / 13000;
- while(--i) ;
- }while(--ms);
- }
- void Int0_Init(void)
- {
- // EA = 1;
- IT0 = 1;
- EX0 = 1;
- }
- void Timer0_Init(void) //計算轉速作為延時參考
- {
- TMOD |= 0x01;
- TL0 = (65536-1000)%256;
- TH0 = (65536-1000) >> 8;
- // EA = 1;
- ET0 = 1;
- // TR0 = 1;
- }
- void Timer1_Init(void) //外部中斷后點亮激光延時
- {
- TMOD |= 0x10;
- TL1 = (65536-1000)%256;
- TH1 = (65536-1000) >> 8;
- // EA = 1;
- ET1 = 1;
- // TR1 = 1;
- }
- u8 Verify_Sum(u8 *DataInput, u16 len)//累加校驗計算
- {
- u8 sum=0;
- u16 i;
- for(i=0; i<len; i++) //數據累加
- sum += DataInput[i];
- return sum;
- }
- //整幀串口數據保存在UartRecvBuf[UARTRECVBUFSIZE]中
- //建議復制出來數據使用 防止處理過程中進串口接收中斷丟失原始數據
- void UartDataRecv_Event(void)
- {
- u8 i,j;
- u16 Length;
- xdata u8 datBuf[UARTRECVBUFSIZE]; //臨時數據存儲
- xdata typePackage recvPackage; //接收數據包結構體
- code s8 AckBuf[] = {0x01, 0x10, 0x00, 0x00, 0x00, 0x00}; //Ack數據包
- s8 DatBuf[10] = {0x01, 0x03, 0x00, 0x00, 0x04}; //還有5個數據在下面賦值
-
- // Uart_SendByte(UartBytesToRead);
- // Uart_SendByte(0x49);
- for(Length=0; Length<UartBytesToRead; Length++) //復制數據
- {
- datBuf[Length] = UartRecvBuf[Length];
- }
-
- if(datBuf[0] != 0x01) return;
- Length = 6 + (u16)(datBuf[3]<<8 | datBuf[4]); //計算數據總長度
- if(Length != UartBytesToRead) //長度不對放棄數據
- {
- return;
- }
- //裝載數據
- recvPackage.DeviceAddr = datBuf[0];
- recvPackage.Function = datBuf[1];
- recvPackage.Sequence = datBuf[2];
- recvPackage.DataLength = (u16)(datBuf[3]<<8 | datBuf[4]);
- recvPackage.Data = &datBuf[5];
- recvPackage.Sum = datBuf[5 + recvPackage.DataLength];
- if(recvPackage.Sum != Verify_Sum(recvPackage.Data, recvPackage.DataLength)) //數據校驗
- return;
- //SendAck
- Uart_SendBuf(AckBuf, CountOfArray(AckBuf));
-
- // Uart_SendByte(recvPackage.Function);
- switch(recvPackage.Function) //幀功能判斷
- {
- case 0x01:
- //Dis_WriteBuf("DataReceived!");
- for(i=0; i<STRINGLEN; i++) //寫顯存
- for(j=0; j<16; j++)
- DisBuf[i][j] = recvPackage.Data[j + i*16];
- break;
- case 0x02: //從機接收數據
- Dis_WriteBuf("Recv-Func-0x02");
- if(speed_pwm != recvPackage.Data[1])
- {
- speed_pwm = recvPackage.Data[1];
- Load_U8_PWM(speed_pwm); //轉速
- IapEraseSector(IAP_ADDRESS_SPEED); //EEPROM存儲數據
- IapProgramByte(IAP_ADDRESS_SPEED, speed_pwm);
- }
- if(d_time != (u16)(recvPackage.Data[2]<<8 | recvPackage.Data[3])) //點亮延時
- {
- d_time = (u16)(recvPackage.Data[2]<<8 | recvPackage.Data[3]);
- IapEraseSector(IAP_ADDRESS_DELAY); //EEPROM存儲數據
- IapProgramByte(IAP_ADDRESS_DELAY, recvPackage.Data[2]);
- IapProgramByte(IAP_ADDRESS_DELAY+1, recvPackage.Data[3]);
- }
- // Uart_SendByte(0x33);
- break;
- case 0x03: //主機請求數據
- Dis_WriteBuf("Recv-Func-0x03");
- delay_ms(15); //隔斷Ack和Dat兩個數據包 避免上位機混淆
- DatBuf[5] = 0x00; //裝載數據
- DatBuf[6] = speed_pwm;
- DatBuf[7] = (u8)(d_time>>8);
- DatBuf[8] = (u8)d_time;
- DatBuf[9] = Verify_Sum(&DatBuf[5], 4);
- Uart_SendBuf(DatBuf, CountOfArray(DatBuf));
- // Uart_SendByte(0x49);
- break;
- default: //未知功能幀
- return;
- }
- }
- void main(void)
- {
- u8 i;
-
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- // UartFuncPtr = UartDataRecv_Event; //注冊串口數據處理函數
-
- EA = 1;
-
- //第一次寫EEPROM時使用此代碼
- // IapEraseSector(IAP_ADDRESS_SPEED); //EEPROM存儲數據
- // IapProgramByte(IAP_ADDRESS_SPEED, speed_pwm);
- // IapEraseSector(IAP_ADDRESS_DELAY); //EEPROM存儲數據
- // IapProgramByte(IAP_ADDRESS_DELAY, d_time>>8);
- // IapProgramByte(IAP_ADDRESS_DELAY+1, d_time);
- speed_pwm = IapReadByte(IAP_ADDRESS_SPEED); //EEPROM數據讀取
- d_time = (u16)(IapReadByte(IAP_ADDRESS_DELAY)<<8 | IapReadByte(IAP_ADDRESS_DELAY+1));
-
- U8_PWM_Init();
- for(i=5; i<=speed_pwm; i++) //電機加速
- {
- delay_ms(5);
- Load_U8_PWM(i);
- }
- // Load_U8_PWM(0);
- delay_ms(200); //等待轉速穩定
-
- Int0_Init();
- Timer0_Init(); //計算轉速作為延時參考
- Timer1_Init(); //外部中斷后點亮激光延時
- Uart_Init();
- delay_ms(50);
- Uart_SendByte(0x98); //發送復位標識
- Dis_WriteBuf("蘑菇~"); //開機默認字幕
- WDT_CONTR = 0x07;
- WDT_CONTR |= 0x20; //EN_WDT
- while(1)
- {
- WDT_CONTR |= 0x10; //CLR_WDT
- if(DataProcFlag)
- {
- DataProcFlag = 0;
- //不知道為什么 調整串口優先級最高以后還是需要關閉外部中斷
- EX0 = 0; //處理時間很長 關閉外部中斷 不然會死機
- TR0 = 0;
- TR1 = 0;
- UartDataRecv_Event();
- EX0 = 1;
- TR0 = 1;
- TR1 = 1;
- }
- // delay_ms(200);
- // P40 = ~P40;
- // Uart_SendByte(0x49);
- }
- }
- void Int_Int0(void) interrupt 0
- {
- static char trig = 0;
- if(trig) //鏡面不絕對對稱 只使用其中一面
- {
- t_speed.time8[1] = TL0; //讀取當前定時器值作為速度
- t_speed.time8[0] = TH0;
- TL0 = 0; //定時器重裝
- TH0 = 0;
- TR0 = 1;
- speed = t_speed.time16;// + t_count*65536; //計算速度
- t_count = 0; //定時器溢出計數清零
- // d_time = 34000; //點亮激光延時
- TL1 = (65536-d_time)%256;
- TH1 = (65536-d_time) >> 8;
- TR1 = 1;
- }
- trig = ~trig;
- }
- void Int_Timer0(void) interrupt 1 //計算轉速作為延時參考
- {
- t_count++; //定時器溢出計數
- }
- void Int_Timer1(void) interrupt 3 //外部中斷后點亮激光延時
- {
- TR1 = 0; //停止計時
- EX0 = 0;
- // Display(0xFF, 0xFF);
- // Dis_WriteBuf("2019新年快樂!!!~");
- Dis_String();
- EX0 = 1;
- }
復制代碼
作者: starwaver 時間: 2019-2-5 14:04
不錯,很好,精彩。
作者: Tiansu_cxs 時間: 2019-2-8 17:40
感謝分享!
作者: Arvin0011 時間: 2019-2-15 17:16
東西感覺不錯,不過我想說你真的很皮
作者: qzyhlf 時間: 2019-2-16 17:01
感謝分享!
作者: 王朗的誘惑 時間: 2019-2-17 09:35
Arvin0011 發表于 2019-2-15 17:16
東西感覺不錯,不過我想說你真的很皮
啊哈哈哈哈哈哈~~~
作者: 快樂眼淚 時間: 2019-2-20 21:26
感謝樓主分享!
作者: 快樂眼淚 時間: 2019-2-20 21:31
只有反光鏡旋轉嗎
作者: 王朗的誘惑 時間: 2019-2-21 11:20
對,能動的只有反光鏡,光源不動。
作者: 864168613 時間: 2019-3-1 20:56
Rebuild target 'Target 1'
compiling main.c...
D:\Keil_v5\C51\Inc\STC\STC15.h(16): error C231: 'ACC': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(17): error C231: 'B': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(18): error C231: 'PSW': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(19): error C231: 'CY': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(20): error C231: 'AC': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(21): error C231: 'F0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(22): error C231: 'RS1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(23): error C231: 'RS0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(24): error C231: 'OV': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(25): error C231: 'P': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(26): error C231: 'SP': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(27): error C231: 'DPL': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(28): error C231: 'DPH': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(31): error C231: 'P0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(40): error C231: 'P1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(49): error C231: 'P2': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(58): error C231: 'P3': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(121): error C231: 'PCON': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(131): error C231: 'IE': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(132): error C231: 'EA': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(135): error C231: 'ES': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(136): error C231: 'ET1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(137): error C231: 'EX1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(138): error C231: 'ET0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(139): error C231: 'EX0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(140): error C231: 'IP': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(144): error C231: 'PS': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(145): error C231: 'PT1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(146): error C231: 'PX1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(147): error C231: 'PT0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(148): error C231: 'PX0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(154): error C231: 'TCON': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(155): error C231: 'TF1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(156): error C231: 'TR1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(157): error C231: 'TF0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(158): error C231: 'TR0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(159): error C231: 'IE1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(160): error C231: 'IT1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(161): error C231: 'IE0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(162): error C231: 'IT0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(163): error C231: 'TMOD': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(164): error C231: 'TL0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(165): error C231: 'TL1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(166): error C231: 'TH0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(167): error C231: 'TH1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(181): error C231: 'SCON': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(182): error C231: 'SM0': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(183): error C231: 'SM1': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(184): error C231: 'SM2': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(185): error C231: 'REN': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(186): error C231: 'TB8': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(187): error C231: 'RB8': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(188): error C231: 'TI': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(189): error C231: 'RI': redefinition
D:\Keil_v5\C51\Inc\STC\STC15.h(190): error C231: 'SBUF': redefinition
compiling U8_PWM.c...
compiling display.c...
compiling Uart.c...
compiling eeprom.c...
Target not created.
Build Time Elapsed: 00:00:00
一運行就錯誤
作者: 王朗的誘惑 時間: 2019-3-2 10:22
看樣子是頭文件重復的問題,可是我這沒出問題誒……順便上傳下我用的STC15.H頭文件……
-
QQ截圖20190302101635.jpg
(33.09 KB, 下載次數: 128)
下載附件
2019-3-2 10:17 上傳
-
-
STC15Header.zip
2019-3-2 10:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.84 KB, 下載次數: 12, 下載積分: 黑幣 -5
STC15.H頭文件
作者: 864168613 時間: 2019-3-2 13:06
能不能吧電路圖畫玩
作者: 565929732 時間: 2019-8-4 09:05
可以的
作者: youlianning 時間: 2019-8-4 10:20
還是有點不太理解原理呀,反光鏡是如何做到將激光反射到正前方的墻上的呢?還是說是反射到激光背后的墻上。但如果是背后的墻,則必有一條豎線無法顯示。若正前方的墻,則無法理解光路。才疏學淺,請不吝賜教
作者: 王朗的誘惑 時間: 2019-8-11 22:45
60度左右吧,不是正前,也不是正后。這個東西不能360度全顯示的,確實會被擋住一部分豎線。
作者: liuhiong 時間: 2019-8-24 21:54
很好,有創新精神致得我好好學習。只是看不懂程序沒辦法。如果圖片能長期顯示和不間斷更換圖片(就是說當第一張圖片轉換到第二圖片時,中間沒有停止間隔),就更完美了。
作者: liuhiong 時間: 2019-8-24 22:08
鏡子與激光不能在垂直線上,而是在上下直線上有一定的角度,而不是左右角度。橫向直線的長短是由鏡面的寬度決定的,而不是鏡面的長度來決定的。
作者: 王朗的誘惑 時間: 2019-9-4 15:32
點陣數據是電腦通過串口傳到單片機上的,傳輸速度不夠,如果換用速度更快的通信方式或許可以做到。
作者: dj3365191 時間: 2020-8-29 12:23
樓主你好,你說檢測鏡面旋轉速度的是紅外對管,分別是什么型號的?你的原理圖畫的P3和P4是接對管的吧,請問怎樣連接,我想既然是紅外對管每管應該只有兩個管腳,不知怎樣與你圖上的P3和P4對接呢?謝謝!
作者: 梁廷明 時間: 2020-8-31 17:29
上位機那個就是優秀
作者: 王朗的誘惑 時間: 2020-9-1 00:15
P3 接電機,P3 輸出 PWM 方波,連電機驅動,這里其實就是一個 MOS 管;
P4 接對管,型號就是常見的 TCRT5000,類似的就行,原理都是一樣的。紅外對管電路可以參考 http://www.elecfans.com/d/1063734.html ,也是類似的都可以,輸出方波到 P4 。
至于電路圖……因為這個電路用洞洞板做的,所以我是先在紙上設計好,最后才補畫的電路圖,當時偷懶了,而且水平一般,畫的也不規范,還省略了好多細節,還多包涵吧……
作者: 王朗的誘惑 時間: 2020-9-1 00:16
微博里亂七八糟東西一堆,用戶體驗極差,已棄用,請大家自動忽略……
作者: dj3365191 時間: 2020-9-2 12:13
感謝樓主的回復,明白了。
作者: zhuyaying 時間: 2021-2-25 22:41
樓主你的上位機代碼可以發出來參考下嗎
作者: 王朗的誘惑 時間: 2021-2-27 14:15
附件里有的
作者: hefq 時間: 2021-2-27 20:19
牛逼啊,大神,看到別人做的是有兩個旋轉的鏡子啊,只有一個激光,
τ 寶上有一體的振鏡模組,能在墻上掃出動畫
作者: 王朗的誘惑 時間: 2021-2-28 01:09
害,過獎了,我這就是經費有限,只能被迫搞出來一個手工原型……我還是很向往那種高精度的更炫酷的產品的。如果網友想仿制,我強烈推薦3D打印之類的框架,難度會低很多。
另:兩個旋轉鏡子的作品有鏈接嗎?表示好奇
作者: exlies 時間: 2021-2-28 01:34
只有反光鏡旋轉嗎
作者: hefq 時間: 2021-2-28 10:37
在τ 寶搜振鏡
我搜到這個,只要一百多還有驅動,我沒買啊,不知道能不能用,這個是簡易的,貴的很貴
作者: hefq 時間: 2021-2-28 10:37
王朗的誘惑 發表于 2021-2-28 01:09
害,過獎了,我這就是經費有限,只能被迫搞出來一個手工原型……我還是很向往那種高精度的更炫酷的產品的 ...
https://item點taobao點com/item.htm?id=551252442809
剛才忘記鏈接了(自行替換.)
作者: 王朗的誘惑 時間: 2021-2-28 12:21
是的
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
亚洲一区二区在线免费观看
|
香蕉成人网
|
久久久午夜精品
|
亚洲在线中文字幕
|
亚洲精品在线视频
|
亚洲欧美网站
|
久久合
|
欧美日韩精品一区二区在线播放
|
高潮毛片7777777毛片
|
欧美日韩中文字幕在线观看
|
国产成人在线视频
|
91视频在线免费观看
|
日本不卡免费
|
久精品视频
|
国产午夜精品久久
|
av毛片在线播放
|
亚洲国产成人精品女人
|
欧美激情一区二区三区
|
毛茸茸free性熟hd
|
a级片免费
|
亚洲成人福利
|
亚洲毛片av
|
成人小视频在线观看
|
中文字幕在线观看一区二区三区
|
亚洲综合精品
|
久草免费福利视频
|
日本毛片在线观看
|
国产欧美精品一区
|
免费av一区|
精品久久视频
|
色婷婷久久久
|
国产精品毛片av
|
欧美色图一区
|
性视频在线
|
欧美中文字幕在线
|
色爱天堂|
国产欧美久久久
|
国产成人亚洲精品自产在线
|
日韩免费三级
|
午夜国产在线观看
|
免费看黄色一级片
|