找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 950|回复: 3
打印 上一主题 下一主题
收起左侧

51单片机LCD1602不能完全显示COM接收的字符,请帮忙指导下程序

[复制链接]
跳转到指定楼层
楼主
ID:495034 发表于 2022-4-12 13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
自已是小白,抄的网上的,用51单片机接收电脑COM口传过来的这字符,然后显示在LCD1602上
现在LCD1602只显示了前8个字符,求大神指点,谢谢!
#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]);
    }

   }
  }

最佳答案

查看完整内容

if(SBUF=='\r') { for(k=i;k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:404160 发表于 2022-4-12 13:59 | 只看该作者
if(SBUF=='\r') { for(k=i;k<34;k++)             kx2[k-1]='\0 ' ; i=0; }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:404160 发表于 2022-4-12 17:26 | 只看该作者
把上面的‘’改成‘\0'试试

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:121859 发表于 2022-4-12 18:43 | 只看该作者
1602每行最多只能显示16个字符,你这个循环里面到17个了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表