#include "c8051F120.h"
sbit LCD_rs=P2^4;
sbit LCD_rw=P2^2;
sbit LCD_en=P2^0;
#define LCD_data P4
void Port_IO_Init(void);
void LCD_init(void);
void LCD_command(unsigned char var);
void LCD_busy(void);
void LCD_senddata(unsigned char var);
void LCD_sendstring(unsigned char *var);
void LCD_build();
void main (void)
{
Port_IO_Init();
LCD_init ();
LCD_busy();
while (1){
WDTCN = 0xDE;
WDTCN = 0xAD;
LCD_sendstring ();
LCD_build();
};
}
void Port_IO_Init(void)
{
SFRPAGE = CONFIG_PAGE;
P2MDOUT = 0xFF;
P4MDOUT = 0xFF;
XBR2 = 0x40;
}
void LCD_init(void)
{LCD_data = 0x0E;// 2 линии 8 бит 5х8 точек
LCD_rs = 0;// обработка данных как инструкций
LCD_rw = 0; // запись данных в ЖКИ
LCD_en = 1;
LCD_en = 0;
LCD_busy(); //пауза для обработки команд*/
LCD_data = 0x0F;//включить дисплей, курсор
LCD_rs = 0;
LCD_rw = 0;
LCD_en = 1;
LCD_en = 0;
LCD_busy();
LCD_data = 0x01;
LCD_rs = 0;
LCD_rw = 0;
LCD_en = 1;
LCD_en = 0;
LCD_busy();
LCD_data = 0x06;//режим введения авто увиличение без сдвига
LCD_rs = 0;
LCD_rw = 0;
LCD_en = 1;
LCD_busy();
LCD_data = 0;
}
void LCD_busy()
{unsigned char i,j;
for(i=0;i<50;i++) //A simple for loop for delay
for(j=0;j<255;j++);
}
void LCD_command(unsigned char var)
{
LCD_data = var;
LCD_rs = 0;
LCD_rw = 0;
LCD_en = 1;
LCD_en = 0;
LCD_busy();
}
void LCD_sendstring(unsigned char *var)
{ while(*var) //till string ends
LCD_senddata(*var++); //send characters one by one
}
void LCD_build()
{
LCD_command(0x48); //Load the location where we want to store
LCD_senddata(0x32); //Load row 1 data
LCD_senddata(0x0E); //Load row 2 data
LCD_senddata(0x0E); //Load row 3 data
LCD_senddata(0x0E); //Load row 4 data
LCD_senddata(0x1F); //Load row 5 data
LCD_senddata(0x00); //Load row 6 data
LCD_senddata(0x04); //Load row 7 data
LCD_senddata(0x00); //Load row
}
void LCD_senddata(unsigned char var)
{
LCD_data = var;
LCD_rs = 1;
LCD_rw = 0;
LCD_en = 1;
LCD_en = 0;
LCD_busy();
}
Пoмогите с LCD
Привет! Используя примеры написал програмку, но почему-то индикатор никак не реагирует на нее, горит только верхняя строчка..ну и все