好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

PC与51单片机串口通信.docx

21页
  • 卖家[上传人]:汽***
  • 文档编号:538889505
  • 上传时间:2023-04-24
  • 文档格式:DOCX
  • 文档大小:2MB
  • / 21 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • PC与51单片机串口通信串行通信是计算机和外设进行通讯、对外设进行监控并获取由外设采集到的监测数据的一个非常重要的手段由于其所用的传输线少,成本低,实现起来方便易行,因而得到广泛的应用STC89C52RC有一个可编程的全双工串行通信接口,可以方便的实现PC机与其之间的串行通信一、总体方案系统中采用STC89C52RC/STC89C54RD+单片机作为下位机,PC机为上位机,二者通过CH340将PC的USB口转成RS232的串行口接收或上传数据单片机部分的程序采用C语言编程,用Keil uVision4编译后产生HEX文件下载到单片机内,从而实现数据收发PC端采用一个串口调试助手(sscom4.2)或MATLAB GUI实现数据的收发二、具体方案1、简单通信测试程序本程序为了测试通信方式是否合适,以便于下一步增加程序的内容1)利用STC提供STC-ISP-V4.83软件检查MCU选项MCU Type is: STC89C54RD+MCU Firmware Version: 3.2CChinese:MCU 固件版本号: 3.2CDouble speed / 双倍速: 12T/单倍速振荡放大器增益: full gain下次下载时 P1.0/P1.1 与下载无关内部扩展AUX-RAM: 允许访问(强烈推荐)下次下载用户应用程序时将数据Flash区擦除: NO用户软件启动内部看门狗后: 复位关看门狗ALE pin 仍为 ALE内部时钟频率:11.061806M外部时钟频率:11.061806M(2)串行口初始参数设定串行口工作方式为方式1(10位异步收发),波特率为9600bps,用定时器1作波特率发生器,选用定时器模式2,其它详见程序及说明。

      3)程序功能说明通过串口调试助手,向单片机发送字符,发送字符的末尾需加“!”,让单片机识别数据接收完毕,返回“Wait command!”字符串当单片机接收一个字符时,发光二极管端引脚取反一次,所以其亮、灭的状态改变一次例如:初始状态为灭当发送“12!”时,取反三次,发光二极管变亮,返回“Wait command!”字符串(如图(1)所示);当发送“123!”时,取反四次,发光二极管状态不变,但返回“Wait command!”字符串(如图(2)所示)图(1)a 图(1)b图(2)a 图(2)b(4)单片机内运行的程序#include sbit P1_2=P1^2; //接发光二极管bit flag; //单片机数据发送标志位bit flag_inter; //单片机数据接收完标志位unsigned char a;void SendData(char dat);//发送字符void SendString(char *s);//发送字符串void main(){ SCON=0x50; //串行通信方式1,接收允许 PCON=0x00; //单倍频 TMOD = 0x20; //设置定时器T1为模式2,定时方式 TH1=TL1=0xFD; //波特率为9600,晶振11.0594MHz TR1=1; //定时器T1开始计数 EA=1; //中断允许 ES=1; //串行口中断开放 while(1) { if(flag_inter==1) { flag_inter=0; //标志位清0 SendString("Wait command!\n"); } }}//串口接收发送中断void Uart_Isr() interrupt 4 using 1{ if (RI) { RI=0; //接收中断标志 a=SBUF; P1_2=!P1_2; //数据送到P0口 if(a=='!') { flag_inter=1; //数据接收完毕,置1 } } if(TI) { TI=0; //发送中断标志 flag=0; //标志位清0 } }//向串口发送字符void SendData(char dat){ while(flag); //等待数据发送 ACC=dat; flag=1; //标志位置1 SBUF=ACC; //数据装入SBUF}//向串口发送字符串void SendString(char *s){ while(*s) //字符串发送完否 { SendData(*s++); //发送字符,并指针指向下一字符 }}2、利用串口调试助手实现串行口数据收发本程序可以实现PC机与单片机之间数据双向传输、互发(注:由CH37X451电路板原理图可知CH452数码管驱动及键盘控制芯片为四线接口,CH452_DCLK=P1^7,CH452_DIN=P1^6,CH452_LOAD=P1^5,CH452_DOUT=P3^3。

      1)利用STC提供STC-ISP-V4.83软件检查MCU选项MCU Type is: STC89C52RCMCU Firmware Version: 3.2CChinese:MCU 固件版本号: 3.2CDouble speed / 双倍速: 12T/单倍速振荡放大器增益: full gain下次下载时 P1.0/P1.1 与下载无关内部扩展AUX-RAM: 允许访问(强烈推荐)下次下载用户应用程序时将数据Flash区擦除: NO用户软件启动内部看门狗后: 复位关看门狗ALE pin 仍为 ALE内部时钟频率:24.011256M.外部时钟频率:24.011256M.(2)串行口初始参数设定串行口工作方式为方式1(10位异步收发),波特率为4800bps,用定时器1作波特率发生器,选用定时器模式2,其它详见程序及说明3)程序功能说明通过串口调试助手,向单片机发送字符,发送字符的末尾需加“!”,让单片机识别数据接收完毕当单片机接收到PC机发来的数据时,先存入数组,当检测到结束标志“!”时,调用显示函数,从左至右,两个LED数码管表示一位字符的ASCII码(注:为了显示出特殊字符,所以用ASCII码表示)。

      一次最多只能表示四个字符,当超过四个时,延时一段时间,再显示下面的字符数码管显示结束后,返回“Wait command!”字符串当按下按键时,将按键对应的键值返回给PC机例如:当在串口调试助手中发送“a=1,b=3,b>a!”时,数码管将依次显示对应的十六进制ASCII码如下:61H(a)、3dH(=)、31H(1)、2cH(,)、62H(b)、3dH(=)、33H(3)、2cH(,)、62H(b)、3EH(>)、61H(a)、21H(!),具体见图(3)当从左至右,从上到下依次按下键盘上的三行按键时,返回键值到PC机,具体见图(4)图(3)a 图(3)b图(3)c 图(3)d图(4)a 图(4)b(4)单片机内运行的程序主程序如下:#include #include #include #include bit flag; //标志位bit flag_inter; //PC机发送信息结束标志位unsigned char m=0; //数组testdata[a]unsigned char testdata[20]={0}; //存放PC机发送到单片机的信息 //输出命令子程序,定义一无符号整型变量存储12字节的命令字。

      void CH452_Write(unsigned int cmd){ unsigned char i;#ifdef USE_KEY DISABLE_INTERRUPT; //禁止键盘中断,防止传输过程中被CH452中断//进入中断服务程序中再次传输#endif CH452_LOAD_CLR; //命令开始,LOAD=0 for(i=0;i!=12;i++) //送入12位数据,低位在前 { if (cmd&1) {CH452_DIN_SET;} else {CH452_DIN_CLR;} // 输出位数据 CH452_DCLK_CLR; cmd>>=1; CH452_DCLK_SET; //上升沿有效 } CH452_LOAD_SET; //加载数据,LOAD上升沿 DELAY_1US; //命令数据加载周期不小于6US DELAY_1US; DELAY_1US; DELAY_1US; DELAY_1US; DELAY_1US;#ifdef USE_KEY ENABLE_INTERRUPT;#endif}//输入命令子程序,MCU从CH452读一个字节unsigned char CH452_Read(){ unsigned char i; unsigned char cmd,keycode; //定义命令字,和数据存储器#ifdef USE_KEY DISABLE_INTERRUPT; //禁止键盘中断,防止传输过程中被CH452中断//进入中断服务程序中再次传输 #endif cmd=0x07; //输入读451命令字 CH452_LOAD_CLR; for(i=0;i!=4;i++) { if (cmd&1) {CH452_DIN_SET;} else {CH452_DIN_CLR;} // 输出位数据 CH452_DCLK_CLR; cmd>>=1; //往右移一位 C。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.