Ynt: xc8 lcd kütüphane ve sorularım

Başlatan a.zorba, 09 Temmuz 2012, 11:08:38

a.zorba

uzun ugraşlarım sonucu lcd  kütüphanesini çalışdırdım . sormak istedigim  herhangi bir değişkeni lcd ye nasıl yazdırabilirim .
#include <stdio.h>
#include <stdlib.h>
#include <p18f2550.h>
#include "delay.h"      //hitech in delay kutubhanes? kullan?ld?
#include "lcd.h"

#pragma config FOSC = INTOSC_HS // dahili hc osc devrede
#pragma config WDT = OFF
#pragma config MCLRE = OFF
#pragma config PWRT = ON
#pragma config LVP = OFF

#define buton PORTAbits.RA1  // porta1 e buton ad? ver?ld?
#define led1  PORTCbits.RC0   // led lerle portlar e?le?t?r?ld?
#define led2  PORTCbits.RC1
#define led3  PORTCbits.RC2

void main (void)
{
    char deg;
    deg==123;
ADCON1 = 0x0F ;	// ADC iptal.
TRISA=0xFF  ;
TRISB=0x00  ;
TRISAbits.RA1=1;
TRISCbits.RC0=0;    //portlar ç?k?? ayarland?
TRISCbits.RC1=0;
TRISCbits.RC2=0;
PORTA=0;
PORTC=0;
   LCD_Init();

   konum(1,1)  ;
  LCD_PrintStr  ("picproje");
konum(2,4)  ;
   LCD_PrintStr  ("ham=");  // buraya deg degişkenimi yazmak istıyorum 
 DelayMs (250);
led3=1;
DelayMs(250);
led3=0;
return ;
}


lcd.h
#include <p18f2550.h>
#include "delay.h"
//elektronikcierol
#define COMMAND 0
#define DATA 1
#define LCD_RS LATBbits.LATB2
#define LCD_BL LATBbits.LATB0
#define LCD_EN LATBbits.LATB3


#define LCD_Init_Pin() LATB=0;TRISB &= 0;

void LCD_WriteByte(unsigned char reg, unsigned char data);
void LCD_PrintStr(char *str);
void LCD_PulseEnable(void);
void LCD_Init(void);
void konum (unsigned char sat, unsigned char sutun);


lcd.c
#include "lcd.h"
#include "delay.h"
void LCD_PulseEnable(void)
{
LCD_EN=1;	
DelayMs(1);	

LCD_EN=0;	
DelayMs(1);	
}
void LCD_PrintStr(char *str)
{
while (*str !=0)
{
LCD_WriteByte(DATA, *str);
str++;
}
}

void LCD_Init(void)
{
LCD_Init_Pin();

DelayMs(20);	
LCD_RS =0;	

LATB =0b00110000;	// Function Set

LCD_PulseEnable();
DelayMs(6);	

LCD_PulseEnable();
DelayUs(250);	

LCD_PulseEnable();
DelayUs(250);	

LATB = 0b100000;	// Set 4 bit interface
LCD_PulseEnable();
DelayUs(250);	// Delay 250us

LCD_WriteByte(COMMAND, 0x28);	// 4 bit 2 lines, 5 x 8 character
LCD_WriteByte(COMMAND, 0x0c);	// DB3=1, DB2=D, DB1=C, DB0=B, D=Display On, C=Cursor Off, B=Blink Off
LCD_WriteByte(COMMAND, 0x06);	// Entry Mode set DB2=1, DB1=I/D, DB0=S,I/D=Increment, S=Shift Off
LCD_WriteByte(COMMAND, 0x01);	// Clear Display

}

void LCD_WriteByte(unsigned char reg, unsigned char data)
{

LATB=0;
LCD_RS=reg;	
LCD_EN=0;	
LATB |= (data & 0b11110000);	
LCD_PulseEnable();

LATB=0;
LCD_RS=reg;	// configure LCD RS as command / data
LCD_EN=0;	// setting LCD enable pin low
LATB |= (data << 4);	// data low nibble moved to PORTC high nibble
LCD_PulseEnable();

}

void konum (unsigned char sat, unsigned char sutun)
{
    if (sat==1)
LCD_WriteByte(COMMAND, (0x80 |( sutun-1)))         ; //DDRAM adresine yükleme yapıyor
if (sat==2)
LCD_WriteByte(COMMAND, (0x80 | (0x40+ sutun-1)))   ;
   

}


isis simulesi için
config FOSC = HS  // olmalı




mesaj birleştirme:: 10 Temmuz 2012, 10:30:25

sorunu aslan hocanın lcd  kütüphanesinden bir bölüm uyarlayarak çözdüm.
Bilenler bilir . Biz maraşlilar için şehir olarak şubat ay' i bayram ,kurtuluş ,yaz in gelmesiydi. Şimdi karalar in yas in ayı oldu.