标题: 关于电脑做上位机与单片机通信,单片机驱动液晶屏显示数据的问题 [打印本页]

作者: 懷念sunny    时间: 2018-11-27 00:03
标题: 关于电脑做上位机与单片机通信,单片机驱动液晶屏显示数据的问题
我想用单片机的串口通信,实现电脑发什么,0802液晶屏显示什么,但我写出程序后,电脑发送后,液晶屏显示会出现随机的空位等情况。我的想法就是不能实现的吗?
作者: 小猫猫爱吃鱼    时间: 2018-11-27 07:38
你好!这个是可以实现的,你是要发送什么数据呢?
作者: IdeaMing    时间: 2018-11-27 09:17
可能是你的通讯协议需要修改一下。
作者: Colin_zhai    时间: 2018-11-27 09:41
可以实现的,要匹配下字库和发的内容,不是发什么就能显示什么的
作者: 懷念sunny    时间: 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码里的,这是我的程序,怎么修改呢???串口通信我还不太会
作者: 我在东北玩51    时间: 2020-6-2 12:15
懷念sunny 发表于 2018-11-30 20:29
#include
#include
char d;        

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1