PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grafik Display , Anzeige drehen, LC7981/HD61830



kollimann
27.01.2010, 09:41
Hallo,

ich hab hier ein Display von Pollin mit einem HD61830 kompatiblen Controller.
Ich bekomme auch alles angezeigt auf dem Display aber ich würd gern die Anzeige drehen wollen, also das Display für "hochkant" nutzen.
Geht das irgendwie?

Hab hier einen Bascom Test Code ausm Inet.



' Fuer Pollin Display 16080 , nur Display, ohne Touch
' allu 10/2009



$regfile = "m168def.DAT"
$crystal = 8000000
$baud = 19200
$hwstack = 64
$swstack = 256
$framesize = 84


'PortPins zum Display 16080 festlegen und initialisieren


Daten_bus_out Alias Portb
Daten_bus_in Alias Pinb
Daten_ddr Alias Ddrb
Auf_input_stellen Alias &H00
Auf_output_stellen Alias &HFF
Bussy Alias 7


Control_bus Alias Portd
Rs Alias 2
Rw Alias 3
E Alias 4
Cs Alias 6
R Alias 7
Pullups_ein Alias &HFF


Config Daten_bus_out = Input
Daten_bus_out = Pullups_ein

Config Control_bus = Input
Control_bus = Pullups_ein
Config Control_bus = Output
Reset Control_bus.e

Accu_l Alias R0
Accu_h Alias R1
Bccu_l Alias R2
Bccu_h Alias R3
' R4, R5, R6 und R8 verwendet von Bascom
Zeile Alias R9
Spalte Alias R10
Zeichen Alias R11 'R21




Temp_1 Alias R18
Temp_2 Alias R19
Temp_3 Alias R20

Daten Alias R22
Befehl Alias R23
Cursor_l Alias R24
Cursor_h Alias R25



Dim Ticker As Byte

Dim Locate_zeile As Byte ' 0 bis 79 = 80 Zeilen
Dim Locate_spalte As Byte ' 0 bis 22 = 23 Spalten
Dim Lcd_string As String * 23 ' Gibt Eingaben vim Display zur?ck



Gosub Display_initialisieren


' Hier beginnt das Hauptprogramm


Gosub Lcd_clear








Do
Locate_zeile = 1
Locate_spalte = 1
Lcd_string = "ABCDEFGHIJKLMNOPQRST"
Gosub Lcd_write_string


Locate_zeile = 72
Locate_spalte = 11
Lcd_string = "Gruss allu"
Gosub Lcd_write_string
Locate_zeile = 48
Locate_spalte = 25
Lcd_string = "123456789"
Gosub Lcd_write_string

Wait 5
Gosub Lcd_clear
Loop




























'Unterprogramme

Display_initialisieren:
' GLcd im Grafikmode mit 23 Spalten initialisieren:
Waitms 50
Reset Control_bus.r
Waitus 50
Set Control_bus.r
Waitms 10
Gosub Lcd_initialisieren
Gosub Lcd_clear


'F?r die zuk?nftigen Timer
Config Timer0 = Timer , Prescale = 1024
Enable Timer0
Enable Interrupts
On Ovf0 Tim0_isr 'enable the interrupt

Return










Tim0_isr: 'Vorbereitung f?r die Timer
Incr Ticker
If Ticker = 3 Then
Ticker = 0
End If
Return



' und hier gehts in Assembler weiter ....
$asm


Lcd_write_string:
Loadadr Locate_zeile , X ' Zeilen 0 bis 70 m?glich
ld Accu_L, X
ldi Temp_2, 24
mov Spalte, Temp_2
mov Accu_H, Temp_2 ' so rechnet der Controller
mul Accu_L, Accu_H

Loadadr Locate_spalte , X ' Spalte 0 bis 22 m?glich
ld cursor_L, X
clr Cursor_H ' Position = Zeile*24 + Spalte
add Cursor_L, Accu_L
ADC Cursor_H, Accu_H

Loadadr Lcd_string , X

Lcd_write_string_10:
ld Zeichen, X+ 'Zeichen laden und n?chste Bufferadresse
ldi Temp_3, &B0111_1111
!and Zeichen, Temp_3 'String zu Ende ?
' !and Zeichen, Zeichen 'String zu Ende ?
breq LCD_Write_String_99

ldi Temp_3, 8 'Offset in TabChr berechnen
mov Accu_L, Temp_3
clr Accu_H
mul Accu_L, Zeichen
'..Offset + Anfangsadresse von TabChr
ldi ZL, low(TabChr *2)
ldi ZH, high(TabChr *2)

add ZL, Accu_L
adc ZH, Accu_H

rcall LCD_Write_Chr

Loadadr Locate_spalte , Z ' auf die n?chste Spalte
ld Temp_2, Z
inc Temp_2
st Z, Temp_2
'Malprogramm aufrufen
rjmp LCD_Write_String_10

Lcd_write_string_99:
ret



Lcd_write_chr:
mov Accu_L, Cursor_L
mov Accu_H, Cursor_H

adiw Cursor_L, 1
clr Zeile

ldi Temp_1, 24
mov Spalte, Temp_1

ldi Temp_1, 8

Lcd_write_chr_10:
ldi Befehl, &H0A
mov Daten, Accu_L
rcall Write_2_Byte

ldi Befehl, &HB0B
mov Daten, Accu_H
rcall Write_2_Byte

lpm Temp_3, Z+
ldi Temp_2, 10

Lcd_write_chr_20:
rol Temp_3 'Zeichen wenden und D0-b?ndig
ror Daten

dec Temp_2
brne LCD_Write_Chr_20

brcc LCD_Write_Chr_30 ' L?cken schliessen
ori Daten, &b01000000

Lcd_write_chr_30:
ldi Befehl, &H0C
rcall Write_2_Byte

add Accu_L, Spalte
adc Accu_H, Zeile

dec Temp_1
brne LCD_Write_Chr_10

Lcd_write_chr_99:
ret



Lcd_clear:
ldi Befehl, &H0A
ldi Daten, 0
rcall Write_2_Byte

ldi Befehl, &H0B
ldi Daten, 0
rcall Write_2_Byte

ldi Befehl, &H0C
ldi Daten, &H00

ldi Temp_2, 10

Lcd_clear_10:
ldi Temp_1, 200

Lcd_clear_20:
rcall Write_2_Byte

dec Temp_1
brne LCD_Clear_20

dec Temp_2
brne LCD_Clear_10

Lcd_clear_99:
ret



Lcd_initialisieren:
ldi ZL, low(Init_gc_mode *2)
ldi ZH, high(Init_gc_mode *2)

lpm Temp_1, Z+ ' Schleifenz?hler
lpm Temp_1, Z+ ' Schleifenz?hler

Lcd_initialisieren_10:
lpm Befehl,Z+
lpm Daten,Z+
rcall Write_2_Byte

dec Temp_1
brne LCD_Initialisieren_10

Lcd_initialisieren_99:
ret



Write_2_byte:
push Temp_1

cbi Control_Bus, CS 'Chip select aktivieren
rjmp Write_2_Byte_20

Write_2_byte_10:
cbi Control_Bus, E 'Enable-Puls beenden
nop 'warten
nop 'warten
nop
nop 'warten

Write_2_byte_20:
sbi Control_Bus, E 'Enable-Puls beginnt
nop 'warten
nop 'warten
nop 'warten
'warten
sbic Daten_Bus_in, Bussy 'Fertisch ?
rjmp Write_2_Byte_10
nop

cbi Control_Bus, E 'Enable-Puls beenden
cbi Control_Bus, RW 'Write Signal aktivieren
nop

'Register im Grafikcontroller ausw?hlen
ldi Temp_1,auf_Output_stellen 'Datenbus auf Ausgabe stellen
!out Daten_ddr, Temp_1 '..und umschalten
nop
!out Daten_Bus_out, Befehl 'Befehl-Register ausw?hlen
sbi Control_Bus, E 'ins Befehl-Register schreiben
nop 'warten
nop
nop
nop
nop
nop 'warten
cbi Control_Bus, E 'Enable-Puls beenden

nop
'Mode-Temp_1 in Grafikcontroller schreiben
cbi Control_Bus,RS
!out Daten_Bus_out, Daten 'Mode-Temp_1 aufv Bus legen
sbi Control_Bus, E 'ins Mode-Register schreiben
nop 'warten
nop
nop
nop
nop 'warten
nop '... und warten
cbi Control_Bus, E 'Enable-Puls beenden
nop

'Ruhepegel wieder herstellen
sbi Control_Bus, CS 'Chip select deaktivieren
ldi Temp_1,auf_Input_stellen 'Datenbus auf Input stellen
!Out Daten_ddr , Temp_1 '..und umschalten
sbi Control_Bus, RW 'Read Signal deaktivieren
sbi Control_Bus, RS

Write_2_byte_99:
pop Temp_1

ret


$end Asm


End




Init_gc_mode:

Data &H00 , &H07 'Die n?chsten 7
Data &H00 , &H12 'Befehle an GC senden
Data &H01 , &H76
Data &H02 , &H17
Data &H03 , &H4F
Data &H08 , &H00
Data &H09 , &H00
Data &H00 , &H32


' $include "C:/Font_16080.asm"

Tabchr:
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H00
Data &H00 , &H00 , &H00 , &H27 , &H00 , &H00 , &H00 , &H00 ' &H01
Data &H20 , &H20 , &H20 , &H1E , &H20 , &H20 , &H20 , &H00 ' &H02

Data &H00 , &H0A , &H1F , &H1F , &H1F , &H0E , &H04 , &H00 ' &H03
Data &H00 , &H04 , &H0E , &H1F , &H1F , &H0E , &H04 , &H00 ' &H04
Data &H04 , &H0E , &H0E , &H04 , &H1F , &H1F , &H04 , &H00 ' &H05
Data &H00 , &H04 , &H0E , &H1F , &H1F , &H04 , &H0E , &H00 ' &H06
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H07
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H08
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H09
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H0A
Data &H00 , &H07 , &H03 , &H0D , &H12 , &H12 , &H0C , &H00 ' &H0B
Data &H0E , &H11 , &H11 , &H0E , &H04 , &H0E , &H04 , &H00 ' &H0C
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H0D
Data &H03 , &H0D , &H0B , &H0D , &H0B , &H1B , &H18 , &H00 ' &H0E
Data &H00 , &H15 , &H0E , &H1B , &H0E , &H15 , &H00 , &H00 ' &H0F



Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H10
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H7F ' &H11
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H7F , &H7F ' &H12
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F ' &H13
Data &H00 , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F ' &H14
Data &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H7F ' &H15
Data &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F ' &H16
Data &H7F , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F ' &H17



Data &H04 , &H0E , &H1F , &H04 , &H04 , &H04 , &H04 , &H77 ' &H18
Data &H04 , &H04 , &H04 , &H04 , &H1F , &H0E , &H04 , &H7D ' &H19
Data &H00 , &H04 , &H06 , &H1F , &H06 , &H04 , &H00 , &H77 ' &H1A
Data &H00 , &H04 , &H0C , &H1F , &H0C , &H04 , &H00 , &H7D ' &H1B
Data &H00 , &H00 , &H00 , &H10 , &H10 , &H10 , &H1F , &H77 ' &H1C
Data &H00 , &H0A , &H0A , &H1F , &H0A , &H0A , &H00 , &H7D ' &H1D
Data &H04 , &H04 , &H0E , &H0E , &H1F , &H1F , &H00 , &H77 ' &H1E
Data &H1F , &H1F , &H0E , &H0E , &H04 , &H04 , &H00 , &H7D ' &H1F




Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H20
Data &H04 , &H0E , &H0E , &H04 , &H04 , &H00 , &H04 , &H00 ' &H21
Data &H1B , &H1B , &H12 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H22
Data &H00 , &H0A , &H1F , &H0A , &H0A , &H1F , &H0A , &H00 ' &H23
Data &H08 , &H0E , &H10 , &H0C , &H02 , &H1C , &H04 , &H00 ' &H24
Data &H19 , &H19 , &H02 , &H04 , &H08 , &H13 , &H13 , &H00 ' &H25
Data &H08 , &H14 , &H14 , &H08 , &H15 , &H12 , &H0D , &H00 ' &H26
Data &H0C , &H0C , &H08 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H27
Data &H04 , &H08 , &H08 , &H08 , &H08 , &H08 , &H04 , &H00 ' &H28
Data &H08 , &H04 , &H04 , &H04 , &H04 , &H04 , &H08 , &H00 ' &H29
Data &H00 , &H0A , &H0E , &H1F , &H0E , &H0A , &H00 , &H00 ' &H2A
Data &H00 , &H04 , &H04 , &H1F , &H04 , &H04 , &H00 , &H00 ' &H2B
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H0C , &H0C , &H08 ' &H2C
Data &H00 , &H00 , &H00 , &H1F , &H00 , &H00 , &H00 , &H00 ' &H2D
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H0C , &H0C , &H00 ' &H2E
Data &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H00 , &H00 ' &H2F
Data &H0E , &H11 , &H13 , &H15 , &H19 , &H11 , &H0E , &H00 ' &H30
Data &H04 , &H0C , &H04 , &H04 , &H04 , &H04 , &H0E , &H00 ' &H31
Data &H0E , &H11 , &H01 , &H06 , &H08 , &H10 , &H1F , &H00 ' &H32
Data &H0E , &H11 , &H01 , &H0E , &H01 , &H11 , &H0E , &H00 ' &H33
Data &H02 , &H06 , &H0A , &H12 , &H1F , &H02 , &H02 , &H00 ' &H34
Data &H1F , &H10 , &H10 , &H1E , &H01 , &H11 , &H0E , &H00 ' &H35
Data &H06 , &H08 , &H10 , &H1E , &H11 , &H11 , &H0E , &H00 ' &H36
Data &H1F , &H01 , &H02 , &H04 , &H08 , &H08 , &H08 , &H00 ' &H37
Data &H0E , &H11 , &H11 , &H0E , &H11 , &H11 , &H0E , &H00 ' &H38
Data &H0E , &H11 , &H11 , &H0F , &H01 , &H02 , &H0C , &H00 ' &H39
Data &H00 , &H00 , &H0C , &H0C , &H00 , &H0C , &H0C , &H00 ' &H3A
Data &H00 , &H00 , &H0C , &H0C , &H00 , &H0C , &H0C , &H08 ' &H3B
Data &H02 , &H04 , &H08 , &H10 , &H08 , &H04 , &H02 , &H00 ' &H3C
Data &H00 , &H00 , &H1F , &H00 , &H00 , &H1F , &H00 , &H00 ' &H3D
Data &H08 , &H04 , &H02 , &H01 , &H02 , &H04 , &H08 , &H00 ' &H3E
Data &H0E , &H11 , &H01 , &H06 , &H04 , &H00 , &H04 , &H00 ' &H3F
Data &H0E , &H11 , &H17 , &H15 , &H17 , &H10 , &H0E , &H00 ' &H40
Data &H0E , &H11 , &H11 , &H11 , &H1F , &H11 , &H11 , &H00 ' &H41
Data &H1E , &H11 , &H11 , &H1E , &H11 , &H11 , &H1E , &H00 ' &H42
Data &H0E , &H11 , &H10 , &H10 , &H10 , &H11 , &H0E , &H00 ' &H43
Data &H1E , &H11 , &H11 , &H11 , &H11 , &H11 , &H1E , &H00 ' &H44
Data &H1F , &H10 , &H10 , &H1E , &H10 , &H10 , &H1F , &H00 ' &H45
Data &H1F , &H10 , &H10 , &H1E , &H10 , &H10 , &H10 , &H00 ' &H46
Data &H0E , &H11 , &H10 , &H17 , &H11 , &H11 , &H0F , &H00 ' &H47
Data &H11 , &H11 , &H11 , &H1F , &H11 , &H11 , &H11 , &H00 ' &H48
Data &H0E , &H04 , &H04 , &H04 , &H04 , &H04 , &H0E , &H00 ' &H49
Data &H01 , &H01 , &H01 , &H01 , &H11 , &H11 , &H0E , &H00 ' &H4A
Data &H11 , &H12 , &H14 , &H18 , &H14 , &H12 , &H11 , &H00 ' &H4B
Data &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H1F , &H00 ' &H4C
Data &H11 , &H1B , &H15 , &H11 , &H11 , &H11 , &H11 , &H00 ' &H4D
Data &H11 , &H19 , &H15 , &H13 , &H11 , &H11 , &H11 , &H00 ' &H4E
Data &H0E , &H11 , &H11 , &H11 , &H11 , &H11 , &H0E , &H00 ' &H4F
Data &H1E , &H11 , &H11 , &H1E , &H10 , &H10 , &H10 , &H00 ' &H50
Data &H0E , &H11 , &H11 , &H11 , &H15 , &H12 , &H0D , &H00 ' &H51
Data &H1E , &H11 , &H11 , &H1E , &H12 , &H11 , &H11 , &H00 ' &H52
Data &H0E , &H11 , &H10 , &H0E , &H01 , &H11 , &H0E , &H00 ' &H53
Data &H1F , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H00 ' &H54
Data &H11 , &H11 , &H11 , &H11 , &H11 , &H11 , &H0E , &H00 ' &H55
Data &H11 , &H11 , &H11 , &H11 , &H11 , &H0A , &H04 , &H00 ' &H56
Data &H11 , &H11 , &H15 , &H15 , &H15 , &H15 , &H0A , &H00 ' &H57
Data &H11 , &H11 , &H0A , &H04 , &H0A , &H11 , &H11 , &H00 ' &H58
Data &H11 , &H11 , &H11 , &H0A , &H04 , &H04 , &H04 , &H00 ' &H59
Data &H1E , &H02 , &H04 , &H08 , &H10 , &H10 , &H1E , &H00 ' &H5A
Data &H0E , &H08 , &H08 , &H08 , &H08 , &H08 , &H0E , &H00 ' &H5B
Data &H00 , &H10 , &H08 , &H04 , &H02 , &H01 , &H00 , &H00 ' &H5C
Data &H0E , &H02 , &H02 , &H02 , &H02 , &H02 , &H0E , &H00 ' &H5D
Data &H04 , &H0A , &H11 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H5E


Data &H00 , &H00 , &H00 , &H00 , &H60 , &H60 , &H7F , &H00 ' &H5F


Data &H0C , &H0C , &H04 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H60
Data &H00 , &H00 , &H0E , &H01 , &H0F , &H11 , &H0F , &H00 ' &H61
Data &H10 , &H10 , &H1E , &H11 , &H11 , &H11 , &H1E , &H00 ' &H62
Data &H00 , &H00 , &H0E , &H11 , &H10 , &H11 , &H0E , &H00 ' &H63
Data &H01 , &H01 , &H0F , &H11 , &H11 , &H11 , &H0F , &H00 ' &H64
Data &H00 , &H00 , &H0E , &H11 , &H1E , &H10 , &H0E , &H00 ' &H65
Data &H06 , &H08 , &H08 , &H1E , &H08 , &H08 , &H08 , &H00 ' &H66
Data &H00 , &H00 , &H0F , &H11 , &H11 , &H0F , &H01 , &H0E ' &H67
Data &H10 , &H10 , &H1C , &H12 , &H12 , &H12 , &H12 , &H00 ' &H68
Data &H04 , &H00 , &H04 , &H04 , &H04 , &H04 , &H06 , &H00 ' &H69
Data &H02 , &H00 , &H06 , &H02 , &H02 , &H02 , &H12 , &H0C ' &H6A
Data &H10 , &H10 , &H12 , &H14 , &H18 , &H14 , &H12 , &H00 ' &H6B
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H06 , &H00 ' &H6C
Data &H00 , &H00 , &H1A , &H15 , &H15 , &H11 , &H11 , &H00 ' &H6D
Data &H00 , &H00 , &H1C , &H12 , &H12 , &H12 , &H12 , &H00 ' &H6E
Data &H00 , &H00 , &H0E , &H11 , &H11 , &H11 , &H0E , &H00 ' &H6F
Data &H00 , &H00 , &H1E , &H11 , &H11 , &H11 , &H1E , &H10 ' &H70
Data &H00 , &H00 , &H0F , &H11 , &H11 , &H11 , &H0F , &H01 ' &H71
Data &H00 , &H00 , &H16 , &H09 , &H08 , &H08 , &H1C , &H00 ' &H72
Data &H00 , &H00 , &H0E , &H10 , &H0E , &H01 , &H0E , &H00 ' &H73
Data &H00 , &H08 , &H1E , &H08 , &H08 , &H0A , &H04 , &H00 ' &H74
Data &H00 , &H00 , &H12 , &H12 , &H12 , &H16 , &H0A , &H00 ' &H75
Data &H00 , &H00 , &H11 , &H11 , &H11 , &H0A , &H04 , &H00 ' &H76
Data &H00 , &H00 , &H11 , &H11 , &H15 , &H1F , &H0A , &H00 ' &H77
Data &H00 , &H00 , &H12 , &H12 , &H0C , &H12 , &H12 , &H00 ' &H78
Data &H00 , &H00 , &H12 , &H12 , &H12 , &H0E , &H04 , &H18 ' &H79
Data &H00 , &H00 , &H1E , &H02 , &H0C , &H10 , &H1E , &H00 ' &H7A
Data &H06 , &H08 , &H08 , &H18 , &H08 , &H08 , &H06 , &H00 ' &H7B
Data &H04 , &H04 , &H04 , &H00 , &H04 , &H04 , &H04 , &H00 ' &H7C
Data &H0C , &H02 , &H02 , &H03 , &H02 , &H02 , &H0C , &H00 ' &H7D
Data &H0A , &H14 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' &H7E
Data &H04 , &H0E , &H1B , &H11 , &H11 , &H1F , &H00 , &H00 ' &H7F


Danke Kollimann

Gento
28.01.2010, 18:08
Das geht mit sehr viel Arbeit schon.
Die Buchstaben sollte man als Bytecode, wie man die im LCD-Editor erstellen kann ,schon haben.
Stelle für Buchstabem im String errechnen / setzen .
Dann Bit für Bit setzen.
Gegebenenfalls ,(ich kenne diesen Controler so aus dem stehgreif nicht) erst das GLCD lesen und Dein Bit reincopieren und zum GLCD zurück.
So ca gehts , aber viel affenarbeit und kostet viel Flash.

lg
Gento