C# ve PIC 16F877 LCD 'YE YAZI YAZDIRMA

Başlatan dex25, 20 Kasım 2014, 15:09:48

dex25

Merhaba ben c# daki textboxı kullanarak lcdye yazı yazdırmak istiyorum linkte yapılmış. fakat 3 den fazla karaker girildiğinde sadece ilk 3 karakteri alıyor.bunun  c# daki write komutuyla alakalı olduğunu düşünüyorum.sizce başka nasıl yazılabilir
http://ragyatef.wordpress.com/2012/12/29/proteus-isis-c-gui/

dex25


———–

// LCD module connections
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
// End LCD module connections
char uart_rd;
int res;
char txt[7];
int counter=1;
void main() {

PWM1_Init(4000); // Initialize PWM1 module at 4KHz
PWM1_Start(); // start PWM1
PWM1_Set_Duty(127); // Set current duty for PWM1 to 50%
TRISD=0;
//PORTD = 1; // Set RB0 to high
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
UART1_Init(9600);
delay_ms(100);
while(1){
if(UART1_Data_Ready()){
uart_rd=UART1_Read();
if ( uart_rd=='a'){lcd_out(1,counter,"a");delay_ms(500);counter++;}
if ( uart_rd=='b'){lcd_out(1,counter,"b");delay_ms(500);counter++;}
if ( uart_rd=='c'){lcd_out(1,counter,"c");delay_ms(500);counter++;}
if ( uart_rd=='d'){lcd_out(1,counter,"d");delay_ms(500);counter++;}
if ( uart_rd=='e'){lcd_out(1,counter,"e");delay_ms(500);counter++;}
if ( uart_rd=='f'){lcd_out(1,counter,"f");delay_ms(500);counter++;}
if ( uart_rd=='g'){lcd_out(1,counter,"g");delay_ms(500);counter++;}
if ( uart_rd=='h'){lcd_out(1,counter,"h");delay_ms(500);counter++;}
if ( uart_rd=='i'){lcd_out(1,counter,"i");delay_ms(500);counter++;}
if ( uart_rd=='j'){lcd_out(1,counter,"j");delay_ms(500);counter++;}
if ( uart_rd=='k'){lcd_out(1,counter,"k");delay_ms(500);counter++;}
if ( uart_rd=='l'){lcd_out(1,counter,"l");delay_ms(500);counter++;}
if ( uart_rd=='m'){lcd_out(1,counter,"m");delay_ms(500);counter++;}
if ( uart_rd=='n'){lcd_out(1,counter,"n");delay_ms(500);counter++;}
if ( uart_rd=='o'){lcd_out(1,counter,"o");delay_ms(500);counter++;}
if ( uart_rd=='p'){lcd_out(1,counter,"p");delay_ms(500);counter++;}
if ( uart_rd=='q'){lcd_out(1,counter,"q");delay_ms(500);counter++;}
if ( uart_rd=='r'){lcd_out(1,counter,"r");delay_ms(500);counter++;}
if ( uart_rd=='s'){lcd_out(1,counter,"s");delay_ms(500);counter++;}
if ( uart_rd=='t'){lcd_out(1,counter,"t");delay_ms(500);counter++;}
if ( uart_rd=='u'){lcd_out(1,counter,"u");delay_ms(500);counter++;}
if ( uart_rd=='v'){lcd_out(1,counter,"v");delay_ms(500);counter++;}
if ( uart_rd=='w'){lcd_out(1,counter,"w");delay_ms(500);counter++;}
if ( uart_rd=='x'){lcd_out(1,counter,"x");delay_ms(500);counter++;}
if ( uart_rd=='y'){lcd_out(1,counter,"y");delay_ms(500);counter++;}
if ( uart_rd=='z'){lcd_out(1,counter,"z");delay_ms(500);counter++;}
if ( uart_rd==' '){lcd_out(1,counter," ");delay_ms(500);counter++;}

if ( uart_rd=='0′){Lcd_Cmd(_LCD_CLEAR); counter=1;}

}

}
}

c# kodu
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SerialPort port = new SerialPort("COM1″, 9600, Parity.None, 8, StopBits.One);

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
port.Open();
port.Write(textBox1.Text);
port.Close();
textBox1.Clear();
textBox1.Focus();
}

private void button2_Click(object sender, EventArgs e)
{
port.Open();
port.Write("0″);
port.Close();
textBox1.Clear();
}

private void Form1_Load(object sender, EventArgs e)
{

}
}
}