当前位置 - 股票行情交易網 - 國際漫評 - 為什麽用1602A顯示屏不會顯示?

為什麽用1602A顯示屏不會顯示?

妳可以先讓它顯示壹個字符看它是否能顯示,如果不能顯示靜態字符證明沒有吧信息傳上去。壹般原因是write_com和write_data之間沒有延時,建議延時5毫秒再看是否能顯示。

這是我做的時鐘顯示正常。妳可以把rs,rw,e換成妳的引腳後試試看。

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit rs=P2^4;

sbit rw=P2^5;

sbit e=P2^6;

void delay(uint n)

{

uint i,j;

for(i=n;i>0;i--)

for(j=110;j>0;j--);

}

uchar code table[]={"00:00:00"};

uchar code table1[]={"2009.8.29 sa"};

uchar miao=56,fen=42,shi=17,g,s,num,a=1,b=1;

void write_com(uchar num)

{

rs=0;

rw=0;

e=0;

P0=num;

e=1;

delay(1);

e=0;

}

void write_data(uchar num)

{

rs=1;

rw=0;

e=0;

P0=num;

e=1;

delay(1);

e=0;

}

void init()

{

delay(15);

write_com(0x38);

delay(5);

write_com(0x38);

delay(5);

write_com(0x38);

write_com(0x01);

write_com(0x06);

write_com(0x0c);

TMOD = 0x01;

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

EA = 1;

ET0=1;

TR0 = 1;

P0=0xff;

}

void xian(uchar n,uchar m)

{

write_com(0x80+0x40+n);

s=m/10;

g=m%10;

write_data(0x30+g);

write_com(0x80+0x40+n-1);

write_data(0x30+s);

}

void main()

{

uint i;

delay(5);

init();

write_com(0x80+0x40+0x04);

for(i=0;i<8;i++)

{

write_data(table[i]);

}

write_com(0x80+0x02);

for(i=0;i<12;i++)

{

write_data(table1[i]);

}

while(1)

{

xian(11,miao);

if(a==1)

{

xian(8,fen);

a=0;

}

if(b==1)

{

xian(5,shi);

b=0;

}

}

}

void UART_SER (void) interrupt 1

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

num++;

if(num==20)

{

num=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

a=1;

P0=0xfe;

// delay(5);

//P0=0xff;

if(fen==60)

{

fen=0;

shi++;

b=1;

if(shi==24)

{

shi=0;

}

}

}

}

}