第5章 单片机串口通信.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * 然后再给开发板上电,程序烧录成功 烧录程序常见故障为:一直检测单片机,可按以下步骤排查。 TXD和RXD接错了,下载器TXD接单片机RXD,RXD接单片机TXD。 单片机型号选择错了,如果是STC89C52RC就要选后面加RC的,STC89C52就不行。 单片机芯片损坏了,需要更换。 需要冷启动,就是给单片机断一次电,有的直接按电源开关就可以了。 该项目的工程中,设计了串口通信和LCD显示二个程序。 串口通信程序如下。 #include reg51.h #define uchar unsigned char uchar PCtoMCS[16]= ; //电脑传送到单片机的字符数组 uchar MCStoPC[]=**received data from MCS51**; //单片机传送给电脑的字符 void LCD_write_command(uchar); //LCD写命令函数声明 void LCD_write_data(uchar); //LCD写数据函数声明 void LCD_init( ); //LCD初始化函数声明 void delay(uchar); /*************主程序***************/ void main(void) { unsigned char i,n; TMOD=0x20; //定时器1 工作方式2 TL1=0xfd; TH1=0xfd; //初值,波特率9600 SCON=0xd0; PCON=0x00; //设置串行口方式3:接收允许,发送数据 TR1=1; //开定时器1 while(1) { i=0; while(MCStoPC[i]!=\0) //单片机发送给电脑字符串 { SBUF=MCStoPC[i]; //发送字符 while(TI==0); //TI 发送中断标记 等待发送完成TI=1 TI=0; //软件清0 i++; //下一个字符 } i=0; //i清0,为接收作准备 while(RI==0); //等待接收完成RI=1 RI=0; //软件清0 PCtoMCS[i]=SBUF; //启动接收 while(PCtoMCS[i]!=#) //传完后,应答A机并显示收到的字符串 { i++; while(RI==0); //接收应答 RI=0; //软件清0 PCtoMCS[i]=SBUF; //一个一个接收字符 } PCtoMCS[i]=\0; //置数组结束符\0 LCD_init(); n=0; LCD_write_command(0x80); while(PCtoMCS[n]!=\0) { LCD_write_data(PCtoMCS[n]); n++; delay(1); } } } 液晶显示程序如下。 #include reg51.h #define uchar unsigned char sbit LCD_RS=P2^0; //将P2.0取名为LCD_RS,控制寄存器选择 sbit LCD_E=P2^2; //将P2.2取名为LCD_E,使能端 sbit LCD_RW=P2^1;

文档评论(0)

执着仅一次 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档