- 1、本文档共81页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在串行通信中
任务17 单片机之间的双机通信 任务要求: 本任务是建立一个简单的单片机串行口通信测试系统。系统中,发射与接收各用一套AT89C51单片机电路,称为甲机和乙机。编写程序,使甲、乙双方能够进行串行通信。要求将将甲机内的多个数据(例如1、2、3、4、5、6公共6个数据)发送给乙机,并在乙机的6个数码管上显示出来。 甲机发送数据程序如下: //程序:ex7_1.c //功能:甲机发送数据程序 #include reg51.h void main() //主函数 { unsigned char i; unsigned char send[]={0x01,0x03,0x04,0x06,0x07,0x05}; //定义要发送的数据,为了简化显示,发送数据在0~9之间 TMOD=0x20; //定时器1工作于方式2 TL1=0xf4; //波特率为2400b/s TH1=0xf4; TR1=1; SCON=0x40; //定义串行口工作于方式1 for (i=0;i6;i++) { SBUF=send[i]; // 发送第i个数据 while(TI==0); // 查询等待发送是否完成 TI=0; // 发送完成,TI由软件清0 } while(1); } 乙机接收机显示程序 #include reg51.h code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f}; //定义0~9显示字型码 unsigned char buffer[]={0x00,0x00,0x00,0x00,0x00,0x00};//定义接收数据缓冲区 void disp(void); //显示函数声明 void main() //主函数 { unsigned char i; TMOD=0x20; //定时器1工作于方式2 TL1=0xf4; //波特率定义 TH1=0xf4; TR1=1; SCON=0x40; //定义串行口工作于方式1 for(i=0;i6;i++) { REN=1; //接收允许 while(RI==0); //查询等待接收标志为1,表示接收到数据 buffer[i]=SBUF; //接收数据 RI=0; //RI由软件清0 } for(;;) disp(); //显示接收数据 } //函数名:disp //函数功能:在六个LED上显示buffer中的六个数 //入口参数:无 //出口参数:无 void disp() { unsigned char w,i,j; w=0x01; //位码赋初值 for(i=0;i6;i++) { P1=~(tab[buffer[i]]); // 送显示字型段码,buffer[i]作为数组分量的下标 P2=~w; // 送位码 for(j=100;j5;j--); // 显示延时 w=1; // w左移一位 } } 7.1 串行通信基础知识 计算机与外界的信息交换称为通信。通信的基本方式可分为并行通信和串行通信两种。 所谓并行通信是指数据的各位同时在多根数据线上发送或接收。 串行通信是数据的各位在同一根数据线上依次逐位发送或接收。 目前串行通信在单片机双机、多机以及单片机与PC机之间的通信等方面得到了广泛应用。 7.1.1 异步通信和同步通信 串行通信按同步方式可分为异步通信和同步通信两种基本通信方式。 (1) 起始位: 在没有数据传送时,通信线上处于逻辑“1”状态。当发送端要发送1个字符数据时,首先发送1个逻辑“0”信号,这个低电平便是帧格式的起始位。其作用是向接收端表示发送端开始发送一帧数据。接收端检测到这个低电平后,就准备接收数据信号。 7.1.2 串行通信的波特率 波特率(Baud Rate)是串行通信中一个重要概念,它是指传输数据的速率, 亦称比特率。波特率的定义是每秒传输二进制数码的位数。如:波特率为1200bps是指每秒钟能传输1200位二进制数码。 7.1.3 串行通信的制式 1. 单工制式(Simple
文档评论(0)