Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пoмогите с LCD

42K
17 ноября 2009 года
goodking
19 / / 09.06.2009
Привет! Используя примеры написал програмку, но почему-то индикатор никак не реагирует на нее, горит только верхняя строчка..ну и все
вот код, может ошибка в нем! Буду благодарен за помощь
Код:
#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();
}
:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог