Sourcecode
LCD

LCD Display 24x8 Zeilen

Mitsubishi M50530

Samsung 2138A



LCD an AVR Atmel ATMega8 und ATMega8515

========================================

Download ASM Sourcecode [8 KB]


Download Bascom Sourcecode [5 KB]

========================================

M50530 



M50530 -> Description -> Plug10 -> ATMega8  -> Comment

M50530 -> Description -> Plug10 -> ATMega8  -> Comment

-------+--------------+---------+-----------+--------------------
Pin 01 -> Ground      ->   ->          ->
Pin 02 -> Data0       ->   ->          ->
Pin 03 -> Data1       ->   ->          ->
Pin 04 -> Data2       ->   ->          ->
Pin 05 -> Data3       ->   ->          ->
Pin 06 -> Data4       ->  9  -> 23 PC0   ->
Pin 07 -> Data5       -> 10 -> 24 PC1   ->
Pin 08 -> Data6       ->  7 -> 25 PC2   ->
Pin 09 -> Data7       ->  8 -> 26 PC3   ->
Pin 10 -> EX          ->  5 ->  6 PD4   ->
Pin 11 -> R/W         ->   ->          -> Im Dsp: R/W - Gnd gebrückt
Pin 12 -> OC2         ->  6 -> 28 PC5   ->
Pin 13 -> OC1         ->  3 -> 27 PC4   ->
Pin 14 -> 8,2 volt    ->  4 ->          ->
Pin 15 -> 5 volt      ->  1 ->          ->
Pin 16 -> Ground      ->  2 ->          ->

EX Signal Time 200ns


M50530 Rückseite 



'*******************************************

'*******************************************

';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
';;        LCD-Routinen für M50530              ;;
';;        =======================              ;;
';;                                             ;;
';; Titel     : 4 Bit LCD M50530                ;;
';; Autor     : Arno Schweißinger               ;;
';; Datum     : 28.01.2007                      ;;
';; MC        : AtMega 8515 1MHz                ;;
';; Stromversorgung: MC 5V; LCD 5V & 8,2V       ;;
';;                                             ;;
';; 4bit-Interface  M50530                      ;;
';;                                             ;;
';; DB4:            PC0                         ;;
';; DB5:            PC1                         ;;
';; DB6:            PC2                         ;;
';; DB7:            PC3                         ;;
';; OC1:            PC4                         ;;
';; OC2:            PC5                         ;;
';; EX:             PC6                         ;;
';;                                             ;;
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
'*****************************************

$regfile = "m8515.dat"
$crystal = 1000000                                          'CPU 1MHz

Declare Sub Lcd_m50530_init()                               'declare the SUB program
Declare Sub Lcd_m50530_chr(ch As Byte)
Declare Sub Lcd_m50530_command(command As Byte)
Declare Sub Lcd_m50530_gotoxy(lcd_x As Byte , Lcd_y As Byte)
Declare Sub Lcd_m50530_clear()
Declare Sub Lcd_m50530_enable

Lcd_m50530 Alias Portc
Config Lcd_m50530 = Output
_oc1 Alias 4
_oc2 Alias 5
_ex Alias 6

Dim I As Byte                                               ' Zählschleife
Dim Lcd_temp As Byte                                        ' Temp im Unterprogramm
Dim Lcd_parameter As Byte                                   ' wird an LCD gesendet
Dim _x As Byte                                              ' Cursor x Position
Dim _y As Byte                                              ' Cursor y Position

'-------------------------
'      Begin Hauptprogramm
'-------------------------

Call Lcd_m50530_init

_x = 10 : _y = 7
Call Lcd_m50530_gotoxy(_x , _y)

For I = 33 To 48
 Call Lcd_m50530_chr(i)
Next I

Do
 Toggle Portb.0                                            ' Takt für Spannungskaskade
Loop
End                                                         ' ende Hauptprogramm

'-------------------------
'      End Hauptprogramm
'-------------------------
'-------------------------------------------------------------------------------
Sub Lcd_m50530_init

 Lcd_parameter = $d8                                       'set function mode (SF) 0b11011000
 Call Lcd_m50530_command(lcd_parameter)                    '4bit-Modus einstellen  11 -4/8bit-FONT-2xDUTY-2xRAM

 Lcd_parameter = $50                                       'set entry mode (SE)    0b01010000
 Call Lcd_m50530_command(lcd_parameter)                    'Cursor selbst setzen

 Lcd_parameter = $33                                       'set display mode (SD)  0b00110011
 Call Lcd_m50530_command(lcd_parameter)                    'Display ein, Cursor nicht anzeigen

 Call Lcd_m50530_clear
End Sub

'-------------------------------------------------------------------------------
Sub Lcd_m50530_chr(ch As Byte)
 Lcd_temp = Ch
 Shift Lcd_temp , Right , 4
 Set Lcd_temp._oc2
 Lcd_m50530 = Lcd_temp
 Call Lcd_m50530_enable

 Lcd_temp = Ch And $0f
 Set Lcd_temp._oc2
 Lcd_m50530 = Lcd_temp
 Call Lcd_m50530_enable
 Waitus 20
End Sub

'-------------------------------------------------------------------------------
Sub Lcd_m50530_command(command As Byte)
 Lcd_temp = Command
 Shift Lcd_temp , Right , 4
 Reset Lcd_temp._oc1
 Reset Lcd_temp._oc2
 Lcd_m50530 = Lcd_temp
 Call Lcd_m50530_enable

 Lcd_temp = Command And $0f
 Reset Lcd_temp._oc1
 Reset Lcd_temp._oc2
 Lcd_m50530 = Lcd_temp
 Call Lcd_m50530_enable
 Waitus 20
End Sub
'-------------------------------------------------------------------------------
Sub Lcd_m50530_gotoxy(lcd_x As Byte , Lcd_y As Byte)

 Select Case Lcd_y
   Case 1 : Lcd_parameter = $00
   Case 2 : Lcd_parameter = $40
   Case 3 : Lcd_parameter = $80
   Case 4 : Lcd_parameter = $c0
   Case 5 : Lcd_parameter = $18
   Case 6 : Lcd_parameter = $58
   Case 7 : Lcd_parameter = $98
   Case 8 : Lcd_parameter = $d8
   Case Else : Lcd_parameter = $00
 End Select

 Lcd_parameter = Lcd_parameter + Lcd_x
 Decr Lcd_parameter
 Lcd_temp = Lcd_parameter
 Shift Lcd_temp , Right , 4
 Set Lcd_temp._oc1
 Set Lcd_temp._oc2
 Lcd_m50530 = Lcd_temp
 Call Lcd_m50530_enable

 Lcd_temp = Lcd_parameter And $0f
 Set Lcd_temp._oc1
 Set Lcd_temp._oc2
 Lcd_m50530 = Lcd_temp
 Call Lcd_m50530_enable
 Waitus 20
End Sub
'-------------------------------------------------------------------------------
Sub Lcd_m50530_clear
 Lcd_parameter = $01                                       ' 0b00000001    Display löschen
 Call Lcd_m50530_command(lcd_parameter)
 Waitms 2
End Sub
'-------------------------------------------------------------------------------
Sub Lcd_m50530_enable
 Set Lcd_m50530._ex
 Waitus 1
 Reset Lcd_m50530._ex
End Sub
';----------------------------------- Ende Dispay ----------------------------------------