Advertisement
ericksm

lcd_custom

Apr 12th, 2020
997
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. //definiciones y valores por defecto
  2. //#define LCD_PinRS PIN_B0
  3. //#define LCD_PinEnable PIN_B1
  4. //#define LCD_BusDatos 0x07  //utiliza la parte baja del puerto
  5.  
  6. void envia_comando(int8 );
  7. void mensaje_lcd(char data[]);
  8. void envia_caracter(int8 );
  9. void escribeLCD(int8 );
  10. void lcd_Inicializa();
  11.  
  12. void envia_comando(int8 data){
  13.    output_low(LCD_PinRS);
  14.    escribeLCD(data);
  15.    swap(data);
  16.    escribeLCD(data);
  17.    delay_us(2050);
  18. }
  19.  
  20. void mensaje_lcd(char data[]){
  21.    int i=0;
  22.    envia_comando(0b00010000);//LCD_Borra
  23.    delay_ms(2);
  24.    envia_comando(0b11000000);//LCD_CursorOFF
  25.    delay_ms(2);
  26.    envia_comando(0b01100000);//LCD_CursorIncr
  27.    while (data[i]!=0x00)
  28.    {
  29.       if(i==16)envia_comando(0b00001100);
  30.       envia_caracter(data[i]);
  31.       i++;
  32.    }
  33. }
  34.  
  35. void envia_caracter(char data){
  36.    output_high(LCD_PinRS);
  37.    swap(data);
  38.    escribeLCD(data);
  39.    swap(data);
  40.    escribeLCD(data);
  41.    delay_us(50);
  42. }
  43.  
  44. void escribeLCD(int8 data){
  45.    #asm
  46.    movf data,W
  47.    andlw 0x0f
  48.    movwf data
  49.    movf LCD_BusDatos,W
  50.    andlw 0xf0
  51.    iorwf data,w
  52.    movwf LCD_BusDatos
  53.    #endasm
  54.    output_high(LCD_PinEnable);
  55.    delay_us(1);
  56.    output_low(LCD_PinEnable);
  57. }
  58.  
  59. void lcd_Inicializa(){
  60.    output_low(LCD_PinEnable);
  61.    output_low(LCD_PinRS);
  62.    delay_ms(20);
  63.    escribeLCD(0b00000011);
  64.    delay_ms(5);
  65.    escribeLCD(0b00000011);
  66.    delay_us(200);
  67.    escribeLCD(0b00000011);
  68.    delay_us(200);
  69.    escribeLCD(0b00000010);
  70.    envia_comando(0b10000010);//LCD_2Lineas4Bits5x7
  71.    delay_ms(2);
  72.    envia_comando(0b00010000);//LCD_Borra
  73.    //envia_comando(0b11000000);//LCD_CursorOFF
  74.    //envia_comando(0b01100000);//LCD_CursorIncr
  75. }
  76.  
  77. //contacto:ericksm.electronica@gmail.com
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement