Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Lcd gösterme

Başlatan bbs2006, 09 Ağustos 2010, 00:32:19

bbs2006

Merhaba
3 stırlı lcd de 3. ve 4. satıra nasıl veri yazayoruz. ayrıca
fark=500/90 degerini lcd ekranda göstermek istiyorum. nasıl yapabiliriz. yazdım sadece 5. degerini gösteriyor. küsürlü ifadeyi göstermiyor

bbs2006

//SERVO MOTOR KONTROL PROGRAMI- ORNEK-1

#include <16F877.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
#include <lcd.c>
#define port_b lcd_true
long int fark;
float deger;
int hsp,aa=90;
unsigned int deg;
long int aci,acid=45;
void main()
{
fark=sonkonum-baskonum;
deger=fark/90;

hsp=deger*acid;
aci=1500+hsp;

while(true){
lcd_init();
//if(input(pin_a0)==0){
printf(lcd_putc,"%f",deger);

Output_High(pin_c0);
delay_us(aci);
Output_Low(pin_c0);
delay_us(20000-aci);
printf(lcd_putc,"\f\n deger%ld",aci);
//delay_ms(200);

//printf(lcd_putc,"\f aci=%d",hsp);
//delay_ms(200);
}}

Ankaralı

fark değişkenini float olarak tanımla.
@ NEXYS2

radres

LCD'de istediğin sütun ve satıra gitmek için lcd_gotoxy(x,y); komutunu kullan. x yerine sütun, y yerine satır değerini yaz. Birde lcd.c dosyası 2 satır LCD'ler için diye biliyorum. 4 satır LCD'ler için lcd420.c (#include lcd420.c) dosyasını kullan.

QarizmaCocuq'un dediği gibi "fark" değişkenini ondalıklı görmek istiyorsan float olarak tanımla. LCD'ye yazarkende float olarak yazdıracağını belirtmen lazım tabi. printf(lcd_putc,"%f",fark); gibi.

bbs2006

far k değişkenini float olarak tanımladıgım zaman lcd ekarnda 5.00 diye gösteriyor. ama 5.55 görünmesini istiyorum. ne yapabilirm.

JKramer

fark=sonkonum-baskonum;

sonkonum ve baskonum tanımlanmamış, ayrıca değerleri nedir? Verdiğiniz kod eski denemelerinizden kalmış sanırım.

bbs2006

ben onu kullnmadan önce  deger değişkenine 500/90 işlemini yaptırıyotrum. ama 5.00 görünüyor.önceden onu da tanımladım ama olmadı.
long int sonkonum=2000;
long int baskonum=1500;
long int fark;
int acid=45;
void main(){
fark=sonkonum-baskonum;
deger=fark/90;
hsp=deger*acid;

bu şekide

ne yapabilirm.

bbs2006

Programın tümü bu şekilde



//SERVO MOTOR KONTROL PROGRAMI- ORNEK-1

#include <16F877.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
#include <lcd420.c>
#define port_b lcd_true
long int sonkonum=2000;
long int baskonum=1500;
long int fark;
float deger;
int hsp,aa=90;
long int aci,acid=45;
void main()
{

fark=sonkonum-baskonum;
deger=fark/90;
hsp=deger*acid;
aci=1500+hsp;

while(true){
lcd_init();
//if(input(pin_a0)==0){
printf(lcd_putc,"%f",deger);

Output_High(pin_c0);
delay_us(aci);
Output_Low(pin_c0);
delay_us(20000-aci);

//lcd_gotoxy(1,2);
//printf(lcd_putc,"\f deger%ld",aci);
//delay_ms(200);
//lcd_gotoxy(1,3);
//printf(lcd_putc,"\f\n aci=%d",hsp);
//delay_ms(200);
}}

aliveli

lcd_init(); komutunu  sonsuz döndünün dışında kullan

deger=fark/90; satırını deger=(float)fark/90.0; olarak dene birde

bbs2006

çok teşekkür ederim aliveli arakadşaım. dediginiz gibi yaptım. oldu.