cám ơn bạn nhưng cũng thế ah, không hiện được chữ,hiện 2 dòng màu đen thui,y như chỉ có mỗi nguồn thôi,bí wa lên tìm thầy thầy đưa cho code làm hiển thị chữ,mô phỏng thì bình thường nhưng khi ráp thực tế LCD này từ 20x4 bây giờ chỉ con lại 10x2,nghĩa chữ cách chữ 1 ký tự (A B C) TDM biết chỉ giùm với
#include <16f877a.h>
#include <DEF_16F877A.h>
#DEVICE *=16 ADC=10
#fuses NOWDT,NOPROTECT,NOLVP,HS,NOPUT,NODEBUG, NOBROWNOUT,NOCPD, NOWRT
#use delay(clock=12000000)
#define RS RD4
#define RW RD5
#define E RD6
#define lcd portb
//int SEC,MIN,HOUR,DAY,WEEK,MONTH,YEAR,TEST;
//int SECI,MINI,HOURI,DAYI,WEEKI,MONTHI,YEARI,TESTI,SECT EMP,CONTROL;
const unsigned char TEMP[]="TEMPERATURE ";
INT I;
void COMMON_LCD(VOID)
{ RW=0;
E=0;
E=1;
DELAY_MS(1);
RW=1;
RS=0;
E=0;
DELAY_MS(1);
E=1;
DELAY_MS(10); }
void COMMAND_WRITE(VOID) //WRITE DATA TO CONTROL LCD
{ RS=0;
COMMON_LCD(); }
void DATAWRITE(VOID) //WRITE DATA TO LCD TO DISPLAY
{ RS=1;
COMMON_LCD(); }
VOID SETUP_LCD (VOID)
{ E=1;
RS=0;
RW=0;
LCD=(0x38); //SETUP LCD DISPLAY TWO LINES
COMMAND_WRITE();
DELAY_MS(50);
LCD=(0x38); //SETUP LCD DISPLAY TWO LINES
COMMAND_WRITE();
DELAY_MS(1);
LCD=(0x38);
COMMAND_WRITE();
LCD=(0x0C); //SETUP DISPLAY CONTROL
COMMAND_WRITE();
LCD=(0x01); //CLEAR DISPLAY
COMMAND_WRITE();
LCD=(0x06);
COMMAND_WRITE();
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX
void main()
{
SET_TRIS_B(0x00); //SETUP PORT B IS OUTPUT
SET_TRIS_D(0x00);
SETUP_LCD ();
LCD=(0x80); //SETUT ADDRESS FOR FIRST LINE
COMMAND_WRITE();
DELAY_MS(50);
WHILE(I<=11)// TO DISPLAY A TEXT "TEMPERATURE"
{
LCD=TEMP[I];
DATAWRITE();
DELAY_MS(100);
I++;
}
}
|