Giao tiep LCD4bit

Thảo luận trong 'KIT PIC V3' bắt đầu bởi ngocnhat95, 11 Tháng bảy 2014.

Users Viewing Thread (Users: 0, Guests: 0)

Lượt xem: 445

  1. ngocnhat95

    ngocnhat95 New Member

    Mấy a cho e hỏi cái code của em làm trên KIT V3. bị sai chỗ nào ak. sao nó ko chạy ak
    Mã:
    #include <16f877.h>
    #include <stdio.h>
    #fuses XT,NOWDT,NOPROTECT,NOLVP,HS,NODEBUG,NOPROTECT,NOWRT,NOPUT,NOBROWNOUT,NOCPD
    #use delay(clock=20000000)
     
    #use fast_io(D)
    #use fast_io(A)
    #use fast_io(E)
     
    #byte PORTA = 0x05
    #byte PORTD = 0x08
    #byte PORTE = 0x09
    #bit RE1 = PORTE.1
    #bit RE2 = PORTE.2
     
    #bit RA2 = PORTA.2
    #bit RA3 = PORTA.3
    #bit RA4 = PORTA.4
     
     
    #bit RD4 = PORTD.4
    #bit RD5 = PORTD.5
    #bit RD6 = PORTD.6
    #bit RD7 = PORTD.7
    #bit RD0 = PORTD.0
    #bit RD1 = PORTD.1
    #bit RD2 = PORTD.2
    #bit RD3 = PORTD.3
     
     
    #define E PORTA
    #define RS RE1
    #define RW RE2
    #define Data PORTD
     
    #define LS138_A RA2
    #define LS138_B RA3
    #define LS138_C RA4
    ///Khai bao cac ham con
    void LCD_enable();
    void LCD_Send_4bit();
    void LCD_SendCommand();
    void LCD_Putchar();
    void LCD_Putschar();
    void LCD_gotoxy();
    void LCD_clear();
    void LS138_Put();
    //===========Tao xung enable==========//
     
    void LS138_Put( int8 point)
    {
     
      if(point&0x01)
          LS138_A=1;
      else
          LS138_A=0;
      if(point&0x02)
          LS138_B=1;
      else
          LS138_B=0;
      if(point&0x04)
          LS138_C=1;
      else
          LS138_C=0;
    }
    void LCD_Enable(void)
    {
    LS138_Put(7);
    delay_us(3);
    LS138_Put(0)=0;
    delay_us(50);
    }
    //=====Ham gui 4bit=====//
    void LCD_Send_4bit(unsigned char data)
    {
      RD4=data & 0x01;
      RD5=(data>>1) & 0x01; //dich sang trai 1 bit va so sanh
      RD6=(data>>2) & 0x01;
      RD7=(data>>3) & 0x01;
    }
     
    //========Ham gui lenh========//
    void LCD_Sendcommand(unsigned char command)
    {
      RS=0; //chon thanh ghi lenh
      RW=0; //cho phep ghi
      LCD_Send_4bit(command>>4); //gui 4 bit cao
      LCD_enable();
      LCD_Send_4bit(command);    //gui 4 bit thap
      LCD_enable(); 
    }
    void LCD_Senddata(unsigned char data)
    {
      RS=1; //chon thanh ghi data
      RW=0; //cho phep ghi
      LCD_Send_4bit(data>>4); //gui 4 bit cao
      LCD_enable();
      LCD_Send_4bit(data);    //gui 4 bit thap
      LCD_enable(); 
    }
    //========Ham khoi tao LCD============//
    void LCD_inits(void)
    {
      LCD_Send_4bit(0x00);
      delay_ms(20); //cho cho LCD hoat dong
      LCD_Sendcommand(0x03);//
      LCD_Sendcommand(0x02); //tro ve dau dong
      LCD_SendCommand( 0x28 );      // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8
      LCD_SendCommand( 0x0c);    // cho phep hien thi man hinh
      LCD_SendCommand( 0x06 );      // tang ID, khong dich khung hinh
      LCD_SendCommand( 0x01 ); // xoa toan bo khung hinh
    }
    //=========void thiet lap vi tri======//
    void LCD_gotoxy(unsigned char x , unsigned char y)
     
    {
      unsigned char address;
      if(y==1)
      address = (0x80+x);
      else
      address = (0xC0+x);
      delay_us(1000);
      LCD_SendCommand(address);
      delay_us(50);
    }
    //===Ham xoa man hinh===//
    void clear(void)
    {
      LCD_SendCommand(0x01);  //xoa man hinh
      delay_ms(10);
    }
     
    //=======Ham gui 1 ky tu len LCD==//
    void LCD_Putchar(unsigned char text)
    {
      LCD_senddata(text);
    }
    //=======Ham gui 1 chuoi ky tu=====//
    void LCD_PutsChar(char *s)
    {
      while(*s)
      {
          LCD_Putchar(*s);
          s++;
      }
    }
     
     
    void main()
    {  int8 str[16]; //16 la so ki tu
      SET_TRIS_A(0);
      SET_TRIS_D(0);
      SET_TRIS_E(0);
     
     
      LCD_inits(); //khoi tao LCD
      delay_ms(100);
      LCD_Gotoxy(0,1);
      sprintf(str,".....BKSTAR.....");
      LCD_Putschar(str);
      delay_ms(100);
      LCD_gotoxy(0,2);
      sprintf(str,"...TECHNOLOGY...");
      LCD_putschar(str);   
    }
    
  2. ngocnhat95

    ngocnhat95 New Member

    e mô phỏng trên proteus thì chạy ngon nhưng mà nạp vào KIT thì ko chạy

Chia sẻ trang này

Lên trên