PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Mong các huynh giúp đỡ gấp (http://www.picvietnam.com/forum/showthread.php?t=4225)

dangluong 02-06-2009 11:28 AM

Mong các huynh giúp đỡ gấp
 
Có một câu hỏi mong anh em trả lời giúp với! Tôi lập trình cho con lcd 16x2( chương trình chạy trên pic 16f877a ), khi chạy mô phỏng trên proteus thì các dòng chữ tôi lập trình đều hiển thị tốt, nhưng khi chạy mạch thật thì trên lcd lại không hiển thị đúng những dòng chữ tôi đã lập trình, nó hiện toàn những kí tự gì đó thôi. Thế là nguyên nhân là sao nhỉ, mong anh em giải đáp giúp tôi với( tôi lập trình trên CCS ). Nếu cần tôi sẽ gửi code đến anh em, mong anh em trả lời nhanh giúp tôi nhé. Thanks!

vidieukhiencdn 02-06-2009 11:43 AM

1 Attachment(s)
Bạn nói ko thì ai bít j mà giúp, ít nhiều cũng phải có thông tin bài bạn làm chứ.

minhhai_bk3i 04-06-2009 02:31 PM

Đây là code và mạch của nhóm chúng em, anh xem qua và giúp chúng em nhé! cảm ơn anh nhiều:
Code:

#include<16f877a.h>
#include<def_877a.h>
#device * =16 adc=10;
#use delay(clock=20000000)
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NOWRT,NODEBUG, BROWNOUT, LVP, NOCPD

#include <lcd_lib_4bit.c>
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)

int tram,chuc,donvi,temp,nguong,i;

void convert_bcd(int8 temp)
{
  tram  = temp / 100 + 0x30;
  temp  = temp % 100; 
  chuc  = temp / 10 + 0x30;
  donvi = temp % 10 + 0x30;
}
void bao_dong()
{
int8 i;
for(i=0;i<200;i++)
{
RE0=0;
delay_us(100);
RE0=1;
delay_us(100);
}
}

void LCD(int8 temp)
{
  convert_bcd(temp);
  lcd_putchar(tram);
  lcd_putchar(chuc);
  lcd_putchar(donvi);
}
//-------------------------------------------------------------------
void main()
{
int32 value;
int8 temp;

trisB = 0x00;
trisC = 0x00;
trisD = 0x00;
trisE = 0x00;
trisA = 0xff;
portC = 0xff;
portD = 0x00;
nguong=20;
lcd_init();
printf(lcd_putchar,"DO AN THIET BI DO");
delay_ms(3000);
lcd_putcmd(0xC0);
printf(lcd_putchar,"KHOI TAO NGUONG(20)");
delay_ms(3000);
enable_interrupts (INT_EXT);
ext_int_edge(L_TO_H);
enable_interrupts (GLOBAL);

setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
delay_us(10);
value=read_adc();
value=(value)/10.24;
temp=value;
convert_bcd(temp);
delay_ms(1000);
lcd_putcmd(0xC0);
printf(lcd_putchar,"moi thu da san sang");

delay_ms(3000);

i=0;
while(1)
{
i++;
value =read_adc();
value=(value)/10.240;
temp=value;
if (i==200)
{
convert_bcd(temp);
i=0;
}

if( value > nguong)
bao_dong();
lcd_putcmd(0xC0);
printf(lcd_putchar,"nongdo=");
lcd_putchar(tram);
lcd_putchar(chuc);
lcd_putchar(donvi);
printf(lcd_putchar,"ptram LEL");

}
}


minhhai_bk3i 04-06-2009 02:34 PM

1 Attachment(s)
Còn đây là mạch:

PVP 04-06-2009 11:25 PM

vấn đề này có thể là do phần cứng, các em xem lại mình đã nối đúng chưa? nếu đã chạy tốt trên proteus thì phần lập trình đúng đấy!!


Múi giờ GMT. Hiện tại là 11:48 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam