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ı
(http://f1207.hizliresim.com/z/9/9kdm3.jpg)
mesaj birleştirme:: 10 Temmuz 2012, 10:30:25
sorunu aslan hocanın lcd kütüphanesinden bir bölüm uyarlayarak çözdüm.