Thông báo

Collapse
No announcement yet.

giúp mình về quét phim 4x4 xuất ra LCD

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

  • giúp mình về quét phim 4x4 xuất ra LCD

    mình viết chương trình lập trình C xuất một số khi nhấn 1 phím số tương ứng ra LCD. LCD và mạch thì mình đã test chạy tốt nhưng không hiểu chương trình mình viết sai chỗ nào mà khi chạy LCD chỉ sáng lên chứ không có hiển thị số? Mong các bác giúp mình. thanks!


    #include <AT89X52.H>
    #include "lcd.h"

    //chuong trinh quet phim nhan 4x3 (4 hang 3 cot)
    //p2.0-2.2 cot
    //p2.4-2.7 hang
    sbit ROW_1=P2^0;
    sbit ROW_2=P2^1;
    sbit ROW_3=P2^2;
    sbit ROW_4=P2^3;
    sbit COL_1=P2^4;
    sbit COL_2=P2^5;
    sbit COL_3=P2^6;
    sbit COL_4=P2^7;

    char str1[10] = "1234567890";
    int sttphim;
    //int t;
    //===============================
    void delay(unsigned int time)
    {
    while(time--)
    {
    int k = 121;
    while(k--){}
    }
    }
    /************************sua chua***********************/
    void Quet_Phim(void) {
    // Hang lam dau vao, Cot lam dau ra muc thap
    ROW_1 = 1;
    ROW_2 = 1;
    ROW_3 = 1;
    ROW_4 = 1;
    COL_1 = 0;
    COL_2 = 0;
    COL_3 = 0;
    COL_4 = 0;

    // t = 0;
    //Kiem tra xem co phim nao dc bam hay ko?
    while (1)
    {

    if ((!ROW_1) || (!ROW_2) || (!ROW_3) || (!ROW_4)) {
    delay(30);
    //Neu hang 1 co phim dc bam
    if (!ROW_1) {
    COL_1 = 1;
    COL_2 = 1;
    COL_3 = 1;
    COL_4 = 1;
    ROW_1 = 0;
    if (!COL_1) { //1
    while(!COL_1);
    delay(50);
    sttphim = 1;
    break;
    //t = 1;
    }
    else if (!COL_2) { //2
    while(!COL_2);
    delay(50);
    sttphim = 2;
    //t = 1;
    break;
    }
    else if (!COL_3) { //3
    while(!COL_3);
    delay(50);
    sttphim = 3;
    //t = 1;
    break;
    }
    else if (!COL_4) { //4
    while(!COL_4);
    delay(50);
    sttphim = 4;
    //t = 1;
    break;
    }

    };
    //Neu hang 2 co phim dc bam
    if (!ROW_2) {
    COL_1 = 1;
    COL_2 = 1;
    COL_3 = 1;
    COL_4 = 1;
    ROW_2 = 0;
    if (!COL_1) { //5
    while(!COL_1);
    delay(50);
    sttphim = 5;
    //t = 1;
    break;
    }
    else if (!COL_2) { //6
    while(!COL_2);
    delay(50);
    sttphim = 6;
    //t = 1;
    break;
    }
    else if (!COL_3) { //7
    while(!COL_3);
    delay(50);
    sttphim = 7;
    //t = 1;
    break;
    }
    else if (!COL_4) { //8
    while(!COL_4);
    delay(50);
    sttphim = 8;
    //t = 1;
    break;
    }
    };
    //Neu hang 3 co phim dc bam
    if (!ROW_3) {
    COL_1 = 1;
    COL_2 = 1;
    COL_3 = 1;
    COL_4 = 1;
    ROW_3 = 0;
    if (!COL_1) { //9
    delay(50);
    while(!COL_1);
    delay(50);
    sttphim = 9;
    //t = 1;
    break;
    }
    else if (!COL_2) { //0
    delay(30);
    while(!COL_2);
    delay(30);
    sttphim = 10;
    //t = 1;
    break;
    }
    else if (!COL_3) {
    delay(30);
    while(!COL_3);
    delay(30);
    //t = 1;
    }
    else if (!COL_4) {
    delay(30);
    while(!COL_3);
    delay(30);
    //t = 1;
    }
    };
    }
    }
    }
    /* //Neu hang 4 co phim dc bam
    if (!ROW_4) {
    COL_1 = 1;
    COL_2 = 1;
    COL_3 = 1;
    COL_4 = 1;
    ROW_4 = 0;
    if (!COL_1) {
    delay(50);
    while(!COL_1);
    delay(50);
    }
    else if (!COL_2) {
    delay(30);
    while(!COL_2);
    delay(30);
    mod--;
    if (mod <= 1) mod = 1;
    nhap_nhay_1 = nhap_nhay_2 = nhap_nhay_3 = nhap_nhay_4 = 0;
    }
    else if (!COL_3) {
    delay(30);
    while(!COL_3);
    delay(30);
    mod++;
    if (mod >= 4) mod = 4;
    nhap_nhay_1 = nhap_nhay_2 = nhap_nhay_3 = nhap_nhay_4 = 0;
    }
    else if (!COL_4) {
    delay(30);
    while(!COL_3);
    delay(30);

    en_ex = !en_ex;
    nhap_nhay_1 = nhap_nhay_2 = nhap_nhay_3 = nhap_nhay_4 = 0;
    // send data
    if (!en_ex) {
    if ((n1 != 10) && (n2 != 10) && (n3 != 10) && (n4 != 10)) {
    ID_H = n1*10 + n2;
    ID_L = n3*10 + n4;
    ma_ID = ID_H*100 + ID_L;
    Send_DATA(ID_H,ID_L);
    };
    }
    n1 = n2 = n3 = n4 =10;
    mod = 1;
    //nhap_nhay_1 = nhap_nhay_2 = nhap_nhay_3 = nhap_nhay_4 = 0;
    }
    };
    }
    }
    /************************sua chua***********************/
    void main()
    {
    unsigned int i;
    LCD_Init();
    LCD_Clear();
    delay(150);
    for(i = 0; i<16;i++)
    {
    LCD_Position(0,i);
    quetphim();
    LCD_PutChar(str1[sttphim]);
    delay(10);
    }
    for(i = 0; i<16;i++)
    {
    LCD_Position(1,i);
    quetphim();
    LCD_PutChar(str1[sttphim]);
    delay(10);
    }
    delay(2000);

    while(1){}
    }

  • #2
    chỉnh contrac ở chân số 3 của LCD chưa. quét phím mà ném ra ngoài vòng while(1) thì hiển thị bằng mắt ah

    Comment


    • #3
      mình chỉnh rồi. LCD của mình hiển thị những cái khác vẫn bình thường duy chỉ cái quét phím này là không được. còn cái while (1) mình cho nó hẳn vào chương trình quét phím rồi mà bạn. mình không hiểu code mình sai chỗ nào nữa. bạn sửa lại giúp mình với nhé! thanks

      Comment


      • #4
        không ai giúp mình với à!? giúp mình với plz!?

        Comment


        • #5
          bạn kêu code tự viết là 4x3 nhưng cái code này là 4x4 chứ k phải 4x3 => đi copy
          code này phần quét phím quá phức tạp, mặc dù cũng hiểu đúng nguyên lý quét rồi nhưng để quét hết 1 hàng mất time quá
          bây giờ vẫn với code này, bạn thử bỏ phần quét bàn phím đi, và cho hiển thị 1 kí tự bất kì xem có đc ko đã
          Website chính thức đổi địa chỉ website thành
          Mời các bạn ghé thăm !!!

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • mèomướp
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi mèomướp
            Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
            Hôm qua, 13:11
          • tuyennhan
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi tuyennhan
            Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
            Hôm qua, 09:25
          • tuyennhan
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi tuyennhan
            Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
            Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
            Hôm qua, 09:10
          • Ng.Phuong.5
            Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
            bởi Ng.Phuong.5
            Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
            Mấy con...
            09-01-2025, 19:44
          • viettinh
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi viettinh
            Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
            Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
            09-01-2025, 18:12
          • nguyendinhvan
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi nguyendinhvan
            Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
            Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
            Cách đơn giản...
            09-01-2025, 00:04
          • mèomướp
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi mèomướp
            Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
            08-01-2025, 19:02
          • tuyennhan
            Trả lời cho Sửa bộ nguồn DC 60V 45A
            bởi tuyennhan
            Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
            08-01-2025, 15:43
          • tuyennhan
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi tuyennhan
            Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
            08-01-2025, 15:28
          • mèomướp
            Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
            bởi mèomướp
            Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
            08-01-2025, 11:44
          Đang tải...
          X