Post on 17-Jan-2016
description
7/18/2019 Archivo Lcd
1/2
#include #include #include #include "lcd.h"#include #define _XTAL_FREQ 4000000 // necesario para macros __delay_ms()#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
typedef unsigned char uint8_t;
void lcd_init(){ DispE = 0; DispRS = 0; __delay_ms(30);
lcd_send_cmd(0x03); lcd_send_cmd(0x03); lcd_send_cmd(0x03);
lcd_send_cmd(0x02);
lcd_send_cmd(LCD_FN_SET); lcd_send_cmd(LCD_DISPOFF); lcd_send_cmd(LCD_CLR); lcd_send_cmd(LCD_DISPON);}
void pulseEnable(){ DispE = 0; __delay_us(1); DispE = 1; __delay_us(1); DispE = 0;
__delay_us(100);}
void lcd_send_dat(unsigned char c){ DispE = 0; DispRS = 1; //1 per mandare dati LCD_DAT_PORT = c >> 4; //upper
pulseEnable(); __delay_us(200); //5ms per comandi, 200us per dati LCD_DAT_PORT = c;//( c & 0x0F ); //lower pulseEnable();
__delay_us(200);}
void lcd_send_cmd(unsigned char c){ DispE = 0; DispRS = 0; //0 per mandare comandi LCD_DAT_PORT = c >> 4; //upper pulseEnable(); __delay_ms(5); //5ms per comandi, 200us per dati
7/18/2019 Archivo Lcd
2/2
LCD_DAT_PORT = c;//( c & 0x0F ); //lower pulseEnable(); __delay_ms(5);}
void writeString(const char *msg){ while(*msg!='\0') lcd_send_dat(*msg++);}