Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[8]

DD1 ATmega8-16PI

RP2, T2, BA2 RP3, ТЗТВАЗ" RP4, Т4, ВА4 RP5, Т5, ВА5" RP6, Т6, ВАб" RP7, Т7, ВА7~ RP8,T8TbA8"

а b с d е f

Листинг 3

"Вращающийся звук" =AVR, ступень 5=, РА, №5, 2005 =1 Make: Name=avr53, MCU=atmega8, Level=2, Debug=VMLab =2 Фьюзы: SUT0=CKSEL3=CKSEL2=CKSELl="rano4KM" (1 МГц) =3 #include <avr/io.h> Библиотека ввода-вывода =4

#include <avr/delay.h> Библиотека задержек =5

#define F CPU 1000000UL Тактовая частота 1 МГц =6

#define LR РВО Условное имя для кнопки ВЛЕВО-ВПРАВО =7 #define PLUS РВ1 Условное имя для кнопки "+" =8

#define MINUS РВ2 Условное имя для кнопки "-" =9

#define NOTA 83 Константа для частоты звука 2 кГц =10 unsigned int а; Счетчик для длительности звука =11

unsigned char b, к; Номер канала звучания =12

unsigned char temp=50; Начальная длительность звука =13

---------Функция проверки нажатия кнопки-----------=14

unsigned char key (unsigned char s) "s-линия порта=15 { if (bit is clear(PINB,s)) Если кнопка нажата, то =16 { delay loop 2(12500); Пауза 50 мс, антидребеэг =17 if (bit is clear(PINB,s)) Повторная проверка =18 { return (0); Возврат с "0" при нажатии кнопки =19 } Окончание повторной проверки =20

} Окончание процедуры обработки нажатия кнопки =21 return (1); Возврат с "1" при отсутствии нажатия =22 } Окончание функции "key" =23

-------Функция свечения индикатора HG1-------------=24

void ind (unsigned char number) пшпЬег=код символа =25 { switch (number) Индикация цифр 1-9 и буквы F =26

{ case 0: PORTC=0xCE; PORTB &= BV(PB6); break; F =27 PORTC=0xF9; PORTB = BV(PB6); break; 1 =28 PORTC=0xE4; PORTB &=~ BV(PB6); break; 2 =29 PORTC=0xF0; PORTB &=~ BV(PB6); break; 3 =30 PORTC=0xD9; PORTB &=~ BV(PB6); PORTC=0xD2; PORTB &=~ BV(PB6); PORTC=0xC2; PORTB &=~ BV(PB6); PORTC=0xF8; PORTB = BV(PB6); PORTC=0xC0; PORTB &=- BV(PB6) ; PORTC=0xD0; PORTB &=- BV(PB6) ; } Ha HG1 индицируется выбранный символ =37

return; Возврат обратно в программу =38

} Окончание функции "ind" =39

/ /========осНОВНАЯ ПРОГРАММА===========4 0

int main(void) Начало основной программы =41

{ PORTB=0xFF; DDRB=0xD0; MOSI,РВ6,РВ7- выходы с "1" =42 PORTC=0xFF; DDRC=0x3F; РС0-РС5 - выходы с "1" =43

PORTD=DDRD=0xFF; Все линии порта D - выходы с "1" =44 ind (О); Индикация буквы F - тестовый режим =45

while (1) Бесконечный цикл =46

{ for (b=0; b < 8; b++) Смена 8 каналов звучания =47 { if (bit is clear (PINB,LR) ) Если включен SAl =48 { k=b; PORTB &= -v BV(PB7) ; Горит точка на HG1 =49 } Установлено направление звука справа-налево =50 else Если отключен SA1, то направление вправо =51 { k=7-b; PORTB = BV(PB7); Точка HG1 погашена=52 } Установлено направление звука слева-направо =53 for (a=temp * 50; а > 0; а--) Длительн. звука =54 { PORTD А= BV(k); Генерация 0-1-0-1... =55

delay loop l(NOTA); Пауза (частота звука) =56 } Окончание генерации звука в одном канале =57 if ((key(MINUS)) == 0) Если нажата кнопка "-" =58 { if (++temp > 9) temp=9; Проверка на максимум=59 ind (temp); Индикация нового значения на HG1=60 delay loop 2(62500); Пауза на 250 мс =61

} Окончание действий при нажатии кнопки "-" =62 if ((key(PLUS)) == 0) Если нажата кнопка "+" =63 { if (temp == 50) temp = 10; Начальн. нажатие =64 if (--temp < 1) temp=l; Проверка на минимум =65 ind (temp); Индикация нового значения на HG1=66 delay loop 2(62500); Пауза на 250 мс =67

} Окончание действий при нажатии кнопки "+" =68 } Переход к следующему каналу звучания =69

} Переход к началу бесконечного цикла "while" =70

} WinAVR-20050214, длина программы 496 байтов =71

case 1 case 2 case 3 case 4 case 5 case 6 case 7 case 8 case 9

break; 4 =31 break; 5 =32 break; 6 =33 break; 7 =34 break; 8 =35 9 =36

HG1 АЛ324Б1

->+5B

C1 0,1 мк

стота 10 1,1 Гц). Индикацию периода вывести

на семисегментный индикатор.

Электрическая схема прибора для тестирования инерционности слуха показана на рис.8. Динамики BA1-BA8 вместе с трансформаторами Т1-Т8 и регуляторами RP1-RP8 используются от радиотрансляционных точек. Их прямое подключение к линиям порта D является допустимым, поскольку система рассчитана на импульсный характер работы в каналах.

Индикация выводится на светодиодный индикатор HG1, ток через сегменты которого ограничивают резисторы R1-R8 200 360 Ом. Кнопками SB2, SB3 задают скорость "вращения звука" соответственно больше и меньше. Переключатель SA1 служит для смены направления вращения "слева направо" или "справа налево". Индикатором этого момента является светящаяся или погашенная десятичная точка на табло HG1.

Если между цепью +5 В и выводами 2-6, 11-13 МК подключить цепочки, состоящие из последовательно включенных резисторов 360 Ом и светодиодов АЛ307Б (анодом к +5 В), то получится оригинальная линейная шкала с пробегающей по циклу световой точкой.

Кнопка SB1 сбрасывает МК, устанавливая начальный тестовый режим с низким периодом вращения 5 с, чтобы испытуемый мог адаптировать свой слуховой аппарат и психологически настроиться на измерения.

Си-программа тестера "вращения звука" приведена в листинге 3.

Строки 7-9. Полезный для практики прием, когда входным или выходным линиям портов присваиваются логически понятные имена. Текст Си-программы становится легче читаемым, но увеличивается число строк.

Строки 16-20. Проверка отсутствия неконтролируемого "дребезга" контактов кнопок. Длится он обычно 20 40 мс, поэтому проводятся две проверки состояния с разницей в 50 мс (строка 17). Если повторная проверка "не прошла", то считается, что было ложное срабатывание и кнопка не нажата.

Строки27-36. Пример прямого управления портом С, при этом его старшие неиспользуемые в схеме разряды всегда установлены в "1", чтобы, например, вход PC6 не "висел в воздухе" при коммутации.

Строка54. Переменная "a" определяет число циклов генерации звука. Расчет длительности. В строке 13 начальное значение temp=50, следовательно, a=temp*50=50*50=2500. Длительность задержки в строке 56 составляет t=250 мкс, число каналов N=8, суммарное время TH=a*N*tH=2500*8*0,00025=5 с. Именно с таким периодом будет проходить один цикл вращения в тестовом режиме.

Строка 64. Проверка переменной "temp" с тем, чтобы после первого нажатия кнопки SB2 произошел переход сразу в режим 900 мс. Для кнопки SB3 такая проверка не нужна, поскольку она производится автоматически в строке 59.

Эксперименты с "вращающимся звуком"

Испытуемого усаживают в центре комнаты, вокруг него расставляют 8 динамиков по рис.7. Расстояние и высоту подбирают экспериментально. Включают прибор, переключателем SA1 устанавливают требуемое направление вращения звука. В начале (или после нажатия кнопки сброса SB1) проверяют слышимость сигналов в тестовом режиме. Резисторами RP1-RP8 подстраивают громкость так, чтобы звуки с разных направлений были примерно равными по уровню.

Затем кнопкой "+" постепенно увеличивают частоту вращения до тех пор, пока испытуемый не скажет, что эффект вращения стал размытым или вовсе прекратился. Показание индикатора HG1, умноженное на 100 мс, и будет означать критический для данного человека показатель. Теперь переключателем SA1 меняют направление вращения, нажимают сброс и вновь повторяют измерения. Как правило, показания будут отличаться. Связано это с разными функциями левого и правого полушарий головного мозга. Если будут зафиксированы значительные отклонения от среднестатистических показаний, то это может свидетельствовать о начинающихся нарушениях не только слухового аппарата, но и мозговой деятельности человека (предвестник болезни).

Практическое задание. Промоделировать работу электрических схем, показанных на рис.2, 5, 8, с помощью программы VMLab. Проверить результаты моделирования на реально собранных макетах устройств. Выслать разработчикам WinAVR по электронной почте свои предложению по улучшению интерфейса и расширению возможностей инструментов MFile, PN, AVRDUDE.


Микроконтроллеры AVR. Ступень 6

С.М. Рюмик, г. Чернигов

Мы редко понимаем, чего в действительности хотим Франсуа де Ларошфуко

Начиная изучение микроконтроллеров (МК), человек ставит перед собой определенные цели и задачи. Вполне может быть, что для кого-то мечтой является разработка прибора с применением многострочного жидкокристаллического индикатора (ЖКИ). О том, как управлять им с помощью МК семейства AVR, пойдет речь дальше. Приводимые в статье сведения будут полезны для сопряжения ЖКИ и с другими разновидностями МК.

Иногда плавное течение событий надо на время изменить. Чтобы заглянуть в будущее, чтобы увидеть перспективу, чтобы уже в начале пути почувствовать свои силы.

Применительно к радиолюбительским конструкциям, их товарный вид во многом зависит от применяемого типа индикатора. Одно дело светодиоды или семисегментные матрицы и совсем другое - многострочные символьные ЖКИ. По своим функциональным возможностям они настолько поражают воображение, что их автоматически причисляют в разряд сложных изделий и изучают на завершающем этапе учебы.

Так ли это оправдано и необходимо? Предлагается провести альтернативный эксперимент и уже сейчас собрать пару конструкций на двухстрочном ЖКИ.

Выбор ЖКИ

Следует различать обычные многопозиционные ЖКИ серии ИЖКЦ, модули на их основе с микросхемой HT1611 и алфавитно-символьные ЖКИ с встроенным контроллером (рис.1). Именно последние и относят к наиболее перспективным изделиям. В подтверждение тому множество фирм в мире, специализирующихся на выпуске подобной продукции. Крупнейшие из них находятся в Тайване, Китае, Японии, США (табл.1).

Среди параметров, отличающих одни ЖКИ от других, выделяется марка внутреннего контроллера. В дальнейшем будут рассматриваться только модели, совместимые с контроллером HD44780 (фирма Hitachi) и его аналогами, например, KS0066 (фирма Samsung), SED1278 (фирма Epson), ST7066 (фирма Sitronix). Таких изделий на отечественном рынке подавляющее большинство, да и в любительских конструкциях они стали стандартом "де-факто".

При покупке ЖКИ надо поинтересоваться следующими моментами:

поддерживается ли система команд HD44780 ("Да");

имеется ли русификация знакогенератора с выводом больших и малых букв ("Да");

однополярное или двухполярное требуется питание ("Однопо-лярное +5 В");

имеется ли подсветка (если "Да", то нужна светодиодная, а не электролюминесцентная);

сколько символов и строк отображается на экране ЖКИ ("8x1",

"8x2", "16x1", "16x2", "20x2", "20x4" и т.д.).

На последний вопрос однозначного ответа нет. Все зависит от эргономических требований к разрабатываемому устройству. Если ограничиться экспериментальными работами, то приемлемым выбором по критерию "цена + возможности" является двухрядный ЖКИ с числом символом 16 в каждой строке. Это одна из наиболее ходовых моделей (а значит, и более дешевая). Кроме того, разрядность, меньшая чем 16х2, не позволит в будущем "развернуться" конструкторскому воображению, а большая разрядность накладна по финансам и габаритам.

Остальные параметры ЖКИ, такие, как угол обзора сегментов, цвет фона, контрастность, яркость подсветки, химический состав "жидкого кристалла", напрямую зависят от технологии. В общем случае, чем выше цена изделия, тем параметры лучше. Но для первых экспериментов это не главное, подойдут непритязательные ЖКИ без подсветки, например, SC1602 (фирма Sunlike), WD-C1602 (фирма Wintek), BC1602 (фирма Bolymin), MTC-16204 (фирма Microtips), PC1602 (фирма Powertip), MT-16S2 (фирма МЭЛТ) и т.д.

Внутреннее устройство ЖКИ

По определению, в состав ЖКИ входит индикатор на жидких кристаллах. Впервые жидкие кристаллы были обнаружены в 1888 г. австрийским ботаником Фридрихом Райнитцером (Friedrich Reinitzer) при изучении физических свойств некоторых органических тканей. Однако до практического применения жидких кристаллов потребовалось еще столетие. В частности, первый в мире калькулятор с ЖК-экраном выпустила фирма Sharp в 1964 г., затем появились электронные часы (1966 г., RCA) и телевизор с размером экрана по диагонали 14 см (1976 г., Sharp).

Физический принцип работы ЖКИ легко уяснить, представив элементарный конденсатор, обкладки которого заполнены специальным бесцветным веществом. При подаче на конденсатор напряжения, вещество меняет свою кристаллическую структуру и перестает пропускать свет. Визуально появляется темная окраска единичного сегмента индикации. Поскольку конденсатор имеет малые токи утечки, то и весь индикатор получается низкопотребляющим.

Достоинством символьных многострочных ЖКИ является то, что заботу о подаче требуемых напряжений на массив "ЖК-конден-

Таблица 1


саторов" берет на себя встроенный управляющий контроллер. На рис.2 показана структурная схема типового ЖКИ с организацией 16х2, которая идентична для всех моделей независимо от фирмы-изготовителя. Основу составляет специализированный контроллер, обычно выполненный в виде одной или двух микросхем-"ка-пелек", реже - в виде фирменной SMD-микросхемы. По назначению выводов и системе команд он совпадает с родоначальником серии - HD44780. Общепринятое название таких микросхем "Dot Matrix Liquid Crystal Display Controller/Driver", из чего следует их двойная функция - контроллер управляет интерфейсом, а драйвер "зажигает" сегменты.

Контроллер синхронизируется внутренним RC-генератором G1, имеющим частоту 250 ±50 кГц. Напряжение подсветки подается через выводы А и К на светодиоды, которые освещают ЖК-панель с торца или обратной стороны корпуса. Светодиоды включены матрицей и соединены параллельно-последовательно. В связи с этим напряжение подсветки довольно высокое 4,0...4,2 В.

Назначение и нумерация всех внешних выводов ЖКИ унифицированы (табл.2). Это не зависит от количества строк и символов, будь то "8x1" или "16x2". Даже контакты светодиодной подсветки 15, 16 имеются на всех ЖКИ, хотя при ее физическом отсутствии они будут просто "висеть в воздухе".

Небольшой нюанс. На печатной плате ЖКИ порядок нумерации контактных площадок отличается от модели к модели. Например, встречаются следующие варианты: слева направо 1-16, справа налево 16-1, вперемежку 15, 16, 1-14. Подсказку следует искать визуально по отмаркированным цифрам на печатной плате. Контакты 15, 16 обычно дублируются еще одной парой контактов с маркировкой А и К соответственно. Электрически они соединены параллельно.

Конструктивно выводы могут располагаться сверху, снизу или на боковой стороне платы ЖКИ. Это не суть важно, ведь соединяться с изделием они будут жгутом проводов длиной до 10 см. Крепление ЖКИ производится винтами через 4 угловых отверстия.

Электрический интерфейс состоит из трех шин:

DB0-DB7 шина данных;

RS, R/W, Е шина управления;

VCC, GND, Vo, A, K шина питания.

Типовая схема подключения ЖКИ к МК показана на рис.3. Именно она и будет использоваться для первой тестовой проверки ЖКИ с выведением на экран знаменитой фразы "Hello, world!" ("Здравствуй, мир!"). Кнопка SB1 осуществляет начальный сброс. Переменным резистором R2 регулируют контрастность изображения. Его сопротивление непринципиально и может меняться от 5 до 20 кОм.

Кстати, резистор R2 является первым элементом, который надо обязательно покрутить в разные стороны при начальном включении питания. Если ЖКИ исправен, то в крайних положениях движка будут наблюдаться полное гашение и полная засветка экрана. Отрегулировать R2 следует на перегибе характеристики, как правило, с потенциалом ближе к общему проводу, когда слабо видны все точки знакомест на ЖКИ. Неправильная установка контрастности может привести к ложному выводу о дефекте индикатора, хотя все, что надо сделать, это покрутить движок резистора.

Управляющая программа хранится в МК DD1. Чтобы облегчить ее составление, здесь и в дальнейшем приняты некоторые упрощения. Во-первых, ЖКИ будет работать только на прием информации

Таблица 2

Вывод ЖКИ

Обозначение

Выполняемая функция

Общий провод

Питание +5 В

Напряжение фокусировки

"0" запись команд, "1" запись данных

"0" запись в ЖКИ, "1" чтение из ЖКИ

Перепад уровня из "1" в "0" - ввод данных

DBO - DB7

Двунаправленная шина данных

Анод матрицы светодиодов подсветки

Катод матрицы светодиодов подсветки

Таблица 3

Команда ЖКИ

НЕХ-код

Выполняемые действия

Время вып., мкс

Очистка дисплея

Пустой экран, очистка памяти, курсор в левой верхней позиции

Возврат курсора в начало

Курсор в левой верхней позиции, память не очищается

Сдвиг курсора влево

После вывода очередного символа курсор автоматически сдвигается на одно знакоместо влево

Сдвиг курсора вправо

После вывода очередного символа курсор автоматически сдвигается на одно знакоместо вправо

Выключение дисплея

Полное отсутствие изображения на экране ЖКИ

Выключение курсора

Разрешается вывод изображения, но курсор не виден

Прямоугольная форма курсора

Разрешается вывод изображения, курсор в виде темного мигающего прямоугольника

Линейная форма курсора

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

Комплексная форма курсора

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

Интерфейс 4 бита, 1 строка

Связь с однострочным ЖКИ через 4 линии шины данных

Интерфейс 4 бита, 2 строки

Связь с двухстрочным ЖКИ через 4 линии шины данных

Интерфейс 8 бит, 1 строка

Связь с однострочным ЖКИ через 8 линии шины данных

Интерфейс 8 бит, 2 строки

Связь с двухстрочным ЖКИ через 8 линии шины данных

Доступ к ОЗУ знакогенератора

0x40-0x7F

Запись данных по этим адресам позволяет создать 16 своих символов

Установка позиции курсора

0x80--OxCF

Курсор устанавливается в позицию согласно рис.4



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11]