grafisk LCD-bibliotekene

A

abbas1707

Guest
hei,
kanne any1 gi meg en link hvor jeg kan laste ks0108 baserte grafiske LCD biblioteker og annet nyttig materiale eller programvare??

 
hvis du ser på sourceforge du kan se mange prosjekter som serdisplib og andre, inneholder de et vell av informasjon om LCD-skjermer, også er det denne

Code:'************************************************* ***********************

'GLIPICW.BAS Grafisk program for bruk med en KS0108 (eller kompatibel)

'grafiske LCD kontrolleren tilkoblet en Microchip (TM) PIC 16F877

'Written in MELabs PicBasicPro (TM) 3,32 Ver

'Beta versjon 0.8.0

'================== IKKE for kommersiell bruk =========================== ==

'

'Forfatter: Ranjit Diol - COMPSys LLC, mars 2000

'(C) Copyright Ranjit Diol, 2001

'

'DISCLAIMER: Denne filen blir utgitt som ikke-commericial

"Freeware.
Det blir leveres "SOM DEN ER", verken forfatter

'Eller COMPSys LLC skal holdes ansvarlig for eventuelle skader forårsaket

'Av bruken.

'

'LISENS: Dette programmet kan brukes i sin helhet eller

'I deler innenfor enkelte andre ikke-kommersiell anvendelse så lenge

'Som forfatter er gitt kreditt for disse delene benyttes.

'

'Kontakt: rsdiol (at) compsys1.com for mer informasjon

'

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

"VIKTIG, Vær oppmerksom på følgende

"Dette programmet forutsetter at du har en 64Kbit ekstern EEPROM koblet

"via I2C.
Uten at du kun vil være i stand til å sende bilder direkte

'til LCD-skjerm og ikke kunne lagre dem - Se readme.txt

"for Windows GLiPIC grensesnittet.

'

'Juster PIN oppdrag som er nødvendig for prototype din

'Dette ble testet ved hjelp av en 20MHz XTAL hvis du bruker en annen OSC fart

"du må gjøre noen tilpassing i" strobe "subroutine.

'************************************************* ***********************DEFINE ONINT_USED 1 'Nødvendig hvis du bruker ISP

DEFINE OSC 20 'OSC hastighet, må du kanskje justere "strobe"

'rutine's e_pause konstant for andre hastigheter

ADCON1 = 7 'Gjør alle pinnene digitalt, kan du justere etter behovSPBRG = 0'************ MERK ***********

RCSTA = 0 'Dette er nødvendig hvis du bruker

TXSTA = 2 'Shane Tolmie's bootloader (PICLoader)

'*****************************dat VAR PORTD "LCD buss Pins 7-14 LSB-MSB

SCL VAR PORTC.3 'I2C SCL for ext eeprom

SDA VAR PORTC.4 'I2C SDA for ext eeprom

in_pin VAR PORTC.7 'Serial input pin

out_pin VAR PORTC.6 'Serial output pin

e VAR PORTC.0 "Enable pin på LCD

cd VAR PORTC.1 "Data / Command Pin 4 på LCD

rw VAR PORTC.2 'Read / Write Pin 5 på LCD

CS1 VAR PORTB.1 'ChipSelect1 Pin 15 på LCD

CS2 VAR PORTB.2 'ChipSelect2 Pin 16 på LCD

RST VAR PORTC.5 'Nullstill Pin 17 på LCD'Sett pinnene for utdata

TRISB.0 = 0

TRISB.1 = 0

TRISB.2 = 0

TRISD = 0

TRISC.0 = 0

TRISC.1 = 0

TRISC.2 = 0

TRISC.3 = 0

TRISC.4 = 0

TRISC.5 = 0'Konstanter brukt

ser_baud CON 32 '19200 baud serout / serin

CTL CON $ A0 'EEPROM kontrollkoden

rad CON $ b8 "LCD side 0

last_row CON $ bf "LCD side 7

col CON $ 40 'Linje byte posisjon 0.

last_col CON 63 'Siste kolonne (1-64)

first_col CON 0 'første kolonne

max_col CON 128 'Siste kolonne (1-127)

max_line CON 8 'Linje 8 (basert på 1-8)

max_pos CON 64 'Kolonne 64 stilling per side (1-64)

cr CON 13 'CR for serout

lf CON 10 'LF for serout

disp_on CON $ 3f 'LCD-skjermen på

disp_off CON $ 3e 'LCD skjerm OFF

disp_ram CON $ C0 'Ram Display 0 (Side 0 på toppen av skjermen)

blank CON $ 00 'Blank tegn

e_pause CON 10 'Pauseus 6 for Strobe rutine'Word variabler brukt

eepaddr VAR WORD

addr VAR WORD'Arrays brukt

in_array VAR byte [32]

in_ctl VAR byte [8]'Byte variabler brukt

buff_count VAR BYTE 'buffer teller

hex_nibble VAR BYTE "hex bite fra serin

in_ascii VAR BYTE 'ASCII tegn fra serin

buf_cnt VAR BYTE 'buffer counter

byte_pos VAR BYTE 'å holde styr på en byte posisjon

in_byte VAR BYTE 'Innkommende byte

tmp VAR BYTE Midlertidige var

indeksen VAR BYTE 'Index for matriser

j VAR BYTE 'General counter

k VAR BYTE 'General counter

linje VAR BYTE 'En LCD rad

delay VAR BYTE "Execution forsinkelse, brukes med" pause "'Initialize variabler

hex_nibble = 0

byte_pos = 0

forsinkelse = 10

in_byte = 0

tmp = 0

index = 0'Reset LCD

dat = 0 'Clear PORTD

cd = 0

rw = 0

e = 0

CS1 = 1

CS2 = 0

RST = 1

pause 100 'Let ting stabiliserer

RST = 0

pause 10 'Nullstill LCD

RST = 1

pause 500"Gå over delrutinene til hovedprogrammet

goto main'**** (GO) SUB ETTERSYN ****strobe:

e = 1

pauseus e_pause

e = 0

returnclearall:

cd = 0 'Kommando-modus

dat = disp_off 'Display Off

gosub strobe

CS1 = 1

CS2 = 0

for index = 1-2

for j = rad last_row

cd = 0 'Kommando-modus

gosub strobe "Skriv inn data

dat = col 'Kolonne-adresse = 0

gosub strobe

dat = j

gosub strobe

cd = 1 'skrive-modus

for k = first_col til last_col

dat = blank

gosub strobe

neste

neste

swap CS1, CS2

nesteCS1 = 0

CS2 = 1

cd = 0

dat = rad

gosub strobe

dat = disp_ram 'Ram line 0

gosub strobe

dat = col

gosub strobe

dat = disp_on 'vises på

gosub strobe

CS1 = 1

CS2 = 0

dat = rad

gosub strobe

dat = disp_ram 'Ram line 0

gosub strobe

dat = col

gosub strobe

dat = disp_on 'vises på

gosub strobe

cd = 1 'Set Data kommando

CS1 = 1 'Venstre side aktive

CS2 = 0returninit: 'Initialiseringcd = 0 'Set kommando modus

CS1 = 1 'Venstre side på

CS2 = 0 'Høyre side av

for index = 1-2

dat = disp_off 'Display Off

dat = disp_ram 'Ram line 0

gosub strobe "Skriv inn data

dat = col 'Y-adresse = 0

gosub strobe

dat = rad 'Page = 0

gosub strobe

dat = disp_on 'Vis On

gosub strobe

swap CS1, CS2

neste

CS1 = 1

CS2 = 0return'**** Place tegn på LCD Rutine *****

'Place byte data på lcd forutsetter in_byte, byte_pos og linje (linje)

'Char posisjon på LCD byte_pos = 0-127 (PCB), ROW 0-7 (vert)putbyte:

dat = in_byte 'Vise byte

gosub strobe

byte_pos = byte_pos 1 'increment stillingNå er det noen LCD huset rengjøring og justere tellere

hvis byte_pos = max_pos deretter

CS1 = 0

CS2 = 1

cd = 0

dat = col

gosub strobe

dat = disp_ram

gosub strobe

dat = rad linje

gosub strobe

cd = 1

endif

hvis byte_pos = max_col deretter 'Sjekk om

linje = linje 1 'New Line

hvis linjen = max_line deretter

linje = 0

endif

byte_pos = 0 'Tilbakestill byte_pos

CS1 = 1

CS2 = 0

cd = 0

dat = col

gosub strobe

dat = rad linje

gosub strobe

dat = disp_ram

gosub strobe

cd = 1

endifreturn'***** Konverter innkommende ascii å hex byte Rutine *****

find:

Lookdown in_array [index], [ "0123456789abcdef"], hex_nibble

return'===============================

'**** BEGIN hovedprogrammet ******

'===============================viktigste:

gosub init 'Initialize LCD

gosub clearall 'Fjern alle sider

serout2 out_pin, ser_baud, [ "Load image ..."]

goto termlogo: gosub init 'Initialize LCD

gosub clearall 'Fjern alle sider
'**** Vise bilder i EKSTERN 64Kbit EEPROM VIA I2C *****'Load åpning skjermen fra eeprom forutsatt en 64Kbit eeprombyte_pos = 0

linje = 0

for addr = 0 til 8192

I2CREAD SDA, SCL, CTL, Adr, [in_byte]

gosub putbyteif (addr = 1024) OR (addr = 2048) OR (addr = 3072) OR (addr = 4096) OR (addr = 5120) OR (addr = 6144) OR (addr = 7168) OR (addr = 8192) så

pause 4000gosub init

gosub clearall

endif

neste

pause 4000

gosub init

gosub clearall"goto logo Fortsett looping inifitum!'********************************************'Terminal Subroutine

term: 'Forutsetter Hjem Stilling"Setup variabler

j = 0

index = 0

k = 0

'line = 0

addr = 0

in_ascii = 0

buff_count = 32

forsinkelse = 10

'addr = 0

'byte_pos = 0"Få startparametere

get_param:

addr = 0

byte_pos = 0

linje = 0

serin2 in_pin, ser_baud, [vente ("*"), STR in_ctl \ 9]

for index = 0-8

Lookdown in_ctl [index], [ "0123456789abcdef"], hex_nibble

in_ctl [index] = hex_nibble

neste

forsinkelse = (in_ctl [7] <<4) | in_ctl [8]

buff_count = (in_ctl [1] <<4) | in_ctl [2]

addr.byte1 = (in_ctl [3] <<4) | in_ctl [4]

addr.byte0 = (in_ctl [5] <<4) | in_ctl [6]

buf_cnt = (buff_count - 1)

eepaddr = addr

j = in_ctl [0]

hvis j = 3 så lcd_loop 'Display direkte på LCD

hvis j = 1 og deretter eep_loop 'Load ext eeprom

hvis j = 2 så logoen "Vis bilder loop

goto get_param

eep_loop:serin2 in_pin, ser_baud, 5000, get_param, [vente ("]"), STR in_array \ buff_count] 'Vent] og lasten in_arrayfor index = 0 til (buff_count - 1)

gosub finne 'Get røye og plass i array

in_array [index] = hex_nibble

nestefor index = 0 til (buff_count - 1) Trinn 2

in_byte = (in_array [index] <<4) | (in_array [index 1]) 'Form den heksadesimale tall MSB-LSB

I2CWRITE SDA, SCL, CTL, Adr, [in_byte]

pause 5

addr = addr 1

neste

goto eep_looplcd_loop:

serin2 in_pin, ser_baud, 5000, get_param, [vente ("]"), STR in_array \ buff_count] 'Vent] og lasten in_arrayfor index = 0 til (buff_count - 1)

gosub finne 'Get røye og plass i array

in_array [index] = hex_nibble

nestefor index = 0 til (buff_count - 1) Trinn 2

in_byte = (in_array [index] <<4) | (in_array [index 1]) 'Form den heksadesimale tall MSB-LSB

gosub putbytenestegoto lcd_loop'*********** END ************

slutt

'**** END OF hovedprogrammet ****

 
http://www.edaboard.com/viewtopic.php?t=276658&highlight=cv12864b

du kan ha en titt her også!

 

Welcome to EDABoard.com

Sponsor

Back
Top