Thông báo

Collapse
No announcement yet.

đến nản với con LCD. cao thủ nào giúp em vói

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

  • #31
    nó hiện như vậy là đã khởi tạo được LCD rồi đó bạn. Bạn xem trong file lcd.c có khúc này trong hàm lcd_putc:

    if(isprint(c)){
    lcd_put_byte(1, c);
    while(lcd_busy());
    }


    mình không biết hàm isprint có tác dụng gì nhưng mình nghĩ nên sửa lại thành :

    lcd_put_byte(1,c);
    while(lcd_busy());


    Do bạn đã khởi tạo được LCD nên chắc chắn là bạn đã gửi được byte ra LCD do đó trong hàm main bạn có thể dùng hàm lcd_put_byte để test việc gửi kí tự cũng được. Ví dụ ghi là : lcd_put_byte(1,65);(Hiện chữ A)

    Comment


    • #32
      tình hình là mình đã sửa file lcd.c như bạn nói, thử đủ kiểu (lcd_putc(0x30); lcd_puts("hello"); lcd_put_byte(1, 65);...) nhưng vẫn không có hiện tượng gì hết ! có phải lỗi của thư viện lcd.c ???

      Comment


      • #33
        Mình đã chạy debug và phát hiện ra đoạn code sau không chạy

        Code:
        	temp.Val = b;
        	
        	// send the high nibble
        	LCD_DATA4 = temp.bits.b4;
        	LCD_DATA5 = temp.bits.b5;
        	LCD_DATA6 = temp.bits.b6;
        	LCD_DATA7 = temp.bits.b7;
        	__delay_us(20);
        	LCD_EN =  1;
        	__delay_us(20);
        	LCD_EN = 0;
        	// send the low nibble
        	LCD_DATA4 = temp.bits.b0;
        	LCD_DATA5 = temp.bits.b1;
        	LCD_DATA6 = temp.bits.b2;
        	LCD_DATA7 = temp.bits.b3;
        nó nằm trong hàm lcd_put_byte(); của thư viện LCD.c. Khi debug thì giá trị port A lẫn port E không thay đổi bất kể giá trị của temp.bits.bx tương ưng là 1 hay 0. Tại sao nhỉ ???

        Comment


        • #34
          TRISE = 0x00; // thiết lập là output
          TRISA = 0x00; // thiết lập la output

          không biết bạn có dùng portE hay portA de dùng cho LCD ko
          mình nghĩ bạn thiếu phần configure cổng vào và ra (TRIS PORT sử dụng cho LCD), trong lcd.h

          Comment


          • #35
            Nguyên văn bởi quang102 Xem bài viết
            TRISE = 0x00; // thiết lập là output
            TRISA = 0x00; // thiết lập la output

            không biết bạn có dùng portE hay portA de dùng cho LCD ko
            mình nghĩ bạn thiếu phần configure cổng vào và ra (TRIS PORT sử dụng cho LCD), trong lcd.h
            Mình đã thiết lập trong void main(); như sau:

            Code:
            TRISA = 0x00;
            	ADCON1 = 0x07;
            	PORTA = 0x00;
            	TRISE = 0x00;
            	PORTE = 0x00;
            Trong thư viện lcd.h mình cũng đã cấu hình các chân cho LCD tương ứng với mạch mình làm:

            Code:
            /* Pins mapping */
            #ifndef		LCD_RS
            #define	LCD_RS		RE2
            #define	LCD_EN		RE0
            #define	LCD_RW		RE1
            #define	LCD_DATA4	RA3
            #define	LCD_DATA5	RA2
            #define	LCD_DATA6	RA1
            #define	LCD_DATA7	RA0
            
            #define	LCD_RS_TRIS		TRISE2
            #define	LCD_EN_TRIS		TRISE0
            #define	LCD_RW_TRIS		TRISE1
            #define	LCD_DATA4_TRIS	TRISA3
            #define	LCD_DATA5_TRIS	TRISA2
            #define	LCD_DATA6_TRIS	TRISA1
            #define	LCD_DATA7_TRIS	TRISA0
            #endif
            Vậy lỗi do đâu ? Mình cũng đã cấu hình lại thanh ghi ADCON1 = 0x07;

            Comment


            • #36
              Cuối cùng mình cũng phát hiện ra chỗ sai.
              @trimen: không phải cấu hình thanh ghi ADCON1 = 0x07; đâu. Đúng ra là phải cấu hình thanh ghi ANSEL = 0x00; mới đúng (tất cả các chân đều là chân digital i/o)

              Comment


              • #37
                à bạn xài pic16f877a đúng không, thanh ghi ANSEL mình tìm không thấy trong datasheet mình chỉ thấy thanh ghi ADCON1 ghi vậy, vậy chạy chưa bạn, bạn xem kĩ trong file LCD.h có ghi :

                #ifndef LCD_RS
                #define LCD_RS RE2
                #define LCD_EN RE0
                #define LCD_RW RE1
                #define LCD_DATA4 RA3
                #define LCD_DATA5 RA2
                #define LCD_DATA6 RA1
                #define LCD_DATA7 RA0

                #define LCD_RS_TRIS TRISE2
                #define LCD_EN_TRIS TRISE0
                #define LCD_RW_TRIS TRISE1
                #define LCD_DATA4_TRIS TRISA3
                #define LCD_DATA5_TRIS TRISA2
                #define LCD_DATA6_TRIS TRISA1
                #define LCD_DATA7_TRIS TRISA0
                #endif

                Tức là trong chuơng trình chính phải define LCD_RS thì nó mới hiểu các chân bạn định nghĩa cho LCD.Trong chuơng trình chính bạn phải ghi là:
                #define LCD_RS

                Comment


                • #38
                  À, mình dùng 887 chứ không phải 877A. Trong chương trình chính mình cũng không ghi #define LCD_RS như bạn nói. Vẫn chạy được bình thường

                  Comment


                  • #39
                    Nhân tiện mình còn 1 vấn đề với cái LCD này, nhờ mọi người vào tìm cách khắc phục giúp.
                    Cụ thể là khi cắm nguồn lên thì LCD hoạt động bình thường, sau đó bấm nút reset PIC thì LCD xuất ra những kí tự lạ, bấm reset lần nữa thì nội dung hiển thị trở lại như mong muốn. Trong ct chính mình đã __delay_ms(100); trước lệnh lcd_init(); và sau đó là __delay_ms(10);. Tại sao ?

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    • since0501
                      Trả lời cho Pin Li-FePO4 (pin sắt) rất dể hỏng! Các biện pháp ngăn ngừa.
                      bởi since0501
                      Mình đào mộ xíu, cho mình hỏi là pin của bác vẫn ok chứ? Mình vừa đóng khối pin 16 cell 40135 thì khi chạy điện áp nó sụt so với khi nghỉ như video mình dẫn link, vậy cho mình hỏi là dung lượng pin sẽ tính khi áp nghỉ hay áp đang hoạt động, và pin sụt áp như vậy là bình thường hay pin kém?
                      ht...
                      hôm nay, 17:56
                    • 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
                    Đang tải...
                    X