Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Дослідження мікроконтролерного модуля аналого-цифрового перетворювача




Мета роботи: вивчити використання вбудованого в мікроконтролер модуля аналого-цифрового перетворювача для введення аналогових сигналів

 

ТЕОРЕТИЧНІ ВІДОМОСТІ

У технічних системах керування досить часто потрібно реагувати на сигнали аналогових датчиків. Ядро ж мікроконтролера обробляє тільки дискретні сигнали. Для введення в них аналогових сигналів застосовують аналого-цифрові перетворювачі (АЦП), які перетворюють аналогову фізичну величину на цифровий код, що пропорційний цій величині і може оброблятись мікропроцесором. У багатьох сучасних мікроконтролерах АЦП вбудовують у кристал напівпровідника разом з іншими модулями. Це дозволяє зменшити кількість використовуваних АЦП зовнішніх виводів, прискорити його роботу. Щоб підключати сигнали декількох аналогових величин на тому ж кристалі мікроконтролера розміщують електронний комутатор, який дозволяє підключати до АЦП канали декількох аналогових сигналів.

У лабораторній установці застосовується мікроконтролер PIC16F877 з восьмиканальним десятирозрядним АЦП порозрядного врівноваження. До каналу 0 (вивод RA0/AN0) на електронній платі підключено потенціометр, у якого сигнал можна змінювати в діапазоні (0...5 В).

 

Нижче подано довідкову інформацію про роботу модуля АЦП мікроконтролера PIC16F877.

Для керування цим модулем використовується 4 регістри:

o ADCON0, ADCON1 – регістри управління модулем;

o ADRESH – регістр старшої частини результату АЦ перетворення;

o ADRESL – регістр молодшої частини результату перетворення;

 

Призначення бітів регістра ADCON0:

Ø біти 7, 6: ADCS1, ADCS0 – вибір джерела тактового сигналу АЦП

00 – fген./2; 01 – fген./8; 10 – fген./32; 11 – внутрішній генератор модуля АЦП;

біти 5-3: CHS2-CHS0 – вибір аналогового каналу

000 – канал 0 (RA0/AN0),

001 – канал 1 (RA1/AN1),

010 – канал 2 (RA2/AN2),

011 – канал 3 (RA3/AN3),

100 – канал 4 (RA5/AN4),

101 – канал 5 (RE0/AN5),

110 – канал 6 (RE1/AN6),

111 – канал 7 (RE2/AN7);

Ø біт 2: GO/DONE – пуск АЦ перетворення

1 – команда "почати АЦ перетворення або воно триває;

0 – АЦ перетворення завершено;

Ø біт 1: не використовується;

Ø біт 0: ADON – біт ввімкнення модуля АЦП

1 – модуль АЦП ввімкнуто,

0 – модуль АЦП вимкнуто, він не споживає енергії.

 

Призначення бітів регістра ADCON1:

Ø біт 7: ADFM – формат результату АЦ перетворення

1– праве вирівнювання,

0 – ліве вирівнювання;

Ø біти 6-4 не використовуються;

Ø біти 3-0: PCFG3…PCFG0 – біти керування налагодженням каналів АЦП (табл. 8.1).

 

27.1 – Біти керування налагодженням каналів АЦП

PCFG3:PCFG0 RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0
  A A A A A A A A
  A A A A Vоп+ A A A
  D D D A A A A A
  D D D A Vоп+ A A A
  D D D D A D A A
  D D D D Vоп+ D A A
011x D D D D D D D D
  A A A A Vоп+ Vоп– A A
  D D A A A A A A
  D D A A Vоп+ A A A
  D D A A Vоп+ Vоп– A A
  D D D A Vоп+ Vоп– A A
  D D D D Vоп+ Vоп– A A
  D D D D D D D A
  D D D D Vоп+ Vоп– D A
                   

 

Умовні позначення:

А – аналоговий вхід, D – цифровий канал введення/виведення.

 

Процес аналого-цифрового перетворення починається в момент встановлення біта GO = 1 (при ADON = 1). Перетворення триває приблизно від 10 до 200 мкс (в залежності від обраної тактової частоти). Після його завершення результат можна отримати з пари регістрів ADRESH, ADRESL.

У даній програмі використовується 8 з десяти розрядів результату перетворення, які беруться з регістра ADRESH (при лівому вирівнюванні) і у шістнадцятковій формі виводяться на цифровий індикатор.

Лабораторне обладнання складається з демоплати, плати відладчика і комп'ютера.

 

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

1. Приєднати СОМ-порт комп'ютера до плати відладчика, відладчик до демоплати. Ввімкнути живлення демоплати (відладчик живиться від демоплати).

2. У середовищі MPLAB, створити у папці D:\1Work новий проект з іменем 27ГБ (Г – номер групи, Б – номер бригади), обравши у меню Project-New Project.

3. Натиснувши кнопку Change, у вікні Development Mode відкрити закладку Tools. Вибрати пункт MPLAB ICD Debugger (відладчик MPLAB) і тип процесора, що встановлений на демоплаті: Processor: PIC16F877. Натиснути кнопку ОК.

4. У вікні Edit Project додати новий файл на асемблері з іменем проекту та розширенням.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файлу з'явиться ім'я асемблерного файлу. Натиснути кнопку ОК. У середовищі MPLAB IDE створити цей текстовий файл з розширенням.asm (File – New), записавши його у папку 1Work (File - Save As …).

5. При роботі з відладчиком з'явилось вікно MPLAB ICD. Треба встановити режими його роботи, натиснувши кнопку Options....

У вікні ICD Options слід обрати такі установки:

В рамці Configuration Bits:

b. Oscillator: XT (генератор: 2-10 МГц)

c. Watchdog Timer: Off/Disable (сторожовий таймер відключити)

d. Power Up Timer: On/Enable (таймер затримки після включення живлення ввімкнути)

e. Brown out Detect: Off/Disable (скидання при зниженні напруги живлення виключити)

f. Low Voltage Program: Disable (низьковольтне програмування заборонити)

g. Code Protect Data EE: code protect Off (захист даних EEPROM відмінити)

h. Flash Memory Write: Memory written to be EECON (запис у флеш-пам'ять через EECON)

i. Code Protect: Code Protection Off (захист коду програми відмінити)

 

В рамці Program Options зняти відмітку для пункту ID Locations, інші – встановити.

Закрити вікно ICD Options (´).

У вікні MPLAB ICD мають бути обрані такі пункти: COM1, 19200, Minimum and Watch window, 2MHz-10MHz (вікно MPLAB ICD не закривати!).

6. Стандартним шляхом скопіювати текст програми з файлу D:\TEMP\ACP.asm в асемблерний файл вашого проекту. Переглянувши текст програми, дописати асемблерні фрагменти, вказані в коментарі.

 

;*********************************************************

;Лабораторна робота 27

;Дослідження модуля АЦП мікроконтролера PIC16F877

;*********************************************************

 

list p=16f877;директива визначення типу процесора

#include <p16f877.inc>;включення файлу стандартних імен

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_OFF & _LVP_OFF & _DEBUG_ON & _CPD_OFF

 

CBLOCK 20H

 

T_C;тимчасове зберігання результату АЦ перетворення

_N;змінна для завдання величини затримки

LOOP3;змінні

LOOP2; для

LOOP1; підпрограм

LOOP0; затримок

LSD;молодший десятковий розряд значення температури

MSD;старший десятковий розряд значення температури

L7;7-сегментний код молодшої цифри

M7;7-сегментний код старшої цифри

 

ENDC

 

;======================================

; Основна програма

;======================================

org 0x000

nop;початок програми

nop

goto Start

;=================

org 0x4

nop

int: retfie

;=================

Start: clrf PORTA;обнулити порт А

bsf PORTA,2;зняти скидання регістрів зсуву

clrf PORTC;Обнулити порт С,

 

bsf STATUS,RP0;банк регістрів 1

movlw b'11111011';RA2 - на виведення,

movwf TRISA;інші біти порту А - на введення,

; в т.ч. RA0!

movlw b'11010111';встановити RC5, RC3 на виведення,

movwf TRISC;інші біти порту С - на введення

bcf STATUS,RP0;банк регістрів 0

 

banksel PORTC

clrf PORTC;очистити PORTC

 

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

;встановлення режимів роботи модуля АЦП

????????????????;встановити тактову частоту

; Fosc/8, канал 0

???????????;і ввімкнути модуль АЦП

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

banksel OPTION_REG

movlw B'10000111';переддільник підключити до

; таймера TMR0,

movwf OPTION_REG;і встановити коефіцієнт 1:256

movlw B'00001110';вирівнювання вліво, один

; аналоговий канал № 0,

movwf ADCON1;опорні напруги: V+ = Uживл. = +5 В,

; V- = 0

banksel PORTC

Main: btfss INTCON,T0IF;очікування переповнення

; таймера 0

goto Main

bcf INTCON,T0IF;скидання ознаки переповнення

;таймера 0

 

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

????????????;\старт АЦ перетворення

Wait:???????????;\очікування завершення перетворення

????????

 

????????????;запис результату АЦ перетворення

????????;в регістр T_C

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

call RASPAK;розпаковка байта на дві окремі тетради

;---------------------------------------------------------

MAIN_1: call HEX_7;перетворення НЕХ коду 2-х цифр у

; код 7-сегментних індикаторів

disp: CALL DISPLAY;результат вимірювання – через

;регістри зсуву - на індикацію

movlw 1;константа для паузи 0.25 секунди

MOVWF LOOP3

MAIN_2:

CALL DELAY_LONG;затримка на час (LOOP3)*0.25 с

DECFSZ LOOP3, F

GOTO MAIN_2

;-----------------------------------------------

GOTO Main;перехід до Main

;===============================================

;п/п зсуву вмісту регістрів M7, L7 молодшими розрядами

; вперед у 2 регістри зсуву 74НС164

DISPLAY:

bcf PORTA,2;скидання регістрів

bsf PORTA,2;зсуву (для індикаторів)

movlw d'16';лічильник в _N

movwf _N

NastBit: rrf M7,f;зсув вправо пари регістрів M7, L7

rrf L7,f

bcf PORTC,5;якщо висунутий біт=0, встановити RC5=0

btfsc STATUS,C;якщо висунутий біт=1, - RC5=1,

bsf PORTC,5;

nop

bsf PORTC,3;

nop;тактовий імпульс

bcf PORTC,3;

decfsz _N,f;лічильник - 1, і пропустити, якщо він

; дорахував до нуля

goto NastBit;зсув повторюється 16 разів

return

;---------------------------------------

DELAY_LONG

MOVLW.250;затримка 250 мс

MOVWF LOOP1

DELAY_N_MS:

OUTTER:

MOVLW.102;затримка 1 мс

MOVWF LOOP2

INNER:

movlw d'2'

movwf LOOP0

ININNER:

DECFSZ LOOP0,F

goto ININNER

DECFSZ LOOP2, F

GOTO INNER

DECFSZ LOOP1, F

GOTO OUTTER

RETURN

;---------------------------------------

DELAY_10USEC:;затримка тривалістю (W)*10 мкс

MOVWF LOOP1

DELAY_10USEC_0

movlw d'2'

movwf LOOP0

DELAY_10USEC_1:

DECFSZ LOOP0,F

GOTO DELAY_10USEC_1

decfsz LOOP1,f

goto DELAY_10USEC_0

return

 

;********************************************

; Стандартні процедури роботи з дисплеєм

;********************************************

;п/п розпаковки дворозрядного 16-кового числа

RASPAK: MOVF T_C,w

andlw h'f0'

movwf MSD

swapf MSD,f

MOVF T_C,w

andlw h'0f'

MOVWF LSD

retlw 0

 

;------------------------------------

;п/п перетворення 2-х чотирибітних чисел з регістрів MSD,

; LSD

;у 7-сегментні коди двох цифр в регістрах M7, L7

HEX_7: movf MSD,W

call tab7s;п/п перетворення цифри (W)=0..F у

;7-сегментний код в W

movwf M7;7-сегм. код старшої цифри

movf LSD,W

call tab7s

movwf L7;7-сегм. код молодшої цифри

return

;------------------------------------

tab7s: addwf PCL,f;п/п перетворення шістнадцяткової

; цифри (W)=0..F у 7-сегментний код в W

retlw b'11111100';0

retlw b'01100000';1

retlw b'11011010';2

retlw b'11110010';3

retlw b'01100110';4

retlw b'10110110';5

retlw b'10111110';6

retlw b'11100000';7

retlw b'11111110';8

retlw b'11110110';9

retlw b'11101110';A

retlw b'00111110';b

retlw b'10011100';C

retlw b'01111010';d

retlw b'10011110';E

retlw b'10001110';F

retlw b'00000000';код гасіння індикатора

;*************************************************

END

 

 

7. Виконати компіляцію програми (Project – Make Project, або кнопка у вигляді зеленої лійки, або клавіша F9). На екрані з'являється вікно результатів компіляції (Build Results).

8. Якщо з'явилось повідомлення про помилки (error), ознайомившись з поясненням змісту помилки, слід натиснути мишею на цей рядок вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де ймовірно зроблено помилку. Треба виправити її і далі так само й інші помилки. Потім повернутись до п. 8, 9, поки не буде видано повідомлення "Build completed successfully" (Компіляцію завершено успішно). При цьому створюється файл з тим же ім'ям і розширенням.hex. Може також з'явитись віконце нагадування про те, що після змін у програмі потрібно виконати програмування мікроконтролера за допомогою відладчика.

9. Слід закрити це вікно і вікно Build Results. Виконати програмування мікроконтролера, натиснувши у вікні MPLAB ICD кнопку Program.

10. Виконати пуск програми, натиснувши клавішу F9 або кнопку зеленого світлофора.

11. Підключити вольтметр до входу RA0/AN0 АЦП і загального виводу. Змінюючи викруткою положення змінного резистора R56, встановлювати за показами вольтметра значення напруг, обчислених за формулою:

U(i) = 0,05*i*N, для і = 0, 1, 2,..., 10, де N – номер бригади.

Для кожної встановленої напруги записати з цифрового індикатора результат АЦ перетворення у шістнадцятковій формі. Отримані значення занести в таблицю 8.1. Перевести шістнадцяткові коди у десяткові. Розрахувати значення аналогових напруг, відповідних цим кодам з формули лінійного перетворення:

, (1)

де U*(i) – аналогова напруга, відповідна коду; U+ та U – позитивна і негативна опорні напруги (U+ = 5 В, U = 0); С(і) – десятковий код з таблиці; С+, С – коди, що відповідають позитивній і негативній опорним напругам (С+ = 255, С = 0). Для зручності розрахунку треба перетворити (1) до вигляду U*(i) = f [С(і)].

Обчислити приведену похибку: .

Результати занести в таблицю 27.1.

 

27.1. Результати вимірів і обчислень

U(і), B вольтметра 16-й код індикатора 10-й код індикатора U*(і), B за формулою Похибка δ, %
         
         
         
         
         
         
         
         
         
         
         

 

ЗМІСТ ЗВІТУ

Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання лабораторної роботи, програму з коментарем, формули та таблицю розрахунків.

 

 

ДОВІДКА. Розташування регістрів спеціального призначення у банках пам’яті:

Банк 0: PORTA, PORTC, ADRESH, ADCON0, PIR1.

Банк 1: TRISA, TRISC, ADCON1, OPTION_REG.

КОНТРОЛЬНІ ЗАПИТАННЯ

1. У чому принципова різниця між аналоговими та цифровими сигналами?

2. Чи може мікропроцесор обробляти аналогові сигнали?

3. Для чого призначений АЦП?

4. У яких режимах може працювати модуль АЦП мікроконтролера PIC16F877?

5. Як визначити математичну залежність між кодом, отриманим від АЦП і реальною фізичною величиною, на яку реагує датчик?

 

 

Лабораторна робота № 28




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 673; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.