Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Рабочий пример(+)

Отправлено Den 19 мая 2007 г. 08:57
В ответ на: Ответ: отправлено <font color=gray>Maksss</font> 18 мая 2007 г. 17:27


// Подключение индикатора:
// PB1 - RS (A)
// PB2 - RW
// PB3 - EN
// PB4 - D4
// PB5 - D5
// PB6 - D6
// PB7 - D7

#define lcd_port (PORTB)
#define lcd_ddr (DDRB)
#define lcd_pin (PINB)
#define lcd_rs 1
#define lcd_rw 2
#define lcd_en 3

void lcd_delay(int t) {
while(t--);
}
// Выдача импульса EN
//
void lcd_pulse(void) {
lcd_port |= (1 << lcd_en);
lcd_delay(8);
lcd_port &= ~(1 << lcd_en);
}
// Ожидание готовности
//
void lcd_wait(void) {
unsigned char st;
lcd_ddr = 0x0f; lcd_port = (1 << lcd_rw); // Чтение команд
while(1) {
lcd_port |= (1 << lcd_en);
lcd_delay();
st = lcd_pin;
lcd_port &= ~(1 << lcd_en);
lcd_pulse();
if ((st&0x80)==0) break;
}
lcd_ddr = 0xff; lcd_port = 0;
}
// Запись команд в индикатор
//
void lcd_wrc(unsigned char d) {
lcd_wait();
lcd_port = (d&0xf0); lcd_pulse();
lcd_port = (d<<4)&0xf0; lcd_pulse();
}
// Запись данных в индикатор
//
void lcd_wr(unsigned char d) {
lcd_wait();
lcd_port = (d&0xf0)|(1 << lcd_rs); lcd_pulse();
lcd_port = ((d<<4)&0xf0)|(1 << lcd_rs); lcd_pulse();
}
// Инициализация индикатора
//
void lcd_init(void) {
lcd_wrc(0x28); lcd_wrc(0x28); lcd_wrc(0x28);
lcd_wrc(0x0c); lcd_wrc(0x06); lcd_wrc(0x01);
}



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 654:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru