Смекни!
smekni.com

Функціональний генератор інфранизької частоти на базі мікропроцесорної системи (стр. 2 из 2)

При переповненні таймера виникає переривання, яке викликає п.п. обробки переривання. В цій п.п. в ЦАП заноситься черговий відлік сигналу, переключається індикаторний пристрій та опитується стан клавіатури.

При реалізації підпрограми обробки нажаття першої клавіші застосовано алгоритм показаний на рис.3, для другої - рис.4.

Рис.3. Підпрограма обробки нажаття другої клавіші

Рис.4. Підпрограма обробки нажаття першої клавіші

4.4. Програма на мові асемблера

Згідно вище приведеного опису написано програму на мові асемблера для мікроконтролера Intel 8051. Лістинг програми приведений у додатку 3.

Після написання програми визначаємо, що в найгіршому випадку час виконання п.п. обробки переривання від таймера не перевищує 100 машинних циклів, тобто 100 мкс. Тому вибираємо цей час, як період дискретизації сигналу.

Враховуючи, що таймер в МК Intel 51 рахує машинні цикли шляхом інкрементування вираховуємо число, необхідне за забезпечення затримки в 50 мкс. Прийнятий час дискретизації займе 100 машинних циклів, тому для того, щоб за цей час відбулось переповнення необхідно в таймер занести число:

FFFF16 – 10010 = FFFF16 - 6416­ = FF9716

Крім того необхідно врахувати час ініціалізації таймерів при кожному перериванні (4 цикли):

FF9716 – 416 = FF9316

Результат такої дискретизації показаний на мал.1

Для часу дискретизації 2Т та 4Т це значення буде відповідно рівне:

FFFF16 – 20010 – 416 = FFFF16 – С816­ - 416 = FF3316

FFFF16 – 40010 - 416 = FFFF16 - 19016­ – 416 = FE6B16

Призначення використаних регістрів:

R1 Лічильник переривань для динамічної індикації
R2 Попередній стан кнопок
R3 Вибір індикатора
R4 Віднімаючий лічильник відліків
R5 Додаючий лічильник відліків
R6 Амплітуда сигналу
R7 Період сигналу

Для виведення інформації на індикатори числа необхідно перекодувати з двійкового коду в 7 – сегментний.

5. Висновки

В результаті виконання роботи розроблено принципову електричну схему та програму на мові асемблера функціонального генератора інфранизької частоти на базі мікроконтролера Intel 8051.

Через дискретність часових відліків похибка, котра зумовлює зміну періоду повторення сигналу становить не більше, як половину часу дискретизації. тобто 25 мкс, що відповідає 0.3 %.

За рахунок шумів квантування виникає похибка у визначенні амплітуди, але оскільки вона значно менша за похибку зумовлену аналоговою частиною схеми, то нею ми можемо знехтувати.

Таким чином можна стверджувати, що усі вимоги технічного завдання виконано.

Додаток1


Додаток 3. Лістинг програми

.SPACES ON

.LIST ON

.GLOBALS ON

.LLCHAR _

.DATA

.ORG 30H

T0_H DB 0FFh

T0_L DB 97h

Count DB 20

.CODE

.ORG 00H

AJMP Reset

; Пiдпрограма обробки переривань по таймеру T0 :

; Частота кварцевого резонатора - 24 МГц

; Перiод тактовоi частоти - 0,5 мксек

; Переривання вiдбуваються з частотою – 0,05 мсек

.ORG 0BH

IntT0: mov TH0, #<T0_H ;timer initialization

mov TL0, #<T0_L ;

mov A, #LOW(Signal) ;load data

add A, R5 ;

movp A, @A ;

mov B, R6 ;

div AB ;calculate Voltage

mov P2, A ;

inc R5 ;

djnz R4, Ind ;decrement counter

clr A ;

mov R5, A ;

mov R4, #<Count ;

Ind: djnz R1, kbd ; dinamic indication

mov R1, #80 ; Find = 500 Hz

mov A, R3 ;

mov P0, #00 ;

jz Ind_T ;

mov R3, #00 ;

mov A, R6 ;

call Decode ;convert binary to

mov P1, A ;7-segment

mov P0, #02 ;Out

jmp kbd ;

Ind_T: mov R3, #01 ;show T

mov A, R7 ;

call Decode ;convert binary to 7-segment code

mov P1, A ; Out

mov P0, #01 ;turn on indicator

kbd: mov A, P3 ;check keyboard

anl A, #00000011b ;mask

mov R1, A ;

xrl A, R2 ;

jz Exit2 ;no change

jb ACC.0, check_T ;key1 chenged

mov A, R2 ;

jb ACC.1, Exit3 ;

mov A, R6 ;

jb ACC.0, A1 ;

jb ACC.1, A2 ;

mov R6, #01 ;set A=A0

jmp End_a ;

A2: mov R6, #04 ;set A=A0/4

jmp End_a ;

A1: mov R6,#02 ;set A=A0/2

End_a: mov R5, #00 ;reset counter

mov R4, #<Count ;

jmp Exit2 ;

check_T:mov A, R2 ;

jb ACC.0, End_t ;

mov A, R7 ;

jb ACC.0, T1 ;

jb ACC.1, T2 ;

mov R7, #01 ;set T=1

mov <T0_H, #FFh ;set delay

mov <T0_L, #97h ;

jmp End_t ;

T2: mov R7, #04 ;set T=4

mov <T0_H, #FFh ;set delay

mov <T0_L, #33h ;

jmp End_t ;

T1: mov R7, #02 ;set T=2

mov <T0_H, #FEh ;set delay

mov <T0_L, #6Bh ;

End_t: mov R5, #00 ;reset counter

mov R4, #20 ;

Exit3: mov A, R1 ;save kbd status

mov R2, A ;

Exit2: reti ;

Decode: jb ACC.0, L1

jb ACC.1, L2

mov A, #01100110b ;"4"

jmp End_d

L2: mov A, #11011010b ;"2"

jmp End_d

L1: mov A, #01100000b :"1"

End_d: ret

; MAIN PROGRAM

Reset: mov IE, #00 ;interapts disable

clr A

mov R0, #7FH ;Clear memory

S1: mov @R0, A ;

djnz R0, S1 ;

mov P0, A ;Indication control

mov P1, A ;Indication information

mov P2, A ;AЦП

mov R1, #80 ;counter

mov R2, #00000011b ;keyboard state

mov R3, A ;Ind choice

mov R4, #<Count ;counter

mov R5, A ;counter

mov R6, #01 ;A

mov R7, #01 ;T

mov TH0, #<T0_H ;timer initialization

mov TL0, #<T0_L ;

mov TMOD, #00010001b ;Timer mode

mov IP, #00000010b ;Interupt priority

mov IE, #00000010b ;Interupt enable

mov TCON, #00010000B ;Timer control

setb EA ;All interapts enable

Loop: jmp Loop

Signal: DB 255 243 231 219 209
DB 199 189 180 171 163
DB 155 147 140 133 127
DB 120 115 109 104 99

.END Список літератури

1. DATA SHEET 80C51 8-bit microcontroller family. Philips Semiconductor, 1999 (http://www.semiconductors.philips.com/acrobat/datasheets/89C52_89C54_89C58_5.pdf)

2. Система команд микроконтроллера INTEL 8051: Методические указания к лабораторной работе №2 по курсу “Цифровые устройства и микропроцессоры”/ В.А.Добряк, В.К.Рагозин. Екатеринбург: Изд-во УГТУ, 1999.

3. Взаимодействие мікроконтролера INTEL 8051 с объектами управления: Методические указания к лабораторной работе №4 по курсу “Цифровые устройства и микропроцессоры”/ В.А.Добряк, В.К.Рагозин. Екатерин-бург: Изд-во УГТУ, 1999.

4. Функціональний генератор інфранизької частоти на базі МП-системи: Методичні вказівки дол курсової роботи з дисципліни “Цифрові пристрої і мікропроцесори” для студентів спеціальності 2301 “Радіотехніка” /Укл. Ю.І.Шаповалов, В.А.Новіков, В.Г.Протасевиич, Львів, ЛПІ, 1993р.