找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于电脑做上位机与单片机通信,单片机驱动液晶屏显示数据的问题

[复制链接]
跳转到指定楼层
楼主
ID:432788 发表于 2018-11-27 00:03 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用单片机的串口通信,实现电脑发什么,0802液晶屏显示什么,但我写出程序后,电脑发送后,液晶屏显示会出现随机的空位等情况。我的想法就是不能实现的吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:303383 发表于 2018-11-27 07:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:276663 发表于 2018-11-27 09:17 | 只看该作者
可能是你的通讯协议需要修改一下。
回复

使用道具 举报

地板
ID:413475 发表于 2018-11-27 09:41 | 只看该作者
可以实现的,要匹配下字库和发的内容,不是发什么就能显示什么的
回复

使用道具 举报

5#
ID:432788 发表于 2018-11-30 20:29 | 只看该作者
小猫猫爱吃鱼 发表于 2018-11-27 07:38
你好!这个是可以实现的,你是要发送什么数据呢?

#include <STC15F2K60S2.H>
#include<intrins.h>
char d;        
#define uint unsigned int
#define uchar unsigned char
void delayms(uint z) ;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E =P2^2;
sbit flag=P0^7;
void chak();
uchar a,b;
void write(uint com);
void date(uint ss);
void init();
uint ss;
uchar i=0;
void display();
void UartInit();

void main()
{       
    UartInit();
        init();
        while(1)
                {       
                         display();
                }
}
   void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
        TL1 = 0xE0;                //设定定时初值
        TH1 = 0xFE;                //设定定时初值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
        ES = 1;             //使能串口1中断
    EA = 1;

}
   void send()  interrupt 4
   {   
                   if (RI)
    {
        RI = 0;                 //清除RI位
        d = SBUF;
           i++;
            
        }
      if (TI)
    {
        TI = 0;                 //清除TI位
               
    }
   }
       

  void delayms(uint z)           //z=2    1ms
{
for(a=z;a>0;a--)
  for(b=210;b>0;b--);
}


void chak()           //检测标志位
{

   RS=0;
   RW=1;
   E=1;
   while(flag!=0)
   flag=0;
   
   
   E=0;
   RS=1;
}
void write(uint com)         //写指令
{        chak();
        RS=0;
        RW=0;
        P0=com;
         E=1;
        delayms(6);
        E=0;
        RS=1;       
}
void date(uint ss)                 //写数据
{
        chak();
        RS=1;
        RW=0;
        P0=ss;
        E=1;
        delayms(6);
        E=0;
        RS=1;
}
   void init()//初始化(复位)
{
   RS=0;
   write(0x38);
   delayms(12);
   write(0x38);
   delayms(12);
   write(0x38);
   delayms(12);
   write(0x38);
   delayms(12);
   write(0x08);
    delayms(12);
   write(0x01);
   delayms(12);
   write(0x06);
   write(0x0f);

}
void display() //第一行
{

  write(0x80+i);
  date(d); //第一列
}
想写ASCII码里的,这是我的程序,怎么修改呢???串口通信我还不太会
回复

使用道具 举报

6#
ID:603592 发表于 2020-6-2 12:15 | 只看该作者
懷念sunny 发表于 2018-11-30 20:29
#include
#include
char d;        

楼主做出来了吗  可以留个联系方式交流下么
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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