Nguyên văn bởi phong25_2
Xem bài viết
Thông báo
Collapse
No announcement yet.
Tìm hiểu bảng quang báo
Collapse
This topic is closed.
X
X
-
bà con coi góp ý với
không thấy ai post source lên tham khảo hết.
các bác xem hộ source của tui góp ý một vài vấn đề với nha!
bảng của tui nhỏ thôi 16x96 pixel.
quét hàng, đẩy dữ liệu ra cột bằng spi.
hiện tượng chữ chạy không được đẹp lắm cảm giác hơi dật.
tui dùng một mảng display[][] để lưu giá trị hiển thị trên màn hình.
dùng timer ngắt liên tục quét và đẩy mảng này ra các thanh ghi dịch 595.
trong chương trình chính thì dịch bit các phần tử trong mảng để tạo hiệu ứng chữ chạy.
xem ra chổ này không ổn nên chữ chạy bị dật.
mí bác xem giúp phải sửa lại chổ này ntn nhỉ.giải thuật thôi.
timer ngắt quét màn hình
Code:interrupt [TIM1_OVF] void timer1_ovf_isr(void) { unsigned char i; TCNT1H=tscan;//fc //fe TCNT1L=0x55;//eo //00 for(i=0;i<12;i++) { spi(displayx[i][quet]); spi(displayd[i][quet]); } sclk=0; sclk=1; PORTB=quet++; if(quet==16) quet=0; }
Code:for(i=0;i<8;i++) { delay_ms(1); //while(quet!=0);nếu mở khóa dòng này thì bớt dật hơn for(k=0;k<12;k++) { for(j=0;j<5;j++) displayx[k][j]=(displayx[k][j]>>1)+(displayx[k+1][j]<<7); for(j=5;j<11;j++) { displayx[k][j]=(displayx[k][j]>>1)+(displayx[k+1][j]<<7); displayd[k][j]=(displayd[k][j]>>1)+(displayd[k+1][j]<<7); } for(j=11;j<16;j++) //11 displayd[k][j]=(displayd[k][j]>>1)+(displayd[k+1][j]<<7); } for(j=0;j<5;j++) displayx[k][j]=(displayx[k][j]>>1)|(_data[address+j]<<(7-i)); for(j=5;j<11;j++) { displayx[k][j]=(displayx[k][j]>>1)|(_data[address+j]<<(7-i)); displayd[k][j]=(displayd[k][j]>>1)|(_data[address+j]<<(7-i)); } for(j=11;j<16;j++) displayd[k][j]=(displayd[k][j]>>1)|(_data[address+j]<<(7-i)); if (l*8+i==diemanh-1) { break; break; } }
Cty TNHH Cơ Điện tử Hiệp Phát.
------------------------------------------
Trần Hoàng Giang
11-04-1985
Mobil: 0905 438 533
Comment
-
Nguyên văn bởi phong25_2 Xem bài viếthôm trước e có nghe 1 anh nói rằng anh ta dùng cách thúc xung để cho dòng qua led (quang báo) cao theo y muon (để cho led sáng hơn í mà, có thể lên đến cả trăm mA). các a có ai biết kĩ thuật này vui lòng chỉ e với!e
Comment
-
quang bao
Nguyên văn bởi irf540 Xem bài viếtkhông thấy ai post source lên tham khảo hết.
các bác xem hộ source của tui góp ý một vài vấn đề với nha!
bảng của tui nhỏ thôi 16x96 pixel.
quét hàng, đẩy dữ liệu ra cột bằng spi.
hiện tượng chữ chạy không được đẹp lắm cảm giác hơi dật.
tui dùng một mảng display[][] để lưu giá trị hiển thị trên màn hình.
dùng timer ngắt liên tục quét và đẩy mảng này ra các thanh ghi dịch 595.
trong chương trình chính thì dịch bit các phần tử trong mảng để tạo hiệu ứng chữ chạy.
xem ra chổ này không ổn nên chữ chạy bị dật.
mí bác xem giúp phải sửa lại chổ này ntn nhỉ.giải thuật thôi.
timer ngắt quét màn hình
Code:interrupt [TIM1_OVF] void timer1_ovf_isr(void) { unsigned char i; TCNT1H=tscan;//fc //fe TCNT1L=0x55;//eo //00 for(i=0;i<12;i++) { spi(displayx[i][quet]); spi(displayd[i][quet]); } sclk=0; sclk=1; PORTB=quet++; if(quet==16) quet=0; }
Code:for(i=0;i<8;i++) { delay_ms(1); //while(quet!=0);nếu mở khóa dòng này thì bớt dật hơn for(k=0;k<12;k++) { for(j=0;j<5;j++) displayx[k][j]=(displayx[k][j]>>1)+(displayx[k+1][j]<<7); for(j=5;j<11;j++) { displayx[k][j]=(displayx[k][j]>>1)+(displayx[k+1][j]<<7); displayd[k][j]=(displayd[k][j]>>1)+(displayd[k+1][j]<<7); } for(j=11;j<16;j++) //11 displayd[k][j]=(displayd[k][j]>>1)+(displayd[k+1][j]<<7); } for(j=0;j<5;j++) displayx[k][j]=(displayx[k][j]>>1)|(_data[address+j]<<(7-i)); for(j=5;j<11;j++) { displayx[k][j]=(displayx[k][j]>>1)|(_data[address+j]<<(7-i)); displayd[k][j]=(displayd[k][j]>>1)|(_data[address+j]<<(7-i)); } for(j=11;j<16;j++) displayd[k][j]=(displayd[k][j]>>1)|(_data[address+j]<<(7-i)); if (l*8+i==diemanh-1) { break; break; } }
Comment
-
Nguyên văn bởi irf540 Xem bài viếtkhông thấy ai post source lên tham khảo hết.
các bác xem hộ source của tui góp ý một vài vấn đề với nha!
bảng của tui nhỏ thôi 16x96 pixel.
quét hàng, đẩy dữ liệu ra cột bằng spi.
hiện tượng chữ chạy không được đẹp lắm cảm giác hơi dật.
tui dùng một mảng display[][] để lưu giá trị hiển thị trên màn hình.
dùng timer ngắt liên tục quét và đẩy mảng này ra các thanh ghi dịch 595.
trong chương trình chính thì dịch bit các phần tử trong mảng để tạo hiệu ứng chữ chạy.
xem ra chổ này không ổn nên chữ chạy bị dật.
mí bác xem giúp phải sửa lại chổ này ntn nhỉ.giải thuật thôi.
Hiện nay bác đang làm thế này, cái màn hình LED của bác đứng yên, còn cái chữ là chạy. Thành ra bác cứ phải copy từng điểm ảnh vào cái màn hình.
Bác nên đổi lại, cái chữ của bác đứng yên, cái màn hình LED của bác chạy. Công việc cho VXL sẽ nhẹ nhàng hơn. Bác hiểu ý em rồi chứ. Chỉ tốn 2 vòng lặp FOR thôi chứ không nhiều như bác làm đâu.Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.
Comment
-
Nguyên văn bởi ntcisa Xem bài viếtphương pháp bạn làm là đúng rồi, chữ bị dật là do bạn làm chỉ có 1 trang màn hình, để giải quyết thì làm 2 trang màn hình(phương pháp vẽ hình off screen).khi chương trình dịch trang màn hình này(mảng display 1)thì timer quét trang màn hình kia(mảng display 2).khi chương trình dịch xong trang màn hình này thì báo hiệu cho timer(ngắt timer)biết để timer quét trang màn hình mới(khi timer quét hết dòng cuối cùng (của bạn là dòng thứ 16)).khi đó chương trình sẽ xử lí trang màn hình kia. Tuần tự cho đến khi xử lí hết các dữ liệu của dòng chữ đó.
Vẽ hình off-screen là một kỹ thuật tuyệt vời, lập trình cũng phải phức tạp hơn 1 chút.Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.
Comment
-
1. nhìn vào cái source của tớ thấy nhiều vòng lặp là tại vì tớ muốn xuất hiện 3 màu đó mà.phía trên của một ký tự màu đỏ,khúc giữa màu cam và dưới màu xanh nên tách ra làm nhiều vòng lặp.
2. cái kiểu chia làm hai trang mình đã có nghĩ tới nhưng chưa là thử.để thử xem sao.cũng nói thêm chút xíu về phương pháp này.theo mình nghĩ nếu làm như vậy thì trang 1 và trang 2 đều phải dịch 2 bit và so le nhau như vậy đúng không.
3. "nguyên văn NGHAI HA: Theo em bác nên xem lại cái này. Mình lập trình VXL chứ không phải lập trình cho PC, thế nên phải làm sao cho em nó chạy nhẹ nhàng thôi chứ không thể làm huỳnh huỵch như với PC được.
Hiện nay bác đang làm thế này, cái màn hình LED của bác đứng yên, còn cái chữ là chạy. Thành ra bác cứ phải copy từng điểm ảnh vào cái màn hình.
Bác nên đổi lại, cái chữ của bác đứng yên, cái màn hình LED của bác chạy. Công việc cho VXL sẽ nhẹ nhàng hơn. Bác hiểu ý em rồi chứ. Chỉ tốn 2 vòng lặp FOR thôi chứ không nhiều như bác làm đâu." mình vẫn chưa hiểu ý bác lắm ở chổ này.cái màn hình led là một mảng display[][] (nếu như một màu) một ký tự cũng là letter[][].muốn chạy được chữ thì dịch màn hình rồi chép từ letter vào đúng không.cách ngược lại tớ không hiểu phải như thế nào.bác giải thích rỏ hơn đi.có đoạn source nào thì tốt quá.nói vậy khó hình dung quá.
rất cám ơn các bác đã quan tâm.Cty TNHH Cơ Điện tử Hiệp Phát.
------------------------------------------
Trần Hoàng Giang
11-04-1985
Mobil: 0905 438 533
Comment
-
Nguyên văn bởi irf540 Xem bài viết1. nhìn vào cái source của tớ thấy nhiều vòng lặp là tại vì tớ muốn xuất hiện 3 màu đó mà.phía trên của một ký tự màu đỏ,khúc giữa màu cam và dưới màu xanh nên tách ra làm nhiều vòng lặp.
2. cái kiểu chia làm hai trang mình đã có nghĩ tới nhưng chưa là thử.để thử xem sao.cũng nói thêm chút xíu về phương pháp này.theo mình nghĩ nếu làm như vậy thì trang 1 và trang 2 đều phải dịch 2 bit và so le nhau như vậy đúng không.
3. "nguyên văn NGHAI HA: Theo em bác nên xem lại cái này. Mình lập trình VXL chứ không phải lập trình cho PC, thế nên phải làm sao cho em nó chạy nhẹ nhàng thôi chứ không thể làm huỳnh huỵch như với PC được.
Hiện nay bác đang làm thế này, cái màn hình LED của bác đứng yên, còn cái chữ là chạy. Thành ra bác cứ phải copy từng điểm ảnh vào cái màn hình.
Bác nên đổi lại, cái chữ của bác đứng yên, cái màn hình LED của bác chạy. Công việc cho VXL sẽ nhẹ nhàng hơn. Bác hiểu ý em rồi chứ. Chỉ tốn 2 vòng lặp FOR thôi chứ không nhiều như bác làm đâu." mình vẫn chưa hiểu ý bác lắm ở chổ này.cái màn hình led là một mảng display[][] (nếu như một màu) một ký tự cũng là letter[][].muốn chạy được chữ thì dịch màn hình rồi chép từ letter vào đúng không.cách ngược lại tớ không hiểu phải như thế nào.bác giải thích rỏ hơn đi.có đoạn source nào thì tốt quá.nói vậy khó hình dung quá.
rất cám ơn các bác đã quan tâm.
Hiện nay bác dùng 1 bộ nhớ màn hình, bác muốn thay đổi cái gì thì thay đổi trực tiếp trên bộ nhớ màn hình đó, đúng không?
Do đó mỗi lần bác muốn dịch chữ sang bên phải, hay bên trái sẽ phải cập nhật lại toàn bộ ô nhớ màn hình.
Bây giờ bác hãy coi cái chữ bác muốn chạy là viết lên một tờ giấy thật dài. Có thể đến 1 hay 2 mét gì đó
Bác cắt một tờ giấy A4 (cái này như cái màn hình), khoét một cái lỗ chữ nhật rồi di chuyển dọc tờ giấy dài của bác từ trái qua phải hay từ phải sang trái.
Rõ ràng nếu bác coi mình đứng yên so với cái màn hình thì bác sẽ thấy chữ chạy chứ không phải màn hình chạy đúng không?
Áp dụng kỹ thuật này vào việc làm quang báo của bác. Bác viết chữ trong một mảng dài (cái tờ giấy dài ở trên)
Bộ nhớ màn hình thời điểm đầu tiên t=0 sẽ ở vị trí 1 của cái mảng trên.
Thời điểm t=t+1 sẽ ở vị trí thứ t của cái mảng trên.
Như vây bác sẽ có 2 vòng lặp, một vòng là duyệt theo độ dài của mảng dữ liệu
Vòng lặp thứ hai đếm từ 1 đến 8 (vì bác muốn mỗi lần dịch 1 pixel mà thôi)
Em nghĩ là đã giải thích rõ lắm rồi đấy.Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.
Comment
-
@IRF540: Theo em, nếu có thể cải tiến lại thuật toán, cố gắng không sử dụng mảng 2 chiều. Em chưa xem lại cơ chế dịch của C nhưng mỗi lần dùng mảng 2 chiều sẽ bắt VXL tính toán lại để chuyển sang mảng 1 chiều. Như vậy cũng làm chậm đi nhiều lắm.
À, bác có nick là IRF540 chắc bác rành con nầy lắm. Cho em xin một schematic của bác về con IRF540 này để đóng mở dòng 500mA, tần số khoảng 200-300Hz gì đó (cũng ứng dụng trong quang báo thôi). Em khoản lập trình thì tạm được chứ phần nào liên quan đến công suất, alalog thì hơi tệ. Mạch công suất của em làm thì chạy nhưng không biết nó đã tối ưu chưa.Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.
Comment
-
sờ-men-tíc đó hả.để lục lại xem cai nào được cho bác tham khảo ha.
nhưng mà tải chỉ có 500mA mà dùng tới IRF thì phí quá.Cty TNHH Cơ Điện tử Hiệp Phát.
------------------------------------------
Trần Hoàng Giang
11-04-1985
Mobil: 0905 438 533
Comment
-
Nguyên văn bởi irf540 Xem bài viếtsờ-men-tíc đó hả.để lục lại xem cai nào được cho bác tham khảo ha.
nhưng mà tải chỉ có 500mA mà dùng tới IRF thì phí quá.Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.
Comment
-
Nguyên văn bởi khoanamem đang làm quang báo dùng 4094 để ghi dịch và 2803 đệm dòng nhưng bi giờ viết chương test phần cứng coi có hoạt động chưa thì em ko bít viết làm sao cả. Anh nào bít chỉ em với
Comment
-
Nguyên văn bởi nghaiha Xem bài viếtÝ kiến của bác ntcisa bác có thể dùng khi làm những hiệu ứng phức tạp. Kiểu như chữ nhảy nhót, biến xanh thành đỏ, mất dần chữ, hiện dần chữ. Còn để làm chữ chạy thì đơn giản 2 vòng lặp FOR là đủ rồi.
Vẽ hình off-screen là một kỹ thuật tuyệt vời, lập trình cũng phải phức tạp hơn 1 chút.
Với kỹ thuật off-screen thì giải quyết rất nhiều kiểu chạy và màu sắc, nếu bạn sử dụng kiểu màu cho cả dòng text (mỗi dòng text có 1 kiểu màu- không phải mỗi ký tự 1 kiểu màu) thì bạn dùng mặt nạ màu, có nghĩa là bạn cứ vẽ ra ram màn hình nội dung cần xuất, khi timer xuất ra màn hình thì AND, OR với byte mặt nạ màu (ký tự mặt nạ màu) thì sẽ được màu mong muốn.
Lập trình vxl và lập trình PC thì cũng không có gì khác nhau(vì đều lập trình cho chip chạy).có khác biệt là vxl thì hạn chế về tài nguyên hệ thống. Đối với quang báo đó là tốc độ vì vậy cần chọn vxl có tốc độ cao (mình sử dụng AVR để làm quang báo). các giải thuật về xử lí mảng 1 chiều, 2 chiều không quan trọng miễn sao thực hiện được ý đồ của chương trình là được, nếu ASM viết không được thì viết bằng C, trình biên dịch sẽ làm cho ta tất cả.
Mình làm bảng quang báo bằng vxl ATMEGA8, over clock lên chạy thạch anh 20MHz, chạy được khoảng 15 kiểu chạy, 10 kiểu màu, nội dung gồm nhiều câucó tổng số ký tự gần 512 ký tự (vì nội dung được lưu trong 512 byte EEPROM nội của vxl), giao tiếp máy tính qua cổng RS232 để đổ nội dung từ máy tính sang(có chương trình **ạn thảo riêng do mình viết). Hôm nào tìm lại post lên cho mọi người tham khảo.
Comment
-
Nguyên văn bởi ntcisa Xem bài viếtđể làm chữ chạy đơn giản thi dùng cửa sổ màn hình( màn hình di chuyển) nhưng sẽ hạn chế về nội dung, nếu sử dụng ram 8K, với ký tự là 8x16 (cho là bộ font có độ rộng bằng nhau là 8 cột cho 1 ký tự và chiều cao của ký tự là 16 hàng), các ký tự có 3 màu thì chỉ hiển thị được khoảng 170 ký tự, tính ra cũng chỉ được 30...40 từ. nếu tăng chiều cao màn hình hoặc bộ font lớn hơn thì cần phải tăng ram.
Với kỹ thuật off-screen thì giải quyết rất nhiều kiểu chạy và màu sắc, nếu bạn sử dụng kiểu màu cho cả dòng text (mỗi dòng text có 1 kiểu màu- không phải mỗi ký tự 1 kiểu màu) thì bạn dùng mặt nạ màu, có nghĩa là bạn cứ vẽ ra ram màn hình nội dung cần xuất, khi timer xuất ra màn hình thì AND, OR với byte mặt nạ màu (ký tự mặt nạ màu) thì sẽ được màu mong muốn.
Lập trình vxl và lập trình PC thì cũng không có gì khác nhau(vì đều lập trình cho chip chạy).có khác biệt là vxl thì hạn chế về tài nguyên hệ thống. Đối với quang báo đó là tốc độ vì vậy cần chọn vxl có tốc độ cao (mình sử dụng AVR để làm quang báo). các giải thuật về xử lí mảng 1 chiều, 2 chiều không quan trọng miễn sao thực hiện được ý đồ của chương trình là được, nếu ASM viết không được thì viết bằng C, trình biên dịch sẽ làm cho ta tất cả.
Mình làm bảng quang báo bằng vxl ATMEGA8, over clock lên chạy thạch anh 20MHz, chạy được khoảng 15 kiểu chạy, 10 kiểu màu, nội dung gồm nhiều câucó tổng số ký tự gần 512 ký tự (vì nội dung được lưu trong 512 byte EEPROM nội của vxl), giao tiếp máy tính qua cổng RS232 để đổ nội dung từ máy tính sang(có chương trình **ạn thảo riêng do mình viết). Hôm nào tìm lại post lên cho mọi người tham khảo.
Còn chuyện dùng mảng 2 chiều em nói cũng có lý do, VXL sẽ phải làm cái công việc chuyển đổi từ mảng 2 chiều sang 1 chiều (mất một phép toán nhân và một phép toán cộng) mà nó lại nằm trong một vòng lặp for dài thòng thì đúng là không nên. Để dành công lực cho VXL làm việc khác.
Em cũng đang muốn làm một cái tutorial kỹ kỹ về một bảng quang báo kích thước lớn, ghép nối được nhiều module để mọi người từ đó phát triển làm những thứ phức tạp hơn. Nhưng cái đó thì cũng chưa dám hứa chắc.Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.
Comment
Bài viết mới nhất
Collapse
-
bởi vận chuyểnThủ Tục Nhập Khẩu Ly, Cốc Cách Nhiệt, Phích Chân Không
Nhập khẩu ly cách nhiệt, cốc cách nhiệt vào Việt Nam có khó không?
Ly cách nhiệt, cốc cách nhiệt có phải làm công bố không?
Các giấy tờ cần thiết để nhập khẩu ly cách nhiệt, cốc cách nhiệt
Mã HS ly cách nhiệt,...-
Channel: Quảng cáo
hôm nay, 11:22 -
-
bởi nttvy27Nếu bạn đang có nhu cầu tìm dịch vụ nấu tiệc tại nhà uy tín, chất lượng mà giá cả phải chăng, chúng tôi sẽ gợi ý cho bạn Top các cơ sở nhận đặt tiệc, nhận nấu tiệc tại nhà, nhận nấu đám cưới trọn gói chuyên nghiệp ở TP.HCM.
DATTIEC24H - nhận đặt tiệc tại nhà
Với nhiều năm...-
Channel: Quảng cáo
hôm nay, 09:25 -
-
Trả lời cho Khác nhau giữa mạch cân bằng chủ động toàn dãy và mạch cân bằng chủ động kiểu so áp 2 string liền kề.bởi louisnkCụ đã lên design chi tiết cho mạch để test chưa?
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 08:12 -
-
bởi Manh.n.trMọi người cho em hỏi có bác nào làm project mạch đo độ mặn chưa ạ. Cho em hỏi có bác nào mô phỏng được trên Proteus không ạ? Em sinh viên đầu năm 3 tay mơ chưa biết nhiều mong mọi người giúp đỡ ạ
-
Channel: Các mạch điện ứng dụng
17-09-2024, 13:54 -
-
Trả lời cho Xin hỏi về mạch khuếch đạibởi yname11Ko đc bác ạ, mạch nó tự ngắt. Thôi đành dùng 1 kênh vậy, thanks bác nhé....
-
Channel: Điện thanh
15-09-2024, 10:44 -
-
bởi nguyendinhvanTôi thì không học về MCU, không giỏi về VXL , cũng mờ tịt về công nghiệp thực phẩm, nhưng cũng cố gắng tự làm được cái này.
Đồ ở chợ mua về cứ đặt ở sân, rồi xếp cái máy này lên trên, rồi đi chơi.
Một lúc sau quay...-
Channel: Tâm tình dân kỹ thuật
15-09-2024, 02:36 -
-
Trả lời cho Thép hàn cube led ???bởi nguyendinhvanRa chợ kim khí mua, có nhiều loại to nhỏ. Họ bán cho thợ xây dựng buộc khung đúc bê tông.
Về cắt thành đoạn.
Nhưng làm cho các đoạn dây thép đó thẳng tưng như cái gói mì Ý, thì cũng đòi hỏi công nghệ khéo tay.-
Channel: Điện tử dành cho người mới bắt đầu
15-09-2024, 02:03 -
-
Trả lời cho Thép hàn cube led ???bởi bqvietThép nào cũng hàn thiếc được : thép các-bon, thép không gỉ ... miễn là có chất trợ dung phù hợp. Dùng nhựa thông bình thường thì khó hàn, nhưng trên thị trường bán nhiều loại chất trợ dung đủ kiểu. Đơn giản nhất là dung dịch kẽm clorua ZnCl2.
-
Channel: Điện tử dành cho người mới bắt đầu
15-09-2024, 00:34 -
-
bởi tuyenda1985Các bác cho em hỏi.
Định làm cube led chơi chơi, nhưng vụ que thép để cho nó cứng
Mà chưa biết mua ntn, vì đang alwn tăn, loại này là loại nào (như hình em úp) mà có thể dùng thiếc hàn ??
Cảm ơn...-
Channel: Điện tử dành cho người mới bắt đầu
14-09-2024, 22:05 -
-
Trả lời cho Xin hỏi về mạch khuếch đạibởi thetungPhương án của bạn có thể được ,nhưng có thể rủi ro . Mặt khác bạn muốn tăng công suất thì phải giảm trở kháng của loa ( thí dụ dùng loa 2 ohm )...
-
Channel: Điện thanh
14-09-2024, 11:46 -
Comment