Автор: Пользователь скрыл имя, 19 Февраля 2012 в 20:08, курсовая работа
По суті, мікроконтролер складається з простого мікропроцесорного ядра всією необхідною пам'яттю програм і даних. До цього додається периферія, що забезпечує необхідні інтерфейси. Сюди відносяться цифрове і аналогове введення-виведення, елементи синхронізації і рахунку та ін. Як і будь-яка електронна схема, мікроконтролер вимагає схеми живлення і йому необхідний синхронізуючий сигнал для управління внутрішніми логічними схемами (у деяких мікроконтролерах він генерується вбудованими компонентами).
Вступ 5
1 Загальний розділ 7
2 Опис пристрою 15
3 Розробка алгоритму роботи 17
3.1 Опис елементної бази 17
3.2 Опис принципової електричної схеми пристрою 22
3.3 Опис алгоритму управління 26
4 Розробка програми управління 27
Висновки 34
Література 35
При натисненні кнопки "*" значення частоти і позиція курсора зберігаються в незалежній пам'яті мікроконтролера, завдяки чому при наступному включенні живлення перерваний режим роботи автоматично відновлюється .
Оскільки обчислювальні здібності мікроконтролера обмежені, значення вихідної частоти виставляється з точністю близько 1 Гц, що достатньо для більшості випадків. Щоб повною мірою реалізувати можливості синтезатора, їм можна управляти за допомогою ПК. Для цього генератор необхідно допрацювати, доповнивши його вузлом, схема якого показана на мал. 3. ПК (або інший пристрій, що керує) підключають до розетки XS1. При низькому логічному рівні на адресних входах А мультиплексори мікросхеми DD3 підключають входи управління синтезатором до мікроконтролера DD1, а при високому - до зовнішнього пристрою. Сигнали управління поступають через контакт "ENABLE" розетки XS1. Резистор R19 забезпечує низький логічний рівень на адресних входах DD3 при непідключеному пристрої управління.
Генератор зібраний і випробуваний на макетній платі. Якщо не вдасться придбати плату під корпус SSOP для мікросхеми DD2, можна використовувати для підключення її виводів до відповідних контактних майданчиків короткі (завдовжки 10 15 мм) відрізки лудженого дроту діаметром 0,2 мм. Виводи 1,2,5,10,19, 24, 26, 27, 28 сполучають із загальним дротом одним відрізком більшої довжини.
РК індикатор HG1 – ITM-1601A (16-символьний однорядковий з вбудованим контролером). НA1 - будь-який п'єзоелектричний випромінювач звуку з вбудованим генератором, розрахований на напругу 5 В. Як тактовий генератор (G1) можна використовувати мікрозборку кварцевого генератора на частоту до 125 Мгц, допустиме застосування подібного вузла з кварцевою стабілізацією і на дискретних елементах.
3.3 Опис алгоритму управління
Схема алгоритму управління представлена на рисунку 3.5:
Рисунок 3.5 - Алгоритм управління
4 Розробка програми управління
Програма мікроконтролера, що керує, залежить від частоти тактового генератора.
При програмуванні мікроконтролера в конфігураційному слові встановлюють наступні значення битів: тип генератора (OSC) - RC. сторожовий таймер (WDT) - вимкнений, затримка після включення живлення (PWRTE) - дозволена.
Далі
привдена програма керованого
генератора прямокутного
сигналу.
LIST P=16C63A, R=DEC
include "p16c63a.inc"
__CONFIG _WDT_OFF & _XT_OSC & _PWRTE_ON & _BODEN_ON
__IDLOCS H'1200'
StartByte EQU 0x20
Cnt0 EQU 0x21
Cnt1 EQU 0x22
Cnt2 EQU 0x23
TimeH0Loaded EQU 0x24
TimeH1Loaded EQU 0x25
TimeH2Loaded EQU 0x26
TimeL0Loaded EQU 0x27
TimeL1Loaded EQU 0x28
TimeL2Loaded EQU 0x29
TimeH0 EQU 0x30
TimeH1 EQU 0x31
TimeH2 EQU 0x32
TimeL0 EQU 0x33
TimeL1 EQU 0x34
TimeL2 EQU 0x35
ORG 0
Start ;Встановка початкових значень змінних і SFR
BCF PORTC,3 ; заборона видачі частоти синхронізації для CC 60
CLRF PORTB ; виключення світлодіодів і живлення картки
BSF STATUS,RP0 ;вибір другого банку пам'яті
MOVLW 0x01
MOVWF TRISA ;порт A налаштований на роботу як вихід окрім RA0 (I/O)
MOVWF TRISB ;усі виводи порту В налаштовані на роботу як виходи окрім RB0
MOVLW 0xB6
MOVWF TRISC ;RC2 = MCLR
BCF OPTION_REG,7 ;дозволен Pull up резистори на порту B (~200K)
BCF STATUS, RP0 ; із за того що в команді адреса регістра задається тільки 7 бітами, а для адресації всієї пам'яті мікросхеми треба як мінімум 8, старші біти адреси зберігаються окремо в регістрі STATUS, це бити RP0 і RP1. Бит RP1 використовується тільки в мікросхемах з об'ємом RAM більше 256 байт. Бити RP0 і RP1 визначають використовуваний банк регістрів, а номер регистра всередині поточного банку береться з коду команди. Мікросхема має 2 банки регисров. Деякі регістри, що управляють, знаходяться в другому банку.
MOVLW 0 ;0x90
MOVWF INTCON ;скидання не використовується
MOVLW 0x15 ;налагодження таймера 1
MOVWF T1CON
MOVLW 0x0B ;налагодження модуля для скидання таймера 1
MOVWF CCP1CON
MOVLW 0x64
MOVWF CCPR1L
MOVLW 0x57
MOVWF CCPR1H
; CLRF TimeCardOn ;сброс часу для вставки картки
MOVLW 0x90; 0xD0 - for parity
MOVWF RCSTA ;налагодження параметрів приймача USART. Регістр RCSTA керує настройкою приймача послідовного порту
BSF STATUS,RP0 ;вибір другого банку пам'яті
MOVLW 0x24; 0x64 - for parity
MOVWF TXSTA ;налагодження параметрів передавача USART
MOVLW 0x01 ;(115200 бод)
MOVWF SPBRG ;налагодження швидкості обміну по послідовному порту
BCF STATUS,RP0 ;после настройки SFR востанавливаем банк пам'яті
CLRF PORTA
BSF PORTC,0 ; видаємо сигнал комп'ютеру об отсутсвии картки
; BSF Flags,SlotEmpty ; слот порожній
MOVLW 0x20
MOVWF
FSR
MOVLW 0xFF
MOVWF Cnt0
MOVWF Cnt1
MOVWF Cnt2
MOVWF TimeH0Loaded
MOVWF TimeH1Loaded
MOVWF TimeH2Loaded
MOVWF TimeL0Loaded
MOVWF TimeL1Loaded
MOVWF TimeL2Loaded
MOVLW 10
MOVWF TimeH0
MOVLW 10
MOVWF TimeH1
MOVLW 10
MOVWF TimeH2
MOVWF TimeL0
MOVWF TimeL1
MOVWF TimeL2
; GOTO NoCarryL
; Збільшуємо значення лічильника TIMEH на одиницю
NoCarryH BTFSC PIR1,RCIF
CALL GetRSData
MOVLW 1
ADDWF TimeH0,W
MOVWF TimeH0
BTFSS STATUS,C
GOTO NoCarryH
MOVLW 1
ADDWF TimeH1,W
MOVWF TimeH1
BTFSS STATUS,C
GOTO NoCarryH
MOVLW 1
ADDWF TimeH2,W
MOVWF TimeH2
BTFSS STATUS,C
GOTO NoCarryH
; Лічильник TIMEH переповнився, востанавлюємо його і починаємо рахувати TIMEL
MOVF TimeH0Loaded,W
MOVWF TimeH0
MOVF TimeH1Loaded,W
MOVWF TimeH1
MOVF TimeH2Loaded,W
MOVWF TimeH2
BSF PORTB,7 ; Виведення позитивного фронту імпульсу
BCF PORTB,6
; CALL SetRSData
NOP
NOP
NOP
NoCarryL BTFSC PIR1,RCIF
CALL GetRSData
MOVLW 1
ADDWF TimeL0,W
MOVWF TimeL0
BTFSS STATUS,C
GOTO NoCarryL
MOVLW 1
ADDWF TimeL1,W
MOVWF TimeL1
BTFSS STATUS,C
GOTO NoCarryL
MOVLW 1
ADDWF TimeL2,W
MOVWF TimeL2
BTFSS STATUS,C
GOTO NoCarryL
MOVF TimeL0Loaded,W
MOVWF TimeL0
MOVF TimeL1Loaded,W
MOVWF TimeL1
MOVF TimeL2Loaded,W
MOVWF TimeL2
BCF PORTB,7 ; Виведення негативного фронту імпульсу
BSF PORTB,6
; CALL SetRSData
; Якщо кількість імпульсів менше константи, рахуємо їх
BTFSS Cnt2,7
GOTO NoCarryH
NoCarryCnt BTFSC PIR1,RCIF
CALL GetRSData
MOVLW 1
ADDWF Cnt0,W
MOVWF Cnt0
BTFSS STATUS,C
GOTO NoCarryH
MOVLW 1
ADDWF Cnt1,W
MOVWF Cnt1
BTFSS STATUS,C
GOTO NoCarryH
MOVLW 1
ADDWF Cnt2,W
MOVWF Cnt2
BTFSS STATUS,C
GOTO NoCarryH
MOVLW 0xFF
MOVWF Cnt0
MOVWF Cnt1
MOVWF Cnt2
GOTO
NoCarryCnt
GetRSData
BCF PIR1,RCIF ; Прийом і запис в пам'ять байта
MOVF RCREG,W
MOVWF INDF
;
MOVWF TXREG
MOVLW 0x20 ; Перевірка приходу стартовго байта
SUBWF StartByte,W
BTFSS STATUS,Z
RETURN
INCF FSR,F ; Збільшення адреси з
MOVF FSR,W ; перевіркою на переповнювання
SUBLW 0x2A
BTFSS STATUS,Z
RETURN
MOVLW 0x20
MOVWF FSR
GOTO
NoCarryH
;SetRSData
; BTFSS PIR1,TXIF ;очикування закінчення передачі
; RETURN
; MOVF PORTB,W
; MOVWF TXREG
; BCF PIR1,TXIF
;
RETURN
END
Висновки
В процесі розробки курсового проекту, був розроблений генератор на мікроконтролері PIC16F4A і AD9850, були проведені всі етапи курсового проектування пристроїв, розроблена структурна принципова схема, чимала увага приділена вибору елементної бази та розробці програми, алгоритму управління пристроєм.