ArmandoCircuitos
Inicio
Electronica
Programacion
Resultado
Codigo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace LCD_16x2_UART_01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } byte[] buffer = { 0,0,0,0,0,0 }; private void Form1_Load(object sender, EventArgs e) { serialPort1.Open(); serialPort1.Write(buffer, 0, 1); lcd_init(); lcd_cmd(0x0f); //Parpadea y muestra cursor lcd_cmd(0x01); //limpia pantalla } private void button1_Click(object sender, EventArgs e) { string cadena = txtLCD.Text; int indice = cadena.IndexOf('\n'); if (indice != -1) { string linea1, linea2; linea1 = cadena.Substring(0, indice - 1); linea2 = cadena.Substring(indice + 1); lcd_cmd(0x01); //limpia pantalla lcd_cmd(0x02); //Primera linea lcd_out(linea1); lcd_cmd(0xC0); //Segunda linea lcd_out(linea2); } else { lcd_cmd(0x02); //Primera linea lcd_out(cadena); } } private void lcd_init() { buffer[0] = 0x38; buffer[1] = 0x3C; buffer[2] = 0x38; serialPort1.Write(buffer, 0, 3); Thread.Sleep(5); buffer[0] = 0x38; buffer[1] = 0x3C; buffer[2] = 0x38; serialPort1.Write(buffer, 0, 3); Thread.Sleep(1); buffer[0] = 0x38; buffer[1] = 0x3C; buffer[2] = 0x38; serialPort1.Write(buffer, 0, 3); Thread.Sleep(5); buffer[0] = 0x28; buffer[1] = 0x2C; buffer[2] = 0x28; serialPort1.Write(buffer, 0, 3); Thread.Sleep(1); lcd_cmd(0x28); lcd_cmd(0x08); lcd_cmd(0x01); lcd_cmd(0x0F); Thread.Sleep(100); } private void lcd_cmd(byte cmd) { buffer[0] = (byte)((cmd & 0xF0) + 8); buffer[1] = (byte)((cmd & 0xF0) + 12); buffer[2] = (byte)((cmd & 0xF0) + 8); buffer[3] = (byte)(((cmd << 4) & 0xF0) + 8); buffer[4] = (byte)(((cmd << 4) & 0xF0) + 12); buffer[5] = (byte)(((cmd << 4) & 0xF0) + 8); serialPort1.Write(buffer, 0, 6); Thread.Sleep(1); } private void lcd_chr(char ltr) { buffer[0] = (byte)((ltr & 0xF0) + 9); buffer[1] = (byte)((ltr & 0xF0) + 13); buffer[2] = (byte)((ltr & 0xF0) + 9); buffer[3] = (byte)(((ltr << 4) & 0xF0) + 9); buffer[4] = (byte)(((ltr << 4) & 0xF0) + 13); buffer[5] = (byte)(((ltr << 4) & 0xF0) + 9); serialPort1.Write(buffer, 0, 6); Thread.Sleep(1); } private void lcd_out(string word) { for (byte i = 0; i < word.Length; i++) { lcd_chr(word[i]); Thread.Sleep(1); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { serialPort1.Close(); } } }
Descarga del archivo
Descargar archivo