欢迎来到天天文库
浏览记录
ID:61997689
大小:85.00 KB
页数:10页
时间:2021-04-09
《单片机实验6(串行口).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六串行口通信一、实验目的:1、单片机系统中,如果并行口不够用,可使用未用的串行口进行扩充,实现串行输入并行输出。2、用单片机串行口实现与2个单片机的双机通信。3、熟悉XLISP系列单片机综合仿真试验仪的组成和使用方法。用XLISP软件和keil-uvision2集成调试软件进行实验并能得到正确的实验结果。二、实验内容1、串入并出实验用74LS164来扩充并行口,并利用74LS164串行口实现8路跑马灯。2、单片机与单片机之间的双机通信(P204)用2台单片机用串行口实现双机通信。(1)甲机P1口接8个键盘,乙机P1口接8个发光二极管。甲机RXD接乙机TXD,乙机RXD接甲机TXD。(2)
2、甲机发送01H给乙机,乙机接到回复02H。建立联系后甲机选择按键状态并将P1口信息发给乙机,乙机根据甲机发来的信息点亮相应的发光二级管。(3)发送FF时表示通信结束。三、实验步骤(一)串入并出实验本实验用74LS164来扩充并行口,利用74LS164串行口实现8路跑马灯程序。1、硬件连接:(1)用一个2PIN数据排线一端插入CPU部分JP53(P3口)的P3.0,P3.1。另外一端插入74LS164部分的输入端JP20。(2)用一根8PIN的数据排线,一端插入74LS164部分的输出端JP26,另一端插入8路指示灯的JP32。2021/8/42、参考程序#include"reg51.h“un
3、signedchardat=0xfe;//定义发送数据voiddelay1(unsignedinti);main(){unsignedchari;SCON=0x00;//串行口工作方式0while(1){for(i=0;i<8;i++){SBUF=dat;//传送左8位灯while(!TI);//查询TITI=0;//软件给TI清0dat<<=1;//数据左移一位delay1(12000);}}}voiddelay1(unsignedintt){inti;for(i=0;i4、XD,乙机RXD接甲机TXD,2机的地相连。(2)甲机用一根8PIN的数据线接8个按键。乙机用一根8PIN的数据线接8路指示灯。(3)甲机选择按键状态并将P1口信息发给乙机,乙机根据甲机发来的信息点亮相应的发光二级管。1、甲机发送程序。//功能:晶振频率11.0592MHz,工作方式1,波特率为9600#includevoidmain()//主函数{TMOD=0x20;//设定定时器1的工作方式为方式2TH1=0xfd;//设置串行口波特率为9600TL1=0xfd;SCON=0x50;//设置串行口的工作方式1允许接收PCON=0x00;TR1=1;while(1){do5、{SBUF=0x01;//甲机先发送01H给乙机while(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}while((SBUF^0x02)!=0);//判断是否收到02Hdo{SBUF=P1;//把P1口的状态发送给乙机while(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0SBUF=0xff;//发送结束符while(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}wh6、ile((SBUF^0xff)!=0);//判断是否收到应答结束符FFH}}2、乙机接收程序//晶振频率11.0592MHz,串行口工作于方式1,波特率为9600#includevoidmain()//主函数{TMOD=0x20;//设定定时器1的工作方式为方式2TH1=0xfd;//设置串行口波特率为9600TL1=0xfd;SCON=0x50;//设置串行口的工作方式1允许接收PCON=0x00;TR1=1;//启动定时器P1=0xff;//P1口LED全灭while(1){do{while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}while(7、(SBUF^0x01)!=0);//判断是否接收到01Hdo{SBUF=0x02;//向甲机发送应答02Hwhile(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0P1=SBUF;//根据甲机P1口的状态点亮发光二极管while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}while((SB
4、XD,乙机RXD接甲机TXD,2机的地相连。(2)甲机用一根8PIN的数据线接8个按键。乙机用一根8PIN的数据线接8路指示灯。(3)甲机选择按键状态并将P1口信息发给乙机,乙机根据甲机发来的信息点亮相应的发光二级管。1、甲机发送程序。//功能:晶振频率11.0592MHz,工作方式1,波特率为9600#includevoidmain()//主函数{TMOD=0x20;//设定定时器1的工作方式为方式2TH1=0xfd;//设置串行口波特率为9600TL1=0xfd;SCON=0x50;//设置串行口的工作方式1允许接收PCON=0x00;TR1=1;while(1){do
5、{SBUF=0x01;//甲机先发送01H给乙机while(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}while((SBUF^0x02)!=0);//判断是否收到02Hdo{SBUF=P1;//把P1口的状态发送给乙机while(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0SBUF=0xff;//发送结束符while(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}wh
6、ile((SBUF^0xff)!=0);//判断是否收到应答结束符FFH}}2、乙机接收程序//晶振频率11.0592MHz,串行口工作于方式1,波特率为9600#includevoidmain()//主函数{TMOD=0x20;//设定定时器1的工作方式为方式2TH1=0xfd;//设置串行口波特率为9600TL1=0xfd;SCON=0x50;//设置串行口的工作方式1允许接收PCON=0x00;TR1=1;//启动定时器P1=0xff;//P1口LED全灭while(1){do{while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}while(
7、(SBUF^0x01)!=0);//判断是否接收到01Hdo{SBUF=0x02;//向甲机发送应答02Hwhile(!TI);//查询发送是否完毕TI=0;//发送完毕,TI由软件清0while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0P1=SBUF;//根据甲机P1口的状态点亮发光二极管while(!RI);//查询等待接收RI=0;//接收完毕,RI由软件清0}while((SB
此文档下载收益归作者所有