Микропроцессорная техника

Автор работы: Пользователь скрыл имя, 04 Ноября 2012 в 15:50, курсовая работа

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

Дополнительные требования к МПС: 1) управление Приводом Y должно осуществляться в симметричном режиме; 2) при температуре радиатора силового модуля более чем 65 ºС необходимо отключить установку и оповестить обслуживающий персонал о неисправности.

Содержание работы

Техническое задание…………………………………………………………3
Введение…………………………………………………………………..3
Основание для разработки……………………………………………….3
Назначение разработки…………………………………………………..4
Требования к программе или программному изделию ..……………....4
Требования к функциональным характеристикам……………..4
Требования к условиям эксплуатации…………………………..5
Требования к составу и параметрам технических средств….....5
1.5. Требования к ОМК………………………………………………………5
Структурная схема…………………………………………………………...8
Принципиальные электрические схемы...............................................11
Принципиальная электрическая схема привода X …………………..11
Принципиальная электрическая схема привода Y ………………..…13
Принципиальная электрическая схема привода Z ………………...….15
Список литературы……………………………………………………….…17
Приложение1. Текст программы…………………………………………....18

Содержимое работы - 1 файл

Луканов.doc

— 673.50 Кб (Скачать файл)

call   LCD_DO 

movlw  0x21

call   LCD_DO 

movlw  0x21

call   LCD_DO

return 

 

LCD_Write_Danger    ; выводит DANDER!!!

movlw  b'10000000'   ; переход в начало

movwf  temp_wr   ; первой строки

call   i_write

movlw  0x44

call   LCD_DO  

movlw  0x41

call   LCD_DO 

movlw  0x4E

call   LCD_DO 

movlw  0x47

call   LCD_DO

movlw  0x45

call   LCD_DO  

movlw  0x52

call   LCD_DO 

movlw  0x21

call   LCD_DO 

movlw  0x21

call   LCD_DO 

movlw  0x21

call   LCD_DO

return 

 

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

 

 

 

 

 

 


BigDelay_1c_N    ;Задержка на регулируемое время

 

movwf  Cnt4

Loop4

movlw  0x04

movwf  Cnt3

Loop3

movlw  0xFF

movwf  Cnt2

Loop2

movlw  0xF4

movwf  Cnt1

Loop1     

nop

decfsz  Cnt1,1

goto  Loop1

decfsz  Cnt2,1

goto  Loop2

decfsz  Cnt3,1

goto  Loop3

decfsz  Cnt4,1

goto  Loop4,1

return

 

InitDrv     ; Инициализация приводов

 

Bank1

movlw  b'00011000'

movwf  TRISC

 

Bank0

movlw  b'00000010'  ; Включаем контактор "Х - Назад"

movwf  PORTC

btfsc  InitX

goto  $-1

 

movlw  b'00100000'  ; Включаем ключи "Y - влево"    

movwf  PORTC

 

btfsc  InitY

goto  $-1

clrf  PORTC

 

movlw  b'10000000'  ; Включаем контактор "Z - вниз" 

movwf  PORTC

btfsc  InitZ

goto  $-1

clrf  PORTC

 

 

 

 

 

 

 


Bank1

movlw  b'11011011'

movwf  TRISC

Bank0

return

 

XDrv_F     ; Привод X вперед 

Bank1

movlw  b'11011100'

movwf  TRISC

Bank0

 

bsf  FLAGS, 1   

movlw  b'00000001'  ; Включаем контактор "Вперед"

movwf  PORTC

 

movlw  XTime

call  BigDelay_1c_N

 

clrf  PORTC

bcf  FLAGS, 1   

Bank1

movlw  b'11011011'

movwf  TRISC

Bank0

return        

 

XDrv_B     ; Привод X назад

Bank1

movlw  b'11011100'

movwf  TRISC

Bank0

bsf  FLAGS, 2   

movlw  b'00000010'  ; Включаем контактор "Назад"

movwf  PORTC

 

movlw  XTime

call  BigDelay_1c_N

 

clrf  PORTC 

bcf  FLAGS, 2   

Bank1

movlw  b'11011011'

movwf  TRISC

Bank0

return

 

YDrv_L

; Привод Y влево

Bank1        

movlw  b'11011011'     

movwf  TRISC      

 

 

 

 


Bank0

bsf  FLAGS, 3       

clrf  PORTC

call  Raising

movlw  b'00100000'

movwf  PORTC

btfsc  T2CON, TMR2ON

goto  $-1

 

movlw  YTime

movwf  Count

movlw  .1

call  BigDelay_1c_N

call  CnpTemp

decfsz  Count,f

goto  $-4

 

call  Falling

btfsc  T2CON, TMR2ON

goto  $-1

movlw  b'11011111'

movwf  TRISC

clrf  PORTC

bcf  FLAGS, 3   

 

return

 

YDrv_R     ; Привод Y вправо

 

Bank1        

movlw  b'11011011'     

movwf  TRISC      

 

Bank0

bsf  FLAGS, 4   

clrf  PORTC

call  Raising

movlw  b'00100100'

movwf  PORTC

btfsc  T2CON, TMR2ON

goto  $-1

 

movlw  YTime

movwf  Count

movlw  .1

call  BigDelay_1c_N

call  CnpTemp

decfsz  Count,f

goto  $-4

 

 

 

 

 

 

 


call  Falling

btfsc  T2CON, TMR2ON

goto  $-1

movlw  b'11011111'

movwf  TRISC

clrf  PORTC 

bcf  FLAGS, 4 

 

return

 

ZDrv_Up     ; Привод Z вверх

Bank1

movlw  b'00011111'

movwf  TRISC

 

Bank0

bsf  FLAGS, 5   

movlw  b'01000000'

movwf  PORTC

 

movlw  ZTime

call  BigDelay_1c_N

 

clrf  PORTC

bcf  FLAGS, 5   

 

Bank1

movlw  b'11011111'

movwf  TRISC

Bank0

 

return

 

ZDrv_Dwn     ; Привод Z вниз

Bank1

movlw  b'00011111'

movwf  TRISC

 

Bank0

bsf  FLAGS, 6   

movlw  b'10000000'

movwf  PORTC

 

movlw  ZTime

call  BigDelay_1c_N

 

clrf  PORTC

bcf  FLAGS, 6   

Bank1

movlw  b'11011111'

movwf  TRISC

 

 

 

 

 


Bank0

return

 

Raising

 

Bank1

movlw  0xC5

movwf  PR2   ; Загрузка в TMR2 периода ШИМ

 

Bank0

bsf  FLAGS,7  ; Признак фронта

movlw  b'10000000'

movwf  CCPR1L

 

movlw  b'01111101'

movwf  T2CON ; Включаем TMR2, коэффициент предделителя 1:4,

; коэффициент выходного  делителя 1:16

movlw  b'00001100'

movwf  CCP1CON ; Настраиваем модуль CCP1 на режим ШИМ

 

movlw  b'11010000'

movwf  INTCON ; Настраиваем прерывания: от периферийных мод.

; и RB0

clrf  CntStep ; Обнуляем счетчик

 

Bank1

movlw  b'00000010'

movwf  PIE1  ; Разрешаем прерывание от TMR2

Bank0

return

 

Falling

Bank1

movlw  0xC5

movwf  PR2   ; Загрузка в TMR2 периода ШИМ

 

Bank0

bcf  FLAGS,7  ; Признак среза

movlw  b'11111111'

btfsc  FLAGS,4

movwf  CCPR1L

movlw  b'00000000'

btfsc  FLAGS,3

movwf  CCPR1L

 

movlw  b'01111101'

movwf  T2CON ; Включаем TMR2, коэффициент предделителя 1:4,

; коэффициент выходного  делителя 1:16

movlw  b'00001100'

movwf  CCP1CON ; Настраиваем модуль CCP1 на режим ШИМ

 

 

 

 

 

 


movlw  b'11010000'

movwf  INTCON ; Настраиваем прерывания: от периферийных мо-      ; дулей и RB0

clrf  CntStep ; Обнуляем счетчик

 

Bank1

movlw  b'00000010'

movwf  PIE1  ; Разрешаем прерывание от TMR2

Bank0

return

 

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

 

ssprw      ;check for idle SSP module

 

banksel  SSPSTAT

 

btfsc  SSPSTAT,R_W

goto  $-1

return

 

CnpTemp

 

banksel TRISC    ;initialize MSSP module

bsf  TRISC,3

bsf  TRISC,4

clrf  TRISB

 

movlw  B'00101000'

banksel SSPCON

movwf  SSPCON

banksel SSPSTAT

bsf  SSPSTAT,SMP

movlw  .9

movwf  SSPADD

 

get_temp

banksel cmd_byte

movlw  0x01    ;config register command byte

movwf  cmd_byte

 

temp_now

banksel SSPCON2   ;write to TC74

bsf  SSPCON2,SEN

btfsc  SSPCON2,SEN

goto  $-1 

movlw  B'10011010'   ;send TC74 ADDRESS (write)

banksel SSPBUF 

movwf  SSPBUF

call  ssprw

banksel SSPCON2

btfsc  SSPCON2,ACKSTAT ;ack?

 

 

 

 


goto  $-1

banksel cmd_byte

movf  cmd_byte,w   ;send COMMAND byte (config)

banksel SSPBUF

movwf  SSPBUF

call  ssprw

banksel SSPCON2

btfsc  SSPCON2,ACKSTAT ;ack?

goto  $-1

 

bsf  SSPCON2,RSEN  ;send repeated start

btfsc  SSPCON2,RSEN

goto  $-1

movlw  B'10011011'   ;send TC74 ADDRESS (read)

banksel SSPBUF

movwf  SSPBUF

call  ssprw    ;module idle?

banksel SSPCON2

btfsc  SSPCON2,ACKSTAT ;ack?

goto  $-1

 

bsf  SSPCON2,RCEN  ;enable receive mode

btfsc  SSPCON2,RCEN

goto  $-1

 

banksel SSPBUF   ;retrieve config reg or temp reg

movf  SSPBUF,w

 

banksel SSPCON2   ;send NOT-ACK

bsf  SSPCON2,ACKDT

bsf  SSPCON2,ACKEN

btfsc  SSPCON2,ACKEN

goto  $-1

 

bsf  SSPCON2,PEN  ;stop

btfsc  SSPCON2,PEN

goto  $-1

 

banksel cmd_byte   ;config command OR temp command

btfss  cmd_byte,0

goto  convert_temp   ;get temperature ready for display

 

andlw  0x40  

sublw  0x40

btfss  STATUS,Z   ;is temp ready ??

goto  get_temp   ;NO, try again

movlw  0x00    ;YES, send temp command

banksel cmd_byte   ;send temp register command

movwf  cmd_byte

goto  temp_now

 

 

 

 

 

 


convert_temp

 

movwf  temperature

movlw  .65

subwf  temperature, f

btfss  STATUS,C

call  Instruction

 

return

 

Instruction

bcf  INTCON, GIE  ; Запрещаем все прерывания

call  LCD_Write_Danger

clrf  PORTC

goto  $-1

 

return

 

;************* Конец блока подпрограмм  *************

 

START

 

;************** Подготовака к работе ***************

 

 

Bank1

clrf  OPTION_REG

movlw  b'10010000'

movwf  INTCON   ; Разрешаем прерывания от RB0   

movlw  0xFF

movwf  TRISA 

movwf  TRISB

movwf  TRISD    ; порты A, B, D на входы

movlw  b'11011011'

movwf  TRISC

Bank0

 

call  LCD_Init   ; инициализация ЖКИ

 

call  LCD_Write_Init  ; вывод 'Init'

call  InitDrv    ; инициализация приводов

call  LCD_Write_Init_finish ; вывод 'Init finish'

 

 

 

 

 

 

 

 

 

 

 

 

 


;****************** Рабочий цикл *******************

 

 

Begin

btfsс  PORTB,Run

goto  Begin    ; Ожидание нажатия кнопки пуск

call  LCD_Write_Run  ; Вывод на ЖКИ 'Run'

 

call  ZDrv_Up

call  YDrv_R

call  XDrv_F

call  ZDrv_Dwn

movlw  .10

call  BigDelay_1c_N

call  ZDrv_Up

call  XDrv_B

call  YDrv_L 

call  ZDrv_Dwn

 

call  LCD_Write_finish  ; Вывод на ЖКИ 'Finish!!!'

 

End

 

;********************** Конец **********************


Информация о работе Микропроцессорная техника