Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
24.11.2009, 11:45
|
|
Прохожий
Регистрация: 24.11.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Помогите разобратся с LCD
Привет! Не могу ничего вывести на экран, подсоединен правильно
подскажите пожалуйста, в чем может быть проблема
Код:
|
#include "c8051F120.h"
#include ‹string.h›
#include ‹stdio.h›
sbit LCD_rs=P0^2;
sbit LCD_rw=P0^1;
sbit LCD_en=P0^0;
sbit LCD_D7=P2^7;
#define LCD_data P2
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();
unsigned char Mas[40];
void main (void)
{ int i;
for(i =0;i‹35;i++) Mas[i] = 0;
strcpy(Mas,"0123456789ABCDEFGHJKL");
WDTCN = 0xDE;
WDTCN = 0xAD;
while (1){
Port_IO_Init();
LCD_init ();
LCD_sendstring (Mas);
LCD_build();
}
}
void Port_IO_Init()
{
SFRPAGE = CONFIG_PAGE;
P0MDOUT = 0xFF;
P2MDOUT = 0xFF;
XBR2 = 0x40;
}
void LCD_init()
{ LCD_rs=0;
LCD_rw=0;
LCD_en=1;
LCD_en=0;
LCD_busy();
LCD_data=0x38;
LCD_rs=0;
LCD_rw=0;
LCD_en=1;
LCD_en=0;
LCD_data=0x38;
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=0x05;
LCD_rs=0;
LCD_rw=0;
LCD_en=1;
LCD_en=0;
LCD_en=1;
LCD_busy();
}
void LCD_busy()
{
unsigned char i,j;
for(i=0;i‹500;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();
} |
микроконтроллер SiLabs C8051F120, индикатор PYC1602AHW-SYL, или если можно, дайте ссылки на аналогичные примеры на языке С
Последний раз редактировалось godking; 24.11.2009 в 12:32.
|
|
|
|
24.11.2009, 12:03
|
|
Прохожий
Регистрация: 26.10.2009
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобратся с LCD
Разбираться не стал, сразу бросилось в глаза:
unsigned char i,j;
for(i=0;i‹500;i++)
i надо тогда объявлять как int.
Попробуйте, может сдесь косяк.
Не получится, выложу свой вариант (но для PIC)
|
|
|
|
24.11.2009, 12:21
|
|
Прохожий
Регистрация: 24.11.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобратся с LCD
Сообщение от Pasha_Bi
|
Разбираться не стал, сразу бросилось в глаза:
unsigned char i,j;
for(i=0;i‹500;i++)
i надо тогда объявлять как int.
Попробуйте, может сдесь косяк.
|
Спасибо, к сожалению ничего не изменилось,
Цитата:
|
Не получится, выложу свой вариант (но для PIC)
|
буду благодарен
|
|
|
|
24.11.2009, 14:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Помогите разобратся с LCD
Возможно и глупый вопрос, но какой тип индикатора Вы используете? Соответствуют ли комманды инициализации контроллеру? Соблюдаются ли требования по длительности импульса строба (LCD_en)?
|
|
|
|
24.11.2009, 15:13
|
|
Прохожий
Регистрация: 24.11.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобратся с LCD
Сообщение от MisterDi
|
Возможно и глупый вопрос, но какой тип индикатора Вы используете? Соответствуют ли комманды инициализации контроллеру? Соблюдаются ли требования по длительности импульса строба (LCD_en)?
|
индикатор PYC1602AHW-SYL, вот ссылка на него http://zefiryn.tme.pl/dok/a06/pyc1602a-series-1.pdf , по моему соответствуют
Последний раз редактировалось godking; 24.11.2009 в 15:22.
|
|
|
|
24.11.2009, 16:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Помогите разобратся с LCD
Вставьте задержки 1мкС после каждой установки LCD_en, т.к. если тактовая выше 3МГц, не выполняется условие длительности импульса записи.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:14.
|
|