#include <16f877a.h>
#fuses NOPUT, HS, NOLVP, NOCPD, NOWRT, NOPROTECT
#USE DELAY(CLOCK=20000000)
#use fast_io(b)
#define RS RE0;
#define RW RE1;
#define E RE2;
#define lcd portb;
unsigned char key[]="Phan Kien";
int i;
void cmd()
{
RS=0;
RW=0;
E=1;
delay_ms(1);
E=0;
}
void data()
{
RS=1;
RW=0;
E=1;
delay_ms(1);
E=0;
}
void main()
{
lcd=0x38;
cmd();
lcd=0xc0;
cmd();
lcd=0x80;
cmd();
set_tris_b(0);
set_tris_e(0);
while(1)
{
lcd=key[i];
data();
delay_ms(100);
}
}
Mình mò mẫm viết đoạn code này theo sách hướng dẫn "CCS C for PIC16f877a" nhưng không hiểu sao trình biên dịch CCS báo lỗi không cho phép khai báo chân RS, RW, E như trên, nếu khai báo theo kiểu #bit , #byte thì lại được. Và chương trình LCD cũng không hiển thị ra chữ gì cả, mình cũng chưa hiểu lắm, nếu dùng thư viện LCD.c sẵn có thì viết rất đơn giản thui nhưng mà thế thì lại ăn sẵn quá. Bạn nào giải thích giúp mình cái khai báo chân và sao LCD lại ko hiển thị chữ như trên với, mình cảm ơn rất nhiều
#fuses NOPUT, HS, NOLVP, NOCPD, NOWRT, NOPROTECT
#USE DELAY(CLOCK=20000000)
#use fast_io(b)
#define RS RE0;
#define RW RE1;
#define E RE2;
#define lcd portb;
unsigned char key[]="Phan Kien";
int i;
void cmd()
{
RS=0;
RW=0;
E=1;
delay_ms(1);
E=0;
}
void data()
{
RS=1;
RW=0;
E=1;
delay_ms(1);
E=0;
}
void main()
{
lcd=0x38;
cmd();
lcd=0xc0;
cmd();
lcd=0x80;
cmd();
set_tris_b(0);
set_tris_e(0);
while(1)
{
lcd=key[i];
data();
delay_ms(100);
}
}
Mình mò mẫm viết đoạn code này theo sách hướng dẫn "CCS C for PIC16f877a" nhưng không hiểu sao trình biên dịch CCS báo lỗi không cho phép khai báo chân RS, RW, E như trên, nếu khai báo theo kiểu #bit , #byte thì lại được. Và chương trình LCD cũng không hiển thị ra chữ gì cả, mình cũng chưa hiểu lắm, nếu dùng thư viện LCD.c sẵn có thì viết rất đơn giản thui nhưng mà thế thì lại ăn sẵn quá. Bạn nào giải thích giúp mình cái khai báo chân và sao LCD lại ko hiển thị chữ như trên với, mình cảm ơn rất nhiều
Comment