19 Ekim 2021, 10:52:57

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


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

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

a.zorba

09 Temmuz 2012, 14:08:38 Son düzenlenme: 10 Temmuz 2012, 13:30:25 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 regunsigned char data);
void LCD_PrintStr(char *str);
void LCD_PulseEnable(void);
void LCD_Init(void);
void konum (unsigned char satunsigned 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(COMMAND0x28);
	
// 4 bit 2 lines, 5 x 8 character
LCD_WriteByte(COMMAND0x0c);
	
// DB3=1, DB2=D, DB1=C, DB0=B, D=Display On, C=Cursor Off, B=Blink Off
LCD_WriteByte(COMMAND0x06);
	
// Entry Mode set DB2=1, DB1=I/D, DB0=S,I/D=Increment, S=Shift Off
LCD_WriteByte(COMMAND0x01);
	
// Clear Display

}

void LCD_WriteByte(unsigned char regunsigned 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 satunsigned char sutun)
{
    if (
sat==1)
LCD_WriteByte(COMMAND, (0x80 |( sutun-1)))         ; //DDRAM adresine yükleme yapıyor
if (sat==2)
LCD_WriteByte(COMMAND, (0x80 | (0x40sutun-1)))   ;
   

}


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




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

sorunu aslan hocanın lcd  kütüphanesinden bir bölüm uyarlayarak çözdüm.
İçinizdeki düşmanlık yakıp yıkmayı hoşgörüyorsa yerine koyacağınız sistemin özgürlük olacağını mı düşünüyorsunuz?

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.