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

        Đang tải...
        X