
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, були проведені всі етапи курсового проектування пристроїв, розроблена структурна принципова схема, чимала увага приділена вибору елементної бази та розробці програми, алгоритму управління пристроєм.
Курсовий проект виконаний згідно отриманому завданню та методичним вказівкам від викладача.
Література
1. Большие интегральные схемы запоминающих устройств: Справочник/ А.Ю. Гордонов и др.: Под ред. А.Ю.Гордонова — М: —Радио и связь,1990
2. Горбунов В.Л., Панфілов Д.И., Преснухин Д.Л. Справочное пособие по микропроцессорам и микроЭВМ, М., Высшая школа,1988
3. Каган Б.М., Сташин В.В. Основы проектирования микропроцессорных устройств автоматики, М., Энергоатомиздат, 1987
4. Калабеков Б.А. Цифровые устройства и микропроцессорные системы. Учебник для техникумов связи, М., Горячая линия-Телеком, 2002
5. Кривенко В.І. Методичні вказівки до виконання лабораторних робіт з дисципліни «ЕОМ і мікропроцесорні системи», К., Видавництво Європейського університету, 2003
6. Локазюк В.М. Мікропроцесори та мікроЕОМ у виробничих системах, К., Видавничий центр «Академія», 2002
7. Самохвалов К.Г., Вікторов О.В. Микропроцессоры,К., Техніка, 1989
8. Якименко Ю.І., Терещенко Т.О., Сокол Є.І., Жуйков В.Я,
Петергеря Ю.С Мікропроцесорна техніка, К.:Політтехніка, 2004
Додаток А
Перелік елементів схеми електричної принципової
Позначення |
Призначення |
К-ть |
|
С1 |
Конденсатор керамічний |
1 |
36 пФ |
С2 |
Конденсатор електролітичний |
1 |
47 мкФх16В |
С3-С5 |
Конденсатор керамічний |
3 |
0,1 мкФ |
|
|
|
|
DD1 |
Мікроконтролер PIC16F84A |
1 |
|
DD2 |
Мікросхема сінтезатор AD9850 |
1 |
|
|
|
|
|
HG1 |
Світлодіодна матриця |
1 |
|
|
|
|
|
R1,R3-R6 |
Резистор МЛТ-0,125 |
5 |
10к±10% |
R2 |
Резистор МЛТ-0,125 |
1 |
7,5к±10% |
R7 |
Резистор змінний |
1 |
10к |
R8,R9 |
Резистор МЛТ-0,125 |
2 |
100к±10% |
R10, R12 |
Резистор МЛТ-0,125 |
2 |
100±10% |
R11 |
Резистор МЛТ-0,125 |
1 |
3,9к±10% |
R13 |
Резистор МЛТ-0,125 |
1 |
27±10% |
R14 |
Резистор МЛТ-0,125 |
1 |
180±10% |
R15 |
Резистор МЛТ-0,125 |
1 |
20±10% |
|
|
|
|
Z1 |
Фільтр |
1 |
|
|
|
|
|
HA1 |
Динамік HPM14AX |
1 |
|
|
|
|
|
G1 |
Кварцовий генератор |
1 |
14мГц |
|
|
|
|
SB1-SB16 |
Клавіатура |
1 |
|
|
|
|
|