این جور که من روند برنامه lcd را دیدم اینطور نیست که اول E را فعال کنیم بعد ارسال انجام بدیم، بلکه اول ارسال می کنیم و بعد 450 نانو ثانیه ای E را یک و سپس صفر می کنیم. این یک مثال ساده برای 8 بیتی است:
کد:
void lcd_putchar(unsigned char CHAR){
FIO0SET=RS;
FIO0CLR=RW;
FIO0SET0 = CHAR;
FIO0SET=E;
delay(70);
FIO0CLR=E;
delay(5000);
FIO0CLR0 = CHAR;
}
برای 4 بیتی هم ابتدا 4 بیت اول را با همین روش میفرستیم و سپس 4 بیت دوم:
کد:
void lcd_putchar(unsigned char CHAR){
FIO0SET=RS;
FIO0CLR=RW
FIO0SET= (((CHAR&0X10)|(CHAR&0X20)|(CHAR&0X40)|(CHAR&0X80))>>4);
FIO0SET=E;
delay(70);
FIO0CLR=E;
delay(5000);
FIO0CLR= (((CHAR&0X10)|(CHAR&0X20)|(CHAR&0X40)|(CHAR&0X80))>>4);
FIO0SET= ((CHAR&0X01)|(CHAR&0X02)|(CHAR&0X04)| (CHAR&0X08));
FIO0SET=E;
delay(70);
FIO0CLR=E;
delay(5000);
FIO0CLR= ((CHAR&0X01)|(CHAR&0X02)|(CHAR&0X04)| (CHAR&0X08));
}
فکر کنم این مثال راحتر باشه فهمش برای شروع کار تا مثال اولی که ذکر کردم. مگه اینکه صاحاب مثال اولی بیاد شرح بده روند کارش چی بوده