Interfacing 8051 met HT1621 LCD Driver

S

Stinger-dk

Guest
Ik gebruik AT89C51 loopt een 24 SEG, 4 com lcd behulp HT1621 bestuurder.Ik gebruik C met Keil uVision.

Met behulp van de onderstaande code, all i get is 8 op segmenten.maakt niet uit wat ik schrijf, die 8 segmenten zal gaan.rest van de segmenten blijft uitgeschakeld ...De segmenten die op correspong naar adressen 3, 4, 5 en 6 van HT1621.

Gelieve ook uitleggen waarom zijn er 6 adres lijnen wanneer er slechts 32 locaties worden aangepakt?

Ik heb gebruikt 11.059Mhz kristal voor 89C51 zodat vertragingen in nano seconden (voor Th1 en tsu1) zijn niet mogelijk.Maar ik denk niet dat ze een probleem.Ik heb gebruikt 32.768KHz externe crystral voor HT1621.

Alle hulp wordt zeer gewaardeerd

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

Thanks in advance!

Hier is de code:

Code:

# include <reg51.h>/ / Interface met HT1621

sbit WR = P1 ^ 0;

sbit dt = P1 ^ 1;

sbit cs = P1 ^ 2;

sbit rd = P1 ^ 3;int com_reg / / Bits worden overgedragen wordt opgeslagen in com_regbits com_mode = 0; / / Vertelt dat de opdrachten worden overgedragen en niet-gegevensunsigned int mask = 0x8000;bits haha = 0;void vertraging (unsigned int j)

(

unsigned int i = 0;

for (; i <j; i );

)void cs_pulse (void)

(

cs = 1;

vertraging (1); / / Voor t (CS)

cs = 0;

)void lcd_wr (void)

(

/ / Dit zal schrijven gegevens HT1621rd = 1; / / HT1621 klokken gegevens op vallende rand van rd klok

WR = 1 / / Initialiseren RD en WR.
rd blijft 1 eeuwig.cs_pulse ();vertraging (1); / / Voor t (su1)mask = 0x8000;if (com_mode == 0)

(

while (masker! = 0x0004)

(

WR = 0;

vertraging (1); / / Voor t (CLK)

haha = com_reg & masker;

dt = haha;

vertraging (1);

WR = 1;

vertraging (2);masker>> = 1;

)

)

anders als (com_mode == 1)

(

while (masker! = 0x0008)

(

WR = 0;

vertraging (1); / / Voor t (CLK)

haha = com_reg & masker;

dt = haha;

vertraging (1);

WR = 1;

vertraging (2);masker>> = 1;

)

)vertraging (1); / / Voor t (H1)

cs = 1;

)void main ()

(

/ / Initialisatiedt = 0;vertraging (10000);com_mode = 1;com_reg = 0x8020; / / SYS NLlcd_wr ();com_reg = 0x8560; / / BIAS 1 / 3 bij 4 commons

lcd_wr ();com_reg = 0x8090; / / TIMER DIS

lcd_wr ();com_reg = 0x80A0 / / WDT DIS

lcd_wr ();com_reg = 0x8280; / / XTAL 32K

lcd_wr ();com_reg = 0x8060; / / LCD-OP

lcd_wr ();com_mode = 0;/ / Na-code zal switch segmenten overeenkomt met adressen 1 en 2 van ht1621 op.

com_reg = 0xA0F8;

lcd_wr ();com_reg = 0xA178;

lcd_wr ();

)
 

Welcome to EDABoard.com

Sponsor

Back
Top