Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A

Автор работы: Пользователь скрыл имя, 16 Июня 2014 в 17:21, курсовая работа

Краткое описание

Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции выполняются с высокой скоростью, и с перекрытием по времени выборок команд и циклов выполнения 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл (200 нс при 20 Мгц), исключая команды переходов. Исполняемая программа может находиться только во встроенном ПЗУ.

Содержание

Техническое задание…………………………………………………………… 3
Описание применяемой микроЭВМ………………………………………… 4
Внешняя панель устройства………………………………………………… 18
Элементы устройства………………………………………………………… 18
Блок-схемы алгоритмов………………………………………………………… 19
Функциональная схема устройства…………………………………………..22
Текст программы……………………………………………………………… 23
Литература……………………………………………………………………… 26

Прикрепленные файлы: 1 файл

Urasach_sinus.doc

— 945.00 Кб (Скачать документ)

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 - цифровой ввод/вывод общего пользования

3. Внешняя панель устройства

При нажатии кнопки «Измерить» происходит измерение амплитуды синусоидального сигнала. На две ножки порта А подаётся 5В. Измерение сигнала происходит с точностью 0,02В.

4. Элементы устройства:

  1. один четырёхразрядный блок семисегментного индикатора.
  2. Кнопка «Измерить».
  3. Порт для подключения источника сигнала.

Диалог с пользователем происходит следующим образом. После включения питания измерителя на 3 семисегментных индикаторах отображаются 0. При нажатии кнопки происходит измерение амплитуды синусоидального сингала с последующей индикаций соответствующего значения.

5. Блок-схемы алгоритмов:

 

Блок-схема основной программы



 








 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

New_Conv – определяет значения амплитуды в пиковых точках входного сигнала.

SREDNIE – определяет среднее арифметическое значение для  восьми значений амплитуды, в восьми пиковых точках и записывает результат в переменную Sum.

PC.1 – первая ножка порта C.

t – переменная общего назначения.

Max – переменная для хранения максимального значения амплитуды в данный момент.

Min - переменная для хранения минимального значения амплитуды в данный момент.

C -  переменная-счетчик для определения кол-ва измерений.

ПравСдвиг(R) – сдвиг регистра R на один разряд вправо.

E – переменная для хранения сотой части числа вольт.

D – переменная для хранения десятой части числа вольт.

S – переменная для хранения целой части числа вольт.

 

 

 

 

 

 

6.Функциональная схема устройства

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.Текст программы:

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