LCD-display med numerisk tastatur 4x4

P

polong_5

Guest
Hej ...
Jeg har lige spørge med hensyn til emnet.er der nogen, skal du give mig nogle simple kode til at vise numeriske når der trykkes på 4x4 numeriske tastatur.LCD-skærme er 2x20 modul og ved hjælp pic 16f877.

 
Hej,
Please ref.LCD eksempel c-fil.
Det anvendes til 8.051 serielle CPU, kan du modifiy det for din CPU.

/
/
/ LCD Display
/ Ver.1,0
/ Dato 2 august 2008
/
/ For ref.kun
/
/
/*------------------------------------------------ ---------------------------*/

void LcdDelay (void)
(
int data i;
for (i = 0; i <2000; i )
(
)
)

/*------------------------------------------------ ---------------------------*/

void LcdBusy (void)
(
Lcd_RS = 0;
Lcd_RW = 1;
LcdCmdPort = 0xff;
Lcd_EN = 1;
Lcd_EN = 0;
while ((LcdCmdPort & 0x80)! = 0)
(
Lcd_EN = 0;
Lcd_EN = 1;
)
Lcd_EN = 1;
)

/*------------------------------------------------ ---------------------------*/

void LcdCmd (uchar c)
(
LcdBusy ();
LcdCmdPort = c;
Lcd_RS = 0;
Lcd_RW = 0;
Lcd_EN = 0;
Lcd_EN = 1;
)

/*------------------------------------------------ ---------------------------*/

void LcdData (uchar c)
(
LcdBusy ();
LcdDataPort = c;
Lcd_RS = 1;
Lcd_RW = 0;
Lcd_EN = 0;
Lcd_EN = 1;
LcdDelay ();
)

/*------------------------------------------------ ---------------------------*/

void LcdInit (void)
(
Lcd_RS = 1;
Lcd_RW = 1;
Lcd_EN = 1;
LcdCmd (0x38);
LcdCmd (0x38);
LcdCmd (0x06);
LcdCmd (0x0C);
LcdCmd (0x02);
)

/*------------------------------------------------ ---------------------------*/

void LcdXY (uchar x, uchar y)
(
if ((Y & 0x01)! = 0)
LcdCmd (0x80 | (x - 1));
anden
LcdCmd (0xC0 | (x - 1));
)

/*------------------------------------------------ ---------------------------*/

void LcdClr (void)
(
LcdCmd (0x01);
)

/*------------------------------------------------ ---------------------------*/

void LcdHex (uchar c)
(
LcdData (tabel [(((C & 0xf0)>> 4) & 0x0f)]);
LcdData (tabel [(C & 0x0f)]);
)

/*------------------------------------------------ ---------------------------*/[/ tex] [/ code]

[size = 9] [color = # 999999] Added efter 2 minutter: [/ color] [/ size]/
/ Dette program bruges til 8.051 seriel CPU, bare for din ref.
/
/ Dato: 1 august 2008
/
/
/# include "reg52.h"
# define RS P1_0
# define RW P1_1
# define Aktiver P1_2
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;
sbit P1_2 = 0x92;
void delay (void);
void InitialLCD (void);
void WriteIns (char);
void WriteData (char);
void SKRlVSTRENG (char, char *);
void CheckBusy (void);
/ * void KeyScan (void); * /
char en = 0;
char nul = 0;
int KeyData = 0xff;
int KeyTemp = 0xff;

main ()
(
char MSG0 [] = "0123456789";
char MSG1 [] = "I Love LCD";
char msg2 [] = "02 august de 2008";
char MSG3 [] = "R = 10K. C = 10UF";
char MSG4 [] = "MCS-51";
char MSG5 [] = "01234";
char msg6 [] = "56789";
char MSG7 [] = "ABCDE";
char MSG8 [] = "Jeg elsker dig";

InitialLCD ();
SKRlVSTRENG (13, MSG3);

/ * Mens (1)
(
KeyScan ();
if (KeyData! = 0xff)
(
WriteIns (0x01);
if (KeyData == 0)
SKRlVSTRENG (10, MSG1);
else if (KeyData == 1)
SKRlVSTRENG (12, msg2);
else if (KeyData == 2)
SKRlVSTRENG (13, MSG3);
else if (KeyData == 3)
SKRlVSTRENG (6, MSG4);
KeyData = 0xff;
)
) * /
) / * Main * /

void InitialLCD (void)
(
WriteIns (0x38);
WriteIns (0x38);
WriteIns (0x38);
WriteIns (0x38);
WriteIns (0x08); / * off display * /
WriteIns (0x01); / * klar buffer * /
WriteIns (0x0e) / * on display * /
WriteIns (0x06); / * sæt input mode * /
) / * InitialLCD * /

void WriteIns (char instruktion)
(
RS = 0;
RW = 0;
Aktiver = 1;
P2 = undervisning;
Aktiver = 0;
CheckBusy ();
) / * WriteIns * /

void WriteData (char i)
(
RS = 1;
RW = 0;
Aktiver = 1;
P2 = i;
Aktiver = 0;
CheckBusy ();
) / * WriteData * /

void SKRlVSTRENG (count, MSG)
char count;
char msg [];
(
char i;
for (i = 0; i <count; i )
WriteData (MSG );
) / * SKRlVSTRENG * /

void CheckBusy (void)
(
char i = 0x80;
mens (I & 0x80)
(
RS = 0;
RW = 1;
Aktiver = 1;
i = P2;
Aktiver = 0;
forsinkelse ();
)
) / * CheckBusy * /

void delay (void)
(
int i;
for (i = 0; i <10000; i )
;
) / * Forsinkelse * /

/ * void KeyScan (void)
(
char key = 0;
char KeyStatus;
char KeyScanLine = 0x01;
char col;
char træk;
for (col = 0; col <2; col )
(
P3 = ~ KeyScanLine;
KeyStatus = ~ P3;
KeyStatus>> = 2;
for (row = 0; row <2; row )
(
if (KeyStatus == 0x01)
(
en = 0;
if (KeyTemp! = nøgle)
(
KeyTemp = key;
nul = 1;
)
anden
(
nul ;
if (nul == 5)
KeyData = KeyTemp;
)
)
tasten ;
KeyStatus>> = 1;
) * / / * Row * /
/ * KeyScanLine <<= 1;
) * / / * Col * /
/ * en ;
if (en == 5)
(
nul = 0;
KeyTemp = 0xff;
KeyData = 0xff;
)
) * / / * KeyScan * /

 

Welcome to EDABoard.com

Sponsor

Back
Top