STK200 4 Bit-LCD-Mode Adapter

DH1AAD ,Ingo Gerlach , 22.11.2003, e-Mail : E-Mail bitte an:Ingo Gerlach

1.0 Info

Hier nun eine Kurzbeschreibung zu dem im Funkamateur 04 /2003 Adapters. Genauere Infos bitte dem Heft entnehmen.
Ältere Hefte können dort im Funkamateur-Shop jederzeit zu günstigen Konditionen nachbestellt werden.

1.1 Schaltungsbeschreibung

Bei der Ansteuerung im 4-Bit Modus, werden die Daten über die Leitungen D4-D7 zum Display übertragen. Da jetzt ja nur noch 4-Bits zur Verfügung stehen, muss die Übertragung in zwei Schritten vorgenommen werden. Dazu wird zuerst das höherwertige Nibble (MSB) übertragen und im zweiten Schritt dann das niederwertige (LSB). z.B. Übertragung des Buchstabens "A"

A 	= Ascii 65 	= 0b10000001
MSB = 1000 Übertragung 1. Nibble LSB = 0001 Übertragung 2. Nibble

Die Bedeutung der anderen Steuerleitungen RS,RW und Enable ist identisch. über die Leitung RS wird ausgewählt, ob ein Befehl (RS low) oder ein Datenbyte (RS high) zum Display geschickt wird. Die Leitung RW gibt an ob zum Display geschrieben wird (RW low) oder vom Display gelesen wird (RW high) . Enable übernimmt dann den Befehl bzw. das Datenbyte in das Display wenn hier das Signal auf high ist.


Die Belegung der Port Pins gibt die Tabelle wieder

1.2 Schaltung

2.0 Software

Um das Display anzusteuern habe ich verschiedene vorhandene Bibliotheken angepasst, so das je nach verwendeter Schaltung, nur die entsprechende Bibliothek per Include in das Assembler-File eingebunden werden muss.
Folgende Funktionen stehen zur Verfügung.

Ein Beispiel steht in "lcd_test.asm" zur Verfügung. Anbei hier ein Auszug aus dem Assembler File.

;***********************************************************
;* File Name		: lcd_test.asm
;* Title			: LCD Ansteuerung 4  Bit Mode 
;* 			        : mit Adapterplatine
;* Version 		    : 1.0 / 29.11.2002 Start 
;* Target MCU		: AT90S8515
;***********************************************************

.include "8515def.inc"

; LCD - Ports und Defs 
; 4BIT-LCD (abhaengig von CPU und Adapter)
; Dieser Block befindet sich im Include-File, barucht also nur rauskopiert werden.
;---------------------------------------------------------------------------
.equ	lcd_port	= PORTD	; Datenport
.equ	lcd_ddr		= DDRD	; DataDirectionRegister
.equ	lcd_rs		= 1		; Port 1 Variante A , 4 Variante B
.equ	lcd_en		= 3		; Port 3 Variante A , 5 Variante B
.equ	lcd_rw		= 2		; Port 2 Variante A , 6 Variante B
.equ	lcd_led		= 0		; Port 0 Variante A , 7 Variante B
.def	lcd_pos		= r23	; Position 
.def	lcd_byte	= r24	; Auszugebendes Byte
.def 	lcd_temp	= r25
.def 	lcd_tim1	= r26
.def 	lcd_tim2	= r27

;***** Interrupt vector table

reset:	rjmp	main			; Main rotine
.....
	reti				; Analog Comparator Interrupt handle

....

;***************************************************************************
;*
;* main
;*     
;***************************************************************************
main:	ldi	temp, LOW(RAMEND)	; StackPointer Setup
	out	SPL, temp		; Initialize SPL . nicht 90S1200
	ldi	temp, HIGH(RAMEND)	; nur 90S8515
	out	SPH, temp		; Initialize SPH

	rcall	LCD_reset		; Display initialisieren 
	rcall	LCD_clear		; Display loeschen 
	rcall	LCD_cuon		; Cursor an
	rcall	LCD_ledon		; Beleuchtung ein 

	rcall	Show_Info_Line	; Info's ausgeben

;	rcall	LCD_cuoff		; Cursor aus
;	rcall	LCD_ledoff		; Beleuchtung aus 
;	rcall	lcd_clear		; Display l�schen

forever: rjmp 	forever


;***************************************************************************
;* I N C L U D E S , je nach Schaltung lcd4a.inc,lcd4b.inc oder lcd8.inc
;***************************************************************************

.include "lcd4a.inc"		; Include's LCD 4 Bit - Mode ,DB = LowNibble

3.0 Download

lcd4a.inc
lcd4b.inc
lcd8.inc

4.0 Links und Literatur


© Ingo Gerlach, DH1AAD, 22.11.2003
E-Mail bitte an:Ingo Gerlach

Counter