|
16S2D, LCD |
|
|
|
Aug 4 2007, 13:02
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681

|
Имеется мт-16S2D подключонный к мк Tiny2313 по 4-х битной шине. Программирую на С, но только что-то не чего не получается. При включении питания дисплей какбы загорает и сразуже гаснит (LCD новый) это так задуманно? Питание у меня 3.6В. Помогите запустить дисплей. ?
--------------------
|
|
|
|
|
 |
Ответов
|
Sep 7 2007, 10:35
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681

|
Переделал схему, сделал на меге16, но вот всё равно прошивка неработает что не так? Код #include <MEGA16.h> #include <delay.h>
#define D7 PA1 #define D6 PA0 #define D5 PA3 #define D4 PA2 #define E PC5 #define RW PC6 #define RS PC4
// определяем светодиод #define LED_OFF (PORTD |= (1<<6)) #define LED_ON (PORTD &= ~(1<<6))
#define SET_D7 (PORTA |= (1<<3)) #define SET_D6 (PORTA |= (1<<2)) #define SET_D5 (PORTA |= (1<<1)) #define SET_D4 (PORTA |= (1<<0))
//#define SET_RW (PORTB |= (1<<5)) //#define CLR_RW (PORTB &= ~(1<<5)) #define SET_RS (PORTA |= (1<<6)) #define CLR_RS (PORTA &= ~(1<<6)) #define SET_E (PORTA |= (1<<4)) #define CLR_E (PORTA &= ~(1<<4))
// ЖКИ подключен младшему полубайту порта PB! #define WRITE_HIGH_NIBBLE(x) ( PORTA = (PORTA & 0xF0) | ((x) >> 4) ) #define WRITE_LOW_NIBBLE(x) ( PORTA = (PORTA & 0xF0) | ((x) & 0x0F) )
#define MKS_PBYT 2 /* время на передачу полубайта на дисплей */ #define MKS_BYTE 40 /* время после передачи байта на дисплей */
#define PAGE0 0x28 // Первая кодовая страница #define PAGE1 0x2A // Вторая кодовая страница
//************************************** // P R O T O T Y P E //**************************************
void BLINK_LED (void); void WRITE_LCD(char); void _E (void); void _Epb (void); void INIT_LCD(void); void Delay_50ms(int t); void CLR_LCD(); int main(void) {
DDRA = 0xff; // назначаем все линии порта B на выход PORTA = 0x00; // и устанавливаем на них низкий уровень DDRD = 0xff; // назначаем все линии порта D на вывход PORTD = 0x00; // и устанавливаем на них низкий уровень LED_OFF;
BLINK_LED (); //Вспышка светодиода на порту INIT_LCD(); //ИНИЦИАЛИЗАЦИЯ
while(1); }
/********************************************************** Имя функции: void Delay_50ms(int t) Описание: Задержка, кратная 50 ms Вход: t -> Число повторов цикла Выход: нет Примечание: Arsen, редакция от 17.04.2006 **********************************************************/
void Delay_50ms(int t) { unsigned int i; for(i=0; i<t; i++) { delay_ms(50); } } /********************************************************** Имя функции: void BLINK_LED(void) Описание: Вспышка светодиода на порту PD6 Вход: нет Выход: нет Примечание: Arsen, редакция от 17.04.2006 **********************************************************/
void BLINK_LED (void) { Delay_50ms(50); LED_ON; // Зажигаем LED Delay_50ms(5); // пауза 250 ms LED_OFF; // гасим LED Delay_50ms(15); // Всего 500 ms // Delay_50ms(50); // с этой строкой 1 сек. } /********************************************************** Имя функции: void CLR_LCD(void) Описание: Очистка экрана ЖКИ Вход: нет Выход: нет Примечание: Arsen, редакция от 17.05.2006 **********************************************************/
void CLR_LCD() { WRITE_LCD (0x01); delay_ms(3); } /********************************************************** Имя функции: void _E(void) Описание: выдача сигнала "Е" на ЖКИ с полным временем ожидания (после выдачи всей команды) Вход: нет Выход: нет Примечание: Arsen, редакция от 17.04.2006 **********************************************************/
void _E (void) { delay_us(MKS_PBYT); SET_E; delay_us(MKS_PBYT); CLR_E; delay_us(MKS_BYTE); //пауза между командами }
/********************************************************** Имя функции: void _Epb(void) Описание: выдача сигнала "Е" на ЖКИ с укороченным временем ожидания (между вводом полубайтов) Вход: нет Выход: нет Примечание: Arsen, редакция от 17.04.2006 **********************************************************/
void _Epb (void) { delay_us(MKS_PBYT); SET_E; delay_us(MKS_PBYT); CLR_E; delay_us(MKS_PBYT); // пауза между полубайтами } /********************************************************** Имя функции: void WRITE_LCD(unsigned char ch) Описание: Запись байта команды в ЖКИ Вход: ch -> байт для записи Выход: нет Примечание: Arsen, редакция от 17.04.2006 **********************************************************/
void WRITE_LCD(char value) { delay_us(MKS_PBYT); WRITE_HIGH_NIBBLE(value); _Epb(); WRITE_LOW_NIBBLE(value); _E(); delay_us(MKS_BYTE); }
/********************************************************** Имя функции: void INIT_LCD(void) Описание: Начальная инициализация ЖКИ Вход: нет Выход: нет Примечание: Arsen, редакция от 17.05.2006 **********************************************************/
void INIT_LCD(void) { PORTA = 0x00; delay_ms(MKS_BYTE); // ждем более 30 мс
// Трижды устанавливаем 8-битный режим - начальная инициализация SET_D5; SET_D4; // команда "8-битный режим" _E(); _E(); _E();
/***/
PORTA = 0x00; SET_D5; // Переводим в 4-битный режим _E();
/***************************************************/
WRITE_LCD(0x2A); WRITE_LCD(0x0C); CLR_LCD(); WRITE_LCD(0x06);
}
--------------------
|
|
|
|
Сообщений в этой теме
PaulB 16S2D Aug 4 2007, 13:02 prottoss Цитата(PaulB @ Aug 4 2007, 21:02) Имеется... Aug 4 2007, 14:01 PaulB Дисплей поддерживает 3-х В-ое и 5В-ое питание.
Кс... Aug 4 2007, 14:21 prottoss Цитата(PaulB @ Aug 4 2007, 22:21) Кстате,... Aug 4 2007, 14:45 PaulB а как заставить его хоть зажечься, неговорю о том ... Aug 4 2007, 15:02 prottoss Цитата(PaulB @ Aug 4 2007, 23:02) а как з... Aug 4 2007, 15:05 Petka Цитата(PaulB @ Aug 4 2007, 19:02) а как з... Aug 5 2007, 10:57 PaulB Нашёл там один исходник, но он оказался очень слож... Aug 4 2007, 15:13 prottoss Цитата(PaulB @ Aug 4 2007, 23:13) Нашёл т... Aug 4 2007, 15:26 PaulB нУ ДИОДАМ ПОМОГАТЬ ПРЫГАТЬ УЖЕ НАУЧИЛСЯ.
На С нео... Aug 4 2007, 15:47 korobov_michael Попробуй это.
У меня это рабочая версия при тестир... Aug 5 2007, 07:05 PaulB Вот посмотрите пожалуйсто код:
-------------------... Aug 5 2007, 09:00 korobov_michael Внимательно проверь инициализацию!
Похоже, ты ... Aug 5 2007, 21:21  ESL Обратите внимание, что у МЭЛТовских дисплеев не до... Aug 6 2007, 05:59 Serg_greS Посмотрите может вся проблема у Вас в этом:
В 4-х... Aug 6 2007, 07:25 Serg_greS Попробуйте так:
WRITE_LCD(0x2e);
WRITE_LCD(0x0f);... Sep 12 2007, 12:38 PaulB Всё мучаюсь!
Вот код программы, Проверял в пр... Oct 2 2007, 05:46 Serg_greS ЦитатаЯ уже начинаю подазривать что ЖК нерабочий.Ч... Oct 2 2007, 05:57 D H Прекрасно работает библиотека CodeVision с Мелтовс... Oct 2 2007, 07:05 PaulB Контрасность на землю завёл даже подсветку подключ... Oct 2 2007, 09:45 PaulB Вот обнаружил один момент: в то время когда происх... Oct 2 2007, 15:56 D H Цитата(D H @ Oct 2 2007, 11:05) Прекрасно... Oct 3 2007, 12:18 PaulB Всё точно так же и у меня, даже светодиод стоит (г... Oct 3 2007, 14:08 D H Что значит "немного мерцает"? Зажигаются... Oct 3 2007, 18:28 PaulB Мерцает сама подсветка одновременно с миганием све... Oct 4 2007, 06:32 D H Вот твой текст:
lcd_init(16);
Где здесь у тебя вык... Oct 4 2007, 08:27 PaulB >Вот твой текст:
>lcd_init(16);
>Где здес... Oct 4 2007, 11:20 REGBIST11 #include <Mega16.h>
#include <delay.h... Oct 4 2007, 16:37 PaulB Получилось!!!!!!!... Oct 5 2007, 06:15 REGBIST11 Цитата(PaulB @ Oct 5 2007, 09:15) Получил... Oct 5 2007, 06:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|