реклама на сайте
подробности

 
 
> PIC16f628A и ЖК SC1602BULT-SH-HS-G, помогите разобраться
Anty
сообщение Apr 28 2008, 14:58
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



доброго времени суток! может кто-нибудь работал со строковыми ЖКИ. Интересует ЖК SC1602BULT-SH-HS-G , как его соединить с PICом. А вообще интересует написание проги для вывода инфы на дисплей. Немного не понимаю, как это делается. Может кто-нибудь пояснит. Или может у кого есть пример программы. Вообще интересует прога на ассемблере, но для уяснения сути дела можно и на любом другом.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Okor
сообщение Apr 29 2008, 04:27
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 29-01-08
Пользователь №: 34 534



Добрый день.
Тут кусок моей программульки для ПИК18. На таймере TMR2 выполнены регламентируемые задержки, т.к. я без проверки загоняю данные в LCD. Пробовал с проверкой - особого выигрыша во времени нет.

С уважением, ОК


; - RD4-RD7 - выходы передачи данных на LCD в четырехразрядном режиме
; - RD3 - выход выбора LCD
; - RD2 - выход управления записью инструкций в LCD
; - RD1 - выход управления записью адреса в LCD


;************************************************************************
; Вывод верхней строки на экран из памяти по адресам 0x0060**
;************************************************************************
PrintStringUP:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x60
movwf TBLPTRH
movlw 0x80
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_UP:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_UP
return

;************************************************************************
; Вывод верхней строки на экран из памяти по адресам 0x0061**
;************************************************************************
PrintStringUP_1:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x61
movwf TBLPTRH
movlw 0x80
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_UP_1:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_UP_1
return

;************************************************************************
; Вывод нижней строки на экран из памяти по адресам 0x0060**
;************************************************************************
PrintStringDOWN:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x60
movwf TBLPTRH
movlw 0xc0
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_DOWN:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_DOWN
return

;************************************************************************
; Вывод нижней строки на экран из памяти по адресам 0x0061**
;************************************************************************
PrintStringDOWN_1:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x61
movwf TBLPTRH
movlw 0xc0
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_DOWN_1:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_DOWN_1
return

;************************************************************************
; Инициализация LCD в четырехзначном режиме. Здесь же подпрограммы управления LCD.
;************************************************************************
LCDinit:
movlw 0xff
call TimeDelayTMR2
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x30
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x30
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x30
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x20
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

movlw 0x28
call LCD_Command

movlw 0x0d
call LCD_Command

; Подпрограмма очистки дисплея
LCD_Clear:
movlw 0x01
call LCD_Command
movlw 0xff
call TimeDelayTMR2

movlw 0x06
call LCD_Command

movlw 0x00
call PrintStringUP
movlw 0x10
call PrintStringDOWN

return

; Подпрограмма отправки команды
LCD_Command:
bcf PORTD,1
bcf PORTD,2
movwf Value
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
swapf Value,W
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
movlw 0x02
call TimeDelayTMR2
return

; Подпрограмма вывода символа по адресу знакогенератора
LCD_Out:
bcf PORTD,1
bsf PORTD,2
movwf Value
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
swapf Value,W
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
movlw 0x02
call TimeDelayTMR2
return

; Подпрограмма загрузки четырехзначного канала
Out_Nibble:
movwf LCD_Data
bcf PORTD, 4
btfsc LCD_Data, 4
bsf PORTD, 4
bcf PORTD, 5
btfsc LCD_Data, 5
bsf PORTD, 5
bcf PORTD, 6
btfsc LCD_Data, 6
bsf PORTD, 6
bcf PORTD, 7
btfsc LCD_Data, 7
bsf PORTD, 7
return
Go to the top of the page
 
+Quote Post
Anty
сообщение Apr 29 2008, 17:43
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



спасибо за помощь, вроде начинаю понимать. А еще такой вопрос назрел: для вывода информации я просто задаю положение курсора на экране и вывожу нужный символ. Как я понял, можно указывать любую позицию из существующих. Так? И еще, там нет никаких приколов типа выбор кристалла или т.п. ?
Go to the top of the page
 
+Quote Post
dac
сообщение May 1 2008, 11:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(Anty @ Apr 29 2008, 21:43) *
И еще, там нет никаких приколов типа выбор кристалла или т.п. ?

Там адресация нелинейная, даташит на HD44780. Или документацию на МЭЛТовские ЖКИ, там тоже, но по русски
Go to the top of the page
 
+Quote Post
Anty
сообщение May 5 2008, 12:49
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Народ, помоги, пожалуйста. Написал прогу по примерам, которые вы мне оставили. вроде все правильно сделал. Пытаюсь проверить в proteus.(Проверять на реальном экране пока считаю бесполезным, пусть бы в протеусе заработала... ) Экран либо просто светиться (ничего не выводит), либо выводит какую то непонятную штуку, причем только в верхней строке, при установленном двухстрочном режиме.
Короче, приведу прогу написанную. Посмотрите, плиз, может найдете какую неточность.

PORTA 1 - RS
PORTA 2 - RW
PORTA 3 - E

PORTB 0..7 - DB0...7

LIST P=16F876
#include <p16f876.inc>

;----------------------------------------------------------------------------------------------------------------------------
; Секция заголовка
;

;биты регистра PORTA
RS EQU 01h
RW EQU 02h
E EQU 03h

; ячейки ОЗУ
TEMP EQU 21h
R0 EQU 20h


; Рабочая секция
;
; начало исполняемого кода


;------------ОБЩАЯ ИНИЦИАЛИЗВЦИЯ----------------
MAIN
CLRF PORTA
BSF STATUS,RP0 ;Выбор банка 1
MOVLW 0x00
MOVWF TRISA
BCF STATUS,RP0 ;Выбор банка 0
;---------------------
;инициализация PORTB
CLRF PORTB
BSF STATUS,RP0 ;Выбор банка 1
MOVLW 0x00 ; <7:0> - выходы
MOVWF TRISB
;BSF OPTION_REG,7 ; RBPU ; включили подтягтвающие регистры

BCF STATUS,RP0 ;Выбор банка 0
;---------------------
;инициализация PORTB
CLRF PORTC
BSF STATUS,RP0 ;Выбор банка 1
MOVLW 0x00 ; <7:0> - выходы
MOVWF TRISC
;BSF OPTION_REG,7 ; RBPU ; включили подтягтвающие регистры

BCF STATUS,RP0 ;Выбор банка 0

;----------------------------------------------


;==============ИНИЦИАЛИЗАЦИЯ LCD===========================

CLRW
MOVWF PORTA
BCF PORTA,RS
BCF PORTA,RW
BCF PORTA,E
MOVLW 3Fh
CALL DELAY1 ;задержка на 15мс



MOVLW 30h
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
MOVLW 11h
CALL DELAY1 ;задержка на 4мс

BSF PORTA,E
BCF PORTA,E ;_-_

CALL delay_100mks
BSF PORTA,E
BCF PORTA,E ;_-_

MOVLW 20h
CALL WRC

MOVLW 28h ;шина-4бит,2строки, 5х8 пикселей
CALL WRC

MOVLW 0Ch ;отображение- вкл без курсора
CALL WRC

MOVLW 06h ;
CALL WRC

MOVLW 01h ;очистить дисплей
CALL WRC
MOVLW 03h
CALL DELAY1 ;вместо опроса BUSY

CLRW
MOVWF PORTB
;Загрузка строки
MOVLW h'80'
CALL WRC
movlw h'65' ;"П"
call WRD ;
movlw h'84' ;"р"
call WRD ;
movlw h'b8' ;"и"
call WRD ;
movlw h'b3' ;в
call WRD ;
movlw h'65' ;"е"
call WRD ;
movlw h'bf' ;"т"
call WRD ;
movlw h'2c' ;","
call WRD ;
movlw h'20' ;Пробел
call WRD ;
;

;-----------ВТОРАЯ СТРОКА-----------------------------------------------------------------------
movlw 0xC0 ;
call WRC ;
movlw h'43' ;"C"
call WRD ;
movlw h'79' ;"у"
call WRD ;
movlw h'70' ;"р"
call WRD ;
movlw h'b4' ;"г"
call WRD ;
movlw h'79' ;"у"
call WRD ;
movlw h'bf' ;"т"
call WRD ;
movlw h'21' ;"!"
call WRD


CALL DELAY2
CALL DELAY2
CALL DELAY2
WAIT
BSF PORTA,0
GOTO WAIT

;======================================================================
; ПОДПРОГРАММЫ
;======================================================================

;===Запись кода команд LCD=========
WRC
BCF PORTA,RS
CLRF TEMP
BCF PORTA,RW
MOVWF TEMP
ANDLW 0F0h
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
SWAPF TEMP,0
ANDLW 0F0h
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
MOVLW 4h
CALL DELAY1 ;вместо опроса BUSY
RETURN

;===Запись кода данных LCD=========
WRD

BSF PORTA,RS
CLRF TEMP
BCF PORTA,RW
MOVWF TEMP
ANDLW 0F0h
;IORLW 02h ;оставить RS=1
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
SWAPF TEMP,0
ANDLW 0F0h
;IORLW 02h ;оставить RS=1
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
MOVLW 4h
CALL DELAY1 ;вместо опроса BUSY
BCF PORTA,RS

RETURN


DELAY1 ;задержка на ... мс
MOVWF TEMP
DLOOP
MOVLW 0F0h
MOVWF R0
DECFSZ R0
GOTO $-1
DECFSZ TEMP
GOTO DLOOP
RETURN

DELAY2 ;задержка на 0.2сек
MOVLW 0FFh ;задержка
MOVWF TEMP
DLOOP2
MOVLW 0FFh
MOVWF R0

DECFSZ R0
GOTO $-1
DECFSZ TEMP
GOTO DLOOP2
RETURN

delay_100mks
movlw 0x30
movwf TEMP
nop
nop
decfsz TEMP, f
goto $-1
nop
return

delay_8mks
nop
nop
nop
nop
return


END

Сообщение отредактировал Anty - May 5 2008, 12:52
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Anty   PIC16f628A и ЖК SC1602BULT-SH-HS-G   Apr 28 2008, 14:58
- - *antzol*   С каким контроллером индикатор я не нашел, но сутя...   Apr 28 2008, 15:53
- - Okor   А Вы не забыли в четырехпроводном режиме подвесить...   May 5 2008, 19:30
|- - Anty   Цитата(Okor @ May 5 2008, 22:30) А Вы не ...   May 6 2008, 08:38
|- - Vanizma   Цитата(Anty @ May 6 2008, 12:38) Ну вот к...   May 6 2008, 13:35
- - Vanizma   Кстати, в proteus'e можно поменять кодировку Ж...   May 6 2008, 15:30
|- - Anty   Спасибо за ответы. Накопал много интересного и пол...   May 7 2008, 08:31
- - SYurev   Скажите, модель lcdalpha.dll поддерживает другие, ...   Jul 19 2009, 03:42
|- - Сергей Борщ   Цитата(SYurev @ Jul 19 2009, 06:42) К при...   Jul 27 2009, 05:50
|- - SYurev   Цитата(Сергей Борщ @ Jul 27 2009, 11:50) ...   Jul 28 2009, 07:46
|- - Сергей Борщ   Цитата(SYurev @ Jul 28 2009, 10:46) В как...   Jul 28 2009, 10:31
||- - SYurev   Цитата(Сергей Борщ @ Jul 28 2009, 16:31) ...   Jul 28 2009, 11:57
||- - Сергей Борщ   Цитата(SYurev @ Jul 28 2009, 14:57) Покаж...   Jul 28 2009, 15:13
|- - rezident   Цитата(SYurev @ Jul 28 2009, 13:46) Не в ...   Jul 28 2009, 15:36
|- - SYurev   Цитата(rezident @ Jul 28 2009, 21:36) Там...   Jul 28 2009, 16:07
- - volodya   Вообщето в комплекте MPLAB IDE прилагается библиот...   Jul 21 2009, 04:35
|- - backa   Цитата(volodya @ Jul 21 2009, 07:35) Вооб...   Jul 21 2009, 09:49
- - HHIMERA   Цитата(backa @ Jul 21 2009, 12:49) хочу в...   Jul 21 2009, 23:02
|- - backa   Цитата(HHIMERA @ Jul 22 2009, 02:02) И......   Jul 22 2009, 11:47
|- - rx3apf   Цитата(HHIMERA @ Jul 22 2009, 03:02) И......   Jul 23 2009, 10:53
|- - rezident   Цитата(rx3apf @ Jul 23 2009, 16:53) Что д...   Jul 23 2009, 15:02
|- - rx3apf   Цитата(rezident @ Jul 23 2009, 19:02) ...   Jul 23 2009, 16:14
- - HHIMERA   Цитата(rx3apf @ Jul 23 2009, 13:53) Да ла...   Jul 23 2009, 19:41
|- - zltigo   Цитата(HHIMERA @ Jul 23 2009, 22:41) У вс...   Jul 23 2009, 19:55
|- - rx3apf   Цитата(HHIMERA @ Jul 23 2009, 23:41) Да...   Jul 23 2009, 21:00
- - HHIMERA   Цитата(zltigo @ Jul 23 2009, 22:55) Это в...   Jul 23 2009, 20:21
|- - zltigo   Цитата(HHIMERA @ Jul 23 2009, 23:21) Прой...   Jul 23 2009, 21:03
- - lastmage   Товарищ, вот здесь все подробно разжевано - как по...   Jul 25 2009, 18:49
- - RA3WUM   Был у нас проект на микротипсовском HD44780-подобн...   Aug 28 2009, 07:14
- - R-Max   Немного не там, но вывожу 2 символа на первую стро...   Feb 20 2011, 15:01
- - R-Max   Вывожу 2 символа на первую строку на LM044L в 4-би...   Feb 20 2011, 19:50
- - rezident   Цитата(R-Max @ Feb 21 2011, 00:50) г...   Feb 20 2011, 20:43
- - R-Max   В железе тоже неадекватно работало, поэтому решил ...   Feb 22 2011, 20:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 23:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.02539 секунд с 7
ELECTRONIX ©2004-2016