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

              Đang tải...
              X