00001 00015 #include "lcd.h" 00016 #include <string.h> 00017 00018 00024 void lcd_command(int comando) //executa comando. 00025 { 00026 FIO4CLR = lcd_rs; 00027 FIO3CLR = lcd_dados;//LIMPA OS DADOS 00028 FIO3SET = comando; 00029 FIO4SET = lcd_en; //COLOC O ENABLE EM 1 00030 //espera_1ms(1); //AGUARDA UM SEGUNDO. 00031 delay_1us(1); 00032 FIO4CLR = lcd_en; //LIMPA O ENABLE. EN =0; 00033 //espera_1ms(1); //AGUARDA UM SEGUNDO 00034 delay_1us(1); 00035 } 00036 00042 void lcd_putc(int dado) 00043 { 00044 FIO4SET = lcd_rs; 00045 FIO3CLR = lcd_dados;//LIMPA OS DADOS 00046 FIO3SET = dado; 00047 FIO4SET = lcd_en; 00048 //espera_1ms(1); //AGUARDA UM SEGUNDO. 00049 delay_1us(1); 00050 FIO4CLR = lcd_en; 00051 //espera_1ms(1); //AGUARDA UM SEGUNDO 00052 delay_1us(1); 00053 } 00054 00059 void lcd_clr(void) 00060 { 00061 lcd_command(0x01); 00062 } 00063 00069 void lcd_string(char *str) 00070 { 00071 while(*str) lcd_putc(*str++); 00072 } 00073 00074 00075 void lcd_string_old(char *str) 00076 { 00077 //while(*str) lcd_putc(*str++); 00078 int qtd, i=0; 00079 00080 qtd = strlen(str); 00081 for(i=0;i<qtd;i++) 00082 { 00083 lcd_putc(str[i]); 00084 } 00085 00086 } 00087 00094 void lcd_goto(int linha, int coluna) 00095 { 00096 //0x80 a 0x8f - para acessar a primeira linhas e as colunas de 0 a f. 00097 //0xC0 a 0xcf - para acessar a segunda linhae as colunas de 0 a f. 00098 if(linha <=1) lcd_command(0x80 + coluna); 00099 else lcd_command(0XC0 + coluna); 00100 } 00101 00105 void init_lcd(void) 00106 { 00107 FIO4DIR = lcd_en + lcd_rs + lcd_rw; //DIR -> TODOS OS BITS EM UM, SIGNIFICA A PORTA ONDE VAI ESTAR MEXENDO; 00108 FIO3DIR = lcd_dados; 00109 FIO4CLR = lcd_en + lcd_rw; //configura inicializa os comandos em zero 00110 delay_1us(1); 00111 00112 lcd_command(0x38); 00113 lcd_command(0x0e); 00114 lcd_command(0x06); 00115 lcd_command(0x01); 00116 } 00117 00118 00119 00120