微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口通讯实例

串口通讯实例

时间:10-02 整理:3721RD 点击:
在单片机的通讯中,最简单常用的就是串口通讯,一些初学者在做串口通讯的过程中经常会出现这样那样的问题,导致程序失败,在下面我们给出一个例程,这个例程是单片机与PC通讯的,其中print()函数是回发的子函数,如果您需要在显示屏上显示,那么只需要更改这个函数就可以了,另外在这个例程中使用的是30个字节的字符串,你可以修改#define LENGHT 30这一行。
#include < reg52.h >
#define LENGHT 30
unsigned char c;
bit recive,trance;     /*这里定义了两个bit位,作为已接收、发送的标志,也可直接用               RI和TI标志*/
void print(char *p)
{
  while ((*p!=0x0a)&&(*p!=0x0d))
  {
    SBUF=*p;
    while(trance==0);
    trance=0;
    p++;
  }
  SBUF=*p;
  while(trance==0);trance=0;
}
void main()
{
  unsigned char b;
  unsigned char dis_play[LENGHT];
  SCON = 0x50;   /* SCON: mode 1, 8-bit UART, enable rcvr */
  TMOD |= 0x20;   /* TMOD: timer 1, mode 2, 8-bit reload */
  PCON |= 0X80;   /*SMOD=1,BAUTRATE DOUBLE*/
  TH1 = 0xff;    /* TH1: reload value for 57600 baud @ 11.0592MHz */
  TR1 = 1;     /* TR1: timer 1 run */
  EA=1;
  ES=1;
  recive=0;trance=0;
  c=b;
  while(1)
  {
    while(b<LENGHT){dis_play[b]=0;b++;}
    c=0;
    b=0;
    while ((c!=0x0a)&&(c!=0x0d))
    {
      while(recive==0);
      recive=0;
      if((c>=0x20)&&(c<=0x7f)) {dis_play[b]=c;b++;}
    }
    if((c==0x0a)||(c==0x0d))
    {
      dis_play[b]=c;
      print(dis_play);
    }
  }
}
void serial(void) interrupt 4
{
  if(TI==1) {TI=0;trance=1;}
  if(RI==1) {c=SBUF;RI=0;recive=1;}
}
具体的语句这里就不再给出详细的注解,需要指出的是,这里的字符串的结束标志是一个0x0d或0x0a的字符,如果发送的字符传的结尾没有这两个字符中的一个,将会导致接收缓冲区溢出,这样结果就不可预料,因此大家要注意这一点。本程序在89C51单片机上通过,PC端使用的丁丁小编的SSCOM串口调试工具,注意钩选其中的“发送新行”选项。

如果利用PC机发送命令给单片机控制步进电机的正反转和圈数应该是要在那里添加程序呢?
最近正在这方面的设计,望高手指点。

很高和那家啊啊a

VGA控制板、LCD串口屏、LCD驱动IC
-----51,avr单片机或PLC驱动3.5寸至52寸的数字TFTLCD屏、VGA接口显示器、电视机
广州易显光电科技有限公司是一家专业从事光电显示技术及其周边产品的研究、生产和经营的高科技公司。目前,我公司已形成独特而完善的、具备自主知识产权的三大主要产品系列:VGA控制板、LCD串口屏、LCD驱动IC。驱动尺寸几乎涵盖3.5寸到52寸的所有型号,具体包括3.5寸、4.3寸、5.6寸、7寸、8寸、10.4寸、15寸、17寸、18寸、19寸、21寸、23寸、24寸、32寸、42寸、52寸等数十个显示尺寸。
   我公司产品已经广泛应用于工业自动化、电力、电信、环保、医疗、金融、石油、化工、交通、能源、地质、冶金、公共查询与监控等数十个行业和领域,其中,在某些军工及航天领域,凭借可靠、稳定的产品性能已被列入合格供应商名录。完全杜绝RA8835、S1D13305等控制器存在的雪花、乱码、时序不兼容、工作温度范围窄等问题。  
      QQ:        1197614222  252631158
串口屏,顾名思义就是用户单片机或PLC只需要串口就可以驱动的显示屏。它由显示驱动板、外壳、LCD液晶显 示屏三部分构成。接收用户单片机串口发送过来的指令,完成在LCD上绘图的所有操作,这就是驱动板完成的功能。
VGA控制板,顾名思义就是驱动具有"15针VGA接口"的显示器或者电视机。接收用户单片机串口发送过来的指令, 完成在显示器或者电视机上绘图的所有操作,这就是VGA控制板完成的功能。 支持USB鼠标,USB键盘,SD卡小硬盘,俨然就象一台电脑主机。确切的说,它是一台工控机。
设计软件,无论是串口屏还是VGA控制板,都需要一款相应的设计软件与它相配套。串口屏和VGA控制板研发的人机界面集成开发环境HMIMaker。它拥有界面设计所需要的所有控件,用户单片机只要编写一点点代码就可以完成界面设计,真正体现“零代码”。而市场上其它厂家的那些串口屏和VGA控制板没有配套相应的设计软件,或者设计软件简单,用户需要花费大量的精力去编写单片机代码才能完成设计。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top