|
'############################################################################### '# # '# Siemens S65 Testprogramm mit Frequenzerzeugung für Ladungspumpe © # '# # '############################################################################### ' 'Ansteuerung für das Siemens-Display S65 mit der Anfangsnummer LS020... 'Copyright Martin Kuehn 1.Nov.2005 'martin-k@xmail.net
'------------------------------------------------------------------------------- 'Geändert von Wigbert Picht ' 'Es wurde beim m8 die Ports B0 Bis B5 verwendet 'Grün hinterlegte Ports sind die ursprünglichen ' 'Elektro-Picht@gmx.de ' ' ' !!!Diese Software ist nur für den privaten Gebrauch bestimmt!!! ' !!!Kommerzielle Anwendungen bedürfen meiner Zustimmung!!! ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ' '-------------------------------------------------------------------------------
'Code basiert auf Reengineering von Christian Kranz ' http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
'Pinbelegung, Rückseite Display, Anschluss auf linker Seite 'Auflistung von oben nach unten
'RS B0'C0 'Reset B5'D7 'CS B2'C2 'CLK B3'C4 'DAT B4'C6 '45 Khz B1 'Vcc 3 Volt (max. 3.3 Volt, min. etwa 2.4 Volt) 'GND 'Vdigital 3 Volt, kann aber auch 1.8 Volt betragen, habe ich mit Vcc verbunden 'LED+ etwa 10.5 Volt, 20 mA (max 30 mA) 'LED- (GND)
'Da es sich hier um keine SPI-Ansteuerung handelt, können alle Pins beliebig 'ausgetauscht werden. 'Wichtig ist, dass beim Compilieren die korrekte Taktfrequenz angegeben wird 'Code wurde mit Atmega128L 8 MHz getestet
'############################################################################### ' $regfile = "m8def.dat " 'Controllertyp $crystal = 9216000 'Quarzfrequenz
'Ddrc = &B00011111 'Port C als Output 'Ddrd = &B11111111 'Port D als Output Ddrb = &B00111111
Dim A As Word , B As Word , R As Byte , F As Word , T As Byte
'############################################################################### 'XXXXXX Frequenz 45 Khz für Displaybeleuchtung mit Timer XXXXX '###############################################################################
Config Timer1 = Timer , Compare A = Toggle , Prescale = 1 , Clear Timer = 1 Compare1a = 100
'###############################################################################
'############################################################################### ' Start der S65-Ansteuerung '############################################################################### Anfang: Portb.5 = 1 'Portd.7 = 1 Waitms 10 Portb.5 = 0 'Portd.7 = 0 'Reset Portb.2 = 1 'Portc.2 = 1 Portb.3 = 1 'Portc.4 = 1 Portb.4 = 1 'Portc.6 = 1 Portb.0 = 1 'Portc.0 = 1
Waitms 1 Portb.5 = 1 'Portd.7 = 1 'Reset Ende Waitms 10
Portb.2 = 1 'Portc.2 = 1 'CS select, Start Waitms 1 Portb.0 = 1 'Portc.0 = 1 'RS high, Command
' Displayinitialisierung
Restore Init1 For R = 1 To 12 Read A Gosub 16 Next
Waitms 7 'diese Zeit ist sehr wichtig, sollte keinesfalls unterschritten werden
Restore Init2 For R = 1 To 23 Read A Gosub 16 Next
'######################## 'Farbverläufe erzeugen '########################
'Blau malen
A = &HEF90 Gosub 16 A = &H0500 ' 00 => Bild wird von oben nach unten gemalt Gosub 16 A = &H0800 'x1 Gosub 16 A = &H092B 'x2 Gosub 16 A = &H0A00 'y1 Gosub 16 A = &H0BAF 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0 ' RS auf low setzen für Bilddaten F = 0
For T = 1 To 32 '32 Farbabstufungen schwarz => blau For R = 1 To 88 '2 Zeilen gleiche Farbe A = F Gosub 16 Next R F = F + 1 Next T
F = 31
For T = 1 To 32 '32 Farbabstufungen blau => weiss For R = 1 To 88 '2 Zeilen gleiche Farbe A = F Gosub 16 Next R F = F + 2112 Next T
Portb.0 = 1 'Portc.0 = 1
'Grün malen
A = &HEF90 Gosub 16 A = &H0500 Gosub 16 A = &H082C 'x1 Gosub 16 A = &H0957 'x2 Gosub 16 A = &H0A00 'y1 Gosub 16 A = &H0BAF 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0 F = 0
For T = 1 To 32 For R = 1 To 88 A = F Gosub 16 Next R F = F + 64 Next T
F = 2016
For T = 1 To 32 For R = 1 To 88 A = F Gosub 16 Next R F = F + 2049 Next T
Portb.2 = 1 'Portc.2 = 1 Portb.0 = 1 'Portc.0 = 1
'Rot malen
A = &HEF90 Gosub 16 A = &H0500 Gosub 16 A = &H0858 'x1 Gosub 16 A = &H0983 'x2 Gosub 16 A = &H0A00 'y1 Gosub 16 A = &H0BAF 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0 F = 0
For T = 1 To 32 For R = 1 To 88 A = F Gosub 16 Next R F = F + 2048 Next T
F = 63488
For T = 1 To 32 For R = 1 To 88 A = F Gosub 16 Next R F = F + 65 Next T
Portb.0 = 1 'Portc.0 = 1
' Schwarz => weiss
A = &HEF90 Gosub 16 A = &H0504 ' 04 => Bild wird von links nach rechts gemalt Gosub 16 A = &H0800 'x1 Gosub 16 A = &H0983 'x2 Gosub 16 A = &H0A80 'y1 Gosub 16 A = &H0BAF 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0 F = 0
For T = 1 To 32 '32 Farbabstufungen schwarz => weiss For R = 1 To 192 '2 Zeilen gleiche Farbe A = F Gosub 16 Next R F = F + 2113 Next T
Portb.0 = 1 'Portc.0 = 1
' cyan
A = &HEF90 Gosub 16 A = &H0504 ' 04 => Bild wird von links nach rechts gemalt Gosub 16 A = &H0880 'x1 Gosub 16 A = &H0983 'x2 Gosub 16 A = &H0A80 'y1 Gosub 16 A = &H0B8F 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0
For R = 1 To 64 A = 2047 Gosub 16 Next R
Portb.0 = 1 'Portc.0 = 1
' magenta
A = &HEF90 Gosub 16 A = &H0504 ' 04 => Bild wird von links nach rechts gemalt Gosub 16 A = &H0880 'x1 Gosub 16 A = &H0983 'x2 Gosub 16 A = &H0A90 'y1 Gosub 16 A = &H0B9F 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0
For R = 1 To 64 A = 64241 Gosub 16 Next R
Portb.0 = 1 'Portc.0 = 1
' gelb
A = &HEF90 Gosub 16 A = &H0504 ' 04 => Bild wird von links nach rechts gemalt Gosub 16 A = &H0880 'x1 Gosub 16 A = &H0983 'x2 Gosub 16 A = &H0AA0 'y1 Gosub 16 A = &H0BAF 'y2 Gosub 16
Portb.0 = 0 'Portc.0 = 0
For R = 1 To 64 A = 65504 Gosub 16 Next R
Portb.0 = 1 'Portc.0 = 1
Do 'Schleife da Timer 'Powerdown Loop End
16: Portb.2 = 0 'Portc.2 = 0 Shiftout Portb.4 , Portb.3 , A , A 'Portc.6 , Portc.4 Portb.2 = 1 'Portc.2 = 1 Return
Init1: Data &HFDFD% , &HFDFD%, Data &HEF00%, Data &HEE04% , &H1B04%, Data &HFEFE% , &HFEFE%, Data &HEF90% , &H4A04% , &H7F3F% , &HEE04% , &H4306%
Init2: Data &HEF90% , &H0983% , &H0800% , &H0BAF% , &H0A00% , &H0500% , &H0600% , &H0700%, Data &HEF00%, Data &HEE0C%, Data &HEF90% , &H0080%, Data &HEFB0% , &H4902%, Data &HEF00%, Data &H7F01% , &HE181%, Data &HE202%, Data &HE276%, Data &HE183%, Data &H8001%, Data &HEF90%, Data &H0000%
|