LCDInfo.com http://forum.lcdinfo.com/ |
|
I am about to destroy my T6963C: Initialization problems http://forum.lcdinfo.com/viewtopic.php?f=9&t=1280 |
Page 1 of 1 |
Author: | godzilla [ Fri Jul 29, 2005 0:02 ] |
Post subject: | I am about to destroy my T6963C: Initialization problems |
I have a hantronix HDM128GS12-1 display. It is a 128x128 graphic LCD that has a T6963 controller. I've been trying for about a week to try to get it functioning. http://www.hantronix.com/2_1.html All that I get is a quick flash (that looks like there are some characters and vertical bars) then it goes black. I'm using an AT89S52 microcontroller, and I'm pretty sure it's wired correctly(i've checked several times, i get the negative voltage for the display and all other pins seem to be fine.) Here is my code, it's a little messy but it should work. The important functions are LCD_Cwrite, LCD_Dwrite, and Check_Status which are toward the bottom Also all the P2 clears, are to make sure the code isn't hanging somewhere. This does not seem to be the case since in the end all P2 bits are where they should be. Code: ; Micro controller speed - 24MHz or 41.666ns
; 500ns per cycle ; ; Display Size 128x128 ; WR, RD Pulse Width: 80ns min ; ; Pin Controls ; /RD Low + C/D High = Status Read ; /WR Low + C/D High = Command Write ; /WR Low + C/D Low = Data Write ; ; Status Explanation ; bit 0 - Command Execution Capability ; bit 1 - Data Read/Write Capability ; bit 2 - Auto Mode Data Read ; bit 3 - Auto Mode Data Write ; bit 4 - Not Used ; bit 5 - Controller Operation Capability ; bit 6 - Error Flag: Used in Screen Peek and Screen Copy ; bit 7 - Check Blink Condition ; For 0-5 1 is enabled, 0 is disabled ; For 6 1 is error, 0 is no error ; For 7 0 is display off, 1 is normal display ; ; CE tie low ; FS tie low $MOD52 ;---------------------------Pin DECLARATIONS-------------------------------- LRD bit P1.2 ; LWR bit P1.3 ; CD bit P1.4 ; RST bit P1.5 ;Inverted : 0 for On, 1 to Reset LCD CE bit P1.6 ; LCD_Voltage bit P3.1 ;Inverted 0 for -17v, 1 to 0v to LCD Data_Bus equ P1 ;--------------------------------------------------------------------------- ;---------------------------Constant DECLARATIONS--------------------------- Graphic_Low equ 00 Graphic_High equ 00 Graphic_Column equ 10h Text_Low equ 00 Text_High equ 08 Text_Column equ 10h ;---------------------------------------------------------------------------- ORG 0000H LJMP LCD_Setup ORG 100h LCD_Setup: MOV P1,#0 MOV P3,#0 CLR P2.0 SETB RST SETB LCD_Voltage ;Wait 75ms MOV B, #150 LCALL DELAY CLR RST NOP NOP NOP NOP SETB LWR SETB LRD CLR CE ;Wait 75ms MOV B, #150 LCALL DELAY ;Text Home MOV R4,#Text_Low LCALL LCD_DWrite MOV R4,Text_High LCALL LCD_DWrite MOV R4,#040h LCALL LCD_CWrite ;Graphics Home MOV R4,#Graphic_Low LCALL LCD_DWrite MOV R4,#Graphic_High LCALL LCD_DWrite MOV R4,#042h LCALL LCD_CWrite ;Text Area MOV R4,#Text_Column LCALL LCD_DWrite MOV R4,#0 LCALL LCD_DWrite MOV R4,#041h LCALL LCD_CWrite ;Graphics Area MOV R4,#Graphic_Column LCALL LCD_DWrite MOV R4,#0 LCALL LCD_DWrite MOV R4,#043h LCALL LCD_CWrite ;Set Mode MOV R4,#81h LCALL LCD_CWrite ;XOR, Internal CG CLR P2.1 LCALL Clear_Graphics LCALL Clear_Text ;Allow Vlcd CLR LCD_Voltage CLR P2.2 ;DISPLAY MODE MOV R4,#9Ch LCALL LCD_CWrite ;Set Cursor Pattern MOV R4,#0 LCALL LCD_DWrite MOV R4,#0 LCALL LCD_DWrite MOV R4,#0A2h LCALL LCD_CWrite ;Set Cursor Location MOV R4,#1 LCALL LCD_DWrite MOV R4,#1 LCALL LCD_DWrite MOV R4,#21h LCALL LCD_CWrite ;Set Address Pointer MOV R4,#1 LCALL LCD_DWrite MOV R4,#8 LCALL LCD_DWrite MOV R4,#24h LCALL LCD_CWrite CLR P2.3 ;Output MOV R4,#25h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#41h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#54h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#0 LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#33h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#48h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#49h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite MOV R4,#54h LCALL LCD_DWRITE MOV R4,#0C0h LCALL LCD_CWrite END_LOOP: SETB P2.4 MOV R4,#09Ch LCALL LCD_CWrite ;DISP ON LCALL LDELAY LCALL LDELAY LCALL LDELAY LCALL LDELAY CLR P2.4 MOV R4,#090h LCALL LCD_CWrite ;DISP OFF LCALL LDELAY LCALL LDELAY LCALL LDELAY LCALL LDELAY JMP END_LOOP ;------------------------------------------------------------------ ;************************************************************************* Clear_Graphics: MOV R4,#Graphic_Low ;Set Address Pointer LCALL LCD_DWrite MOV R4,#Graphic_High LCALL LCD_DWrite MOV R4,#24h LCALL LCD_CWrite mov R7,#128 JMP Clear_Loop Clear_Text: MOV R4,#Text_Low ;Set Address Pointer LCALL LCD_DWrite MOV R4,#Text_High LCALL LCD_DWrite MOV R4,#24h LCALL LCD_CWrite mov R7,#16 ; JMP Clear_Loop Clear_Loop: ;Start Auto Write MOV R4,#0B0h LCALL LCD_CWrite Clear1: mov R6,#20 Clear2: MOV R4,#000h LCALL LCD_ADWrite djnz R6,Clear2 djnz R7,Clear1 ;End Auto Write MOV R4,#0B2h LCALL LCD_ACWrite RET ;-------------------Common LCD Writing Functions------------------- LCD_ACWrite: LCALL AutoW_Check SETB CD SJMP LCD_Write LCD_ADWrite: LCALL AutoW_Check CLR CD SJMP LCD_Write LCD_CWrite: LCALL Check_Status SETB CD SJMP LCD_Write LCD_DWrite: LCALL Check_Status CLR CD ; SJMP LCD_Write LCD_Write: SETB LRD MOV Data_Bus, R4 NOP CLR CE CLR LWR SETB LWR SETB CE RET ;************************************************************************* Check_Status: ;Returns once status is okay SETB LWR SETB CD SETB LRD CS_1: MOV Data_Bus, #0ffh NOP CLR CE CLR LRD NOP NOP ;CHECK TIMING MOV A,Data_Bus SETB LRD SETB CE MOV R3,#03 ANL A,R3 CJNE A,#03h,CS_1 ;Switch if function shouldn't loop until status is ready RET AutoW_Check: SETB LWR SETB CD SETB LRD ACS_1: MOV Data_Bus, #0ffh NOP CLR CE CLR LRD NOP NOP ;CHECK TIMING MOV A,Data_Bus SETB LRD SETB CE MOV R3,#08 ANL A,R3 CJNE A,#08h,ACS_1 ;Switch if function shouldn't loop until status is ready RET ;************************************************************************* LCD_DBWrite: ;writes a section of data starting at dptr to #01AH CLR A MOVC A,@A+dptr CJNE A,#01AH,LCD_DBWrite1 ; #01AH can be changed to any value RET LCD_DBWrite1: MOV R4,A LCALL LCD_DWrite INC dptr MOV B,#2d LCALL DELAY ; 1ms delay SJMP LCD_DBWrite ;************************************************************************* ; Value in B determines delay length, which is ~ B/2 milliseconds ;Time for Delay is .5ms * B DELAY: ;STORE OUTER LOOP DELAY2: MOV A,#0F8H ;SETUP FOR INNER LOOP NOP NOP NOP NOP DELAY1: DEC A ;1 cycle, delay1 is 2us per loop NOP ;1 cycle JNZ DELAY1 ;2 cycles DEC B ;1 cycle MOV A,B ;1 cycle JNZ DELAY2 ;2 cycles OUTER LOOP UNTIL ZERO RET ;2 cycles ;************************************************************************* LDELAY: MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY MOV B,#250 LCALL DELAY RET Message1: db 'Test' db 01Ah END_JMP: END |
Author: | Henri [ Thu Aug 04, 2005 14:28 ] |
Post subject: | |
I don't have time to go through all the steps in your code unfortunately but if you haven't seen it before there is some example code posted here. Maybe it helps. http://forum.lcdinfo.com/viewtopic.php? ... ght=t6963c |
Page 1 of 1 | All times are UTC + 2 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |