[an error occurred while processing this directive]
Подмогите пожалуйста с инитом S1D13305 (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 507 07 ноября 2005 г. 22:44

Пошарил по форуму, нашёл пару схожил траблов, но советы не очень помогли. На граблях второй день прыгаю :)
ЖК от Powertip 320x240. Контроллер в сабже. Подключен к mcs-51й борде. CS посажён жёстко на землю. Управляю DATA, RD, WR, RESET. Doff в воздухе, но это не важно, т.к. дисплей активен. Дисплей реагирует только на RESET и нулевым битом D6.
Проблема: дисплей никак не реагирует на инит. На экране скнирующие полосы. Странно: при RD=1, RW=1 шина данных не освобождается (читается 0x01). Ресет я делаю три раза, длительный. Т.к. SEL1=SEL2=0, предполагаю что интерфейс 8080 (т.е. RD/RW а не 6800, в котором R/D,E). Навсякий случай проверил и его. По ДШ кажеться странным, что A0=1 на запись - это команда, а на чтение - данные (вместо флага статуса). Но вообщем я уже порядком вариантов перекрутил - не помогает.
Вообщем любые идеи - вэлкам!

Код процедуры:
==============

LCDInit: setb LCD_RD
setb LCD_WR
setb LCD_A0
mov LCD_DATA,#0FFh

mov B,#6
LCDInit_m1: clr LCD_RESET

mov R1,#0
mov R2,#0
lcd_res: djnz R1,lcd_res
djnz R2,lcd_res
setb LCD_RESET

djnz B,LCDInit_m1


mov A,#040h
call LCDWriteCR

mov A,#030h ;P1: 0_0_IV_1_W/S_M2_M1_M0
call LCDWriteDR

mov A,#087h ;P2: WF_0_0_0_0_FX_FX_FX
call LCDWriteDR

mov A,#007h ;P3: 0_0_0_0_FY_FY_FY_FY
call LCDWriteDR

mov A,#39 ;P4: C/R
call LCDWriteDR

mov A,#46 ;P5: TC/R 66 ???????????????
call LCDWriteDR

mov A,#239 ;P6: L/F
call LCDWriteDR

mov A,#40 ;P7: APL
call LCDWriteDR

mov A,#0 ;P8: APH
call LCDWriteDR

;------------
mov A,#044h ;SCROLL
call LCDWriteCR

mov A,#0
call LCDWriteDR

mov A,#0
call LCDWriteDR

mov A,#239
call LCDWriteDR

mov A,#080h
call LCDWriteDR

mov A,#025h
call LCDWriteDR

mov A,#239
call LCDWriteDR

mov A,#0
call LCDWriteDR

mov A,#04Bh
call LCDWriteDR

mov A,#0
call LCDWriteDR

mov A,#0h
call LCDWriteDR

;------------
mov A,#05Dh ;CSR FORM
call LCDWriteCR

mov A,#07h
call LCDWriteDR

mov A,#87h
call LCDWriteDR

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

mov A,#04Ch ;CSDIR
call LCDWriteCR

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

mov A,#05Ah ;HDOT SCR
call LCDWriteCR

mov A,#0
call LCDWriteDR

;------------
mov A,#05Bh ;OVLAY
call LCDWriteCR

mov A,#0Dh
call LCDWriteDR

;------------
mov A,#059h ;0_1_0_1_1_0_0_D
call LCDWriteCR

mov A,#00010100b ;P1: FP5_FP4_FP3_FP2_FP1_FP0_FC1_FC0
call LCDWriteDR
;-------------
mov A,#046h
call LCDWriteCR

mov A,#0
call LCDWriteDR

mov A,#0
call LCDWriteDR

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

mov A,#042h
call LCDWriteCR

mov B,#255

mm1: mov A,B
call LCDWriteDR

djnz B,mm1

ret

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

;=== Write byte to LCD. Independed form RS state
;IN: A - byte
LCDWrite: mov LCD_DATA,A
setb LCD_RD
clr LCD_WR
setb LCD_WR
; mov LCD_DATA,#0FFh
ret

;=== Read byte from LCD. Independed form RS state
;OUT: A-byte
LCDRead: mov LCD_DATA,#0FFh
setb LCD_WR
clr LCD_RD
mov A,LCD_DATA
setb LCD_RD
ret

LCDWaitBF: clr LCD_A0
setb LCD_RD
mov LCD_DATA,#0FFh
clr LCD_RD
jb LCD_DATA.6,LCDWaitBF
setb LCD_RD

ret

;=== Write byte (ACC) to LCD data register
LCDWriteDR: call LCDWaitBF
clr LCD_A0
call LCDWrite
ret

;=== Write byte (ACC) to LCD command register
LCDWriteCR: call LCDWaitBF
setb LCD_A0
call LCDWrite
ret

;=== Read byte (ACC) from LCD data register
LCDReadDR: call LCDWaitBF
setb LCD_A0
call LCDRead
ret

;=== Read byte (ACC) from LCD command register
LCDReadCR: call LCDWaitBF
clr LCD_A0
call LCDRead
ret

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru