'Ansteuerung für das Siemens-Display S65 mit der Anfangsnummer LS020... ' by Dirk Milewski (c) 2006 - www.comwebnet.de 'Pinbelegung, Rückseite Display, Anschluss auf linker Seite 'Auflistung von oben nach unten '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 = "m16def.Dat" $crystal = 8000000 $baud = 19200 Ddra = &B11111111 'Port C als Output Ddrd = &B11111111 'Port D als Output Dim A1 As Word , B1 As Word , R1 As Byte , F1 As Word , T As Byte , Platz As Word Dim W1 As Word , Xy As Byte , Farbe As Word 'Ansteuerung Rs Alias Porta.0 Res Alias Porta.1 Cs Alias Porta.2 Clk Alias Porta.3 Dat Alias Porta.4 Const Lila = &HA016 Const Blau = &H1010 Const Weiss = &HFFFF Const Schwarz = &H0000 Const Rot = &HA0E4 Const X = 176 Const Y = 132 Declare Sub S65_init() Declare Sub S65_pset(byval Lx As Byte , Byval Ly As Byte , Byval Color As Word) Declare Sub S65_line(byval Lx1 As Byte , Byval Ly1 As Byte , Byval Lx2 As Byte , Byval Ly2 As Byte , Byval Color As Word) Declare Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String ) Declare Sub S65_print(byval Lx As Byte , Byval Ly As Byte , Byval Fcol As Word , Byval Bcol As Word , Byval Lcd_text As String) Declare Sub S65_cls(byval Bcol As Word) Call S65_init() Call S65_cls(blau) Call S65_zeichen(60 , 65 , Lila , Weiss , "S") Call S65_zeichen(68 , 65 , Lila , Weiss , "6") 'Call S65_zeichen(74 , 65 , Lila , Weiss , "5") 'Call S65_zeichen(82 , 65 , Lila , Weiss , "!") 'Call Defpartxyxy(40 , 40 , 100 , 100) 'Call Circ(10 , 10 , 5 , Blau) For Xy = 50 To 100 Farbe = Xy + 2 Call S65_pset(xy , 150 , Blau) Call S65_pset(5 , Xy , Blau) Next Xy 'Call S65_line(60 , 80 , 70 , 100 , Blau) Powerdown End 16: Cs = 0 Shiftout Dat , Clk , A1 , A1 Cs = 1 Return '################################## 'Start der S65-Ansteuerung '################################## Sub S65_init() Anfang: Res = 1 Waitms 10 Res = 0 'Reset Cs = 1 Clk = 1 Dat = 1 Rs = 1 Waitms 1 Res = 1 'Reset Ende Waitms 10 Cs = 1 'CS select, Start Waitms 1 Rs = 1 'RS high, Command ' Displayinitialisierung Restore Init1 For R1 = 1 To 12 Read A1 Gosub 16 Next Waitms 7 'diese Zeit ist sehr wichtig, sollte keinesfalls unterschritten werden Restore Init2 For R1 = 1 To 23 Read A1 Gosub 16 Next End Sub '################################## '# LCD Löschen # '################################## Sub S65_cls(byval Bcol As Word) Local Aa As Word Rs = 1 A1 = &HEF90 Gosub 16 A1 = &H0500 Gosub 16 A1 = &H0600 Gosub 16 A1 = &H0700 Gosub 16 Platz = 132 * 176 Rs = 0 For W1 = 0 To Platz A1 = Bcol Gosub 16 Next T Rs = 1 End Sub '###################################################### '# Setze Pixel -> Pset # '###################################################### Sub S65_pset(lx As Byte , Ly As Byte , Color As Word) Rs = 1 A1 = 1536 + Lx Gosub 16 A1 = 1792 + Ly Gosub 16 Rs = 0 Cs = 0 Shiftout Dat , Clk , Color , 0 Cs = 1 End Sub '###################################################### '# Line zeichnen Fehlerhaft ! # '###################################################### Sub S65_line(byval Lx1 As Byte , Byval Ly1 As Byte , Byval Lx2 As Byte , Byval Ly2 As Byte , Byval Color As Word) Local Xricht As Byte Local Yricht As Byte For Xricht = Lx1 To Lx2 For Yricht = Ly1 To Ly2 Call S65_pset(xricht , Yricht , Color) Next Yricht Next Xricht End Sub '##################################################### '# ACSII Zeichenausgabe # '##################################################### Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String * 1) Local R As Integer Local A As Byte Local B As Byte Local C As Long Local D As Byte Local E As Byte Local F As Byte Local G As Long Local Xpos As Byte Local Ypos As Byte Local Zeichen As String * 1 Xpos = 0 Ypos = 0 'For B = 1 To Len(lcd_text) ' Zeichen = Mid(lcd_text , R , 1) 'Hole char G = Asc(lcd_text) 'Bestimme Pos in Tabelle G = G - 32 G = G * 5 Readeeprom B , G 'Call Lcd_locate(lcd_posx , Lcd_posy) A = 8 '1.linie frei 'If Lcd_doublesize = 1 Then A = 32 'If Lcd_doublesize = 2 Then A = 16 For F = 1 To 5 C = 1 D = B 'Byte darf nicht verändert werden für 2. durchlauf For E = 1 To 8 Xpos = Lx + F Ypos = Ly + E A = D And 1 If A = 1 Then Call S65_pset(xpos , Ypos , Fcol) If A = 0 Then Call S65_pset(xpos , Ypos , Bcol) Shift D , Right , 1 Next Decr C G = G + 1 Readeeprom B , G Next ' Next End Sub 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% $eeprom Data &H00 , &H00 , &H00 , &H00 , &H00 ' "(space)" Data &H00 , &H06 , &H5F , &H06 , &H00 ' "!" Data &H07 , &H03 , &H00 , &H07 , &H03 ' """ Data &H24 , &H7E , &H24 , &H7E , &H24 ' "#" Data &H24 , &H2B , &H6A , &H12 , &H00 ' "$" Data &H63 , &H13 , &H08 , &H64 , &H63 ' "%" Data &H36 , &H49 , &H56 , &H20 , &H50 ' "&" Data &H00 , &H07 , &H03 , &H00 , &H00 ' "'" '40 Data &H00 , &H3E , &H41 , &H00 , &H00 ' "(" Data &H00 , &H41 , &H3E , &H00 , &H00 ' ")" Data &H08 , &H3E , &H1C , &H3E , &H08 ' "*" Data &H08 , &H08 , &H3E , &H08 , &H08 ' "+" Data &H00 , &HE0 , &H60 , &H00 , &H00 ' "," Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-" Data &H00 , &H60 , &H60 , &H00 , &H00 ' "." Data &H20 , &H10 , &H08 , &H04 , &H02 ' "/" Data &H3E , &H51 , &H49 , &H45 , &H3E ' "0" Data &H00 , &H42 , &H7F , &H40 , &H00 ' "1" '50 Data &H62 , &H51 , &H49 , &H49 , &H46 ' "2" Data &H22 , &H49 , &H49 , &H49 , &H36 ' "3" Data &H18 , &H14 , &H12 , &H7F , &H10 ' "4" Data &H2F , &H49 , &H49 , &H49 , &H31 ' "5" Data &H3C , &H4A , &H49 , &H49 , &H30 ' "6" Data &H01 , &H71 , &H09 , &H05 , &H03 ' "7" Data &H36 , &H49 , &H49 , &H49 , &H36 ' "8" Data &H06 , &H49 , &H49 , &H29 , &H1E ' "9" Data &H00 , &H6C , &H6C , &H00 , &H00 ' ":" Data &H00 , &HEC , &H6C , &H00 , &H00 ' ";" '60 Data &H08 , &H14 , &H22 , &H41 , &H00 ' "<" Data &H24 , &H24 , &H24 , &H24 , &H24 ' "=" Data &H00 , &H41 , &H22 , &H14 , &H08 ' ">" Data &H02 , &H01 , &H59 , &H09 , &H06 ' "?" Data &H3E , &H41 , &H5D , &H55 , &H1E ' "@" Data &H7E , &H09 , &H09 , &H09 , &H7E ' "A" Data &H7F , &H49 , &H49 , &H49 , &H36 ' "B" Data &H3E , &H41 , &H41 , &H41 , &H22 ' "C" Data &H7F , &H41 , &H41 , &H41 , &H3E ' "D" Data &H7F , &H49 , &H49 , &H49 , &H41 ' "E" '70 Data &H7F , &H09 , &H09 , &H09 , &H01 ' "F" Data &H3E , &H41 , &H49 , &H49 , &H7A ' "G" Data &H7F , &H08 , &H08 , &H08 , &H7F ' "H" Data &H00 , &H41 , &H7F , &H41 , &H00 ' "I" Data &H30 , &H40 , &H40 , &H40 , &H3F ' "J" Data &H7F , &H08 , &H14 , &H22 , &H41 ' "K" Data &H7F , &H40 , &H40 , &H40 , &H40 ' "L" Data &H7F , &H02 , &H04 , &H02 , &H7F ' "M" Data &H7F , &H02 , &H04 , &H08 , &H7F ' "N" Data &H3E , &H41 , &H41 , &H41 , &H3E ' "O" Data &H7F , &H09 , &H09 , &H09 , &H06 ' "P" '80 Data &H3E , &H41 , &H51 , &H21 , &H5E ' "Q" Data &H7F , &H09 , &H09 , &H19 , &H66 ' "R" Data &H26 , &H49 , &H49 , &H49 , &H32 ' "S" Data &H01 , &H01 , &H7F , &H01 , &H01 ' "T" Data &H3F , &H40 , &H40 , &H40 , &H3F ' "U" Data &H1F , &H20 , &H40 , &H20 , &H1F ' "V" Data &H3F , &H40 , &H3C , &H40 , &H3F ' "W" Data &H63 , &H14 , &H08 , &H14 , &H63 ' "X" Data &H07 , &H08 , &H70 , &H08 , &H07 ' "Y" Data &H71 , &H49 , &H45 , &H43 , &H00 ' "Z" Data &H00 , &H7F , &H41 , &H41 , &H00 ' "[" '90 Data &H02 , &H04 , &H08 , &H10 , &H20 ' "\" Data &H00 , &H41 , &H41 , &H7F , &H00 ' "]" Data &H04 , &H02 , &H01 , &H02 , &H04 ' "^" Data &H80 , &H80 , &H80 , &H80 , &H80 ' "_" ' "`" Data &H0C , &H12 , &H12 , &H0C , &H00 ' neu "°" statt "`" 'Data &H00 , &H03 , &H07 , &H00 , &H00 Data &H20 , &H54 , &H54 , &H54 , &H78 ' "a" Data &H7F , &H44 , &H44 , &H44 , &H38 ' "b" Data &H38 , &H44 , &H44 , &H44 , &H28 ' "c" Data &H38 , &H44 , &H44 , &H44 , &H7F ' "d" Data &H38 , &H54 , &H54 , &H54 , &H18 ' "e" Data &H08 , &H7E , &H09 , &H09 , &H00 ' "f" '100 Data &H18 , &HA4 , &HA4 , &HA4 , &H7C ' "g" Data &H7F , &H04 , &H04 , &H78 , &H00 ' "h" Data &H00 , &H00 , &H7D , &H00 , &H00 ' "i" Data &H40 , &H80 , &H84 , &H7D , &H00 ' "j" Data &H7F , &H10 , &H28 , &H44 , &H00 ' "k" Data &H00 , &H00 , &H7F , &H40 , &H00 ' "l" Data &H7C , &H04 , &H18 , &H04 , &H78 ' "m" Data &H7C , &H04 , &H04 , &H78 , &H00 ' "n" Data &H38 , &H44 , &H44 , &H44 , &H38 ' "o" Data &HFC , &H44 , &H44 , &H44 , &H38 ' "p" Data &H38 , &H44 , &H44 , &H44 , &HFC ' "q" '110 Data &H44 , &H78 , &H44 , &H04 , &H08 ' "r" Data &H08 , &H54 , &H54 , &H54 , &H20 ' "s" Data &H04 , &H3E , &H44 , &H24 , &H00 ' "t" Data &H3C , &H40 , &H20 , &H7C , &H00 ' "u" Data &H1C , &H20 , &H40 , &H20 , &H1C ' "v" Data &H3C , &H60 , &H30 , &H60 , &H3C ' "w" Data &H6C , &H10 , &H10 , &H6C , &H00 ' "x" Data &H9C , &HA0 , &H60 , &H3C , &H00 ' "y" Data &H64 , &H54 , &H54 , &H4C , &H00 ' "z" Data &H08 , &H3E , &H41 , &H41 , &H00 ' "{" '120 Data &H00 , &H00 , &H7F , &H00 , &H00 ' "|" Data &H00 , &H41 , &H41 , &H3E , &H08 ' "}" Data &H02 , &H01 , &H02 , &H01 , &H00 ' "~" Data &H3F , &H21 , &H21 , &H21 , &H21 ' "[" Data &H21 , &H21 , &H21 , &H21 , &H21 Data &H21 , &H21 , &H21 , &H21 . &H3F ' "]" Data &H3F , &H3F , &H3F , &H3F , &H3F Data &H3F , &H00 , &H00 , &H00 , &H00 $data