По теоретическому заданию наша система из вне получает некоторые управляющие сигналы, на основании которых принимает соответствующее решение управлениями 5 устройствами. Ядром системы является микроконтроллер AT90S2313. Особенностью данного микроконтроллера является то, что он имеет 15 портов ввода/вывода. Для простоты понимания и реализации будем использовать только 8 разрядные порты B, этого будет вполне достаточно для реализации задания, остальные порты ввода/вывода, во избегания ошибочных данных или управляющих сигналов, заземлим. Из восьми портов, 3 работаю на вход, 5 на выход. На вход подаются некоторые сигналы (например, компьютер соединенный через COM порт), на выходе управляем устройствами. Управление устройствами осуществляется при помощи биполярного (n-p-n) транзистора. Транзистор подбираем таким образом, чтобы он соответствовал заданным теоретическим условиям.
Iк=0,2 Uкэ=24.7 Iбэ=5
Всем этим условиям наш транзистор соответствует с запасом.
При подаче напряжение Vu=5 (напряжение логической «1») транзистор открывается. При Vu=0 (уровень логического «0») транзистор находится в закрытом состоянии, поэтому ток через него не течет, устройство не работает.
Необходимый ток Iб для открытия транзистора формирует резистор R.
Для биполярного транзистор из этой формулы при минимальном значении («40») Iб=0,005А, при максимальном значении («100») Iб=0,002А.
Определим параметры резистора. . Из этой формулы значения резистора можно выбирать в пределах от 860 до 2150 Ом. В данной схеме, я думаю будет достаточно если R=1 кОм.
Принципиальная схема
Микроконтроллер
Обозначение |
Тип |
Примечании |
МК |
AT90S2313 |
Резистор
Обозначение |
Тип |
Примечании |
R1 |
С2-29В, 1кОм + 0,1% |
Транзистор
Обозначение |
Тип |
Примечании |
VT |
2Т929А |
Программареализациимикроконтроллера
. INCLUDE "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\2313def.inc"
.CSEG
.org 0
rjmp Reset
rjmp INT_0
rjmp INT_1
rjmp Timer1_capt1
rjmp TIM_COMP1
rjmp Timer1_OVF1
rjmp Timer0_OVF0
rjmp UART_RX
rjmp UART_UDRE
rjmp UART_TX
rjmp ANA_COMP
INT_0:
INT_1:
Timer1_capt1:
Timer1_OVF1:
Timer0_OVF0:
UART_RX:
UART_UDRE:
UART_TX:
ANA_COMP:
reti
Reset:
sei
clr r0
clr r16
ldi r16,0xF8
out $17,r16 .
ldi r17,0b01000000
out TIMSK,r17
ldi r17,0b00000010
out TCCR1B,r17
ldi r17,0x06
out OCR1AL,r17
ldi r17,0x00
out OCR1AH,r17
;/////////////////////////////////
ldi r17,0x03
ldi XH,0x00
ldi XL,0x43
st X+,r16
st X,r17
;////////////////////////////////
start:
in r16,$16
inc r0 ;
cpi r16,0x00
breq z11
cpi r16,0x04
breq z12
cpi r16,0x02
breq z13
cpi r16,0x01
breq z14
cpi r16,0x05
breq z15
rjmp start
z11:
ldi r16,0x80
out $18,r16
clr r16
out $18,r16
ldi r17,0x04
out $16,r17
rjmp start
z12:
ldi r16,0x40
out $18,r16
clr r16
out $18,r16
ldi r17,0x02
out $16,r17
rjmp start
z13:
ldi r16,0x20
out $18,r16
clr r16
out $18,r16
ldi r17,0x01
out $16,r17
rjmp start
z14:
ldi r16,0x10
out $18,r16
clr r16
out $18,r16
ldi r17,0x05
out $16,r17
rjmp start
z15:
ldi r16,0x08
out $18,r16
clr r16
out $18,r16
ldi r17,0x00
out $16,r17
rjmp start
rjmp start
TIM_COMP1:
ldi r17,0x00
out TCNT1H,r17
out TCNT1L,r17
ldi r18,0x11
ldi r19,0x00
out EEAR,r19
ldi XH,0x00
ldi XL,0x41
loop:
ld r20,X+
ldi r21,0x04
out EECR,r21
ldi r22,0x02
out EECR,r22
out EEDR,r20
inc r19
dec r18
cpi r18,0x00
brne loop
reti
Литература
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.