реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> LCD и IAR, Не могу заставить работать
otrog
сообщение May 30 2006, 11:37
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(ILYCHOFF @ May 30 2006, 12:25) *
Все равно не работает, может у кого есть исходник рабочий для 16*2, просто сравнить, и задержки посмотреть уже не знаю на что думать...

help.gif
Попробуйте это:
Код
#include <avr_macros.h>
#include "delay.h"

#define EN      PORTD
#define EN_Bit  7
#define RS      PORTD
#define RS_Bit  5

#define D      PORTB

#define lcd_delay 15

// Запись в lcd: mode=0 команда, mode=1 данные
void lcd_write(unsigned char data, unsigned char mode)
{
  if (mode) {SETBIT(RS,RS_Bit);} else {CLEARBIT(RS,RS_Bit);}
  SETBIT(EN,EN_Bit);
  D = (D & 0xF0) | (data >> 4); // старший ниббл
  delay_us(lcd_delay);
  CLEARBIT(EN,EN_Bit);
  delay_us(lcd_delay);
  D = (D & 0xF0) | (data & 0x0F); // младший ниббл
  SETBIT(EN,EN_Bit);
  delay_us(lcd_delay);
  CLEARBIT(EN,EN_Bit);
  delay_us(lcd_delay*5);
}

void lcd_init(void)
{
  lcd_write(0x33, 0); delay_ms(5);
  lcd_write(0x32, 0); lcd_write(0x28, 0); // 4 бит, 2 строки
  lcd_write(0x08, 0); // полное выключение дисплея
  lcd_write(0x01, 0); delay_ms(5); // очистка дисплея
  lcd_write(0x06, 0); // сдвиг курсора вправо
  lcd_write(0x0C, 0); // включение дисплея, мигающий курсор
  
//  InitCGram();
}
Работает так например:
Код
lcd_init();
lcd_write('Z', 1);

ПС В lcd_init комментарии некорректны.
ППС А за delay.h большое спасибо. Еще бы найти что-нибудь чтобы можно было в IAR-е писать PORTD.3 = 1;


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение May 30 2006, 11:54
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



А что вам мешает писать

PORTB_Bit1=1;
~PORTB_Bit1;
Go to the top of the page
 
+Quote Post
otrog
сообщение May 30 2006, 12:09
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



То что нельзя записать так:
Код
ADCSRA.ADEN = 1;

А в общем уже кое что. Спасибо.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 30 2006, 14:16
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Привет всем!



Не вдавался в подробности обсуждения, но может пригодится страждущим мой исходник. С помощью многочисленных #define перестраивается под любой мыслимый дисплей на основе HD44780 (только с одним чипом!, т.е кроме индикаторов 4х40). В исходнике только примитивы - отправить команду, прочитать статус, отправить данные, прочитать данные. Вполне достаточно, что бы приступить к плодотворной работе с дисплеем без экспериментов. Поддерживает 4-х и 8-и битную шину данных... Сварено на IAR C for AVR 4.10B. Как всегда, мои подробнейшие комментарии)))

http://electronix.ru/forum/index.php?showt...opid=118553#


--------------------
Go to the top of the page
 
+Quote Post
WHALE
сообщение May 30 2006, 18:07
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



А ведь вам A_Bolshev ,нисмотря не на что,неплохой совет дал-воспользоваться в VMLAB функцией виртуального lcd.Очень классная штука,подключается за 5 минут и симулирует на 100%-останов по недопустимым командам и даже ошибки тайминга.Воспользуйтесь-не пожалеете.Удачи.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение Jun 1 2006, 06:42
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Всем спасибо за ответы разобрался все заработало как надо...
То что у меня получилось прикладываю. Возможно новичкам будет полезно. Собрано на IAR 4.11
Проверено на индикаторе WinStar WH1602A

и МЭЛТ MT16S2H У МЭЛТА замечен глюк иногда выскакивают лишние символы там где их быть не должно, правда не знаю видимо он с брачком, он у меня с самого начала так же глючил когда писал на CV со стандартными библиотеками для LCD, хотя может это особенность контроллера который там стоит.

А так все, всем спасибо....
Прикрепленные файлы
Прикрепленный файл  lcd_driver.rar ( 2.01 килобайт ) Кол-во скачиваний: 70
 
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 08:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016