Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Схема управления LED индикатором

Читайте также:
  1. D - тригер на елементах І-НЕ: а – схема; б – умовне позначення; в – часові діаграми.
  2. EV3.6 Система управления аккумулятором (СУА)
  3. II. СХЕМА ЕКСПОРТНОГО ФАКТОРИНГУ - з фінансуванням у валюті зовнішньоекономічного контракту
  4. II. СХЕМА ЕКСПОРТНОГО ФАКТОРИНГУ - з фінансуванням у національній валюті
  5. II. Финансовые методы управления
  6. III. Акты и действия органов исполнительной власти субъектов Российской Федерации и органов местного самоуправления
  7. III. Схематическое изображение накопления - второй пример

Выход микроконтроллера AVR способен «поглащать» выходной ток до 20 мА (то есть ток втекает в выход и через внутренний n-канальный МОП-транзистор отводится на «землю»). Благодаря чему становится принципиально возможно подключать сегменты светодиодного дисплея непосредственно к выходам микроконтроллера AVR через токоограничительные резисторы R1…R8

Несмотря на то что каждый из выходов микроконтроллера способен работать при силе выходного тока 20 мА, в отношении предельно допустимых параметров устройства действуют определенные ограничения. Так, например, сумма всех выходных токов не должна превышать 200 мА, а сумма выходных токов портов В и С – 100 мА. Учитывая эти ограничения, сила тока должна быть выше 100 мА:8 = 12,5 мА, при условии, что включены все семь сегментов и десятичная запятая. Также можно допустить, что порт В, изображенный на Рис.7 – единственный порт, работающий с упомянутым выше током.

Для того чтобы определить номинал резисторов R1…R8, предназначенных для получения тока требуемой силы 12,5 мА, используем заданное в спецификации индикатора hp 5082-7730 прямое напряжение светодиода Uled = 1.5 В, а также указанное в характеристиках микроконтроллера AVR падение напряжения на выходном каскаде Us≈ 0.3 В.

 

 

Значение сопротивления определяется по формуле:

 

Ближайшее значение в стандартном ряду составляет 270 Ω.

Учитывая достаточно высокую нагрузку по току микроконтроллера AVR при непосредственном управлении светодиодным дисплеем, в глаза бросается еще один недостаток: даже одна отображаемая на дисплее позиция требует восемь выводов порта микроконтроллера! По этой причине при отображении нескольких позиций они, как правило, представляются в виде матрицы и обрабатываются в многоканальной системе с временным разделением каналов.

 

Программа

 

.device ATmega64

.include "m64def.inc"

 

;переопределения регистров и бит

.def temp =r16

.def out_data =r17

.def deley =r18

.def rab =r23

.def adw0 =r4

.def adw1 =r5

.def dig1 =r19

.def dig2 =r20

.def dig3 =r21

.def deley =r22

.def deley1 =r23

 

.equ razr1 =PF4

.equ razr2 =PF5

.equ razr3 =PF6

.equ row1 =PA0

.equ row2 =PA1

.equ row3 =PA2

.equ row4 =PA3

.equ col1 =PA4

.equ col2 =PA5

.equ col3 =PA6

 

.equ kdel1 =256; коэф. деления таймера Т0

.equ kdel2 =103; коэф. деления таймера Т1

.equ baud =233; задаем скорость обмена 2400 для частоты кварца 9МГц

.equ seg =PORTC

.equ TxD =PD1

 

;*****таблица векторов прерываний***********************************

.CSEG

.org $0000;начальный адpес пpогpаммы

rjmp Start;пеpеход к основной части пpогpаммы

.org $0026

reti;Регистр данных USART0 пуст

.org $0028

reti;USART0, передача завершена

Display:

mov temp, dig1

rcall _rd_tb1

cbi PORTF

rcall deley

sbi PORTF, razr1

 

mov temp, dig2

rcall _rd_tb1

cbi PORTF

rcall deley

sbi PORTF, razr2

 

mov temp, dig3

rcall _rd_tb1

cbi PORTF

rcall deley

sbi PORTF, razr3

 

ret

 

 

;*** подпрограмма перекодировки значения в семисегментный код****

 

_rd_tb1:

ldi ZH, High (seg table*2); загружаем указатель на таблицу

ldi ZL, Low (seg_table*2)

add ZL, temp; вычисляем адрес

lpm; читаем байт в r0

out seg, r0; включаем нужные сегменты

ret

 

;******Подпрограмма задержки для индикатора*****

_deley:

ldi deley1,1

_deley1:

dec deley

brne _deley1

dec deley1

brne _deley1

ret

 

;***** Основная программа******************************************

Start:

ldi temp, High(RAMEND);инициализация стека

out SPH, temp;

ldi temp, Low(RAMEND);

out SPL, temp;

;очищаем регистры

clr dig1

clr dig2

clr dig3

;настройка выходных линий разрядов на их выключение

 

in temp, DDRF

sbr temp, (1<<razr1)+(1<<razr2)+(1<<razr3)

out DDRF, temp

in temp, PORTF

sbr temp, (1<<razr1)+(1<<razr2)+(1<<razr3)

out PORTF, temp

 

; настройка выходных линий сегментов и их включение

ldi temp, $FF

out DDRA, temp

out seg, temp

 

;настройка выходных линий разрядов и их выключение

ldi temp, 1<<TxD

out DDRD, temp; настройка порта D на вывод

;устанавливаем скорость обмена

clr temp

sts UBRR0H,temp

ldi temp,Baud

out UBRR0L,temp

;Разрешение работы приемника и передатчика

ldi temp,(1<<RXEN0)|(1<<TXEN0)

out UCSR0B,temp

; Установка формата посылки: 8 бит данных, 1стоп-бита

ldi temp, (1<<UCSZ01)|(1<<UCSZ00)

sts UCSR0C,temp

clr out_data;очистка регистра

sei;разрешение всех прерываний

;Инициализация таймера Т1

ldi temp,0x05;установка коэффициента предварительного

out TCCR1B,temp;делителя 1024 таймера Т1

 

;программа измерения

Haupt

ldi rab,0b10010000;

out MCUCR,rab; «спящий режим» АЦП

sleep

in adw0,ADCL;младший разряд байта результата АЦП

in adw1,ADCH; старший разряд байта результата АЦП

out UDR,UCSRA;передача данных через UART

rcall wait1;вызов подпрограммы задержки на 2с

rjmp Haupt

;Подпрограмма задержки

wait1:

push temp;сохранение содержимого регистра temp

ldi temp,0;запись 0 в temp

out TCNT1H, temp;запись 0 в старший регистр таймера T1

out TCNT1L, temp; запись 0 в младший регистр таймера T1

ldi deley,0; запись 0 в deley

out TCNT0, deley; запись 0 в регистр таймера T0

wt1:

in temp,TCTN1L;чтение младшей части счетного регистра Т1

cpi temp,low(kdel2);сравнение с числом 67h

brlo wt1;переход если temp меньше чем kdel2

in temp,TCTN1H; чтение старшей части счетного регистра Т1

cpi temp, high(kdel2); сравнение с числом 00h

brlo wt1; переход если temp меньше чем kdel2

wt2:

in deley,TCTN0; чтение счетного регистра Т0

cpi temp, kdel1; сравнение с числом 256

brlo wt2; переход если deley меньше чем kdel1

 

pop temp;восстановление значения регистра temp

ret;выход из подпрограммы

main:

rcall Display

rjmp main

 

; таблица констант в памяти подпрограммы

 

seg_table:

.db $C0, $F9,$A4,$B0,$99,$92,$82,$F8,$80,$90,$88,$83,$C6,$A1,$86,$8E,$FF

 

.EXIT


 

Заключение

 

В соответствии с техническим заданием был разработан измерительный комплекс температуры на базе микроконтроллера фирмы Atmel Mega8 с тактовой частотой 9МГц. Измерение освещенности происходит каждые 2 с. Измеренная информация по интерфейсу UART передается в ПК со скоростью 2400 бит/с. Для реализации данного измерительного прибора была написана программа на языке Ассемблер. Измеренные данные так же можно увидеть на светодиодном индикаторе LED hp 5082-7730. Схема


 

Список литературы

 

1. Трамперт В. Измерение, управлениеи регулирование с помощью AVR-микроконтроллеров.: Пер. с нем. – К.: «МК-Пресс», 2006. – 208с.

2. Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. – СПб.: Наука и техника, 2008. – 544с.

3. Как превратить компьютер в измерительный комплекс. Пер. с фр./ П.Гёлль. – М.: «ДМК», 1999. – 144с.

 


Дата добавления: 2015-10-23; просмотров: 97 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Описание выводов микроконтроллера, используемых в устройстве| Мотиви громадської та інтимної лірики В.Сосюри. Прочитати напам’ять вірш поета

mybiblioteka.su - 2015-2024 год. (0.015 сек.)