.

Микропроцессорные устройства (курсовая)

Язык: русский
Формат: курсова
Тип документа: Word Doc
0 363
Скачать документ

Федеральное агентство по атомной энергии

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

 

Кафедра АИВС

 

 

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ

по дисциплине: «Микропроцессорные устройства».

 

 

Группа

Студент______________

(подпись)

Преподаватель________

(подпись)

 

 

 

 

 

 

 

 

Снежинск

2007

 

Аннотация

 

Цель работы: реализовать измеритель длительности нажатия клавиши.

В процессе работы над курсовым проектом требуется осуществить:

– изучение задания;

– разработка алгоритма;

– реализация на PIC-контроллере;

– оформление пояснительной записки к курсовому проекту

 

Содержание

 

  1. Постановка задачи
  2. Текст программы
  3. Граф-схема алгоритма
  4. Принципиальная электрическая схема
  5. Спецификация
  6. Список литературы

 

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

 

Измерить длительность нажатия кнопки. Измеренные значения сохранять в ОЗУ микроcхемы PCF8583. Измеренные значения вывести на ЖК – дисплей.

 

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

 

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    0xA0

CALL                  Transmit_Data

 

Внутрений адрес часов для записи

MOVLW    0x00; адрес для записи

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    0xA0

CALL                  Transmit_Data

 

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

MOVLW    0x02

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

 

Подпрограмма передачи байта по шине I2C

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,RP0

 

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    0x0E

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    0x02;

Установить курсор в начальное состояние.

CALL                  LCD_write

 

MOVLW    0x01;

Очистка ЖК экрана

CALL                  LCD_write

CALL                  Wait250ms

CALL                  Wait250ms

CALL                  Wait250ms

RETURN

 

Подпрограмма вывода времени

OutTime

BCF           LCDcfg,0

MOVLW    0x02; установить курсор в начальное состояние.

CALL                  LCD_write

 

CALL                  Read_I2C

SWAPF      DATA_I2C,W

CALL                  NumOut

 

MOVF                 DATA_I2C,W

CALL                  NumOut

CALL                  Save_time_I2C; сохраняем результат измерений в ОЗУ

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_I2C; сохраняем результат измерений в ОЗУ

PCF 8583

CALL                  Read_Saved_I2C; считываем результат измерений из ОЗУ

PCF 8583

SWAPF      DATA_I2C,W

CALL                  NumOut; выводим на ЖК экран результат измерений

MOVF                 DATA_I2C,W

CALL                  NumOut; выводим на ЖК экран результат измерений

RETURN

 

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

START

CLRF                  PORTB

CLRF                  PORTA

BCF           STATUS,RP0

 

Настройка портов

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

 

  1. Принципиальная электрическая схема

 

Масштаб
Масса
Лит
Измеритель длительности нажатия кнопки. Принципи-альня эл. схема.
Дата
Подлись
№ докум.
Лист
Изм.
Лист
Листов

 

 

  1. Спецификация

 

ПозицияТип, номиналКол.Примечание
шт.
 Конденсаторы  
С125В – 10,0мкФ1 
С2SMD1206 – 0,1мкФ1 
    
 Микросхемы  
DD1ЖКИ HD447801 
DD2Часы реального времени PCF 85831 
    
    
 Резисторы  
R11кОм1 
R25,1кОм1 
R35,1кОм1 
R41кОм1 
    
    
    
 Прочие элементы  
Z1Кварцевый резонатор 32768Гц1 
SB3Кнопки ПКн – 1591 
SW1.1переключатель1 
SW1.2переключатель1 
XC1разъем1 
XC2разъем1 
    
    
    
    
    
    
    

 

Масса
Масштаб
Лит
Лист
Листов
СГФТА

  1. Список литературы

 

 

  • Яценков В.С. – Микроконтроллеры MicroChip Практическое руковод-ство (2002 год).
  • Майкл Предко. – Справочник по PIC – микроконтроллерам: Пер. с англ. – М.: ДМК Пресс, 2006. – 512с.: ил. (Серия «Справочник»)
  • Курс лекций.

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение
    Заказать реферат
    UkrReferat.com. Всі права захищені. 2000-2019