ALCD

Fra Kommunikation-IT Holstebro HTX
Skift til: navigering, søgning

Modulet ALCD er lavet til at skrive ud på et alphanummerisk display, hvor man i softwaren angiver størrelsen af displayet.

Hvis man kun har brug for tal, så kan man anvende LCD-modulet, der kan styre et 1 x 16 ciffer LCD-display.

Modulet består af Hardware til modulet og Software til modulet.

Print med 2 * 8 display, 2 * 16 og 4 * 20 display display

Vi har 3 grundlæggende ALCD display, hvor der er lavet board så de kan kobles direkste på PIC-udviklingsboardet, de 3 boards ligger i en ZIP-fil med diagrammer og Layout

Der er et sæt taster og LED på nogle af boardene, hvor det kun er porte med 8 bit der kan anvende disse.

På nogle displays ligger der komponenter under displayet. De skal selvfølgelig monteres først, og man skal være opmærksom på om de skal vendes korrekt (dioder).

Print af ALCD 2x8 Display

Software modulet ALCD.jal

Opsætning af ALCD

ZIP-fil med kode og eksempler

Når du har hentet modulet ALCD ned på din computer, vil du sørge for at dit ALCD display er koblet rigtig sammen. Du skal sammen med dit PICkit anvende PICbordet "16f684". ALCD displayet virker kun hvis det bliver koblet på PortC.

Opsaeting.jpg

Hvis filerne er sat ind i de rigtige mapper og du har læst filen "ALCD_Demo_2_16.hex" og du bruger et 2x16 ALCD display vil du kunne se at dit display vil skrive en masse tal ud som set på billedet.

Initialisering og grundlæggende koder

Den grundlæggende initialisering af displayet sker, når man includer ALCD:

include ALCD

Det kan stadig være en god ide at slette alt indhold i displayet. Det skal ske som en del af initialiseringen, eller man kan gøre det inden man starter på et skrive noget nyt ud.

ALCD_clear_screen()
ALCD_cursor_position(line,pos)

Denne kode vil styrer hvor på dit display du vil skrive.

Displayet er delt op i 2 linjer, hvis du skriver 0 istedet for "line" vil du skrive på den første linje. Hvis du vil skrive på den anden linje skal du skrive 1 istedet for "line".

På pladsen "pos" kan du styrer hvilket felt du vil skrive på. Der kan være 8 eller 16 felter så du kan skrive enten 0-7 eller 0-15.

ALCD_write_char( char ):

Vil udskrive det tegn som du skriver som char.

Hvis du skriver ALCD_write_char("E") vil den skrive E ud på dit bord. Men hvis du istedet skriver ALCD_write_char(69) vil også udskrive tegnet E ud på bordet.

Special karakterer

Displayet indeholder lidt ekstra hukommelse, så man kan danne sine egne karakterer. Der er 64 bytes som er organiseret i 8 blokke med 8 bytes til hver karakter, hvor hver byte kun kan rumme 5 bit, så karakteren skal dannes af en 5x8 matrik som illustreret her:

x x x x x   31
x 1
x 1
x 2
x 4
x 8
x 8
x 8

Karakteren der her er skitseret er et 7-tal, og de tal der står ud for hver linje er de værdier der skal lagres i de bytes som ligger i karakterhukommelsen.

For at skrive den viste karakter ind på adresse 3 i karakter-rammen, så afvikles følgende kode:

  ALCD_CG(24)
  ALCD_write_char(31)
  ALCD_write_char(1)
  ALCD_write_char(1)
  ALCD_write_char(2)
  ALCD_write_char(4)
  ALCD_write_char(8)
  ALCD_write_char(8)
  ALCD_write_char(8)

De 8 karakterer man selv kan generere ligge dubleret 2 gange i karaktersættet, så man kan skrive dem ud med to forskellige karakterer. Sammenhængen mellem karakter-ram-adresser og karaktersættet er vist i tabellen her under:

Karakter-ram Tegn
0-7 0 og 8
8-15 1 og 9
16-23 2 og 10
24-31 3 og 11
32-39 4 og 12
40-47 5 og 13
48-55 6 og 14
56-63 7 og 15

Rutiner til tal-udskrift

Navn Talområde Tal-type Positioner
ALCD_Dec_1(tal) 0 til 9 Byte 1
ALCD_Dec_2(tal) 0 til 99 Byte 2
ALCD_Dec_3(tal) 0 til 255 Byte 3
ALCD_Dec_2_lz(tal) 00 til 99 Byte 2
ALCD_Dec_3_lz(tal) 000 til 255 Byte 3
ALCD_sDec_2(tal) -9 til 9 SByte 2
ALCD_sDec_3(tal) -99 til 99 SByte 3
ALCD_sDec_4(tal) -128 til 127 SByte 4
ALCD_Dec2_3(tal) 0 til 999 Word 3
ALCD_Dec_4(tal) 0 til 9999 Word 4
ALCD_Dec_5(tal) 0 til 65535 Word 5
ALCD_Dec2_3_lz(tal) 000 til 999 Word 3
ALCD_Dec_4_lz(tal) 0000 til 9999 Word 4
ALCD_Dec_5_lz(tal) 00000 til 65535 Word 5
ALCD_wDec(tal, pos) 0 til 65535 Word 1-5 (angivet i pos)
ALCD_swDec(tal, pos) -32768 til 32767 sWord 2-6 (angivet i pos)
ALCD_wDecP(tal, pos, dec) * 0 til 65535 Word 3-6 (angivet i pos)
ALCD_swDecP(tal, pos, dec) * -32768 til 32767 sWord 4-7 (angivet i pos)
ALCD_dwDec(tal, pos) 0 til 4294967295 DWord 1-10 (angivet i pos)
ALCD_sdwDec(tal, pos) -2147483648 til 2147483647 SDWord 2-11 (angivet i pos)
ALCD_dwDecP(tal, pos, dec) * 0 til 4294967295 DWord 3-11 (angivet i pos)
ALCD_sdwDecP(tal, pos, dec) * -2147483648 til 2147483647 SDWord 4-12 (angivet i pos)
_ALCD_Hex(tal) 0 til F Byte 1
ALCD_Hex_2(tal) 00 til FF Byte 2
ALCD_Hex_4(tal) 0000 til FFFF Word 4
ALCD_Bin_8(tal) 00000000 til 11111111 Byte 8
ALCD_Bin_16(tal) 0000000000000000 til 1111111111111111 Word 16

* Den måde der vises decimaler på er at man angiver det antal decimaler der skal vises, og sender et heltal til funktionen, således at hvis tal er 1234 og dec er 2, så bliver visningen 12,34.

Interface fil til ALCD

I ALCD_pin.jal defineres størrelsen af displayet og hvilke ben det er forbundet til ved:

const byte ALCD_ROWS    =  2           -- LCD with 2 line
const byte ALCD_CHARS   =  16          -- and 16 characters per line
--
alias     ALCD_en       is pin_C5      -- data trigger
alias     ALCD_rs       is pin_C4      -- command/data select.
--
alias     ALCD_dataport is PortC_low   -- 4 databits
--
alias     ALCD_en_dir       is pin_C5_direction
alias     ALCD_rs_dir       is pin_C4_direction
--
alias     ALCD_dataport_dir is PortC_low_direction

ALCD_ROWS angiver hvor mange linjer der er i det tilkoblede display og ALCD_CHARS angiver hvor mange karakterer der er på hver linje.

ALCD_en og ALCD_rs angiver hvilke pins de to styreben er koblet op på, hvis man flytter dem, skal man også huske at rette på ALCD_en_dir og ALCD_rs_dir, da de bruges til at indstille dem til output.

ALCD_dataport angiver hvilke bit der kommer data ind til displayet på. Dette er angivet lidt specielt, da det er 4 bit, hvor man kan angive enten en low- eller en high-del af en port, hvilket er bit 0-3 eller bit 4-7. På tilsvarende vis skal der angives ALCD_dataport_dir, som gør at man kan sætte de 4 bit op som output.

Forskellen på ALCD og LCD

LCD: Liquid Crystal Display

Når LCD skriver noget ud i displayet, bruger den et system som hedder 7 segment. 7 segment betyder at der er 7 felter den kan oplyse.
Billede af et display som bruger 7 segment.
Et eksempel på de 7 segmenter

Hver bogstav står for et segment

ALCD: Alphanumeric Liquid Crystal Display Alfanumerisk er en datatype, som gør at kodeværdien både kan skrive alfabetiske tegn(bogstaver), numeriske cifre(tal) og special tegn.

Eksempel Tastaturet på en terminal har en alfanumerisk tastgruppe med (normalt) 48 taster, dvs. i alt 96 tegn, når skiftetasten anvendes. Flere tegn kan umiddelbart aktiveres ved foruden skiftetasten at inddrage alt-tasten til et alternativt keyboard. Inden for teletjenesten teletex anvendes et internationalt alfanumerisk tegnsæt med 309 tegn. I denne tegnsætstandard er alle europæiske nationalbogstaver og specialtegn indeholdt, hvilket selvsagt stiller særlige krav til tastaturanvendelsen.

Anvendelsen af ALCD modulet

ALCD Display kan anvendes til mange forskellige ting. Nogle af de ting den kan bruges til er at vise tiden på en timer, så man kan se hvor meget tid der er tilbage på timeren. ALCD display kan skrive hele det engelske alfabet og tallene fra 1-9 og derfor bruges et ALCD display også tit til kasseapparater fordi der skal skrives hvilke varer der bliver scannet ind.

Moduler på Holstebro HTX
Tastaturer Displays AD-konvertering I/O-ekspander Serielt Interface Færdige Andre
RC-tast - AD-tast - M_tast ALCD - LCD ADC_holst - ADC
mcp3201 - mcp3208
input - output Seriel_holst - Serial hardware
Serial hw int cts - Serial software
Stepmotor - RFID
RGB - RF-link - Afstand
Humidity - Analog temp - Dig temp
Accelerometer
Rotary Encoder

Oversigt over Hardware Moduler på Holstebro HTX