標(biāo)題:
51單片機(jī)LCD1602不能完全顯示COM接收的字符,請幫忙指導(dǎo)下程序
[打印本頁]
作者:
miao22457
時(shí)間:
2022-4-12 13:59
標(biāo)題:
51單片機(jī)LCD1602不能完全顯示COM接收的字符,請幫忙指導(dǎo)下程序
自已是小白,抄的網(wǎng)上的,用51單片機(jī)接收電腦COM口傳過來的這字符,然后顯示在LCD1602上
現(xiàn)在LCD1602只顯示了前8個(gè)字符,求大神指點(diǎn),謝謝!
#include<reg52.h>
int write_com(unsigned char);
int write_date(unsigned char);
int x;
char kx2[34]=" ";
unsigned char code kx[]="7777";
sbit RS = P2^7;
sbit RW = P2^6;
sbit EN = P2^5;
void delay (unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
int init()
{
EN = 0;
write_com(0X38);
write_com(0X0C);
write_com(0X06);
write_com(0X01);
return 0;
}
int write_com(unsigned char com)
{
RS = 0;
RW = 0;
P0 = com;
delay(5);
EN = 1;
delay(5);
EN = 0;
return 0;
}
int write_date(unsigned char date)
{
RS = 1;
RW = 0;
P0 = date;
delay(5);
EN = 1;
delay(5);
EN = 0;
return 0;
}
void send(unsigned char *dis)
{
while(*dis!='\0') {
SBUF=*dis;
dis++;
while(!TI);
TI=0;
}
}
void serial_init()
{
TMOD=0x20;
// SCON=0x50;
// PCON=0X80;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
ES=1;
REN=1
EA=1;
RI=1;
}
void serial_INT() interrupt 4
{
int i,k;
if(RI)
{
ES=0;
RI=0;
kx2[i++]=SBUF;
}
if(SBUF=='\r')
{
for(k=i;k<34;k++)
kx2[k-1]=' ' ;
i=0;
}
ES=1;
}
void main()
{
init();
serial_init();
while(1)
{
write_com(0x80);
for(x=0;x<17;x++)
{
write_date(kx2[x+1]);
}
write_com(0xC0);
for(x=17;x<34;x++)
{
write_date(kx2[x]);
}
}
}
作者:
飛云居士
時(shí)間:
2022-4-12 13:59
if(SBUF=='\r') { for(k=i;k<34;k++) kx2[k-1]='\0 ' ; i=0; }
作者:
飛云居士
時(shí)間:
2022-4-12 17:26
把上面的‘’改成‘\0'試試
作者:
zhxiufan
時(shí)間:
2022-4-12 18:43
1602每行最多只能顯示16個(gè)字符,你這個(gè)循環(huán)里面到17個(gè)了。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1