Автор работы: Пользователь скрыл имя, 16 Июня 2014 в 17:21, курсовая работа
Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции выполняются с высокой скоростью, и с перекрытием по времени выборок команд и циклов выполнения 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл (200 нс при 20 Мгц), исключая команды переходов. Исполняемая программа может находиться только во встроенном ПЗУ.
Техническое задание…………………………………………………………… 3
Описание применяемой микроЭВМ………………………………………… 4
Внешняя панель устройства………………………………………………… 18
Элементы устройства………………………………………………………… 18
Блок-схемы алгоритмов………………………………………………………… 19
Функциональная схема устройства…………………………………………..22
Текст программы……………………………………………………………… 23
Литература……………………………………………………………………… 26
ADON – включение АЦП;
при ADON = 1 АЦП работает и занимает линии IO; иначе АЦП не работает и не потребляет тока.
GO:/DONE – бит статуса АЦП;
при ADON=1 этот бит должен быть установлен, чтобы началось преобразование. Он автоматически сбрасывается аппаратным способом, когда преобразование заканчивается. Если ADON=0, то этот бит всегда 0.
CHS2.CHS1.CHS0 – выбор аналогового канала:
000: канал 0 (RA0/AIN0)
001: канал 1 (RA1/AIN1)
010: канал 2 (RA2/AIN2)
011: канал 3 (RA3/AIN3)
100: канал 4 (RA5/AIN4)
101: канал 5 (RE0/AIN5)
110: канал 6 (RE1/AIN6)
111: канал 7 (RE2/AIN7)
ADCS1.ADCS0 – выбор тактов на один шаг последовательного приближения:
00: fosc/2
01: fosc/8
10: fosc/32
11: fRC (частота от собственного RC-генератора).
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
– |
– |
– |
– |
– |
PCFG2 |
PCFG1 |
PCFG0 |
Рис. 9. Управляющий регистр АЦП (ADCON1) |
PCFG2.PCFG1.PCFG0 – биты, которые определяют конфигурацию выводов RA0 - RA3:
PCFG[2:0] |
RA0 |
RA1 |
RA2 |
RA5 |
RA3 |
RE0 |
RE1 |
RE2 |
Ref |
000 |
A |
A |
A |
A |
A |
A |
A |
A |
Vdd |
001 |
A |
A |
A |
A |
Vref |
A |
A |
A |
RA3 |
010 |
A |
A |
A |
A |
A |
D |
D |
D |
Vdd |
011 |
A |
A |
A |
A |
Vref |
D |
D |
D |
RA3 |
100 |
A |
A |
D |
D |
A |
D |
D |
D |
Vdd |
101 |
A |
A |
D |
D |
Vref |
D |
D |
D |
RA3 |
11х |
D |
D |
D |
D |
D |
D |
D |
D |
– |
Обозначения: A - аналоговый вход, D - цифровой ввод/вывод общего пользования
При нажатии кнопки «Измерить» происходит измерение амплитуды синусоидального сигнала. На две ножки порта А подаётся 5В. Измерение сигнала происходит с точностью 0,02В.
Диалог с пользователем происходит следующим образом. После включения питания измерителя на 3 семисегментных индикаторах отображаются 0. При нажатии кнопки происходит измерение амплитуды синусоидального сингала с последующей индикаций соответствующего значения.
Блок-схема основной программы
New_Conv – определяет значения амплитуды в пиковых точках входного сигнала.
SREDNIE – определяет среднее арифметическое значение для восьми значений амплитуды, в восьми пиковых точках и записывает результат в переменную Sum.
PC.1 – первая ножка порта C.
t – переменная общего назначения.
Max – переменная для хранения максимального значения амплитуды в данный момент.
Min - переменная для хранения минимального значения амплитуды в данный момент.
C - переменная-счетчик для определения кол-ва измерений.
ПравСдвиг(R) – сдвиг регистра R на один разряд вправо.
E – переменная для хранения сотой части числа вольт.
D – переменная для хранения десятой части числа вольт.
S – переменная для хранения целой части числа вольт.
list p=16F873A
#include "P16F873A.INC"
TEMP EQU 0x20
ADR EQU 0x21
MAX EQU 0x22
MIN EQU 0x23
SUMML EQU 0x24
SUMMH EQU 0x25
COUNT EQU 0x26
EDEN EQU 0x27
DES EQU 0x28
SOT EQU 0x29
RESULT EQU 0x30
;-----------------------
org 0x00 ;program start
GOTO RESET1
ORG 0x04
GOTO INTERUPT
org 0x10
RESET1:
;ЗАГРУЗКА СЕМИСИГМЕНТНОГО ПРЕДСТАВЛЕНИЯ ЧИСЕЛ В ПАМЯТЬ
BSF STATUS,RP0
MOVLW B'11111100'
MOVWF TEMP
MOVLW D'0'
CALL WRITE
MOVLW B'01100000'
MOVWF TEMP
MOVLW D'1'
CALL WRITE
MOVLW B'11011010'
MOVWF TEMP
MOVLW D'2'
CALL WRITE
MOVLW B'11110010'
MOVWF TEMP
MOVLW D'3'
CALL WRITE
MOVLW B'01100110'
MOVWF TEMP
MOVLW D'4'
CALL WRITE
MOVLW B'10110110'
MOVWF TEMP
MOVLW D'5'
CALL WRITE
MOVLW B'10111110'
MOVWF TEMP
MOVLW D'6'
CALL WRITE
MOVLW B'11100000'
MOVWF TEMP
MOVLW D'7'
CALL WRITE
MOVLW B'11111110'
MOVWF TEMP
MOVLW D'8'
CALL WRITE
MOVLW B'11110110'
MOVWF TEMP
MOVLW D'9'
CALL WRITE
;НАСТРОЙКА ПОРТОВ ВВОДА/ВЫВОДА
BSF STATUS,RP0;ПЕРЕХОД В БАНК 1
MOVLW B'11111';НАСТРОЙКА ПОРТА А НА ВВОД
MOVWF TRISA
MOVLW B'00000000';НАСТРОЙКА ПОРТА В НА ВЫВОД
MOVWF TRISB
MOVLW B'00000000'; НАСТРОЙКА ПОРТА С НА ВЫВОД
MOVWF TRISC
;=============================
BCF STATUS,RP0; ПЕРЕХОД В БАНК 0
;ВЫВОД ПЕРВИЧНЫХ ЗНАЧЕНИЙ В ПОРТЫ
MOVLW B'00000000';
MOVWF PORTB
MOVLW B'00000110'
MOVWF PORTC
BSF STATUS,RP0; ПЕРЕХОД В БАНК 1
BCF STATUS,RP1
; НАСТРОЙКА АЦП
movlw b'00001111' ;Выбор входа AN0 и выравнивание К СТАРШЕМУ БАЙТУ
movwf ADCON1
BCF STATUS,RP0; ПЕРЕХОД В БАНК 0
BCF STATUS,RP1
movlw b'11000001' ;(7-6)- ВЫБОР ВНУТРЕННЕГО
RC ГЕНЕРАТОРА ЧАСТОТЫ,0-ВКЛ
Movwf ADCON0
;НАСТРОЙКА ТАЙМЕРА Т0
BSF STATUS,RP0;ПЕРЕХОД В БАНК 3
BSF STATUS,RP1
MOVLW B'10000001';7- БЛОКИРОВАНИЕ НАГРУЗКИ ОТ ПОРТА В,(2-0) - КООФИЦИЕНТ ДЕЛЕНИЯ 1:2
MOVWF OPTION_REG
BSF INTCON,TMR0IE;ВКЛ ПРЕРЫВАНИЕ ПО ПЕРЕПОЛНЕНИЮ ТАЙМЕРА
BSF STATUS,RP0;ПЕРЕХОД В БАНК 1
BCF STATUS,RP1
CLRF MAX; ОБНУЛЕНИЕ РЕГИСТРОВ
MOVLW H'FF'
MOVWF MIN
CLRF COUNT
BCF STATUS,RP0;ПЕРЕХОД В БАНК 0
BCF STATUS,RP1
goto WAIT;ЗАПУСК ОНОВНОЙ ПРОГРАММЫ
WAIT:
BTFSS PORTA,1; ПРОВЕРЯЕМ УРОВЕНЬ НА НОЖКЕ 1 ПОРТА А
GOTO START_CONVERT ; ЕСЛИ 0 НАЧИНАЕМ ИЗМЕРЕНИЕ
GOTO WAIT
NEW_CONV:
MOVF COUNT,W
SUBLW H'8'; ОТСЧИТЫВАЕМ 8 МАКСИМАЛЬНЫХ ЗНАЧЕНИЙ АМПЛТУДЫ
BTFSC STATUS,Z;ЕСЛИ БЫЛО 8 ИЗМЕРЕНИЙ ПЕРЕХОДИМ К
GOTO SREDNIE; ПОИСКУ СРЕДНЕГО
INCF COUNT,F; УВЕЛИЧИВАЕМ СЧЕТЧИК
MOVF MAX,W
ADDWF SUMML,F; НАКАПЛИВАЕМ
В РЕГИСТРАХ МАКСИМАЛЬНЫЕ
BTFSC STATUS,C; ЕСЛИ МЛАДШИQ ПЕРЕПОЛНЕН
INCF SUMMH,F; ИНКРЕМЕНТИРУЕМ СТАРШИЙ
CLRF MAX
MOVLW H'FF'
MOVWF MIN
GOTO START_CONVERT
;=============================
SREDNIE:
CLRF COUNT
SD:
;ДЕЛЕНИЕ НА 8 Т.Е ДВА СДВИГА ВПРАВО
MOVF COUNT,W
SUBLW H'3'; ОТСЧИТЫВАЕМ 2 ИТЕРАЦИИ
BTFSC STATUS,Z
GOTO RES_CONV
INCF COUNT,F; ИНКРЕМЕНТ СЧЕТЧИКА
BCF STATUS,C; СБРАСЫВАЕМ ФЛАГ ЗАЕМА/ПЕРЕНОСА
RRF SUMMH,F;СДВИГ ВПРАВО ЧЕРЕЗ ПЕРЕНОС СТАРШЕГО БАЙТА
RRF SUMML,F; МЛАДШЕГО
GOTO SD
8. Литература
1. Жмакин А. П., Титов В. С. Однокристальные микроЭВМ в системах управления : Учебное пособие / Курск. гос. тех. ун-т., Курск, 2002.
2. Однокристальные микроЭВМ. Справочник. М.: МИКАП, 1994.
1 При вычитании С устанавливается в «1» при отсутствии заёма.
2 При d = 0 результат операции загружается в W-регистр, иначе – в регистр, адресованный полем f.
3 С учетом сохранения возможности переносимости кода на (будущие) старшие модели семейства.
Информация о работе Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A