Мікропроцесорні пристрої

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з атомної енергії

Снежинская державна фізико-технічна академія

Кафедра АІВС

ПОЯСНЮВАЛЬНА ЗАПИСКА

До курсової роботи

з дисципліни: «Мікропроцесорні пристрої».

Група

Студент ______________

(Підпис)

Викладач ________

(Підпис)

Снежинск

2007

Анотація

Мета роботи: реалізувати вимірювач тривалості натискання клавіші.

У процесі роботи над курсовим проектом потрібно здійснити:

- Вивчення завдання;

- Розробка алгоритму;

- Реалізація на PIC-контролері;

- Оформлення пояснювальної записки до курсового проекту

Зміст

1. Постановка завдання

2. Текст програми

3. Граф-схема алгоритму

4. Принципова електрична схема

5. Специфікація

6. Список літератури

1. Постановка завдання

Виміряти тривалість натискання кнопки. Виміряні значення зберігати в ОЗУ мікро c хеми PCF 8583. Виміряні значення вивести на РК - дисплей.

2. Текст програми

LIST P = 16F84f

INCLUDE <P16F84.INC>

count EQU 0x10

count1 EQU 0x20

count2 EQU 0x21

LCDcfg EQU 0x22

LCDout EQU 0x23

Time EQU 0x11

temp EQU 0x12

DATA_I2C EQU 0x34

TX_Buffer EQU 0x32

__CONFIG _CP_OFF ​​& _WDT_OFF & _PWRTE_ON & _RC_OSC

GOTO START

Підпрограма запису байта control по шині I2C

Write_I2C

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для запису

MOVLW 0 xA 0

CALL Transmit _ Data

Внутрішній адресу годин для запису

MOVLW 0 x 00; адреса для запису

CALL Transmit_Data; на шину I2C ...

MOVF DATA_I2C, w; Видача даних

CALL Transmit_Data; на шину I2C ...

CALL Stop_Bit_I2C; Видача на шину I2C Stop Bit

RETURN

Підпрограма скидання лічильника секунд на годиннику PCF 8583

Write_time_I2C

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для запису

MOVLW 0xA0

CALL Transmit _ Data

Запис регістра з якого читають з встановленим бітом на запис

MOVLW 0x02

CALL Transmit_Data

MOVLW 0x00

CALL Transmit_Data

MOVLW 0x00

CALL Transmit_Data

CALL Stop_Bit_I2C; Видача на шину I2C Stop Bit

RETURN

Підпрограма читання результатів вимірювання з ОЗУ PCF 8583

Read_Saved_I2C

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

адреса годин з встановленим бітом для запису

MOVLW 0xA0

CALL Transmit _ Data

Запис регістра з якого читають з встановленим бітом на запис

MOVLW 0x11

CALL Transmit _ Data

Нова стартова послідовність

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для читання

MOVLW 0xA1

CALL Transmit_Data

CALL Receive_data

CALL Stop_Bit_I2C; Видача на шину I2C Stop Bit

RETURN

Підпрограма запису результатів вимірювання в ОЗУ PCF 8583

Save_time_I2C

MOVWF Time

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для запису

MOVLW 0xA0

CALL Transmit_Data

Запис регістра з якого читають з встановленим бітом на запис

MOVLW 0x10

CALL Transmit_Data

Нова стартова послідовність

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для читання

MOVLW 0xA0

CALL Transmit_Data

MOVLW 0x10

CALL Transmit_Data

MOVF Time, W

CALL Transmit_Data

MOVF Time, W

CALL Transmit_Data

CALL Stop_Bit_I2C; Видача на шину I2C Stop Bit

RETURN

Підпрограма читання секунд з годин PCF 8583

Read_I2C

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для запису

MOVLW 0 xA 0

CALL Transmit_Data

Запис регістра з якого читають з встановленим бітом на запис

MOVLW 0 x 02

CALL Transmit _ Data

Нова стартова послідовність

CALL Start_Bit_I2C; Видача на шину I2C Start Bit

Адреса годин з встановленим бітом для читання

MOVLW 0xA1

CALL Transmit_Data

CALL Receive_data

CALL Stop_Bit_I2C; Видача на шину I2C Stop Bit

RETURN

Підпрограма читання байти з шини IIC

Receive _ data

CLRF DATA_I2C

MOVLW 8

MOVWF temp

BCF STATUS, 5

BCF PORTB, 4; SDA - вхід

BCF STATUS, 5

RX_Data_LP

RLF DATA_I2C, 1

BCF PORTB, 5

NOP

NOP

NOP

NOP

NOP

BCF DATA_I2C, 0

BTFSS PORTB, 4

BCF DATA_I2C, 0

BCF PORTB, 5

DECFSZ temp, 1

GOTO RX_Data_LP

Відправлення біта підтвердження ASK = 1

BCF STATUS, 5

BCF PORTB, 4; SDA - вихід

BCF STATUS, 5

BCF PORTB, 4

NOP

BCF PORTB, 5

NOP

NOP

NOP

NOP

BCF PORTB, 5

RETURN

Підпрограма передачі байта по шині I 2 C

Transmit_Data

MOVWF TX_Buffer

MOVLW 8

MOVWF temp

BCF STATUS, 5; вибір банку 1

BCF PORTB, 4; SDA - вихід

BCF STATUS, 5; вибір банку 0

BCF PORTB, 5

TX_Data_LP

BTFSS TX_Buffer, 7

GOTO TX_Data_Lo; bits 7 = 0

BCF PORTB, 4

GOTO TX_Data_LP1

TX_Data_Lo

BCF PORTB, 4

TX_Data_LP1

BCF PORTB, 5

NOP

NOP

NOP

NOP

BCF PORTB, 5

RLF TX_Buffer, 1

DECFSZ temp, 1

GOTO TX_Data_LP

RLF TX _ Buffer, 1

BCF PORTB, 4

Читання біта підтвердження - ASK

BCF STATUS, 5

BCF TRISB, 4; PORTB, 4 - вхід

BCF STATUS, 5

BCF PORTB, 5

NOP

NOP

NOP

NOP

NOP

BTFSC PORTB, 4

NOP

BCF PORTB, 5

RETURN

Підпрограма організації стартовою бітової послідовності

Start_Bit_I2C

BCF PORTB, 4

BCF STATUS, 5; вибір 1 банку

BCF PORTB, 4; SDA - як вихід даних з MCU в

EEPROM

BCF STATUS, 5; вибір 0 банку

BCF PORTB, 4

NOP

NOP

NOP

NOP

BCF PORTB, 5

NOP

NOP

NOP

NOP

NOP

BCF PORTB, 4

NOP

NOP

NOP

NOP

NOP

BCF PORTB, 5

RETLW 0

Підпрограма організації стопою бітової послідовності

Stop_Bit_I2C

BCF PORTB, 4

BCF STATUS, 5; вибір 1 банку

BCF PORTB, 4; SDA - як вихід даних з MCU в

; EEPROM

BCF STATUS, 5; вибір 0 банку

BCF PORTB, 4

NOP

NOP

BCF PORTB, 5

NOP

NOP

BCF PORTB, 4

NOP

NOP

RETURN

################################################## ##########

Підпрограми для організації затримок

Wait250ms

MOVLW 0x77, 250 мс

MOVLW count2

c03 MOVLW 0x02

MOVWF count

c02 MOVLW 0x1F

MOVWF count1

c01 DECFSZ count1

GOTO c01

DECFSZ count

GOTO c02

DECFSZ count2

GOTO c03

RETURN

Wait100

MOVLW 0x02; 100 мкс

MOVWF count1

w50 MOVLW 0x14

MOVWF count

c24 DECFSZ count

GOTO c24

DECFSZ count1

GOTO w50

RETURN

Wait50

MOVLW 0x14, 50 мкс

MOVWF count

c13 DECFSZ count

GOTO c13

RETURN

Wait15

MOVLW 0x06; 4 мкс

MOVWF count

c15 DECFSZ count

GOTO c15

RETURN

Wait160

MOVLW 0x35; 160 мкс

MOVWF count

c16 DECFSZ count

GOTO c16

RETURN

Wait1k; 1 сек

MOVLW 0x04

MOVWF count2

w2 MOVLW 0xE0

MOVWF count1

w1 DECFSZ count1

GOTO w1

DECFSZ count2

GOTO w2

RETURN

################################################## ###############

Підпрограма виводу байта на РК екран

NumOut

MOVWF temp

BCF temp, 7, 0 Формуємо

BCF temp, 6, 0 номер

BCF temp, 5, 1 стовпця

BCF temp, 4, 1 містить символи для виведення

BCF LCDcfg, 0

MOVF temp, W

CALL LCD _ write; Виводимо спочатку старшу тетраду

RETURN

Підпрограма записи по лініях даних молодшої тетради.

LCD_writehalf

MOVWF LCDout

BCF STATUS, RP0

BCF PORTA, 4

ALL Wait250ms

MOVF LCDout, W

MOVWF PORTA

BCF PORTB, 0

CALL Wait160

BCF PORTB, 0

CLRF PORTB

CLRF PORTA

RETURN

Підпрограма записи по лініях даних цілого байта.

LCD _ write

BCF STATUS, RP 0

MOVWF LCDout

SWAPF LCDout, W;

MOVWF PORTA

BTFSS LCDcfg, 0

BCF PORTA, 4

BTFSC LCDcfg, 0

BCF PORTA, 4

BCF PORTB, 0

BTFSS LCDcfg, 0

CALL Wait250ms

BTFSC LCDcfg, 0

CALL Wait50

BCF PORTB, 0

MOVF LCDout, W

MOVWF PORTA

BTFSS LCDcfg, 0

BCF PORTA, 4

BTFSC LCDcfg, 0

BCF PORTA, 4

BCF PORTB, 0

BTFSS LCDcfg, 0

CALL Wait250ms

BTFSC LCDcfg, 0

CALL Wait50

BCF PORTB, 0

CALL Wait250ms

RETURN

Підпрограма попередньої ініціалізації РК екрану.

IniLCD

MOVLW 0 x 0 E

wait _ power

CALL Wait1k

DECFSZ temp

GOTO wait_power

BCF LCDcfg, 0

MOVLW 0x03

CALL LCD_writehalf

CALL Wait250ms

MOVLW 0x03

CALL LCD_writehalf

CALL Wait160

BCF LCDcfg, 0

MOVLW 0x03

CALL LCD_writehalf

CALL Wait50

MOVLW 0x02

CALL LCD_writehalf

CALL Wait50

MOVLW 0x20

CALL LCD_write

CALL Wait50

MOVLW 0x20

CALL LCD_write

CALL Wait50

MOVLW 0x0E

CALL LCD_write

CALL Wait50

MOVLW 0x0F

CALL LCD_write

CALL Wait50

MOVLW B'00011111 '

CALL LCD_write

CALL Wait50

MOVLW B'10000000 '

CALL LCD_write

CALL Wait50

BCF LCDcfg, 0 MOVLW B '00000110 '; установка напрямок переміщення курсору РК екрану

CALL LCD_write

MOVLW 0 x 02;

Встановити курсор в початковий стан.

CALL LCD _ write

MOVLW 0 x 01;

Очищення РК екрану

CALL LCD _ write

CALL Wait250ms

CALL Wait250ms

CALL Wait250ms

RETURN

Підпрограма виведення часу

OutTime

BCF LCDcfg, 0

MOVLW 0 x 02; встановити курсор в початковий стан.

CALL LCD_write

CALL Read_I2C

SWAPF DATA_I2C, W

CALL NumOut

MOVF DATA_I2C, W

CALL NumOut

CALL Save _ time _ I 2 C; зберігаємо результат вимірювань в ОЗУ

PCF 8583

RETURN

Підпрограма виводу та збереження результатів вимірювання

GetTime

BCF LCDcfg, 0

MOVLW 0x02; встановити курсор в початковий стан.

CALL LCD_write

CALL Read_I2C; read seconds from clock

MOVF DATA_I2C, W

MOVWF Time

CALL Save _ time _ I 2 C; зберігаємо результат вимірювань в ОЗУ

PCF 8583

CALL Read_Saved_I2C; зчитуємо результат вимірювань з ОЗУ

PCF 8583

SWAPF DATA_I2C, W

CALL NumOut; виводимо на РК екран результат вимірювань

MOVF DATA _ I 2 C, W

CALL NumOut; виводимо на РК екран результат вимірювань

RETURN

Основна підпрограма

START

CLRF PORTB

CLRF PORTA

BCF STATUS, RP 0

Налаштування портів

MOVLW B'11100000 '

MOVWF TRISA & 0x7F

MOVLW B'11001100 '

MOVWF TRISB

BCF OPTION_REG, 7

CALL IniLCD;

Виклик підпрограми попередньої ініціалізації РК екрану.

BCF STATUS, RP0; вибір 0го банку пам'яті

CALL Read_Saved_I2C; зчитуємо результат вимірювань з ОЗУ

PCF 8583 при збереженні

SWAPF DATA_I2C, W

CALL NumOut; виводимо на РК екран результат вимірювань

OVF DATA_I2C, W

CALL NumOut; виводимо на РК екран результат вимірювань

MZ

BTFSC PORTB, 3

GOTO MZ; перехід до MZ, кнопка не натиснута

CALL Write_time_I2C; то викликаємо підпрограму обробки режиму скидання лічильника, початок відліку

M1

BTFSS PORTB, 3

GOTO M1; перехід до M1, кнопка натиснута, очікування відпускання кнопки

Якщо відпустили кнопку,

CALL GetTime;

Підпрограма виводу та збереження результатів вимірювання

CALL Wait250ms

GOTO MZ; зациклення програми

END

4. Принципова електрична схема


5. Специфікація

Позиція

Тип, номінал

Кол.

Примітка



шт.



Конденсатори



С1

25В - 10,0 мкФ

1


С2

SMD 1206 - 0,1 мкФ

1







Мікросхеми



DD1

РКІ HD44780

1


DD2

Годинник реального часу PCF 8583

1











Резистори



R1

1 кОм

1


R2

5,1 кОм

1


R3

5,1 кОм

1


R 4

1 кОм

1















Інші елементи



Z1

Кварцовий резонатор 32768 Гц

1


SB 3

Кнопки ПКН - 159

1


SW1.1

перемикач

1


SW1.2

перемикач

1


XC1

роз'єм

1


XC2

роз'єм

1






























6. Список літератури

  1. Яценків В.С. - Мікроконтролери MicroChip Практичне керуючи-ство (2002 рік).

  2. Майкл Предко. - Довідник з PIC - мікроконтролерів: Пер. з англ. - М.: ДМК Пресс, 2006. - 512с.: Іл. (Серія «Довідник»)

  3. Курс лекцій.

Додати в блог або на сайт

Цей текст може містити помилки.

Комунікації, зв'язок, цифрові прилади і радіоелектроніка | Курсова
78.5кб. | скачати


Схожі роботи:
Інформатика Пристрої введення і виведення Периферійні пристрої
Мікропроцесорні системи
Мікропроцесорні системи автоблокування
Мікропроцесорні засоби та системи
Комп ютерні та мікропроцесорні системи
Мікропроцесорні системи управління інформацією
Мікропроцесорні системи керування автотранспортного засобу та їх структура
Вбудовані мікропроцесорні системи на основі однокристальних мікро ЕОМ
Арифметичні пристрої
© Усі права захищені
написати до нас