Разработка устройства, формирующего пачки импульсов

Автор работы: Пользователь скрыл имя, 26 Апреля 2013 в 11:42, курсовая работа

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

В данной курсовой работе будет реализовано устройство, формирующее прямоугольные сигналы, которые будут формироваться после выхода из режима ожидания с помощью нажатия на кнопку. Так же после нажатия кнопки прерывания устройство должно будет формировать пачки импульсов с определенным шагом и временем формирования. Количество сформированных пачек импульсов будут поступать в память EEPROM и оставаться там. К устройству будет подключен 7-ми сегментный индикатор, который будет выводить в десятичной системе счисления количество сформированных пачек.

Содержание

ВВЕДЕНИЕ 3
1. ЗАДАНИЕ 4
2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 5
3. РЕЗУЛЬТАТЫ ПРОДЕЛАННОЙ РАБОТЫ 15
ЗАКЛЮЧЕНИЕ 18
СПИСОК ЛИТЕРАТУРЫ 19
ПРИЛОЖЕНИЕ 20

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

Kursovoy.docx

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

 

Рисунок 1 – Режим ожидания на Oscilloscope

 

Oscilloscope находиться в режиме ожидания, ждет нажатия клавиши. В моем случае клавиша RA3 на Microcontroller View. Все порты (PORTB,0; PORTA,3; PORTA,1; PORTA,2) находятся в режиме ожидания. PORTB,0 – отвечает за прерывание, который зависит от кнопки INT/RB0. PORTA,3 – отвечает за режим ожидания, который зависит от кнопки RA3. PORTA,1 и PORTA,2 находятся в режиме ожидания, как только будет нажата кнопка RA3, PORTA,1 будет показывать прямоугольные импульсы. Как только RA3 снова нажмут, PORTA,2 будет показывать пачки импульсов, вырисовывающиеся с шагом в моем случае шаг равен 4.

Рисунок 2 – Нажатие кнопки RA0

 

После нажатия RA3, устройство выходит из режима ожидания. На Microcontroller View видно, что RA3 включен. На PORTA,3 видно, что режим перешел из режима ожидания в режим активности. А PORTA,1 модулирует прямоугольные сигналы.

Рисунок 3 – Нажатие клавиши INT/RB0

 

После нажатия клавиши INT/RB0 на PORTA,2 стали модулироваться пачки импульсов с шагом в 4, первые 3 импульса были смодулированы.

 

Рисунок 4 – Считывание пачек сигналов

 

На Рисунке 4 показано считывание, количества импульсов в одной  пачке. Т.е. на рисунке 3 было показано 3 импульса, следующие 7 импульсов и так будет идти до 19 импульсов, с шагом в 4 импульса. Когда модуляция дойдет до 19-ти импульсов, то импульсы заново начнут модуляцию с 3 импульсов. После каждой модуляции импульса, количество импульсов записывается в EEPROM Memory Editor в 16-ой системе исчисления и отображается на 7-Segment LED Display Panel в виде десятичного числа.

 

ЗАКЛЮЧЕНИЕ

 

В данной курсовой работе была изучена  работа с PIC Simulator IDE. Так же были изучены команды микроконтроллера PIC, проанализировано формирование прямоугольных сигналов с помощью автоколебательного мультивибратора и устройства формирования сигналов тонального вызова. Был разобран метод сканирования прерываний. Организован вычисляемый переход с помощью goto. Так же была проделана работа с динамической индексацией с помощью 7-ми сегментного индикатора и реализована работа с EEPROM памятью.

 

 

 

СПИСОК ЛИТЕРАТУРЫ

 

  1. http://adm-lib.ru/books/6/Samouch_PIC.pdf
  2. http://kazus.ru/articles/421.html
  3. Шанаев О.Т. Система моделирования Electronic Workbench / на казахском и русском языках. – Алматы, 2003.
  4. Шанаев О.Т. Цифровые устройства и микропроцессоры. Методические указания к выполнению лабораторных работ. – Алматы: 2011. – 48 с.
  5. Шанаев У.Т. Цифровые устройства и микропроцессоры. Методические указания к выполнению курсовой работы. – Алматы: 2008. – 21 с.

 

 

 

ПРИЛОЖЕНИЕ

 

; Begin

R0L EQU 0xC

R0H EQU 0xD

R1L EQU 0xE

R1H EQU 0xF

R2L EQU 0x10

R2H EQU 0x11

R3L EQU 0x12

R3H EQU 0x13

R4L EQU 0x14

R4H EQU 0x15

R5L EQU 0x16

R5H EQU 0x17

W_TEMP EQU 0x4F

STATUS_TEMP EQU 0x4E

ORG 0x0000

BCF PCLATH,3

BCF PCLATH,4

GOTO L0002

ORG 0x0004

MOVWF W_TEMP

SWAPF STATUS,W

CLRF STATUS

MOVWF STATUS_TEMP

CALL L0003

SWAPF STATUS_TEMP,W

MOVWF STATUS

SWAPF W_TEMP,F

SWAPF W_TEMP,W

RETFIE

L0002:

; 1: Dim sec As Word 'длительность гребня для цикла

;       The address of 'sec' is 0x18

sec EQU 0x18

; 2: Dim pach As Byte 'количество в пачке для цикла

;       The address of 'pach' is 0x1A

pach EQU 0x1A

; 3: Dim n0 As Byte 'начальное количество

;       The address of 'n0' is 0x1B

n0 EQU 0x1B

; 4: Dim n1 As Byte 'конечное количество

;       The address of 'n1' is 0x1C

n1 EQU 0x1C

; 5: Dim s As Byte 'приращение

;       The address of 's' is 0x1D

s EQU 0x1D

; 6: Dim n As Byte 'количество в пачке текущеe

;       The address of 'n' is 0x1E

n EQU 0x1E

; 7: Dim bool As Byte

;       The address of 'bool' is 0x1F

bool EQU 0x1F

; 8: Dim j As Byte

;       The address of 'j' is 0x20

j EQU 0x20

; 9: INTCON.INTE = 1 'разрешает прерывание RB0/INT

BSF 0x0B,4

; 10: INTCON.GIE = 1 'включает все прерывания

BSF 0x0B,7

; 11: n0 = 5

MOVLW 0x05

MOVWF 0x1B

; 12: s = 4

MOVLW 0x04

MOVWF 0x1D

; 13: n1 = 21

MOVLW 0x15

MOVWF 0x1C

; 14: n = n0

MOVF 0x1B,W

MOVWF 0x1E

; 15: While PORTA.3 = 0

L0004:

BTFSC 0x05,3

GOTO L0005

; 16: Wend

GOTO L0004

L0005: MOVLW 0x1F

ANDWF STATUS,F

; 17: bool = 0 '-------------------------------

CLRF 0x1F

; 18: TRISB = %00000001

BSF STATUS,RP0

MOVLW 0x01

MOVWF 0x06

; 19: TRISA = %11101000 '---------------------------------

MOVLW 0xE8

MOVWF 0x05

BCF STATUS,RP0

; 20: m1:

L0001:

; 21: While bool = 0

L0006:

MOVF 0x1F,W

SUBLW 0x00

BTFSS STATUS,Z

GOTO L0007

; 22: PORTA.1 = 0

BCF 0x05,1

; 23: For sec = 1 To 2

MOVLW 0x01

MOVWF 0x18

CLRF 0x19

L0008:

MOVF 0x18,W

MOVWF R0L

MOVF 0x19,W

MOVWF R0H

CLRF R1H

MOVLW 0x02

CALL C003

BTFSS STATUS,Z

GOTO L0009

; 24: Next sec

MOVLW 0x01

ADDWF 0x18,F

MOVLW 0x00

BTFSC STATUS,C

ADDLW 0x01

BTFSC STATUS,C

GOTO L0009

ADDWF 0x19,F

BTFSS STATUS,C

GOTO L0008

L0009: MOVLW 0x1F

ANDWF STATUS,F

; 25: PORTA.1 = 1

BSF 0x05,1

; 26: For sec = 1 To 2

MOVLW 0x01

MOVWF 0x18

CLRF 0x19

L0010:

MOVF 0x18,W

MOVWF R0L

MOVF 0x19,W

MOVWF R0H

CLRF R1H

MOVLW 0x02

CALL C002

BTFSS STATUS,Z

GOTO L0011

; 27: Next sec

MOVLW 0x01

ADDWF 0x18,F

MOVLW 0x00

BTFSC STATUS,C

ADDLW 0x01

BTFSC STATUS,C

GOTO L0011

ADDWF 0x19,F

BTFSS STATUS,C

GOTO L0010

L0011: MOVLW 0x1F

ANDWF STATUS,F

; 28: Wend '------------------------------

GOTO L0006

L0007: MOVLW 0x1F

ANDWF STATUS,F

;-----------------------------------------*****************

; 29: While bool = 1

L0012:

MOVF 0x1F,W

SUBLW 0x01

BTFSS STATUS,Z

GOTO L0014

; 28: For pach = 1 To n

MOVLW 0x01

MOVWF 0x1A

L0014:

MOVF 0x1A,W

SUBWF 0x1E,W

BTFSS STATUS,C

GOTO L0016

; 29: PORTA.2 = 0

BCF 0x05,2

; 30: For sec = 1 To 1

MOVLW 0x01

MOVWF 0x18

CLRF 0x19

L0016:

MOVF 0x18,W

MOVWF R0L

MOVF 0x19,W

MOVWF R0H

CLRF R1H

MOVLW 0x01

CALL C002

BTFSS STATUS,Z

GOTO L0017

; 31: Next sec

MOVLW 0x01

ADDWF 0x18,F

MOVLW 0x00

BTFSC STATUS,C

ADDLW 0x01

BTFSC STATUS,C

GOTO L0017

ADDWF 0x19,F

BTFSS STATUS,C

GOTO L0016

L0017: MOVLW 0x1F

ANDWF STATUS,F

; 32: PORTA.2 = 1

BSF 0x05,2

; 33: For sec = 1 To 1

MOVLW 0x01

MOVWF 0x18

CLRF 0x19

L0018:

MOVF 0x18,W

MOVWF R0L

MOVF 0x19,W

MOVWF R0H

CLRF R1H

MOVLW 0x01

CALL C002

BTFSS STATUS,Z

GOTO L0019

; 34: Next sec

MOVLW 0x01

ADDWF 0x18,F

MOVLW 0x00

BTFSC STATUS,C

ADDLW 0x01

BTFSC STATUS,C

GOTO L0019

ADDWF 0x19,F

BTFSS STATUS,C

GOTO L0018

L0019: MOVLW 0x1F

ANDWF STATUS,F

; 35: Next pach

MOVLW 0x01

ADDWF 0x1A,F

BTFSS STATUS,C

GOTO L0014

L0015: MOVLW 0x1F

ANDWF STATUS,F

; 36: PORTA.2 = 0

BCF 0x05,2

; 37: For sec = 1 To 4

MOVLW 0x01

MOVWF 0x18

CLRF 0x19

L0020:

MOVF 0x18,W

MOVWF R0L

MOVF 0x19,W

MOVWF R0H

CLRF R1H

MOVLW 0x04

CALL C003

BTFSS STATUS,Z

GOTO L0020

; 38: Next sec

MOVLW 0x01

ADDWF 0x18,F

MOVLW 0x00

BTFSC STATUS,C

ADDLW 0x01

BTFSC STATUS,C

GOTO L0021

ADDWF 0x19,F

BTFSS STATUS,C

GOTO L0020

L0021: MOVLW 0x1F

ANDWF STATUS,F

; 39: n = n + s

MOVF 0x1E,W

ADDWF 0x1D,W

MOVWF 0x1E

; 40: Write 00, n

MOVLW 0x00

MOVWF EEADR

MOVF 0x1E,W

MOVWF EEDATA

BSF STATUS,RP0

BSF EECON1,2

MOVLW 0x55

MOVWF EECON2

MOVLW 0xAA

MOVWF EECON2

BSF EECON1,1

BCF EECON1,4

; 41: If n > n1 Then n = n0

BCF STATUS,RP0

MOVF 0x1E,W

SUBWF 0x1C,W

BTFSC STATUS,C

GOTO L0023

MOVF 0x1B,W

MOVWF 0x1E

L0023: MOVLW 0x1F

ANDWF STATUS,F

; 42: Wend

GOTO L0012

L0013: MOVLW 0x1F

ANDWF STATUS,F

; 43: Goto m1

GOTO L0001

; 44: End

L0024: GOTO L0024

; 45: On Interrupt

L0003:

; 46: If bool = 0 Then bool = 1 Else bool = 0

MOVF 0x1F,W

SUBLW 0x00

BTFSS STATUS,Z

GOTO L0021

MOVLW 0x01

MOVWF 0x1F

GOTO L0024

L0025: MOVLW 0x1F

ANDWF STATUS,F

CLRF 0x1F

L0026: MOVLW 0x1F

ANDWF STATUS,F

; End of program

; Comparison Routine

C001: MOVWF R1L

MOVLW 0x05

GOTO C007

C002: MOVWF R1L

MOVLW 0x02

GOTO C007

C003: MOVWF R1L

MOVLW 0x06

GOTO C007

; End of listing

END

 


Информация о работе Разработка устройства, формирующего пачки импульсов