Hallo Xaver,
ich verwende auch das 4x27-Wintek-Display von Pollin. Funktioniert eigentlich problemlos, ich bin sehr zufrieden.
Ich betreibe es mit der "lcd4e2.lbx", wie Ratber schon schrieb, sind dann die Belegungen allerdings festgelegt, es wird der komplette Port B (außer B.1) verwendet.
Du findest die genaue Beschaltung der Port´s in der Bascom-Hilfe.
Der Betrieb parallel zum ISP-Adapter ist problemlos. Zwar zeigt das Display ein paar wirre Zeichen während des Flashens, aber sonst passiert nix.
Das nachfolgende Programm habe ich geschrieben als Testprogramm (Anzeige Portstatus) für mein selbstgebautes Experimentierboard (Mega 8, I2C-Porterweiterung), es sollte aber auch bei Dir funktionieren.
Wenn der Bus nicht aktiv ist, wird der I2C-Status automatisch auf "Fault" gesetzt, der Rest vom Programm läuft trotzdem.
Vielleicht hilft´s Dir ja weiter, viele Grüße
Torsten
Code:'***************************************** ' Test Program for Development Board ' Designed for Atmel AVR Mega 8 ' Bascom Version 1.11.7.4 ' 24.07.2005 T. Gietenbruch ' ' Hardware Configuration: ' -> LCD-Display at Port B ' -> Switches and LED´s at Port C ' -> Switches and LED´s at Port D ' -> I2C-Bus: SDA at PC4 / SCL at PC5 ' -> PCF8574P 8-Bit-Extension at adress 64 ' '****************************************** '========================================== ' System Configurations '========================================== 'Definition for Mega 8 $regfile "m8def.dat" $crystal = 8000000 '$baud = 9600 'Library for I2C-Bus $lib "i2c_twi.lbx" 'Library for 2-Processor LCD-Display $lib "Lcd4e2.lbx" 'Configuration of LCD-Display Config Lcd = 20 * 4 'Port Configurations Config Portc = Input Config Portd = Output '========================================== ' Declarations '========================================== 'Display part selection - variable name is fixed in library! Dim ___lcde As Byte 'I2C-Bus variables Dim I2c_ok As Bit Dim I2c_state As String * 10 Dim Portpcf_1_out As Byte Dim Portpcf_1_in As Byte 'Program variables Dim Count As Integer Dim T_count As Integer Dim Led_no As Byte '========================================== ' Initialising '========================================== 'I2C-Bus write adress for PCF8574P - selectable with jumpers Const Pcf1w_adr = 64 'Read adress is always write adress + 1 Const Pcf1r_adr = Pcf1w_adr + 1 'Initial values Portpcf_1_in = &B11111111 Portpcf_1_out = &B10101010 Portd = &B11111111 I2c_ok = 0 Count = 0 Led_no = 0 '========================================== ' Main Program: Building LCD Display Mask '========================================== 'Selection of upper LCD segment ___lcde = 0 'All following LCD commands are for the upper two lines Cls 'Text for 1st line Locate 1 , 1 Lcd "**** ATMEL RISC MEGA 8 ****" 'Text for 2nd line Locate 2 , 1 Lcd "**** DEVELOPMENT BOARD ****" 'Switching the cursor off Cursor Off 'Selection of lower LCD segment ___lcde = 1 'All following LCD commands are for the lower two lines Cls 'Text for 3rd line Locate 1 , 1 Lcd " I2C-Bus:" 'Text for 4th line Locate 2 , 1 Lcd " PC: PD:" 'Switching the cursor off Cursor Off '========================================== ' Main Program: Initializing I2C-Bus '========================================== 'Initializing I2cinit 'Print state "Search" ___lcde = 1 Locate 1 , 12 Lcd "Search..." 'Check if I2C-Bus is OK While Count < 20 And I2c_ok = 0 Incr Count I2cstart I2cwbyte Pcf1w_adr If Err = 1 Then I2c_state = "Fault" I2cstop Else I2c_ok = 1 I2c_state = "OK" I2cwbyte Pcf1w_adr I2cwbyte Portpcf_1_out End If Wend 'Print final state of I2C-Bus Locate 1 , 12 Lcd " " Locate 1 , 12 Lcd I2c_state '========================================== ' Main Program: Monitoring Port States '========================================== Do 'Read and print PIN state of PCF8574P If I2c_ok = 1 Then If T_count > 30 Then Toggle Portpcf_1_out I2cstart I2cwbyte Pcf1w_adr I2cwbyte Portpcf_1_out T_count = 0 End If I2cstart I2cwbyte Pcf1r_adr I2crbyte Portpcf_1_in , Ack 'I2cstop Locate 1 , 18 Lcd Bin(portpcf_1_in) End If If Count > 5 Then Toggle Portd.led_no Count = 0 Incr Led_no If Led_no > 7 Then Led_no = 0 End If End If 'Print PIN state of Port C Locate 2 , 6 Lcd Bin(pinc) 'Print PIN state of Port D Locate 2 , 18 Lcd Bin(pind) 'Toggle Live Bit Incr Count Incr T_count 'End of main program endless loop Loop







Zitieren

Lesezeichen