Thông báo

Collapse
No announcement yet.

cách tạo mã font asii.

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • cách tạo mã font asii.

    em thấy trên mạng có đoạn như thế này.
    flash unsigned char font[96][5]=
    {
    {0x00, 0x00, 0x00, 0x00, 0x00},// (space)
    {0x00, 0x00, 0x5F, 0x00, 0x00},// !
    {0x00, 0x07, 0x00, 0x07, 0x00},// "
    {0x14, 0x7F, 0x14, 0x7F, 0x14},// #
    {0x24, 0x2A, 0x7F, 0x2A, 0x12},// $
    {0x23, 0x13, 0x08, 0x64, 0x62},// %
    {0x36, 0x49, 0x55, 0x22, 0x50},// &
    {0x00, 0x05, 0x03, 0x00, 0x00},// '
    {0x00, 0x1C, 0x22, 0x41, 0x00},// (
    {0x00, 0x41, 0x22, 0x1C, 0x00},// )
    {0x08, 0x2A, 0x1C, 0x2A, 0x08},// *
    {0x08, 0x08, 0x3E, 0x08, 0x08},// +
    {0x00, 0x50, 0x30, 0x00, 0x00},// ,
    {0x08, 0x08, 0x08, 0x08, 0x08},// -
    {0x00, 0x30, 0x30, 0x00, 0x00},// .
    {0x20, 0x10, 0x08, 0x04, 0x02},// /
    {0x3E, 0x51, 0x49, 0x45, 0x3E},// 0
    {0x00, 0x42, 0x7F, 0x40, 0x00},// 1
    {0x42, 0x61, 0x51, 0x49, 0x46},// 2
    {0x21, 0x41, 0x45, 0x4B, 0x31},// 3
    {0x18, 0x14, 0x12, 0x7F, 0x10},// 4
    {0x27, 0x45, 0x45, 0x45, 0x39},// 5
    {0x3C, 0x4A, 0x49, 0x49, 0x30},// 6
    {0x01, 0x71, 0x09, 0x05, 0x03},// 7
    {0x36, 0x49, 0x49, 0x49, 0x36},// 8
    {0x06, 0x49, 0x49, 0x29, 0x1E},// 9
    {0x00, 0x36, 0x36, 0x00, 0x00},// :
    {0x00, 0x56, 0x36, 0x00, 0x00},// ;
    {0x00, 0x08, 0x14, 0x22, 0x41},// <
    {0x14, 0x14, 0x14, 0x14, 0x14},// =
    {0x41, 0x22, 0x14, 0x08, 0x00},// >
    {0x02, 0x01, 0x51, 0x09, 0x06},// ?
    {0x32, 0x49, 0x79, 0x41, 0x3E},// @
    {0x7E, 0x11, 0x11, 0x11, 0x7E},// A
    {0x7F, 0x49, 0x49, 0x49, 0x36},// B
    {0x3E, 0x41, 0x41, 0x41, 0x22},// C
    {0x7F, 0x41, 0x41, 0x22, 0x1C},// D
    {0x7F, 0x49, 0x49, 0x49, 0x41},// E
    {0x7F, 0x09, 0x09, 0x01, 0x01},// F
    {0x3E, 0x41, 0x41, 0x51, 0x32},// G
    {0x7F, 0x08, 0x08, 0x08, 0x7F},// H
    {0x00, 0x41, 0x7F, 0x41, 0x00},// I
    {0x20, 0x40, 0x41, 0x3F, 0x01},// J
    {0x7F, 0x08, 0x14, 0x22, 0x41},// K
    {0x7F, 0x40, 0x40, 0x40, 0x40},// L
    {0x7F, 0x02, 0x04, 0x02, 0x7F},// M
    {0x7F, 0x04, 0x08, 0x10, 0x7F},// N
    {0x3E, 0x41, 0x41, 0x41, 0x3E},// O
    {0x7F, 0x09, 0x09, 0x09, 0x06},// P
    {0x3E, 0x41, 0x51, 0x21, 0x5E},// Q
    {0x7F, 0x09, 0x19, 0x29, 0x46},// R
    {0x46, 0x49, 0x49, 0x49, 0x31},// S
    {0x01, 0x01, 0x7F, 0x01, 0x01},// T
    {0x3F, 0x40, 0x40, 0x40, 0x3F},// U
    {0x1F, 0x20, 0x40, 0x20, 0x1F},// V
    {0x7F, 0x20, 0x18, 0x20, 0x7F},// W
    {0x63, 0x14, 0x08, 0x14, 0x63},// X
    {0x03, 0x04, 0x78, 0x04, 0x03},// Y
    {0x61, 0x51, 0x49, 0x45, 0x43},// Z
    {0x00, 0x00, 0x7F, 0x41, 0x41},// [
    {0x02, 0x04, 0x08, 0x10, 0x20},// "\"
    {0x41, 0x41, 0x7F, 0x00, 0x00},// ]
    {0x04, 0x02, 0x01, 0x02, 0x04},// ^
    {0x40, 0x40, 0x40, 0x40, 0x40},// _
    {0x00, 0x01, 0x02, 0x04, 0x00},// `
    {0x20, 0x54, 0x54, 0x54, 0x78},// a
    {0x7F, 0x48, 0x44, 0x44, 0x38},// b
    {0x38, 0x44, 0x44, 0x44, 0x20},// c
    {0x38, 0x44, 0x44, 0x48, 0x7F},// d
    {0x38, 0x54, 0x54, 0x54, 0x18},// e
    {0x08, 0x7E, 0x09, 0x01, 0x02},// f
    {0x08, 0x14, 0x54, 0x54, 0x3C},// g
    {0x7F, 0x08, 0x04, 0x04, 0x78},// h
    {0x00, 0x44, 0x7D, 0x40, 0x00},// i
    {0x20, 0x40, 0x44, 0x3D, 0x00},// j
    {0x00, 0x7F, 0x10, 0x28, 0x44},// k
    {0x00, 0x41, 0x7F, 0x40, 0x00},// l
    {0x7C, 0x04, 0x18, 0x04, 0x78},// m
    {0x7C, 0x08, 0x04, 0x04, 0x78},// n
    {0x38, 0x44, 0x44, 0x44, 0x38},// o
    {0x7C, 0x14, 0x14, 0x14, 0x08},// p
    {0x08, 0x14, 0x14, 0x18, 0x7C},// q
    {0x7C, 0x08, 0x04, 0x04, 0x08},// r
    {0x48, 0x54, 0x54, 0x54, 0x20},// s
    {0x04, 0x3F, 0x44, 0x40, 0x20},// t
    {0x3C, 0x40, 0x40, 0x20, 0x7C},// u
    {0x1C, 0x20, 0x40, 0x20, 0x1C},// v
    {0x3C, 0x40, 0x30, 0x40, 0x3C},// w
    {0x44, 0x28, 0x10, 0x28, 0x44},// x
    {0x0C, 0x50, 0x50, 0x50, 0x3C},// y
    {0x44, 0x64, 0x54, 0x4C, 0x44},// z
    {0x00, 0x08, 0x36, 0x41, 0x00},// {
    {0x00, 0x00, 0x7F, 0x00, 0x00},// |
    {0x00, 0x41, 0x36, 0x08, 0x00},// }
    {0x08, 0x08, 0x2A, 0x1C, 0x08},// ->
    {0x08, 0x1C, 0x2A, 0x08, 0x08} // <-
    };
    ///////////////////////////////////.........................
    sau đó có hàn.
    void lcd_putchar(unsigned char c)
    {
    int i;
    for ( i = 0; i < 5; i++ )
    {
    lcd_write(DATA,font[c - 32][i] << 1);
    }
    lcd_write(DATA,0x00);
    }
    void lcd_putsf(flash char *str)
    {
    lcd_write(CMD,0xae);
    while (*str)
    {
    lcd_putchar(*str++);
    }
    lcd_write(CMD,0xaf);
    }
    em muốn hỏi là tại sao khi gọi hàm lcd_putsf("khong hieu") thì chưng trình lại có thể nhảy đến đúng các chữ tại mã font để hiển thị ra màn hình.
    các anh có thể nói cụ thể 1 chút không.
    em mới học 8051 lên hỏi có ngu ngu ở đâu thì các anh thông cảm nhé.

  • #2
    ai giúp em với.

    Comment


    • #3
      Nguyên văn bởi voiviqua Xem bài viết
      ai giúp em với.
      Nguyên văn bởi voiviqua Xem bài viết
      em thấy trên mạng có đoạn như thế này.
      ......
      em muốn hỏi là tại sao khi gọi hàm lcd_putsf("khong hieu") thì chưng trình lại có thể nhảy đến đúng các chữ tại mã font để hiển thị ra màn hình.
      các anh có thể nói cụ thể 1 chút không.
      em mới học 8051 lên hỏi có ngu ngu ở đâu thì các anh thông cảm nhé.
      Thế này bạn nhé:
      1.
      - Bạn hình dung Bảng mã ASCII là một tập hợp (một mảng 1 chiều - cho dễ hình dung), tập hợp này có 256 phần tử mỗi phần tử được gọi là 1 ký tự.
      - Có hai loại ký tự: Ký tự hiển thị (vd: A,B,C, d,e,f...- là những ký tự ta có thể trông thấy, kể cả dấu cách hay dấu Tab) và ký tự điều khiển(Enter, Home, End...).
      - Mỗi ký tự có một vị trí cố định trong bảng ASCII, đây là quy ước chung.
      2.
      - Cái bảng font mà bạn nêu ra cũng là một tập hợp, nó chỉ quan tâm đến các ký tự thường dùng hiển thị nên chỉ có 96 phần tử, nó là tập con của Bảng ASCII
      - Bảng font được bắt đầu từ ký tự cách (ký tự cách là ký tự thứ 32 trong bảng ASCII).
      - Vì vậy khi gọi hàm lcd_putsf("khong hieu") thì từng ký tự trong chuỗi "khong hieu" sẽ được trừ đi 32 để trỏ đến đúng ký tự bạn cần vẽ:
      ví dụ: chữ "k" trong bảng ASCII nằm ở vị trí thứ 107 (tính cả zero nhé): 107 - 32 = 75 rơi trúng vào dòng thứ 75 là dòng {0x00, 0x7F, 0x10, 0x28, 0x44},// k của bảng Font.
      3.
      - Vòng lặp
      for ( i = 0; i < 5; i++ ){lcd_write(DATA,font[c - 32][i] << 1);}
      có tác dụng vẽ vào một ma trận 8x5 điểm ảnh ký tự (c) mà bạn muốn hiển thị (Ma trận ấy là LED hay LCD đều không khác nhau).
      4. Túm lại cần để ý nhất là: Bảng font là bảng con chứa từ phần tử thứ 32 đến phần tử thứ 96+32 của Bảng ASCII. Và phép trừ c-32 là để bù lại độ lệch của hai phần tử đầu tiên trong hai bảng.

      P/S: Mình nói hơi lòng vòng, nhưng do chưa biết bạn đã nắm được gì để trả lời từ đâu... Có gì chưa rõ đừng ngại hỏi...
      Last edited by Acxen_lupine; 25-01-2013, 00:54.
      Hôm nay trời nắng chang chang.
      Mèo con đi học chẳng mang thứ gì.
      Chỉ mang một cái bút chì.
      Và mang một mẩu bánh mì con con.

      Comment


      • #4
        cảm ơn anh acxen_..
        em có viết 1 chương trình thế này.

        #include <REGX52.H>
        unsigned char code font[96][5]=
        {
        {0x00, 0x00, 0x00, 0x00, 0x00},// (space)
        {0x00, 0x00, 0x5F, 0x00, 0x00},// !
        {0x00, 0x07, 0x00, 0x07, 0x00},// "
        {0x14, 0x7F, 0x14, 0x7F, 0x14},// #
        {0x24, 0x2A, 0x7F, 0x2A, 0x12},// $
        {0x23, 0x13, 0x08, 0x64, 0x62},// %
        {0x36, 0x49, 0x55, 0x22, 0x50},// &
        {0x00, 0x05, 0x03, 0x00, 0x00},// '
        {0x00, 0x1C, 0x22, 0x41, 0x00},// (
        {0x00, 0x41, 0x22, 0x1C, 0x00},// )
        {0x08, 0x2A, 0x1C, 0x2A, 0x08},// *
        {0x08, 0x08, 0x3E, 0x08, 0x08},// +
        {0x00, 0x50, 0x30, 0x00, 0x00},// ,
        {0x08, 0x08, 0x08, 0x08, 0x08},// -
        {0x00, 0x30, 0x30, 0x00, 0x00},// .
        {0x20, 0x10, 0x08, 0x04, 0x02},// /
        {0x3E, 0x51, 0x49, 0x45, 0x3E},// 0
        {0x00, 0x42, 0x7F, 0x40, 0x00},// 1
        {0x42, 0x61, 0x51, 0x49, 0x46},// 2
        {0x21, 0x41, 0x45, 0x4B, 0x31},// 3
        {0x18, 0x14, 0x12, 0x7F, 0x10},// 4
        {0x27, 0x45, 0x45, 0x45, 0x39},// 5
        {0x3C, 0x4A, 0x49, 0x49, 0x30},// 6
        {0x01, 0x71, 0x09, 0x05, 0x03},// 7
        {0x36, 0x49, 0x49, 0x49, 0x36},// 8
        {0x06, 0x49, 0x49, 0x29, 0x1E},// 9
        {0x00, 0x36, 0x36, 0x00, 0x00},// :
        {0x00, 0x56, 0x36, 0x00, 0x00},// ;
        {0x00, 0x08, 0x14, 0x22, 0x41},// <
        {0x14, 0x14, 0x14, 0x14, 0x14},// =
        {0x41, 0x22, 0x14, 0x08, 0x00},// >
        {0x02, 0x01, 0x51, 0x09, 0x06},// ?
        {0x32, 0x49, 0x79, 0x41, 0x3E},// @
        {0x7E, 0x11, 0x11, 0x11, 0x7E},// A
        {0x7F, 0x49, 0x49, 0x49, 0x36},// B
        {0x3E, 0x41, 0x41, 0x41, 0x22},// C
        {0x7F, 0x41, 0x41, 0x22, 0x1C},// D
        {0x7F, 0x49, 0x49, 0x49, 0x41},// E
        {0x7F, 0x09, 0x09, 0x01, 0x01},// F
        {0x3E, 0x41, 0x41, 0x51, 0x32},// G
        {0x7F, 0x08, 0x08, 0x08, 0x7F},// H
        {0x00, 0x41, 0x7F, 0x41, 0x00},// I
        {0x20, 0x40, 0x41, 0x3F, 0x01},// J
        {0x7F, 0x08, 0x14, 0x22, 0x41},// K
        {0x7F, 0x40, 0x40, 0x40, 0x40},// L
        {0x7F, 0x02, 0x04, 0x02, 0x7F},// M
        {0x7F, 0x04, 0x08, 0x10, 0x7F},// N
        {0x3E, 0x41, 0x41, 0x41, 0x3E},// O
        {0x7F, 0x09, 0x09, 0x09, 0x06},// P
        {0x3E, 0x41, 0x51, 0x21, 0x5E},// Q
        {0x7F, 0x09, 0x19, 0x29, 0x46},// R
        {0x46, 0x49, 0x49, 0x49, 0x31},// S
        {0x01, 0x01, 0x7F, 0x01, 0x01},// T
        {0x3F, 0x40, 0x40, 0x40, 0x3F},// U
        {0x1F, 0x20, 0x40, 0x20, 0x1F},// V
        {0x7F, 0x20, 0x18, 0x20, 0x7F},// W
        {0x63, 0x14, 0x08, 0x14, 0x63},// X
        {0x03, 0x04, 0x78, 0x04, 0x03},// Y
        {0x61, 0x51, 0x49, 0x45, 0x43},// Z
        {0x00, 0x00, 0x7F, 0x41, 0x41},// [
        {0x02, 0x04, 0x08, 0x10, 0x20},// "\"
        {0x41, 0x41, 0x7F, 0x00, 0x00},// ]
        {0x04, 0x02, 0x01, 0x02, 0x04},// ^
        {0x40, 0x40, 0x40, 0x40, 0x40},// _
        {0x00, 0x01, 0x02, 0x04, 0x00},// `
        {0x20, 0x54, 0x54, 0x54, 0x78},// a
        {0x7F, 0x48, 0x44, 0x44, 0x38},// b
        {0x38, 0x44, 0x44, 0x44, 0x20},// c
        {0x38, 0x44, 0x44, 0x48, 0x7F},// d
        {0x38, 0x54, 0x54, 0x54, 0x18},// e
        {0x08, 0x7E, 0x09, 0x01, 0x02},// f
        {0x08, 0x14, 0x54, 0x54, 0x3C},// g
        {0x7F, 0x08, 0x04, 0x04, 0x78},// h
        {0x00, 0x44, 0x7D, 0x40, 0x00},// i
        {0x20, 0x40, 0x44, 0x3D, 0x00},// j
        {0x00, 0x7F, 0x10, 0x28, 0x44},// k
        {0x00, 0x41, 0x7F, 0x40, 0x00},// l
        {0x7C, 0x04, 0x18, 0x04, 0x78},// m
        {0x7C, 0x08, 0x04, 0x04, 0x78},// n
        {0x38, 0x44, 0x44, 0x44, 0x38},// o
        {0x7C, 0x14, 0x14, 0x14, 0x08},// p
        {0x08, 0x14, 0x14, 0x18, 0x7C},// q
        {0x7C, 0x08, 0x04, 0x04, 0x08},// r
        {0x48, 0x54, 0x54, 0x54, 0x20},// s
        {0x04, 0x3F, 0x44, 0x40, 0x20},// t
        {0x3C, 0x40, 0x40, 0x20, 0x7C},// u
        {0x1C, 0x20, 0x40, 0x20, 0x1C},// v
        {0x3C, 0x40, 0x30, 0x40, 0x3C},// w
        {0x44, 0x28, 0x10, 0x28, 0x44},// x
        {0x0C, 0x50, 0x50, 0x50, 0x3C},// y
        {0x44, 0x64, 0x54, 0x4C, 0x44},// z
        {0x00, 0x08, 0x36, 0x41, 0x00},// {
        {0x00, 0x00, 0x7F, 0x00, 0x00},// |
        {0x00, 0x41, 0x36, 0x08, 0x00},// }
        {0x08, 0x08, 0x2A, 0x1C, 0x08},// ->
        {0x08, 0x1C, 0x2A, 0x08, 0x08}, // <-
        };
        sbit EN =P3^0;
        sbit RW =P3^1;
        sbit DS =P3^2;
        sbit CS1= P3^3;
        sbit CS2 =P3^4;
        sbit BY =P2^7;
        void delay(long d)
        {
        long f;
        for(f=0;f<d;f++);
        }
        void tre(void)
        {
        unsigned char n;
        for(n=0;n<5;n++);
        }
        void chonchip(char a)
        {
        if(a==0) {CS1=1;CS2=0;}
        else {CS1=0;CS2=1;}
        tre();
        }
        void cho(void)
        {
        P2=0;
        DS=0;
        RW=1;
        EN=1;
        tre();
        EN=0;
        while(BY==1){EN=1;tre();EN=0;}
        }
        void set(char on)
        {
        cho();
        RW=0;
        DS=0;
        P2=(0x3E+on);
        EN=1;
        tre();
        EN=0;
        }
        void cot(unsigned char socot)
        {
        cho();
        RW=DS=0;
        P2=(0x40+socot);
        EN=1;
        tre();
        EN=0;
        }
        void hang(unsigned char sohang)
        {
        cho();
        RW=DS=0;
        P2=(0xB8+sohang);
        EN=1;
        tre();
        EN=0;
        }
        void cuon(unsigned char hangcuon)
        {
        cho();
        RW=DS=0;
        P2=(0xC0+hangcuon);
        EN=1;
        tre();
        EN=0;
        }
        void init(void)
        {
        chonchip(0);
        set(1);
        cot(0);
        hang(0);
        cuon(0);
        chonchip(1);
        set(1);
        cot(0);
        hang(0);
        cuon(0);
        }
        void gotoxy(unsigned char x,unsigned char y)
        {
        if(y<64) {chonchip(0);
        cot(y);
        hang(x);
        }
        if(y>63){chonchip(1);
        cot(y-64);
        hang(x);
        }
        }
        void viet(unsigned char chu)
        {
        cho();
        DS=1;
        RW=0;
        P2=chu;
        EN=1;
        tre();
        EN=0;
        tre();
        }
        void xoa(void)
        {
        unsigned char cot,hang;
        for(hang=0;hang<8;hang++)
        {
        gotoxy(hang,0);
        for(cot=0;cot<64;cot++)
        {viet(0);}
        }
        for(hang=0;hang<8;hang++)
        {
        gotoxy(hang,64);
        for(cot=64;cot<128;cot++)
        {viet(0);}
        }
        }
        void vietchuoi(unsigned char r)
        {
        unsigned char g;
        for(g=0;g<5;g++)
        {
        viet(font[r-32][g]);
        }
        }
        void ve(unsigned char *j)
        {
        unsigned long n,v,b,m;
        for(v=0;v<8;v++)
        {
        gotoxy(v,0);
        for(b=0;b<64;b++)
        {
        m=v*128+b;
        viet(j[m]);
        }
        gotoxy(v,64);
        for(n=64;n<128;n++)
        {
        m=v*128+n;
        viet(j[m]);
        }
        }
        }
        void main()
        {
        init();
        xoa();
        while(1)
        {
        gotoxy(2,66);
        viet(0x55);delay(40000);
        xoa();delay(30000);
        gotoxy(4,6);
        vietchuoi("d");delay(50000);
        xoa();delay(30000);
        }
        }

        vậy anh cho em hỏi chương trình này của em sai ở đâu mà em không viết được chữ d ra màn hình.em viết cho GLCD 128x64 (LGM12641BS1R)
        Phải sửa sao cho đúng ạ.
        em chưa dùng mảng 2 chiều bao giờ lên chưa rõ,nếu em hỏi sai gì thì anh bỏ qua cho em.

        Comment


        • #5
          Nguyên văn bởi voiviqua Xem bài viết
          cảm ơn anh acxen_..
          em có viết 1 chương trình thế này.


          vậy anh cho em hỏi chương trình này của em sai ở đâu mà em không viết được chữ d ra màn hình.em viết cho GLCD 128x64 (LGM12641BS1R)
          Phải sửa sao cho đúng ạ.
          em chưa dùng mảng 2 chiều bao giờ lên chưa rõ,nếu em hỏi sai gì thì anh bỏ qua cho em.
          Bạn có hỏi sai thì tôi cũng bỏ qua, nhưng tôi ghét nhất ai gọi tên tôi mà không đủ (Acxen_lupine - hay có thể là Arsene Lupin / Acxen Luypanh).
          Tôi không căng mắt để Debug code cho bạn được.
          Mai rảnh tôi Post cho bạn 2 Pờ rô dếch về con LCD này, bạn tham khảo sẽ tự sửa được thôi... giờ muộn rồi.
          G9!
          Hôm nay trời nắng chang chang.
          Mèo con đi học chẳng mang thứ gì.
          Chỉ mang một cái bút chì.
          Và mang một mẩu bánh mì con con.

          Comment

          Về tác giả

          Collapse

          voiviqua Tìm hiểu thêm về voiviqua

          Bài viết mới nhất

          Collapse

          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          • afrendly
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi afrendly
            Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
            04-12-2025, 01:27
          • nick22
            Trả lời cho Máy điện châm ?
            bởi nick22
            Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
            01-12-2025, 13:23
          Đang tải...
          X