Thông báo

Collapse
No announcement yet.

LCD 2x16

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

  • #16
    Nguyên văn bởi thehomeland Xem bài viết
    #asm
    .equ __lcd_port=0x15 ;PORTC
    #endasm
    Chỗ này là PORTC nhé!
    Còn chỗ này là PORTD:
    chân PORTD.6 và .7 thì ko có tín hiệu.bạn nào giúp mình với.
    Làm thử theo trong phần help cũng thấy thế.Chỉ giùm nhé
    Nỏ biết chữ mần răng ký được??!! Thôi nhé.

    Comment


    • #17
      Kết nối LCD với AVR thuộc loại quá dễ ( Vì chẳng cần thêm linh kiện gì đáng kể), nếu bác thehomeland biết thiết lập trong CodeWinzard rồi thì chỉ cần đánh thêm mấy chữ vào là nó chạy ngay thôi, không cần mô phỏng mô phiếc làm gì cho nó phức tạp ra, bác tham khảo đoạn code dưới đây:
      /************************************************** ***
      This program was produced by the
      CodeWizardAVR V1.24.6 Professional
      Automatic Program Generator
      © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
      http://www.hpinfotech.com
      e-mail:office@hpinfotech.com

      Project :
      Version :
      Date : 11/24/2007
      Author : thangktvta@gmail.com
      Company : Tu van xay dung Thang Long
      Comments:


      Chip type : ATmega8
      Program type : Application
      Clock frequency : 12.000000 MHz
      Memory model : Small
      External SRAM size : 0
      Data Stack size : 256
      ************************************************** ***/

      #include <mega8.h>

      // Alphanumeric LCD Module functions
      #asm
      .equ __lcd_port=0x12 ;PORTD
      #endasm
      #include <lcd.h>

      // Declare your global variables here

      void main(void)
      {
      // Declare your local variables here

      // Input/Output Ports initialization
      // Port B initialization
      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
      PORTB=0x00;
      DDRB=0x00;

      // Port C initialization
      // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
      // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
      PORTC=0x00;
      DDRC=0x00;

      // Port D initialization
      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
      PORTD=0x00;
      DDRD=0x00;

      // Timer/Counter 0 initialization
      // Clock source: System Clock
      // Clock value: Timer 0 Stopped
      TCCR0=0x00;
      TCNT0=0x00;

      // Timer/Counter 1 initialization
      // Clock source: System Clock
      // Clock value: Timer 1 Stopped
      // Mode: Normal top=FFFFh
      // OC1A output: Discon.
      // OC1B output: Discon.
      // Noise Canceler: Off
      // Input Capture on Falling Edge
      // Timer 1 Overflow Interrupt: Off
      // Input Capture Interrupt: Off
      // Compare A Match Interrupt: Off
      // Compare B Match Interrupt: Off
      TCCR1A=0x00;
      TCCR1B=0x00;
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;

      // Timer/Counter 2 initialization
      // Clock source: System Clock
      // Clock value: Timer 2 Stopped
      // Mode: Normal top=FFh
      // OC2 output: Disconnected
      ASSR=0x00;
      TCCR2=0x00;
      TCNT2=0x00;
      OCR2=0x00;

      // External Interrupt(s) initialization
      // INT0: Off
      // INT1: Off
      MCUCR=0x00;

      // Timer(s)/Counter(s) Interrupt(s) initialization
      TIMSK=0x00;

      // Analog Comparator initialization
      // Analog Comparator: Off
      // Analog Comparator Input Capture by Timer/Counter 1: Off
      ACSR=0x80;
      SFIOR=0x00;

      // LCD module initialization
      lcd_init(16);

      while (1)
      {
      // Place your code here
      lcd_gotoxy(0,0);
      lcd_putsf("Banh Thi Noi");
      };
      }
      Nỏ biết chữ mần răng ký được??!! Thôi nhé.

      Comment


      • #18
        Nguyên văn bởi thangktvta Xem bài viết
        Kết nối LCD với AVR thuộc loại quá dễ ( Vì chẳng cần thêm linh kiện gì đáng kể), nếu bác thehomeland biết thiết lập trong CodeWinzard rồi thì chỉ cần đánh thêm mấy chữ vào là nó chạy ngay thôi, không cần mô phỏng mô phiếc làm gì cho nó phức tạp ra, bác tham khảo đoạn code dưới đây:
        /************************************************** ***
        This program was produced by the
        CodeWizardAVR V1.24.6 Professional
        Automatic Program Generator
        © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
        http://www.hpinfotech.com
        e-mail:office@hpinfotech.com

        Project :
        Version :
        Date : 11/24/2007
        Author : thangktvta@gmail.com
        Company : Tu van xay dung Thang Long
        Comments:


        Chip type : ATmega8
        Program type : Application
        Clock frequency : 12.000000 MHz
        Memory model : Small
        External SRAM size : 0
        Data Stack size : 256
        ************************************************** ***/

        #include <mega8.h>

        // Alphanumeric LCD Module functions
        #asm
        .equ __lcd_port=0x12 ;PORTD
        #endasm
        #include <lcd.h>

        // Declare your global variables here

        void main(void)
        {
        // Declare your local variables here

        // Input/Output Ports initialization
        // Port B initialization
        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
        PORTB=0x00;
        DDRB=0x00;

        // Port C initialization
        // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
        // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
        PORTC=0x00;
        DDRC=0x00;

        // Port D initialization
        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
        PORTD=0x00;
        DDRD=0x00;

        // Timer/Counter 0 initialization
        // Clock source: System Clock
        // Clock value: Timer 0 Stopped
        TCCR0=0x00;
        TCNT0=0x00;

        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: Timer 1 Stopped
        // Mode: Normal top=FFFFh
        // OC1A output: Discon.
        // OC1B output: Discon.
        // Noise Canceler: Off
        // Input Capture on Falling Edge
        // Timer 1 Overflow Interrupt: Off
        // Input Capture Interrupt: Off
        // Compare A Match Interrupt: Off
        // Compare B Match Interrupt: Off
        TCCR1A=0x00;
        TCCR1B=0x00;
        TCNT1H=0x00;
        TCNT1L=0x00;
        ICR1H=0x00;
        ICR1L=0x00;
        OCR1AH=0x00;
        OCR1AL=0x00;
        OCR1BH=0x00;
        OCR1BL=0x00;

        // Timer/Counter 2 initialization
        // Clock source: System Clock
        // Clock value: Timer 2 Stopped
        // Mode: Normal top=FFh
        // OC2 output: Disconnected
        ASSR=0x00;
        TCCR2=0x00;
        TCNT2=0x00;
        OCR2=0x00;

        // External Interrupt(s) initialization
        // INT0: Off
        // INT1: Off
        MCUCR=0x00;

        // Timer(s)/Counter(s) Interrupt(s) initialization
        TIMSK=0x00;

        // Analog Comparator initialization
        // Analog Comparator: Off
        // Analog Comparator Input Capture by Timer/Counter 1: Off
        ACSR=0x80;
        SFIOR=0x00;

        // LCD module initialization
        lcd_init(16);

        while (1)
        {
        // Place your code here
        lcd_gotoxy(0,0);
        lcd_putsf("Banh Thi Noi");
        };
        }
        Cám ơn bác nhé..Chắc tại tui phức tạp hóa vấn đề rùi.còn chỗ PORTD là tui đánh nhầm đó.

        Comment


        • #19
          xin lỗi vì hỏi ngoài luồng
          tôi có 1 bài toán thấy khó quá.xin mấy cao thủ chỉ rùm
          bài toán thế này:
          đây là bài toán về đo trở kháng.nếu là đo 1 con thì quá rễ.đằng này lại phải đo 40 con cùng 1 lúc. nhưng 40 con đó cùng trở kháng.mục đích ở đây là tìm ra con có trị số khác,hay nói cách khác là tìm con điện trở chết trong 40 con đấy.
          ai có cao kiến gì xin chỉ giáo rùm
          thank

          Comment


          • #20
            Nguyên văn bởi thehomeland Xem bài viết
            Ví dụ với ATmega16 nhé,mình có đoạn code sau:
            #include <mega16.h>
            #include <delay.h>
            // Alphanumeric LCD Module functions
            #asm
            .equ __lcd_port=0x15 ;PORTC
            #endasm
            #include <lcd.h>
            //hien thi dong chu "hello"
            void main(void)
            {
            lcd_init(16);
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("hello");
            while (1) ;
            }
            Có lỗi gì ở đây vậy?lúc mô phỏng trên proteus mình thấy chân E của lcd lúc nào cũng ở mức 0,tất nhiên là ko hiển thị đc gì rồi.mà chân PORTD.6 và .7 thì ko có tín hiệu.bạn nào giúp mình với.
            Làm thử theo trong phần help cũng thấy thế.Chỉ giùm nhé
            Check Fusebit ! -> Disable JTAG
            *** Thành viên không biết gì về điện ***

            Comment


            • #21
              Nếu dùng LCD cho chú AT8 mà sử dụng thư viện LCD.H thì đôi lúc cũng phức tạp. Ví dụ muốn dùng cả bộ UART và LCD, không muốn chạy thạch anh nội 8M mà cắm thạch anh ngoài 11.0592M hoặc 14.7456M thì gay go. Trong trường hợp này nên tự tạo cho mình một cái thư viện LCD riêng là hay nhất. copy cái của 89 sửa lại chân cẳng một chút là chạy.

              Comment

              Về tác giả

              Collapse

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

              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