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

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

Подключил ЖКИ MT-10S1(МЭЛТ). Но выводит какую-то ерунду...

Отправлено Maksss 18 мая 2007 г. 12:56


Помогите пожалуйста! Подключил ЖКИ. Для работы по 4-х битному интерфейсу. Написал программу, в кот. в 7 разряде дисплея должен выводиться симов Z(5Ah). Но у меня выводится e(0Fh) и в 3 разряде. ЧТо не так? Всю ночь сидел, но так и не разобрался пока...

Пишу программу в AVR Studio 4. Вот листинг:

/*Вывод ЖКИ МЭЛТ MT-10S1
Тактовая частота микроконтроллера ATtiny2313 8МГц-
-следовательно длительность одног такта 125ns*/

#include

// задержка
void delay(int takt)
{
while(takt--);
}

// передача байта команды в 4-х битном режиме
void command(int reg)
{
PORTB = reg; // сначала старшие PB4-PB7
// A=0(поразрядное И с 11111011)
PORTB &= 0x00FB;
//необходимо выдержать Tas=100ns
delay(1);
// E=1
PORTB |= 0x0008;
// удерживаем E=1 в течение PWeh=700ns
delay(6);
// строб E=0
PORTB &= 0x00F7;
//удерживаем данные в течение Th=30ns
delay(800);

// сдвигаем младшие 4 бита на PB4-PB7
reg = reg << 4;
// работаем с младшими 4-мя битами
PORTB = reg;
// A=0(поразрядное И с 11111011)
PORTB &= 0x00FB;
//необходимо выдержать Tas=100ns
delay(1);
// E=1
PORTB |= 0x0008;
// удерживаем E=1 в течение PWeh=700ns
delay(6);
// строб E=0
PORTB &= 0x00F7;
//удерживаем данные в течение Th=30ns
delay(800);
}

// передача байта данных в 4-х битном режиме
void data(int reg)
{
PORTB = reg; // сначала старшие PB4-PB7
// A=1(поразрядное ИЛИ с 00000100)
PORTB |= 0x0004;
//необходимо выдержать Tas=100ns
delay(1);
// E=1
PORTB |= 0x0008;
// удерживаем E=1 в течение PWeh=700ns
delay(6);
// строб E=0
PORTB &= 0x00F7;
//удерживаем данные в течение Th=30ns
delay(800);

// сдвигаем младшие 4 бита на PB4-PB7
reg = reg << 4;
// работаем с младшими 4-мя битами
PORTB = reg;
// A=1(поразрядное И с 11111011)
PORTB |= 0x0004;
//необходимо выдержать Tas=100ns
delay(1);
// E=1
PORTB |= 0x0008;
// удерживаем E=1 в течение PWeh=700ns
delay(6);
// строб E=0
PORTB &= 0x00F7;
//удерживаем данные в течение Th=30ns
delay(800);

}

// Инициализация модуля ЖКИ
void init(void)
{
int registr, i;

PORTB &= 0x00F7;
for(i=0; i<=4; i++)
{
delay(40000);
}

PORTB = 0x0030;
for(i=0; i<=8; i++)
{
delay(40000);
}

PORTB |= 0x0008;
delay(6);
PORTB &= 0x00F7;
delay(800);
PORTB |= 0x0008;
delay(6);
PORTB &= 0x00F7;
delay(800);
PORTB |= 0x0008;
delay(6);
PORTB &= 0x00F7;
delay(800);

PORTB = 0x0020;
PORTB |= 0x0008;
delay(6);
PORTB &= 0x00F7;
delay(3);

// разрядность
registr = 0x0028;
command(registr);
delay(800);
// включает индикатор
registr = 0x000E;
command(registr);
delay(800);
// очистка и в левую позицию
registr = 0x0001;
command(registr);
delay(32000);

registr = 0x0006;
command(registr);
delay(800);

}


void main(void)
{
// Инициализация портов процессора
DDRB = 0x00FF;

int registr;

// инициализация модуля ЖКИ
init();

// установка адреса ячейки памяти, в кот. помещ. символ для отобр. в 7 разряде ЖКИ
registr = 0x0086;
command(registr);

// вывод буквы A(eng)
registr = 0x005A;
data(registr);

while (1);
}


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

Ответы


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

Сообщение:

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

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:

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

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