Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Подключение индикаторов к контроллеру




 

На рисунке 3.2 изображено подключение двух 3-разрядных индикаторов, как это выполнено в микроконтроллере МК-2.


 

 
 

 

 


Рисунок 3.2 – Подключение двух трехразрядных семисегментных индикаторов и светодиода HL1 для индикации знака “–”

 

Выводы управления сегментами индикаторов объединены и подключены к порту D контроллера через токоограничивающие резисторы R10-R17 с величиной сопротивления 330 Ом. При выводе логической 1 в младший разряд порта D на 14-м выводе контроллера появится напряжение 5 В, которое через резистор R10 попадет на сегменты H всех 6 цифр обеих индикаторов. Программно это выполняется так:

PORTD = 1;

Для выбора цифры, на какой будет подсвечен сегмент H, катоды цифр подключены через транзисторные ключи VT1-3, VT5-7. Через транзистор VT4 подключен отдельный плоский светодиод индикации знака “–”, который установлен перед вторым индикатором. При подаче положительного напряжения на базу одного из транзисторов ключей, транзистор открывается, его сопротивление перехода коллектор-эмиттер становится небольшим (около 3 Ом) и катод этой цифры соединяется с землей. При этом зажигаются сегменты только одной выбранной цифры.

Управление открытием транзисторов осуществляется через разряды 5 – 0 порта B. Для снижения управляющего тока транзисторов до 1.5 мА применены резисторы R1-R7 с величиной сопротивления 2.2 кОм. При таком токе базы переход коллектор-эмиттер будет иметь сопротивление всего 2.7 Ом.

Необходимость применения транзисторов вызвана тем, что при токе 15 мА одного сегмента суммарный ток всех все 8 зажженных сегментов достигнет величины 120 мА. Если бы мы подключили катоды к порту B напрямую, протекание такого тока через один вывод порта привело бы к выходу его из строя, так как максимально допустимый ток одного вывода – 20 мА и не более 80 мА на весь порт.

При подключении индикаторов, как изображено на рис.3.2, для вывода цифры 2 на третьем разряде 1-го индикатора достаточно выполнить следующие операторы:

PORTD = 0b11011010; или PORTD = 0xDA – зажигание сегментов AB_DE_G_

PORTB = 0b00001000; или PORTD = 1<<3; – выбор третьей цифры

 

Последний оператор означает сдвиг 1 на 3 двоичных разряда влево.

Для вывода уже двух цифр потребуется применение динамической индикации:

 

m1:

PORTD=0x60; //Коды сегментов цифры 1

PORTB=1<<5; //Выбор 1-й цифры

delay_ms(10); //Задержка на 10 миллисекунд

PORTD=0xDA; //Коды сегментов цифры 2

PORTB=1<<4; //Выбор 2-й цифры

delay_ms(10); //Задержка на 10 миллисекунд

goto m1; //Бесконечный цикл

 

Попробуйте увеличить задержку до 500 миллисекунд. Что наблюдаете?

Удобно разместить коды сегментов, которые должны быть выведены, в массиве segm из 6 элементов, соответственно количеству цифр на индикаторах. Тогда программа динамической индикации значительно упростится. Выведем цифры 123 456 на двух индикаторах.

int segm[6]={0x60,0xDA,0xF2,0x66,0xB6,0xBE}; //Коды сегментов цифр

int scanpos=0;

m1:

PORTD=segm[scanpos]; //Вывод кодов сегментов цифр в порт D

PORTB=1<<(5-scanpos); //Выбор цифры, на которую указывает scanpos

delay_ms(3); //Задержка на 3 миллисекунды

scanpos++; //Переход к следующей цифре

if(scanpos>5) scanpos=0;//Возврат к первой цифре

goto m1; //Бесконечный цикл

 

Замечание: Необходимость подключения отдельного светодиода HL1 через транзистор VT4 связана с тем, что этот вход контроллера используется для подключения программатора. В этом случае нагрузка составляет 2.2 кОм, а без транзистора нагрузка была бы 330 Ом.

 

Таблица 3.1 – Задание к лабораторной работе №3

 

№ вари-анта Задание
  Названия трех пунктов меню переключаются на втором индикаторе при нажатии кнопок ↑↓.
  Названия трех пунктов меню переключаются на индикаторах при нажатии кнопок ← →.
  Первая цифра в числе, выведенном на первом индикаторе увеличивается / уменьшается циклически при нажатии кнопок ↑↓.
  Вторая цифра в числе, выведенном на втором индикаторе увеличивается / уменьшается циклически при нажатии кнопок ↑↓.
  Позиция точки в числе переключаются циклически при нажатии кнопок ← →.
  Выведенное на двух индикаторах число перемещается циклически при нажатии кнопок ← →.
  Число перемещается влево / вправо при нажатии кнопок ← → не выходя за пределы индикатора.
  Первая цифра в числа, мигает. Позиция мигания перемещается циклически при нажатии кнопок ← →.
  Первая цифра в числа погашена. Погашенная позиция перемещается в пределах числа при нажатии кнопок ← →. Точка отображается всегда.
  Первая позиция числа на втором индикаторе мигает. Позиция мигания перемещается в пределах числа при нажатии кнопок ← →.
  Первая позиция числа выделена повышенной яркостью за счет свечения в два раза дольше, чем остальные цифры. Выделенная яркостью позиция перемещается в пределах числа при нажатии кнопок ← →.
  Вывести на индикаторе текст (“Отсечка”, “Перегрузка”) с помощью динамической индикации. Задержку при зажигании следующей цифры установить в 0,5 секунды. При нажатии кнопок ↑↓ задержку увеличивать/уменьшать в 1.189 раза.
  В шестнадцатеричном числе, выведенном на втором индикаторе, последняя цифра увеличивается/уменьшается при нажатии кнопок ↑↓ в пределах от 0 до F. Зацикливание не применять (после 0 не должно появляться F и наоборот).
  Реализовать часы. На первом индикаторе отображать минуты, на втором – секунды с точностью до десятых. Счет начать с 0 минут 0.0 секунд. Для вывода чисел использовать функцию Fout.
  Реализовать секундомер. На первом индикаторе отображать секунды, на втором – тысячные доли секунды. Счет начать с 0.0 при нажатии “Enter” и останавливать при нажатии “Esc”. При нажатии показания обнуляются. Для вывода чисел использовать функцию Fout.

 

Контрольные вопросы:

1. Нарисовать схему подключения светодиодов сегментов в двухразрядном индикаторе.

2. Изобразите схему подключения одно/двух/ … /семиразрядного 7-сегментного индикатора к портам Х1 и Х2 контроллера Atmega8/Atmega16.

3. Нарисуйте схему подключения к МК двух одноразрядных индикаторов для работы без применения динамической индикации.

4. Какое ограничение существует на величину тока одного вывода порта/на весь порт?

5. Напишите программу вывода заданного текста или цифр на индикаторах.

6. Напишите программу увеличения заданного разряда числа, выведенного на индикаторе при нажатии кнопки ↑ / уменьшения при нажатии ↓.

7. Напишите программу мигания всего числа, выведенного на индикаторе.


Лабораторная работа №4 – Программирование таймеров

 

Перед выполнением данной работы изучите регистры таймеров и режимы их работы по лекциям 7 и 8, прерывания по лекции 9 и тему “Получение заданных напряжений с помощью ШИМ” из лекции 11.

 




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 1737; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.