Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект.doc
Скачиваний:
65
Добавлен:
16.03.2016
Размер:
1.44 Mб
Скачать

3. Разработка блока питания

Для нормального функционирования устройство требует три напряжения питания: +5 В для питания цифровых микросхем, индикации и АЦП/ЦАП и ±12 В для питания операционных усилителей и ИОН. Для выбора элементов блока питания необходимо предварительно определить потребляемые схемой токи.

Ток, потребляемый от источника +5 В:

Ток, потребляемый от источников ±12 В равен сумме токов покоя ОУ, т.е. 0,5 мА на один канал усилителя, т.е. суммарно 0,5·10 = 5 мА.

Используется трансформатор с обмотками на напряжения 8 В и 2*15 В, интегральные стабилизаторы напряжения типов LM7805 (+5 В),LM7812 (+12 В),LM7912 (–12 В), с минимальной разностью напряжений вход-выход, равной 2,5 В. Исходя из этих условий, определим допустимые амплитуды пульсаций на выходе С-фильтров выпрямителей.

Исходя из этого, определяем емкости фильтров:

Ввиду малого расчетного значения емкостей фильтров в каналах ±12 В целесообразно увеличить требования к амплитуде пульсаций и выбрать C10,C11 100 мкФ.

Определим номинальные напряжения конденсаторов фильтров:

Конденсаторы С12-С14, С17-С19 выбираются по рекомендациям в документации на стабилизаторы DA3-DA5 равными 0,1 мкФ, аналогично конденсаторыC21-C23 выбираются 47 мкФ*16 В.

4. Программная часть. Программа опроса клавиатуры

4.1. Блок-схема алгоритма

4.2. Листинг программы (CodeVisionAVRC)

#define dig1 PORTC.0

#define dig2 PORTC.1

#define dig3 PORTC.2

#define dig4 PORTC.3

#define dig5 PORTC.4

#define dig6 PORTC.5

#define COMA PORTF.0

#define COMB PORTF.1

#define COMC PORTF.2

#define COMD PORTF.3

#define COME PORTF.4

#define COMF PORTF.5

#define COMG PORTF.6

#define COMPT PORTF.7

#define KBR0 PORTD.4

#define KBR1 PORTD.5

#define KBR2 PORTD.6

#define KBR3 PORTD.7

unsigned char const decode[16]={

0b00111111, 0b00000110, 0b01011011, 0b01001111,

0b01100110, 0b01101101, 0b01111101, 0b00000111,

0b01111111, 0b01101111, 0b01110111, 0b01111100,

0b00111001, 0b01011110, 0b01111001, 0b01110001

};

unsigned char digits[8]={1,2,3,4,5,6,7,8};

unsigned char place_count=1;

unsigned char key_buff=0;

unsigned char key=0;

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

// Reinitialize Timer 1 value

TCNT1H=0xFB;

TCNT1L=0x1D;

set_place(place_count);

PORTC=dec_7seg(digits[place_count]);

key_buff=PORTD & 0xF0;

switch(key_buff)

{

case 0x10:

key=0x10;

break;

case 0x20:

key=0x20;

break;

case 0x40:

key=0x30;

break;

case 0x80:

dig4=0x40;

break;

default:

key=0;

}

key+=place_count;

if (place_count != 6)

{

place_count++;

}

else

{

place_count=1;

}

}

void set_place(unsigned int place)

{

PORTA=0xFF;

switch(place)

{

case 1:

dig1=0;

break;

case 2:

dig2=0;

break;

case 3:

dig3=0;

break;

case 4:

dig4=0;

break;

case 5:

dig5=0;

break;

case 6:

dig6=0;

break;

}

}

unsigned char dec_7seg(unsigned char val_hex)

{

val_hex=decode[val_hex];

return val_hex;

}