18.02.2006, 15:06
|
|
Временная регистрация
Регистрация: 29.10.2004
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
можно ли верить proteus?
в библиотеки не было ЖКИ dv-16230 нашёл похожий lm302 по крайне мере он на том же МК hd44780. Как я прально понимаю инициализация ЖКИ зависит от МК, который управляет жки. Нашёл документацию там рекомендуют по инициализации:
Код:
|
Инициализация ЖКИ - модуля
Несколько слов о процессе инициализации ЖКИ - модуля. Производитель контроллера рекомендует выполнять следующую последовательность действий для инициализации. Выдержать паузу не менее 15 мс между установлением рабочего напряжения питания (› 4,5 В) и выполнением каких-либо операций с контроллером. Первой операцией выполнить команду, выбирающую разрядность шины (это должна быть команда $30 независимо от того, какой разрядности интерфейс вы собираетесь использовать в дальнейшем), причем перед выполнением этой операции не проверять значение флага BF. Далее опять выдержать паузу не менее 4,1 мс и повторить команду выбора разрядности шины, причем перед подачей команды вновь не производить проверку флага BF. Следующим шагом необходимо вновь выдержать паузу, на этот раз 100 мкс, и в третий раз повторить команду установления разрядности шины, вновь без проверки BF. Эти три операции являются инициализирующими и призваны вывести контроллер в исходный режим работы (то есть перевести в режим работы с 8-ми разрядной шиной) из любого состояния. Следом за ними нормальным порядком (без выдержки пауз, но с проверкой флага BF) выполняется инициализация режимов работы с выдачей инициализирующей последовательности, аналогичной указанной в таблице 7 (содержащей в том числе команду выбора необходимой разрядности шины).
Необходимо помнить, что когда Вы объявляете режим работы с 4-х разрядной шиной, то есть выдаете команду $20, то делаете это обычно из 8-ми разрядного режима, который устанавливается автоматически после подачи напряжения питания, а значит Вы не сможете адекватно объявить необходимое значение флагов N и F, располагающихся в младшей тетраде команды установки разрядности шины. Поэтому команду необходимо повторить в уже установившемся 4-х разрядном режиме путем последовательной передачи двух тетрад, то есть для 4-х разрядного режима образом. |
В общем всё было так сделано, потом я закоментировал и прогнал в протеусе работает!!!
p.s. Во всём остальном прога хорошая.[/b]
__________________
главное не количество знаний, а уменее их применить!!!
|
|
|
|
21.02.2006, 18:36
|
|
Временная регистрация
Регистрация: 29.10.2004
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
у кого-нибудь бывало, что в протеусе эмулируется номально, а когда задумка воплощается в железо, то них не работает?
__________________
главное не количество знаний, а уменее их применить!!!
|
|
|
|
21.02.2006, 18:55
|
|
Временная регистрация
Регистрация: 29.10.2004
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
я обшибся... не lm302 а lm032L
__________________
главное не количество знаний, а уменее их применить!!!
|
|
|
|
25.02.2006, 19:56
|
|
Прохожий
Регистрация: 04.02.2006
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
можно ли верить proteus?
Пришли свой проект на мой hologrph@74mail.ru
Посмотрим вместе. Я, в своё время, тоже мучился с этими 8-ми и 4-х битными режимами. Но - выбрался.
Писал на СИ. Какой у тебя контроллер?
|
|
|
|
27.02.2006, 06:39
|
|
Прохожий
Регистрация: 21.02.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
у меня наоборот было (и есть)
mega16 (iar) работает с шиной i2c, память и т.д. работают (симулируются) как часы, а вот цап pcf8591 глючит, но на реальной плате работает как часы, чем я соответственно растроен, надеюсь исправят
|
|
|
|
01.03.2006, 23:48
|
|
Временная регистрация
Регистрация: 29.10.2004
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
спаял я... то что было в протеусе (могу прислать) инициализации не проходит а в протеусе проходит вот в общем код
Код:
|
list p = 16f877a
#include "p16f877a.inc"
__CONFIG _CP_OFF & _HS_OSC & _WDT_OFF & _BODEN_OFF
org 0x20
.UDATA
COUNT RES 1 ;0x26
TEMPLED RES 1 ;0x2C
org 0x30
.CODE
BSF STATUS,5
MOVLW 87h
MOVWF OPTION_REG
CLRF TRISB ;OUT PORTB
BCF STATUS,5
CLRF PORTB
;INITIALIZE LCD......
;LCD 4BIT
;RB7-RB4 - DATA BUS
;RB1 - E
;RB2 - R/W
;RB3 - RS
;*********INITIALIZATION LCD***********
CALL DELAY15 ;PAUSE 15mS
BCF PORTB,1
BCF PORTB,2
BCF PORTB,3
MOVLW 30h ;8bit
MOVWF PORTB
CALL ENABLE
CALL DELAY5 ;5mS
CALL ENABLE
CALL DELAY5 ;5mS
CALL ENABLE
CALL DELAY5 ;5mS
CALL ENABLE
CALL DELAY1
CALL ENABLE
CALL DELAY1
;*********END INITIALIZATION LCD***********************
;*********SET MODE***********************
;4BIT!!!
MOVLW 20h ;4bit
MOVWF PORTB ;!!!
CALL ENABLE
CALL BUSY_FL
;----------------------------------------------------
MOVLW B'00001111'
CALL WRITE_COM
MOVLW 28h ;2 STRINGS 4BIT
CALL WRITE_COM
MOVLW 06h
CALL WRITE_COM
MOVLW 02h
CALL DEL?
MOVLW 01h
CALL WRITE_COM
CALL DELAY5
MOVLW 80h
CALL WRITE_COM
;---------------------
MOVLW 68h
CALL WRITE_DATA
MOVLW 65h
CALL WRITE_DATA
MOVLW 6Ch
CALL WRITE_DATA
MOVLW 70h
CALL WRITE_DATA
MOVLW 20h
CALL WRITE_DATA
MOVLW 6Dh
CALL WRITE_DATA
MOVLW 65h
CALL WRITE_DATA
GOTO $
;************************************************* ***
;*****************STANDART PROCEDURE FOR LCD********
;************************************************* ***
;-------------------------------------
WRITE_COM:
CLRF TEMPLED ;TEMPLED = 0
CLRF PORTB
BCF PORTB,2 ;R/W=0
BCF PORTB,3 ;RS=0
MOVWF TEMPLED ;HHHH.LLLL
ANDLW B'11110000' ;HHHH.0000
MOVWF PORTB ;HHHH.0000
CALL ENABLE ;E=1/0
SWAPF TEMPLED,W ;LLLL.HHHH
ANDLW B'11110000' ;LLLL.0000
MOVWF PORTB ;LLLL.0000
CALL ENABLE ;E=1/0
CALL BUSY_FL
RETURN
;------------------------------------------------
WRITE_DATA:
CLRF TEMPLED
CLRF PORTB
BCF PORTB,2 ;R/W = 0
BSF PORTB,3 ;RS = 1
MOVWF TEMPLED ;HHHH.LLLL
ANDLW B'11110000' ;HHHH.1000
IORLW B'00001000'
MOVWF PORTB
CALL ENABLE
SWAPF TEMPLED,W ;LLLL.1000
ANDLW B'11111000' ;LLLL.1000
IORLW B'00001000'
MOVWF PORTB ;LLLL.1000
CALL ENABLE
CALL BUSY_FL
BCF PORTB,3
RETURN
;-----------------------------------
BUSY_FL:
BCF PORTB,3 ;RS = 0
BSF PORTB,2 ;R/W = 1
BSF STATUS,5 ;BANK1
MOVLW 080h ;10000000
MOVWF TRISB ;7-4 BIT IN; 3-0 BIT OUT
BCF STATUS,5 ;BANK0
BSF PORTB,1 ;E=1
NOP ;READ HIGH BIT
M5: MOVF PORTB,W
MOVWF TEMPLED
BTFSC TEMPLED,3 ;CHECK BF
GOTO M5 ;BF=1
BCF PORTB,1 ;E=1 BF=0
CALL ENABLE ;READ LOW BIT
BSF STATUS,5
CLRF TRISB ;00000000
BCF STATUS,5
RETURN
;------------
ENABLE: BSF PORTB,1 ;E=1
CALL DELAY1
BCF PORTB,1 ;E=0
RETURN
;******************************************
;* DELAY *
;******************************************
DELAY15:
MOVLW 0Fh
GOTO DEL?
DELAY1:
MOVLW 01h
GOTO DEL?
DELAY5:
MOVLW 05h ;1 - 1mSec
DEL?: MOVWF COUNT ;
LK1: BCF INTCON,2
MOVLW 0ECh
MOVWF TMR0
LK: BTFSS INTCON,2
GOTO LK
DECFSZ COUNT,1
GOTO LK1
RETURN
;************************************************* ***
END |
какая длина проводов нужна от ЖКИ до МК?
__________________
главное не количество знаний, а уменее их применить!!!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:33.
|
|