Thông báo

Collapse
No announcement yet.

cách hiển thị adc ra LCD1602

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

  • cách hiển thị adc ra LCD1602

    chào mọi ngừoi mình viết chương trình hiển thị adc ra lcd.nhung ko bít sai chỗ nào mà chưa hiển thị lên được mong mọi người chỉ giáo


    #include <16F877.h>
    #include"F:\nghiencuu2007\picc\DEFS_16F877a.h"
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #device 16F877*=16 ADC=8
    #use delay(clock=8M,oscillator)
    #use fast_io(b)
    #use fast_io(d)
    #byte portb = 0x06
    #byte portd = 0x08

    #define RS RD0
    #define RW RD1
    #define E RD2
    #define lcd portb

    //tao ham lenh ghi
    void commwrite(){
    //lcd=x;
    RS = 0;
    RW = 0;
    E = 1;
    E = 0;
    delay_ms(50);
    }
    //tao ham gui du lieu
    void datawrite(){
    //lcd=x;
    RS = 1;
    RW = 0;
    E = 1;
    E = 0;
    delay_ms(100);
    }

    int8 adc;
    void main()
    {


    delay_ms(100); //tao ham tre de khoi dong LCD
    lcd = 0x38;
    commwrite();
    LCD = 0x0c; //bat hien thi,tat con tro
    commwrite();
    lcd = 0x01;
    commwrite();
    lcd=0x06;
    commwrite();
    LCD = 0x85; //xuong dau dong
    commwrite();


    setup_adc(adc_clock_internal);
    setup_adc_ports(ALL_ANALOG );
    set_tris_b(0);
    set_tris_d(0);
    //output_b(0x00);
    //output_d(0x00);
    while(true)
    {
    set_adc_channel(0);
    delay_ms(10);
    adc=read_adc();
    //lcd=adc;
    printf(datawrite,adc);
    delay_ms(10);


  • #2
    E = 1;
    E = 0;
    bác xem lại trong datasheet của con lcd xem, theo em bác nên cho thêm delay() vào giữa.

    Comment


    • #3
      bạn vào trang sau để down thư việc giao tiếp LCD cho PIC
      http://linhnc308.googlepages.com
      Mục Myprojects
      Ethernet-RS232, PIC Webserver, RFID Reader
      CallerID, Cảnh báo BTS, ...
      0988006696
      linhnc308@gmail.com
      http://linhnc308.blogspot.com

      Comment


      • #4
        Bạn dùng các chương trình con điều khiển lcd do mình viết đi. Đã test rùi. Giao tiếp chưa hề bị lỗi bao giờ:
        Code:
        ******************************************************************
        #define     E    RE2
        #define     RW   RE1
        #define     RS   RE0
        #define     du_lieu   PORTD
        //=================================================================//Khai bao prototype cac ham se su dung
        //================================================================
        #separate void khoi_dong_lcd();//Khoi dong LCD
        #separate byte doc_byte_tu_lcd();//Doc 1 byte du lieu tu lcd
        #separate void gui_byte_den_lcd(byte loai, byte n);//Gui mot byte du lieu den LCD
        #separate void di_chuyen_cursor(byte x, byte y);//Di chuyen con tro den vi tri cot x, dong y tren lcd
        #separate void lcd_hien_thi(char c);//Hien thi mot ki tu hoac mot chuoi ra lcd
        #separate void xoa_lcd() ;//Xoa man hinh lcd
        
        //=================================================================
        #separate void khoi_dong_lcd()
        {
           const byte mang_kd_lcd[]={0x38, 0x0C, 0x01, 0x06};
           /*0x38: chon lcd che do 5*7, hien thi 2 hang
             0x0C: bat hien thi, tat con tro, khong gach duoi, khong blink
             0x01: xoa lcd, doi con tro ve vi tri dau tien hang 1
             0x06: tang con tro, khi gui mot ki tu thi tu dong dich con tro sang phai*/
           byte i;
           set_tris_d(0); // Chon cac chan port D la chan xuat
           set_tris_e(0);
           RS=0;
           RW=0;
           E=0;
           delay_ms(100);
              for(i=0;i<=3;i++)
              {
                 gui_byte_den_lcd(0,mang_kd_lcd[i]);
              }
        }
        //=================================================================
        #separate void gui_byte_den_lcd(byte loai, byte n)
        {
          RS=0;
          while (bit_test(doc_byte_tu_lcd(), 7));
          RS=loai;
          delay_cycles(1);
          RW=0;
          delay_us(1);
          E=0;
          du_lieu = n;
          delay_cycles(1);
          E=1;
          delay_us(2);
          E=0;
        
        }
        //=================================================================
        #separate byte doc_byte_tu_lcd()
        {
           byte   ket_qua;
           set_tris_d(0xFF);//Chon cac chan port D la chan input
           RW=1;
           delay_cycles(1);
           E=1;
           delay_cycles(1);
           ket_qua=du_lieu;
           E=0;
           delay_cycles(1);
           set_tris_d(0x00);
           return(ket_qua);
        }
        //=================================================================
        #separate void di_chuyen_cursor(byte x, byte y)
        {
           byte dia_chi;
           switch(y)
              {
              case 1:   dia_chi=0x00;
                        dia_chi+=x-1;
                        gui_byte_den_lcd(0, 0x80|dia_chi);
                        break;
              case 2:   dia_chi=0x40;
                        dia_chi+=x-1;
                        gui_byte_den_lcd(0, 0x80|dia_chi);
                        break;
              default:  khoi_dong_lcd();
                        lcd_hien_thi("Dia chi sai");
                        while(true);
              }
        }
        //=================================================================
        #separate void lcd_hien_thi(char c) //Gui mot byte hay mot ki tu ra lcd
        {
           if (c!='\0')
           gui_byte_den_lcd(1,c);
        }
        //=================================================================
        #separate void xoa_lcd() //Xoa man hinh hien thi cua lcd
        {
           gui_byte_den_lcd(0,0x01);
        }
        //=================================================================
        namqn: Bạn nên định dạng code cho dễ nhìn.
        Last edited by namqn; 14-04-2008, 22:50.
        Homepage:

        Comment

        Về tác giả

        Collapse

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

        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