Микропроцессорная техника. 2
Федеральное государственное бюджетное образовательное
учреждение высшего
«Кузбасский государственный технический университет
имени Т. Ф. Горбачева»
Кафедра электропривода и автоматизации
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе по дисциплине
«Микропроцессорная техника»
Вариант № 6
Выполнил:
ст. гр. ЭА-091
Луканов В.А.
Проверил:
Носков А.П.
Работа защищена с оценкой
________________________
Кемерово 2012
СОДЕРЖАНИЕ
- Техническое задание…………………………………………………………3
- Введение…………………………………………………………
………..3
- Основание для разработки……………………………………………….3
- Назначение разработки………………………………………………….
.4 - Требования к программе или программному изделию ..……………....4
- Требования к функциональным характеристикам……………..4
- Требования к условиям эксплуатации…………………………..5
- Требования к составу и параметрам технических средств….....5
1.5. Требования к ОМК………………………………………………………5
- Структурная схема…………………………………………………………...
8 - Принципиальные электрические схемы.........................
......................11 - Принципиальная электрическая схема привода X …………………..11
- Принципиальная электрическая схема привода Y ………………..…13
- Принципиальная электрическая схема привода Z ………………...….15
- Список литературы……………………………………………………
….…17 - Приложение1. Текст программы…………………………………………....
18
1. Техническое задание
1.1.Введение
- Основание для разработки
Основанием для разработки является техническое задание курсового проекта по дисциплине «МП техника» на тему: «Микропроцессорная система управления подвесным краном» Табл. 1.
Вариант 6. Кран-балка подвесная 3,2 т (Рис. 18, 19)
| |||||||
номинальная скорость двигателей (об/мин) |
номинальная мощность (кВт) |
Время разгона/торможения (с) | |||||
Привод X |
1000 |
2´0,32 |
не нормируется | ||||
Привод Y |
1500 |
0,2 |
5 | ||||
Привод Z |
750 |
2,3 |
3 | ||||
Габаритные размеры установки | |||||||
D (м) |
D2 (мм) |
D5 (мм) |
D10 (мм) |
D11 (мм) |
Длина цеха (м) | ||
12 |
1800 |
2290 |
530 |
570 |
60 | ||
Дополнительные требования к МПС: 1) управление Приводом Y должно осуществляться в симметричном режиме; 2) при температуре радиатора силового модуля более чем 65 ºС необходимо отключить установку и оповестить обслуживающий персонал о неисправности. | |||||||
Рис. 1. Чертеж установки (кран подвесной 3.2 т)
Рис. 2. Диаграммы скорости электроприводов (кран подвесной 3.2т)
- Назначение разработки
Автоматическое управление опорным краном для перемещения груза по цеху.
- Требования к разработке
- Режимы работы
а) Режим инициализации:
Режим, при котором определяется начальное положение рабочего органа в пространстве. Для идентификации положения используются сигналы с датчиков положения. Если положение отлично от нулевого то МПС переводит рабочий механизм в нулевое положение.
б) Аварийный режим:
В соответствие с техническим заданием, при превышении температуры радиатора силового модуля более чем на 65°С необходимо отключить установку и оповестить обслуживающий персонал о неисправности.
в) Автоматический режим:
В соответствие с заданным количеством циклов происходит отработка программы. Моменты включения и отключения электрооборудования определяется в соответствии с заданными временными отрезками, показанными на диаграмме скорости (рис. 2).
Рис. 3. Блок-схема работы
МПС в автоматическом режиме
- Требования к условиям эксплуатации
- Относительная влажность воздуха от 40-80 %.
- Атмосферное давление от 630-800 мм рт. ст.
- Диапазон частот вибрации от 1-10 Гц.
- Температура окружающей среды от 5-300 С
1.3.3. Требования
к составу и параметрам
- Устройство вывода (ЖКИ)
- Устройство ввода
- Однокристальный 8-разрядный микроконтроллер (ОМК)
- Датчики (положения, температуры)
- Исполнительные устройства:
А. Для привода X, Z – АДкз, контактное оборудование
Б. Для привода Y – ДПТ
- Преобразователи энергии:
А. Для привода У – ШИМ
Б. Для привода Z – Преобразователь частоты
- Концевые выключатели
- Реле
1.3.4. Требования к ОМК
1. Таймер: для реализации выполнения программного цикла в определенное время и задержки.
2. Модуль ШИМ: для преобразования длительности импульсов тока с целью реализации плавного пуска и остановки привода У, основанного на двигателе постоянного тока с независимым возбуждением.
3. 5 дискретных входов: 2 кнопки управления и трех концевых выключателей.
4. 13 дискретных выходов: 7 для ЖКИ, 2 для управления приводом Х, 2 для управления приводом У, 2 для управления приводом Z.
1.3.5. Выбор двигателей для установки и преобразователя частоты для привода Z
Табл. 2.
Технические данные двигателей для приводов X и Z
Приводы |
Тип электродвигателя |
Мощность, кВт |
η, % |
cos φ |
n0, об/мин | ||
X |
4А71А6У3 |
2 × 0,37 |
64,5 |
0,69 |
2 |
4 |
1000 |
Z |
4А112МВ8У3 |
3 |
79 |
0,74 |
1,8 |
6 |
750 |
Табл. 3.
Технические данные двигателя для привода Y
Тип электродвигателя |
Мощность, кВт |
U, В |
η, % |
n0, об/мин |
ПБ-12У2 |
0,23 |
220 |
70 |
1500 |
Табл. 4.
Преобразователь частоты для привода Z
Тип преобразователя |
Мощность |
Параметры |
ATV31HU30N4 |
3 кВт |
, |
Структурная схема
Рис. 4. Структурная схема МПС
Однокристальный микроконтроллер предназначен для автоматического управления приводами подвесного крана.
ЖКИ – жидкокристаллический индикатор предназначен для отображения информации о состоянии процесса
БВД – блок ввода данных предназначен для запуска автоматического управления опорным краном, остановки и для задания количества выполняемых циклов.
БД – блок датчиков предназначен для получения информации о положении приводов и состоянии температуры системы.
БП – блок питания необходим для питания ОМК.
С – блок сигнализации. Включается при превышении температуры над критической в преобразователе частоты.
ПА - пусковая аппаратура обеспечивающее управление приводом X.
ЛП – Логический преобразователь обеспечивающий управление плечами Н-моста в соответствии с заданной схемой управления.
Для исключения влияния на ОМК напряжения из силовых цепей, которое может привести к выводу из строя, или созданию помех при работе ОМК, применяется гальваническая развязка. В приводах X и Z функцию гальванической развязки выполняет блок реле (БР), а в приводе Y – блок гальванической развязки (БГР)
МС - мостовая схема обеспечивающая управление приводом Y.
ПЧ – преобразователь частоты для управления приводом Z.
X, Y, Z – соответствующие приводы.
3.1. Принципиальная схема управляющей части
Рис. 5. Принципиальная электрическая схема управляющей части
В соответствие с требованиями технического задания, для выполнения описанных функций, выбираем микроконтроллер PicMicro PIC16F877.
Клавиатура состоит из двух кнопок. Нажатием одной из них подвесная кран-балка запускается, а другой производит остановку. Три концевых датчика, каждый из которых соответствует приводам X, Y и Z соответственно, являются датчиками положения.
Семь выходов задействованы на LCD дисплей – четыре линии данных D4-D7, линию выбора операции R/W, линию выбора регистра RS и линию синхронизации Е. Шесть выходов предназначены для управления приводами и два для датчика температуры.
3.2. Принципиальная электрическая схема привода X
Рис. 6. Принципиальная схема для управления приводом X
Асинхронные двигателя привода Х, подключены к сети параллельно и вращаются в одном направлении, передвигая кран-балку вперед (контактор КМ 1.1 замкнут) либо назад (контактор КМ 2.1 замкнут).
Одновременное включение контакторов приведет к фазному короткому замыканию, во избежание этого, при замыкании одного контактора происходит автоматическое размыкание другого.
Управление контакторами осуществляется с помощью твердотельного реле по схеме приведенной на (рис. 6). RnX_F и RnX_B – сигналы, поступающие с микроконтроллера.
Для управления приводом Х выбираем контактор: GMC-12M
Параметры обмотки управления:
Напряжение 220В
Мощность 32ВА
Ток 145мА
Для управления обмоткой контактора привода Х выбираем симистор: BT134W-600E.
Номинальное напряжение в закрытом состоянии 600В.
Ток отпирания 10мА
Ток в открытом состоянии 1А.
Тип корпуса SOT-223(SC-73)
Для гальванической развязки используем драйвер: MOC-3063-M с максимальным напряжением 600В и током 1А.
Для ограничения тока диода драйвера выбираем резисторы R2.1=R2.2=1000 Ом (ряд Е24, точность 5%).
Принципиальная электрическая схема привода Y, в состав которой входит двигатель постоянного тока M3, представлена на (рис. 9). Управление транзисторами, размещенными на схеме (рис. 9) осуществляется в соответствии с диаграммой на (рис. 7)
Рис. 7. Диаграммы напряжений на транзисторах и двигателе
Для получения необходимых сигналов управления в схеме используется логический преобразователь, схема которого изображена на (рис.8), где D3.1- D3.3 – интегральные микросхемы К155ЛН1; D3.4, D3.5 - интегральные микросхемы К155ЛИ501
Рис.8 Логический преобразователь
Рис.9 Принципиальная схема привода Y
С логического преобразователя выходит четыре управляющих сигнала, поступающих на драйвер TLP250 (на рис.9, DA), с выхода которого сигнал идет на соответствующие транзисторы (VT1, VT2, VT3, VT4). Транзисторы вида: IGBT, модель: IRGS10B60KD, структура: n-канал c диодом, максимальное напряжение коллектор-эмиттер Uкэ = 600В, максимальный ток Iкэ = 22A , управляющее напряжение 6В, корпус TO220AB.
На входах драйверов (см. рис. 9) расположены резисторы R31= R33 = R35 = R37 = 510Ом (ряд Е24, точность 5%) на выходах драйверов - R32= R34 = R36 = R38 = 10Ом (ряд Е24, точность 5%).
В соответствии с параметрами асинхронного двигателя для привода Z, выбираем преобразователь частоты ATV31HU30N4, расчитанный на максимальный ток I=10.9A, мощность указанная на заводской табличке 3кВт, полная мощность 7.1кВА. Схема преобразователя изображена на (рис.10) где M4 – Привод Z; выводы L1, L2, L3 – выводы питания; Li1, Li2 - выводы ключей управления направлением вращения двигателя (рис 11) . Параметры настройки ПЧ приведены в таблице.
Рис.10 Схема подключение привода Z к преобразователю частоты ATV31HU30N4
Рис.11 Ключи управления
Сигналы от ОМК (UP – движение вверх, DOWN – движение вниз) подаются на ПЧ через реле: BS-102B-5 VDC. Напряжение управления 5В, сопротивление обмотки управления Rобм = 125Ом.
Ток коллектора:
Iк = =40 мА
Выбираем транзисторы VT5 и VT6 КТ396А-2, с коэффициентом усиления по току β = 40, напряжение насыщения Uб-э,нас. = 0,6В.
Iб = = = 1мА – ток базы.
Определяем значение сопротивлений R41, R42.
R41= R42= = = 4400 Ом.
Выбираем R41 = R42 = 4,3 кОм (ряд Е24, точность 5%)
Выбираем диоды VD1, VD2 марки Д223, обратное напряжение до 50В, ток до 50 мА.
4. Список литературы
- Носков А. П. Микропроцессорная техника: методические указания к выполнению курсовой работы. – Кемерово: КузГТУ, 2008. – 32 с.
- PIC16F87X. Однокристальные 8-ми разрядные FLACH CMOS микроконтроллеры. – М.: Микро – Чип, 2002.
- Справочник по электрическим машинам / Под общей редакцией И. П. Копылова. – М.: Энергоатомиздат, 1988.
- Altivar 31H. Преобразователи частоты для АД. Руководство по эксплуатации. – Telemecanique, 2004. – 17 с.
- Приложение 1
Текст программы
;================ Начало Main_LCD.ASM ================
;Файл: Main_LCD.ASM
; RB0 - цифровой вход, Stop Button
; RB1 - цифровой вход, Run Button
; RB4 - цифровой вход, InitX Button
; RB5 - цифровой вход, InitY Button
; RB6 - цифровой вход, InitZ Button
; RC0 - цифровой выход, привод X вперед
; RC1 - цифровой выход, привод Х назад
; RC3 -
; RC4 - датчик температуры
; RC2 - ШИМ, модуль CCP1
; RC5 - Пуск(1)/Стоп(0) привода Y
list p=16f877a, r=dec
include "p16f877a.inc"
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC
ERRORLEVEL -302, -305
;************ Блок описания переменных******
cblock 0x20
CntStep ; Счетчик периодов TMR2
WTemp ; Сохранение W
StaTemp ; Сохранение STATUS
CntPrim ; Счетчик
CntSec ; Счетчик
Cnt ; Счетчик общего назначения
FLAGS ; Флаги:
;FLAGS,0 - состояние кнопки RunBTN (1(0) - вкл(откл))
;FLAGS,1 - XDrv_F (1(0) - вкл(откл))
;FLAGS,2 - XDrv_B (1(0) - вкл(откл))
;FLAGS,3 - YDrv_L (1(0) - вкл(откл))
;FLAGS,4 - YDrv_R (1(0) - вкл(откл))
;FLAGS,5 - ZDrv_Up (1(0) - вкл(откл))
;FLAGS,6 - ZDrv_Dwn (1(0) - вкл(откл))
;FLAGS,7 - Raising/Falling
Cnt1 ;
Cnt2 ;
Cnt3 ;
Cnt4 ; Счетчики
Count ; Счетчик общего назначения
COUNTER
delay
temp_wr
temp_rd
ptr_pos
ptr_count
temp_1
temp_2
temp_3
cmd_byte
temperature
endc
;************ Блок описания констант********
NmbrStep EQU 98 ; Количество шагов изменения скважности
XTime EQU 90 ; Время включенного состояния привода X
YTime EQU 35-10 ; Время включенного состояния привода Y
; (учитывается время на разгон и торможение)
ZTime EQU 75 ; Время включенного состояния привода Z
Pause EQU 10 ; Пауза между спуском и подъемом захвата
;************ Блок преопределений***********
#define Stp PORTB,0 ; Стоп
#define Run PORTB,1 ; Пуск
#define InitX PORTB,4 ; Датчик начального положения привода Х
#define InitY PORTB,5 ; Датчик начального положения привода Y
#define InitZ PORTB,6 ; Датчик начального положения привода Z
#define RunX_F PORTC,0 ; Привод X - вперед
#define RunX_B PORTC,1 ; Привод X - назад
#define PWM PORTC,2 ; ШИМ
#define StpY PORTC,5 ; Пуск/Стоп Y
#define RunZ_Up PORTC,6 ; Привод Z - вверх
#define RunZ_Down PORTC,7 ; Привод Z - вниз
#define LCD_D4 PORTD, 0 ; LCD data bits
#define LCD_D5 PORTD, 1
#define LCD_D6 PORTD, 2
#define LCD_D7 PORTD, 3
#define LCD_D4_DIR TRISD, 0 ; LCD data bits
#define LCD_D5_DIR TRISD, 1
#define LCD_D6_DIR TRISD, 2
#define LCD_D7_DIR TRISD, 3
#define LCD_ON PORTD, 7 ; LCD ON
#define LCD_E PORTD, 6 ; LCD E clock
#define LCD_RW PORTD, 5 ; LCD read/write line
#define LCD_RS PORTD, 4 ; LCD register select line
#define LCD_ON_DIR TRISD, 7
#define LCD_E_DIR TRISD, 6
#define LCD_RW_DIR TRISD, 5
#define LCD_RS_DIR TRISD, 4
#define LCD_INS 0
#define LCD_DATA 1
;*********** Маленькие, но удобные макросы**************
Bank0 MACRO
bcf STATUS,RP0
ENDM
Bank1 MACRO
bsf STATUS,RP0
ENDM
rlcd MACRO MYREGISTER
IF MYREGISTER == 1
bsf STATUS, C
call LCDRead
ELSE
bcf STATUS, C
call LCDRead
ENDIF
ENDM
PUSH MACRO
movwf WTemp
swapf STATUS, 0
movf StaTemp
ENDM
POP MACRO
swapf StaTemp, 0
movwf STATUS
swapf WTemp, 1
swapf WTemp, 0
ENDM
;********* Конец блока макросов*************
org 0x0000
nop
clrf INTCON ; Все прерывания запрещаются
clrf PCLATH
goto START
;********** Начало обработчика прерываний **********
org 0x0004
PUSH
btfsc INTCON, INTF ; Прерывание от RB0?
goto IntB0
btfsc PIR1, TMR2IF ; Прерывание от TMR2?
goto IntTMR2
goto IntEnd ; В случае неопознанного прерывания
IntTMR2
bcf PIR1,TMR2IF ; Сбрасываем флаг прерывания
btfss CntStep,1
goto JMP1
movlw 0x01
btfss FLAGS, 7
goto $+6
btfsc FLAGS,4
addwf CCPR1L,1 ; Увеличивем скважность, если Raising YDrv_R
; 50%->100%
btfsc FLAGS,3
subwf CCPR1L,1 ; Увеличивем скважность, если Raising YDrv_L
; 50%-->0%
goto JMP1
btfsc FLAGS,4
subwf CCPR1L,1 ; Уменьшаем скважность, если Folling YDrv_R
; 100%-->50%
btfsc FLAGS,3
addwf CCPR1L,1 ; Уменьшаем скважность, если Folling YDrv_L
; 0%-->50%
JMP1
incf CntStep,1
movlw NmbrStep
subwf CntStep,0
btfss STATUS, Z ; Проверяем счетчик
goto IntEnd
Bank1
bcf PIE1,TMR2IE ; Запрещаем прерывание от TMR2
Bank0
clrf CCP1CON ; Отключаем CCP1
bcf T2CON,TMR2ON ; Отключаем TMR2
btfss FLAGS, 7
goto $+6
btfsc FLAGS,4
bsf PWM ; Открываем vs1 vs3, если Raising YDrv_R
btfsc FLAGS,3
bсf PWM ; Открываем vs2 vs4, если Raising YDrv_L
goto IntEnd
movlw b'00000000' ;Закрываем vs1-vs4, если Falling
movwf PORTC
goto IntEnd
IntB0
bcf INTCON, GIE ; Запрещаем все прерывания
bcf INTCON, INTF
call LCD_Write_Stop
clrf PORTC
goto $-1
goto IntEnd
IntEnd
POP
retfie
;********** Конец обработчика прерываний************
;***************** Блок подпрограмм ****************
LCD_Init
Bank1
bcf LCD_ON_DIR
Bank0
bsf LCD_ON ; Подключаем питание
call Delay30ms
clrf PORTA
Bank1 ;configure control lines
bcf LCD_E_DIR
bcf LCD_RW_DIR
bcf LCD_RS_DIR
Bank0
movlw 0xff ; Wait ~15ms @ 20 MHz
movwf COUNTER
movlw 0xFF
movwf delay
call DelayXCycles
decfsz COUNTER, F
goto $-3
; movlw b'00110000' ;#1 Send control sequence
movlw b'00100000' ;#1 Send control sequence
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
movlw 0xff ;Wait ~4ms @ 20 MHz
movwf COUNTER
movlw 0xFF
movwf delay
call DelayXCycles
decfsz COUNTER, F
goto $-3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;28---2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; movlw b'00110000' ;#2 Send control sequence
movlw b'00100000' ;#2 Send control sequence
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
movlw 0xFF ;Wait ~100us @ 20 MHz
movwf delay
call DelayXCycles
;28--08
; movlw b'0011000' ;#3 Send control sequence
movlw b'10000000'
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
;test delay
movlw 0xFF ;Wait ~100us @ 20 MHz
movwf delay
call DelayXCycles
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;0C--0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; movlw b'00100000' ;#4 set 4-bit
movlw b'00000000' ;#4 set 4-bit
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
;0x0C
movlw b'11000000' ;#4 set 4-bit
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
call Delay1ms
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;0x01
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; movlw b'00100000' ;#4 set 4-bit
movlw b'00000000' ;#4 set 4-bit
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
;0x01
movlw b'00010000' ;#4 set 4-bit
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call LongDelay ;10ms
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;0x02
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movlw b'00000000' ;#4 set 4-bit
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
;0x02
movlw b'00100000' ;#4 set 4-bit
movwf temp_wr
bcf STATUS,C
call LCDWriteNibble
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; rcall LCDBusy ;Busy?
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
call LongDelay ;2ms
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call LCDBusy ;Busy?
movlw b'00101000' ;#5 Function set
movwf temp_wr
call i_write
movlw b'00001101' ;#6 Display = ON
movwf temp_wr
call i_write
movlw b'00000001' ;#7 Display Clear
movwf temp_wr
call i_write
movlw b'00000110' ;#8 Entry Mode
movwf temp_wr
call i_write
movlw b'10000000' ;DDRAM addresss 0000
movwf temp_wr
call i_write
movlw b'00000010' ;return home
movwf temp_wr
call i_write
return
;*****************************
Delay1ms ;Approxiamtely at 4Mhz
banksel delay
clrf delay
Delay_1
nop
decfsz delay
goto Delay_1
return
Delay30ms ;more than 30 at 4 Mhz
movlw 0x28
movwf delay
Delay_2
nop
decfsz delay
goto Delay_2
return
LongDelay
movlw 0x09
movwf delay
Delay_3
nop
decfsz delay
goto Delay_3
return
DelayXCycles
decfsz delay, F
goto DelayXCycles
return
;*****************************
LCDWriteNibble
btfss STATUS, C ; Set the register select
bcf LCD_RS
btfsc STATUS, C
bsf LCD_RS
bcf LCD_RW ; Set write mode
Bank1
bcf LCD_D4_DIR ; Set data bits to outputs
bcf LCD_D5_DIR
bcf LCD_D6_DIR
bcf LCD_D7_DIR
Bank0
NOP ; Small delay
NOP
bsf LCD_E ; Setup to clock data
btfss temp_wr, 7 ; Set high nibble
bcf LCD_D7
btfsc temp_wr, 7
bsf LCD_D7
btfss temp_wr, 6
bcf LCD_D6
btfsc temp_wr, 6
bsf LCD_D6
btfss temp_wr, 5
bcf LCD_D5
btfsc temp_wr, 5
bsf LCD_D5
btfss temp_wr, 4
bcf LCD_D4
btfsc temp_wr, 4
bsf LCD_D4
NOP
NOP
bcf LCD_E ; Send the data
return
LCDWrite
call LCDWriteNibble
Bank0
swapf temp_wr, f
call LCDWriteNibble
Bank0
swapf temp_wr,f
return
LCDBusy
; Check BF
rlcd LCD_INS
btfsc temp_rd, 7
goto LCDBusy
return
LCDRead
Bank1
bsf LCD_D4_DIR ; Set data bits to inputs
bsf LCD_D5_DIR
bsf LCD_D6_DIR
bsf LCD_D7_DIR
Bank0
btfss STATUS, C ; Set the register select
bcf LCD_RS
btfsc STATUS, C
bsf LCD_RS
bsf LCD_RW ;Read = 1
NOP
NOP
bsf LCD_E ; Setup to clock data
NOP
NOP
NOP
NOP
btfss LCD_D7 ; Get high nibble
bcf temp_rd, 7
btfsc LCD_D7
bsf temp_rd, 7
btfss LCD_D6
bcf temp_rd, 6
btfsc LCD_D6
bsf temp_rd, 6
btfss LCD_D5
bcf temp_rd, 5
btfsc LCD_D5
bsf temp_rd, 5
btfss LCD_D4
bcf temp_rd, 4
btfsc LCD_D4
bsf temp_rd, 4
bcf LCD_E ; Finished reading the data
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
bsf LCD_E ; Setup to clock data
NOP
NOP
btfss LCD_D7 ; Get low nibble
bcf temp_rd, 3
btfsc LCD_D7
bsf temp_rd, 3
btfss LCD_D6
bcf temp_rd, 2
btfsc LCD_D6
bsf temp_rd, 2
btfss LCD_D5
bcf temp_rd, 1
btfsc LCD_D5
bsf temp_rd, 1
btfss LCD_D4
bcf temp_rd, 0
btfsc LCD_D4
bsf temp_rd, 0
bcf LCD_E ; Finished reading the data
FinRd
return
i_write ;write instruction
call LCDBusy
bcf STATUS, C
call LCDWrite
return
LCD_DO ;выполнить
movwf temp_wr ;передача данных
call LCDBusy
bsf STATUS, C
call LCDWrite
call Delay1ms
return
LCD_Write_Init ; выводит Init...
movlw b'10000000' ; переход в начало
movwf temp_wr ; первой строки
call i_write
movlw 0x49
call LCD_DO
movlw 0x6E
call LCD_DO
movlw 0x69
call LCD_DO
movlw 0x74
call LCD_DO
movlw 0x2E
call LCD_DO
movlw 0x2E
call LCD_DO
movlw 0x2E
call LCD_DO
return
LCD_Write_Init_finish ; выводит Init finish
movlw b'10000000' ; переход в начало
movwf temp_wr ; первой строки
call i_write
movlw 0x49
call LCD_DO
movlw 0x6E
call LCD_DO
movlw 0x69
call LCD_DO
movlw 0x74
call LCD_DO
movlw 0x20
call LCD_DO
movlw 0x66
call LCD_DO
movlw 0x69
call LCD_DO
movlw 0x6E
call LCD_DO
movlw 0x69
call LCD_DO
movlw 0x73
call LCD_DO
movlw 0x68
call LCD_DO
return
LCD_Write_finish ; выводит Finish!!!
movlw b'10000000' ; переход в начало
movwf temp_wr ; первой строки
call i_write
movlw 0x46
call LCD_DO
movlw 0x69
call LCD_DO
movlw 0x6E
call LCD_DO
movlw 0x69
call LCD_DO
movlw 0x73
call LCD_DO
movlw 0x68
call LCD_DO
movlw 0x21
call LCD_DO
movlw 0x21
call LCD_DO
movlw 0x21
call LCD_DO
return
LCD_Write_Run ; выводит Run
movlw b'10000000' ; переход в начало
movwf temp_wr ; первой строки
call i_write
movlw 0x52
call LCD_DO
movlw 0x75
call LCD_DO
movlw 0x6E
call LCD_DO
return
LCD_Write_Stop ; выводит STOP!!!
movlw b'10000000' ; переход в начало
movwf temp_wr ; первой строки
call i_write
movlw 0x53
call LCD_DO
movlw 0x54
call LCD_DO
movlw 0x4F
call LCD_DO
movlw 0x50
call LCD_DO
movlw 0x21

- Микропроцессорное устройство измерения уровня напряжения
- Микропроцессорное устройство измерения уровня напряжения
- Микропроцессорные системы
- Микропроцессорные средства систем управления
- Микропроцессорные средства систем управления
- Микропроцессорные устройства
- Микропроцессорные устройства
- Микропроцессорная защита асинхронного двигателя
- Микропроцессорная система
- Микропроцессорная система
- Микропроцессорная система управления
- Микропроцессорная система управления насосным агрегатом дожимной насосной станции
- Микропроцессорная техника
- Микропроцессорная техника