Автор работы: Пользователь скрыл имя, 20 Ноября 2013 в 19:08, курсовая работа
Задание. Разработать схему стабилизации температуры в заданном диапазоне: верхний предел не превышает 256, а нижний равен 0. Датчик температуры аналоговый. При превышении допусковой величины включается двигатель с вращением по часовой стрелке, а при уменьшении температуры против часовой. При равенстве с допуском на экране LCD высвечивается “NORMAL”, при превышении “HIGHER” и при уменьшении “LOWER”. Процесс непрерывный.
MOVWF R0L
CALL
A001
BSF STATUS,RP0
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF R5L
MOVF ADRESH,W
MOVWF R5H ; в R5H:R5L= результат АЦП
; clear LCD
MOVLW 0x01
CALL LC02
;Lcdout "TEMPERATURA: ", #an0 'formatted text for line 1
MOVLW 0x80 ;DDRAM
CALL LC02
MOVLW 'T'
CALL LC01
MOVLW 'e'
CALL LC01
MOVLW 'm'
CALL LC01
MOVLW 'p'
CALL LC01
MOVLW 'e'
CALL LC01
MOVLW 'r'
CALL LC01
MOVLW 'a'
CALL LC01
MOVLW 't'
CALL LC01
MOVLW 'u'
CALL LC01
MOVLW 'r'
CALL LC01
MOVLW 'a'
CALL LC01
MOVF R5L,W
MOVWF R2L
MOVF R5H,W
MOVWF R2H ; R2H:R2L=результат АЦП
CALL LC01
CALL LC21
GOTO SRAV
ASR:
MOVLW 0x20
CALL LC01
MOVLW 'C'
CALL LC01
; переход на 2 строку LCD
MOVLW 0xC0
CALL LC02
;Lcdout "NORMA, HOLODNO, JARKO", text for line 2
BTFSC TEMPERATURA,4
GOTO BLCD
BTFSC TEMPERATURA,2
GOTO MLCD
GOTO VLCD
BLCD:
MOVLW 'J'
CALL LC01
MOVLW 'A'
CALL LC01
MOVLW 'R'
CALL LC01
MOVLW 'K'
CALL LC01
MOVLW 'O'
CALL LC01
GOTO WAIT
MLCD:
MOVLW 'H'
CALL LC01
MOVLW 'O'
CALL LC01
MOVLW 'L'
CALL LC01
MOVLW 'O'
CALL LC01
MOVLW 'D'
CALL LC01
MOVLW 'N'
CALL LC01
MOVLW 'O'
CALL LC01
GOTO WAIT
VLCD:
MOVLW 'N'
CALL LC01
MOVLW 'O'
CALL LC01
MOVLW 'R'
CALL LC01
MOVLW 'M'
CALL LC01
MOVLW 'A'
CALL LC01
GOTO WAIT
; 29: WaitMs 1 'larger value should be used in real device
WAIT:
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 30: Goto loop 'loop forever
GOTO L0001 ; End of program
SRAV:
MOVLW 0x00 ; СРАВНИВАЕМ c DOP=26 0C
MOVWF DOPUSKH
MOVLW 0x68
MOVWF DOPUSKL ; DOP=01А=(26)
MOVF R5H,W ;SEND R5H (H) IN W
SUBWF DOPUSKH,1
BTFSC STATUS, Z
GOTO RAVNO ;если = старшие байты , то сравниваем младшие
BTFSC STATUS,C
GOTO MENSHE
GOTO BOLSHE
;сравниваем младшие байты
RAVNO
MOVF R5L,W ;SEND 0x2C (L) IN W
SUBWF DOPUSKL,1
BTFSC STATUS,Z
GOTO VIKL
BTFSC STATUS,C
GOTO MENSHE
GOTO BOLSHE
;выключаем двигатель - диоды не горят
VIKL:
MOVLW 0x00
MOVWF PORTC
MOVLW .0
MOVWF TEMPERATURA
MOVLW .0
CALL W001
MOVLW .0
MOVWF DVP
CALL PAUSE
DECFSZ SEC,F
GOTO SRAV
BOLSHE:
MOVLW 0x0F
MOVWF PORTC
MOVLW 0xFF
MOVWF TEMPERATURA
MOVLW 0x00 ;СРАВНЕНИЕ С 30
MOVWF SRH
MOVLW 0x78
MOVWF SRL
MOVF R5H, W ;SEND 0x2D (H) IN W
SUBWF SRH, 1
BTFSC STATUS, Z
GOTO OB_4
MENSHE:
MOVLW 0xF0
MOVWF PORTC
MOVLW 0x0F
MOVWF TEMPERATURA
MOVLW 0x00 ; СРАВНЕНИЕ С 10
MOVWF SRH
MOVLW 0x28
MOVWF SRL
MOVF R5H, W ;SEND 0x2D (H) IN W
SUBWF SRH, 1
BTFSC STATUS,Z
GOTO OB4
; вращение по часовой стрелке и против часовой
OB4:
MOVLW 0x0A
MOVWF SEC
GOTO PAUSE_1
OB_4:
MOVLW 0x0A
MOVWF SEC
GOTO PAUSE_2
PAUSE_1:
DECFSZ SEC, F
GOTO CW
CROG_1
GOTO ASR
PAUSE_2:
DECFSZ SEC, F
GOTO CCW
CRUG_2
GOTO ASR
CW:
BCF STATUS, RP0
MOVLW .1
MOVWF DVP
CALL PAUSE
MOVLW 0x20
MOVWF PORTD
CALL PAUSE
MOVLW 0x60
MOVWF PORTD
CALL PAUSE
MOVLW 0x40
MOVWF PORTD
CALL PAUSE
MOVLW 0xC0
MOVWF PORTD
CALL PAUSE
MOVLW 0x80
MOVWF PORTD
CALL PAUSE
MOVLW 0x90
MOVWF PORTD
CALL PAUSE
MOVLW 0x10
MOVWF PORTD
CALL PAUSE
MOVLW 0x30
MOVWF PORTD
CALL PAUSE
GOTO CRUG_1
CCW:
BCF STATUS, RP0
MOVLW .1
MOVWF DVP
CALL PAUSE
MOVLW 0x10
MOVWF PORTD
CALL PAUSE
MOVLW 0x90
MOVWF PORTD
CALL PAUSE
MOVLW 0x80
MOVWF PORTD
CALL PAUSE
MOVLW 0xC0
MOVWF PORTD
CALL PAUSE
MOVLW 0x40
MOVWF PORTD
CALL PAUSE
MOVLW 0x60
MOVWF PORTD
CALL PAUSE
MOVLW 0x20
MOVWF PORTD
CALL PAUSE
MOVLW 0x30
MOVWF PORTD
CALL PAUSE
GOTO CRUG_2
PAUSE:
DECFSZ DVP,F
GOTO PAUSE
RETURN
; Division Routine
D001:
MOVLW 0x10
MOVWF R3L
CLRF R2H
CLRF R2L
D002:
RLF R0H,F
RLF R2L,F
RLF R2H,F
MOVF R1L,W
SUBWF R2L,F
MOVF R1H,W
BTFSS STATUS,C
INCFSZ R1H,W
SUBWF R2H,F
BTFSC STATUS,C
GOTO D003
MOVF R1L,W
ADDWF R2L,F
MOVF R1H,W
BTFSC STATUS,C
INCFSZ R1H,W
ADDWF R2H,F
BCF STATUS,C
D003:
RLF R0L,F
RLF R0H,F
DECFSZ R3L,F
GOTO D002
MOVF R0L,W
RETURN
; Waitms Routine
W001:
MOVF R0L,W
BTFSC STATUS,Z
GOTO W002
CALL W003
DECF R0L,F
NOP
NOP
NOP
NOP
NOP
GOTO W001
W002:
MOVF R0H,W
BTFSC STATUS,Z
RETURN
CALL W003
DECF R0H,F
DECF R0L,F
GOTO W001
W003:
MOVLW 0x0C
MOVWF R2H
W004:
DECFSZ R2H,F
GOTO W004
NOP
NOP
MOVLW 0x12
MOVWF R1L
W005:
DECFSZ R1L,F
GOTO W006
CALL W007
CALL W007
NOP
NOP
RETURN
W006:
CALL W007
GOTO W005
W007:
MOVLW 0x0D
MOVWF R2L
W008:
DECFSZ R2L,F
GOTO W008
NOP
RETURN
; Waitus Routine - Byte Argument
X001:
MOVLW 0x0A
SUBWF R4L,F
BTFSS STATUS,C
RETURN
GOTO X002
X002:
MOVLW 0x06
SUBWF R4L,F
BTFSS STATUS,C
RETURN
GOTO X002
; Waitus Routine - Word Argument
Y001:
MOVLW 0x10
SUBWF R4L,F
CLRW
BTFSS STATUS,C
ADDLW 0x01
SUBWF R4H,F
BTFSS STATUS,C
RETURN
GOTO Y002
Y002:
MOVLW 0x0A
SUBWF R4L,F
CLRW
BTFSS STATUS,C
ADDLW 0x01
SUBWF R4H,F
BTFSS STATUS,C
RETURN
GOTO Y002
; Adc in Routine
A001:
RLF R0L,F
RLF R0L,F
RLF R0L,F
MOVLW 0x38
ANDWF R0L,F
MOVLW 0xC1
IORWF R0L,W
MOVWF ADCON0
MOVLW 0x0A
MOVWF R4L
CALL X001
BSF ADCON0,GO
A002:
BTFSC ADCON0,GO
GOTO A002
BCF PIR1,ADIF
BCF ADCON0,ADON
RETURN
; п/п посылки данных
LC01:
BSF PORTD,1 ; RS=1 - регистр данных
BCF PORTD,2 ; R/W=0 - запись
MOVWF PORTB
CALL LCX1
MOVLW 0x32
MOVWF R4L
CALL X001
RETURN
LCX1:
BSF PORTD,3 ; разрешение Е записи
NOP
BCF PORTD,3
NOP
RETURN
; п/п посылки команд
LC02:
BCF PORTD,1 ; RS=0 - регистр команд
BCF PORTD,2 ; R/W=0 - запись
MOVWF PORTB ;PORTB
CALL LCX1 ; строб-разрешение
MOVLW 0xD0
MOVWF R4L
MOVLW 0x07
MOVWF
R4H
CALL Y001
RETURN
; формирование адреса числа и сброс на LCD
LC21:
BSF R3H,7
MOVLW 0x00
MOVWF R1H ; R1H=68=(104)
MOVLW 0x68 ; W = 68=(104)
CALL LC22
CLRF
R1H
MOVLW 0x0A ; W=А=(10) R1H:R1L=0А=(10)
CALL LC22
MOVF R2L,W ; W=R2L=мл байт результата АЦП
GOTO LC23
LC22:
MOVWF R1L
MOVF R2H,W
MOVWF R0H
MOVF R2L,W
MOVWF R0L
CALL D001
MOVF R0L,W
BTFSS STATUS,Z
BCF R3H,7
BTFSC R3H,7
RETURN
LC23:
ADDLW 0x30 ; прибавление адреса числа 0
CALL LC01
RETURN
END
В процессе разработки курсовой работы получены следующие результаты:
- осуществлен выбор микроконтроллерного термодатчика DS на основе заданных технических условиях эксплуатации;
- разработана
структурная схема системы
- разработана
принципиальная электрическая
- разработаны программы управления датчиком давления, шаговым двигателем и LCD на языке Ассемблер.
Таким образом, спроектированная система стабилизации температуры полностью отвечает заданным требованиям и условиям технической эксплуатации, обладая при этом относительной дешевизной и простотой реализации.
1. Вальпа О. Полезные схемы с применением микроконтроллеров и ПЛИС(+СД).- М.: Изд.дом «Додэка-ХХ1», 2006. – 416 с.