双机通讯实验报告

单片机实验报告 (自动化15级) 实验名称:串行通讯实验 一、实验目的 1.掌握单片机串行口工作方式; 2.掌握双机通讯的接口电路设计及程序设计。

二、实验设备 1. PC机; 2.单片机最小系统教学实验模块; 3. 数码管显示模块

三、实验内容 1.双机通信 由两套单片机试验装置(两个实验小组)共同完成该实验。我们U1为甲机,U2为乙机。甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。 电路如图1所示。 要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。

图1 双机通信原理示意图 附加要求:乙机接收完毕后,将本机(乙机)的学号后8位发送回甲机,甲机显示在数码管上。 2.单片机与PC机通信 单片机向PC机发送数据。单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11.0592M。

四、实验原理 4.1 串行通讯的方式 在串行通讯中,有两种基本的通讯方式:异步通讯,同步通讯。 异步串行通讯规定了字符数据的传送格式,既每个数据以相同的帧格式发送。每个帧信息由起始位、数据位、奇偶校验位和停止位组成。本实验主要学习异步通讯的实现方法。 在异步通讯中,每一个字符要用起始位和停止位作为字符开始和结束的标志,以至占用了时间。所以在数据块传送时,为了提高通讯速度,常去掉这些标志,而采用同步通讯。同步通讯不像异步通讯那样,靠起始位在每个字符数据开始时发送和接受同步。而是通过同步字符在每个数据块传送开始时使收/发双方同步。 按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式。 (1)单工方式 在单工方式下,通讯线的一端联接发送器,另一端联接接收器,它们形成单向联接,只允许数据按照一个固定的方向传送。 (2)半双工方式 在半双工方式下,系统中的每个通讯设备都由一个发送器和一个接收器组成,通过收发开关接到通讯线路上,如图33-1所示。在这种方式中,数据能从A站送到B站,也能从B站传送到A站,但是不能同时在二个方向上传送,即每次只能一个站发送,另一个站接收。

图2 半双工通讯方式 图33-1中的收发开关并不是实际的物理开关,而是由软件控制的电子开关,由通讯线两端的半双工通讯协议进行功能切换。 (3)全双工(Full—duplex)方式 虽然半双工方式比单工方式灵活,但它的效率依然较低。从发送方式切换到接收方式所需的时间一般大约为数毫秒,这么长的时间延迟在对时间较敏感的交互式应用(例如远程检测监视控制系统)中是无法容忍的。重复线路切换所引起的延迟积累,正是半双工通信协议效率不高的主要原因。 半双工的这种缺点是可以避免的,而且方法很简单,即采用信道划分技术。在图33-2的全双工连接中,不是交替发送和接收,而是可同时发送和接收。全双工通讯系统的每一端都包含发送器和接收器,数据可同时在两个方向上传送。 图3 全双工通讯方式 4.2单片机串行口工作方式 在静态数码管显示实验中,我们熟悉了单片机串口工作方式0;单片机串口还具有有3种工作方式。如下表所示:

这3种工作方式,均用于串行异步通讯。在异步串行通讯的一个字节的传送中,必须包括了起始位(0)和停止位(1)。除此之外,方式1具有8位(1个字节)的数据位(低位在先),方式2、3则除这8位之外,还具有一个可编程的第9位,这个第9位编程通常被编程为奇偶校验位。我们将在下一个实验中用到它。 串口工作方式在特殊寄存器SCON中设置。

其中的SM0和SM1位确定了串口工作方式。要使通讯双方能够通讯成功,必须具有相同的串口工作模式;REN为允许接收位,本实验中因为双方都要进行接收,因此REN也都应设为1。TB8和RB8这里暂不涉及。利用以下语句来设置SCON: MOV SCON, #50H 4.3 波特率的设置 在异步串口通讯中,一个很重要的工作就是进行串口波特率的设置。波特率是指串口通讯中每秒传送的位数,单位为BPS,它反映了串行口通讯的速度;同时,通讯双方的速度必须一致,才能够顺利进行通讯。 在串口工作方式1、3中,传送波特率都是可变的。单片机内部通过定时器T1来提供发送与接收缓存器的内部移位时钟。也就是说,要确定串行通讯的波特率,必须对T1进行相关设置。51单片机系统对此时T1的设置有以下固定的规定: (1)必须工作在定时器状态; (2)必须工作在“8位自动重载”工作模式; 这必须在特殊寄存器TMOD中进行设置。关于TMOD的详细内容,我们在实验十七已经讲过。可以利用以下语句来设置TMOD: MOV TMOD, #20H 除了对TMOD的设置外,还必须设置定时器T1的定时值,也就是保存在TH1中的8位重载值。这直接影响到波特率的大小: 它通过以下公式进行计算: 其中的SMOD为特殊寄存器PCON的最高位。当它置1时,可以将波特率增大1倍。 在双机通讯中,只要双方的波特率一致就能够完成通讯了;但是,在标准的异步通讯协议中,只有几种波特是适用的。例如1200bps,2400bps,4800bps,9600bps……等等。 而通过这个公式可以看出,并不是所有的晶振频率都能够得到准确的上述波特率。比如采用12MHz晶振,代入公式进行运算,就无法得到4800bps的准确波特率(TH1必须为小数了)。在这种情况下,过去人们都使用软件补偿的方法,尽量得到准确的波特率;而现在,市场上有很多通讯专用的晶振,例如3.6864MHz、11.0592MHz……的晶振,都能够直接得到准确的波特率。因此在进行本实验时,必须使用通讯专用晶振(如果使用仿真器,则设置为使用仿真头的外接晶振,并将11.0592M的晶振插入仿真头。 当波特率已经确定,就可以反向推导出TH1的取自大小,例如,在本次实验中,我们要求波特率为4800bps,在晶振采用11.0592MHz的情况下,推出TH1=0F4H。

五、实验步骤 1.参考图1并进行电路设计,画出电路图,并用导线正确连接两套装置的单片机最小系统实验模块,并连接最小系统模块与数码管显示模块。 2.照实验要求编写程序流程图,然后编写程序,对编写的程序进行仿真调试,直至通讯成功。

六、实验报告 1.在该实验中,单片机串行口工作在什么工作方式下?说明该工作方式的特点。 工作在工作方式1。8位数据通讯,波特率可变。 2.波特率是什么?怎样设置单片机串口通讯的波特率?如果实验要求通讯波特率为4800bps,怎样修改程序? 特率是指串口通讯中每秒传送的位数,单位为BPS,它反映了串行口通讯的速度。 单片机内部通过定时器T1来提供发送与接收缓存器的内部移位时钟。必须工作在定时器状

态;必须工作在“8位自动重载”工作模式。 3.详细说明本次实验采用的通讯协议。 甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。乙机接收完毕后,将本机(乙机)的学号后8位发送回甲机,甲机显示在数码管上。 4.给针对实验要求编写本机的程序流程图、程序清单并给予适当注释,并说明合作单片机(合作同学)。 这里有两个程序,一个是先接受,一个是先发送。 # include #define uchar unsigned char void init(void); void send(void); void delay(unsigned int i); uchar xuehao[8]={6,6,6,6,6,6,6}; void main(void) { init(); send(); while(1);

}

void init(void) { TMOD=0x20; TH1=0xfd; TL1=0xfd; SCON=0x50; PCON=0x00; TR1=1; }

void send(void) { uchar i; do { delay(200); SBUF=0xaa; while(TI==0);TI=0; while(RI==0);RI=0; }while(SBUF!=0xbb); //---------------------------------- delay(80); for(i=0;i<=7;i++) { SBUF=xuehao[i]; while(TI==0);TI=0; delay(5); } SBUF=9; delay(10);

} /////////////////////////////////////////////////////////// void delay(unsigned int i) { unsigned char j; for(;i>0;i--) for(j=0;j<125;j++) {;} }

# include #define uchar unsigned char void init(void); void receive(void); void delay(unsigned int i); void display(uchar A,uchar B); void duanxuan(uchar c);

uchar xuehao[8]={0}; void main(void) { init(); receive(); while(1) { display(1,xuehao[0]); delay(3); P0=0x00; display(2,xuehao[1]); delay(3); P0=0x00; display(3,xuehao[2]); delay(3); P0=0x00; display(4,xuehao[3]); delay(3); P0=0x00; display(5,xuehao[4]); delay(3);

合集下载

双机互联实验报告

双机互联实验报告

竭诚为您提供优质文档/双击可除双机互联实验报告篇一:计算机网络实验报告_双机互联计算机网络课程实验报告专业:电子科学与技术班级:20XX学号:姓名:深圳大学成人教育学院计算机网络课程实验名称:双机互联实验一、实验目的1.利用网络设备,掌握在局域网内如何把两台计算机利用对等网方式进行连接。

2.学会网络连接,了解对等网互联方式。

3.掌握基本的网络参数的设置,学会使用基本的测试命令(ping)来检测网络的设置情况。

4.掌握局域网中的计算机的软、硬件资源共享的设置和使用方法。

二、认识对等网“对等网”也称“工作组网”,在对等网中没有“域”,只有“工作组”。

对等网上各台计算机有相同的功能,无主从之分,网上任意结点计算机既可以作为网络服务器,为其它计算机提供资源,也可以作为工作站,以分享其它服务器的资源。

对等网是利用操作系统中包含的通信协议的功能来实现数据传输,实现网络中的资源共享。

利用集线器的广播技术或者交换机的选择功能来实现点对点的连接方式和通信方式。

三、实验内容及步骤:步骤一:网络规划经过分析,本实验考虑网络性能,成本和实现的难易程度,确定组网方案为:用对等网,达到2台计算机软硬件资源共享,预留适当扩展,费用低,易管理等特点。

拓扑结构确定为星型连接,如下图。

步骤二:硬件要求、连接、安装。

1.两台安装windowsxp的计算机。

2.两个RJ45的网卡,如下图。

网卡是计算机局域网中最重要的连接设备,计算机主要通过网卡连接网络.在网络中,网卡的工作是双重的:一方面它负责接收网络上传过来的数据包,解包后,将数据通过主板上的总线传输给本地计算机;另一方面它将本地计算机上的数据打包后送入网络。

网卡与网络进行连接,必须有一个接口使网线通过它与其它计算机网络设备连接起来,常见的接口主要有以太网的RJ45接口。

如下图。

安装网卡驱动程序,安装方法较为简单,只要按照网卡驱动程序的安装向导,一步一步执行,最后检查网卡和驱动程序是否安装完整,可以在“计算机管理”里面的“设备管理器”查看,如下图:3.若干带RJ45接头的5类双绞线,双绞线的两头分别按一定的接线顺序压在RJ45水晶头内,这也就是通常大家说的“网线”。

双机互联实验报告心得体会

双机互联实验报告心得体会

双机互联实验报告心得体会双机互联实验是我校自2011年开设的一门计算机专业课程。

它是在网络时代,利用现代通信技术和网络技术完成各种教学任务而产生的新的教学形式。

实验教学一般由三部分组成:实践课程、网络教学和远程教学系统、教育网)。

这三部分根据具体需要设置成了不同类型。

实践课程通常分为两大类:虚拟演示教学和实际应用教学。

虚拟演示教学要求学生通过计算机来获取相关教学资源和信息及完成各种教学任务。

例如学习网页制作时可通过网上浏览网页素材;还可以下载相关网络视频节目等。

一、实践课程实践课程主要包括两个部分,一是教师在教室的多媒体教室上一节实践课;二是学生自己动手制作一个实验实训课。

实践课程主要包括网页设计和制作。

网页设计部分要求学生进行网页设计,包括:主题设计和背景设计;网页页面的逻辑结构设计;网页设计的主要流程。

软件操作部分要求学生使用常用软件进行设计和制作。

软件操作部分主要包括: C语言程序设计、 C++程序设计。

应用教学部分包括:计算机软件应用研究方法应用、移动通信基本知识应用、网络通信基础知识应用、网络系统结构分析与设计、信息安全基础知识运用。

双机互联课目前已在我校开始了实践教学。

二、网络教学网络教学是把教育资源利用现代化的技术手段传播给学生进行教学的一种方式。

利用网络优势,它能使学生与教师的教学行为融为一体,学生可以根据自己的需要向教师提出问题并及时得到回答。

学生在学习中可以获得与其他学生不同的学习体验,有利于学生根据自己的实际情况选择合理的学习方式。

采用这种模式后,老师的时间得到了极大地开发与利用。

它能够充分利用现代教学手段和技术与传统教学手段的优势,实现两者相互补充的作用。

它的优点:①教师教学效率高;②教学效果好。

三、远程教学远程教学是把学校和教学点的优质教育资源通过互联网和电波等媒介进行传播,达到教学目的。

因此,它的应用范围非常广泛,可以让学生有机会参加在线教学,进行远程学习。

如:学校可以利用网络为学生进行教学辅导和管理。

双机通信及PCB设计

双机通信及PCB设计

一、实验目的掌握串口通信工作原理及程序开发方法,熟悉单片机电路的PCB设计过程。

二、实验原理实验6的电路原理图如图A.72所示,图中1#机的发送线与2#机的接收线相连,1#机的接收线与2#机的发送线相连,共阴极BCD数码管BCD-LED1和BCD-LED2分别接各级的P2口,两机共地,晶振为11.0592MHz,波特率为2400BPS,串口方式1.实现功能参见第7章实例3,软件编程原理如下:1#机采用查寻法编程,根据RI和TI标志的软件查询结果完成收发过程;2#机采用中断法编程,根据RI和TI的中断请求,在中断函数中完成收发过程。

PCB设计原理:在1#机的电路原图中添加接线端,并定义端口。

图中BCD数码管需要自定义PCB封装,其元件具体尺寸如图A.74所示。

三、实验内容1、掌握串行通信原理和中断法通信软件编程;2、完成实验6的C51语言编程;3、学习使用ARES软件,完成实验6 1#机电路PCB设计。

四、实验步骤1、提前阅读与实验6相关的阅读材料;2、参考图A.72~A.74及表A.7,在ISIS中完成电路原理图的绘制;3、采用uVision3进行C51串行通信编程和调试;4、对1#机的电路进行PCB设计,生成Cerber输出文件。

图A.72 实验6的电路原理图图A.73 实验6的电原理图五、实验要求提交实验报告并包括如下内容:电路原理图、C51源程序、仿真运行截图、三维PCB预览图、光绘文件分层图及实验小结。

六、参考图表源程序:#include“reg51.h”#define uchar unsigned charuchar receiv ; // 定义接收缓冲void mian(void){P2=0x3f; //显示黑屏TMOD=0x20; //T1定时方式2TH1=0xf4; //2400bspTL1=0xf4;PCON=0x00; //波特率不加倍TR1=1; //启动T1SCON=0x50; //串行方式1,T1和R1清零、允许接收ES=1; //中断函数初始化,开源允许EA=1; //开总运行While(1){ //空运行}}Void output()interrupt 4{ //定义串行通信中断函数if(RI==1) //判断是否接收完RI=0; //清R1标志位receiv=SBUF; // 取得接收值SBUF=receiv;} //结果返回主机If(TI==1) // 判断发送是否结束{TI=0; // 清T1标志位P2=receiv;} //显示接收值}双机通信仿真效果截图实验小结通过本次试验,我顺利完成了单片机的异步通信功能,实现了1#机循环发图7 PCB_LED 封装尺寸图图8 PCB_LED封装图图9 PCB布线图10 3D效果图底部铜箔层顶部丝印层顶部铜箔层送0-F数据,2#机实时接收数据,两机数据通过各自的BCD数码管显示出来。

双机通信设计实验

双机通信设计实验

双机通信设计实验双机通信是指两台计算机之间进行数据传输和信息交换的过程。

在现实生活和工业应用中,双机通信十分常见,例如,在办公室使用局域网进行文件共享,在工业自动化系统中使用双机通信进行数据监控和控制。

为了更好地理解双机通信设计和实验,以下将介绍双机通信的基本原理、实验目的和实验步骤。

双机通信的基本原理是通过网络连接两台计算机。

网络可以是局域网(Local Area Network,LAN)或广域网(Wide Area Network,WAN)。

局域网是指在较小范围内实现设备互联的网络,例如一栋建筑物、一片园区或一个城市。

广域网则跨越较大范围,连接不同地域的计算机和网络设备。

双机通信的目的是实现数据传输和信息交换。

在实验中,我们可以通过编写软件程序来模拟计算机之间的通信。

实验可以分为三个阶段,包括网络连接、数据传输和信息交换。

第一阶段是网络连接。

我们需要搭建一个简单的局域网环境,可以使用两台计算机和一台交换机。

将两台计算机连接到同一个交换机上,通过交换机实现计算机之间的通信。

在实验中,我们可以使用Ethernet协议来实现局域网连接。

第二阶段是数据传输。

在此阶段,我们需要编写程序来模拟数据的发送和接收。

发送方将数据封装成网络数据帧,并通过网络发送给接收方。

接收方则解析数据帧,提取出数据并进行处理。

在实验中,我们可以使用Socket编程来实现数据的传输。

第三阶段是信息交换。

一旦数据传输成功,我们可以在计算机之间进行信息交换。

信息交换可以包括发送方和接收方之间的会话协商、错误确认和数据重传等。

在实验中,我们可以使用TCP协议来实现可靠的信息交换。

通过以上的实验,我们可以更好地理解双机通信的原理和过程。

实验不仅可以帮助我们理论上掌握双机通信的基本知识,还可以锻炼我们的实验操作能力和问题解决能力。

此外,通过实验,我们还可以对双机通信的性能和应用进行评估和优化,以满足实际需求和应用场景。

在进行实验时,我们应该遵循实验的安全规范,并注意电脑和网络设备的保养和维护。

基于单片机的双机通信实训报告

基于单片机的双机通信实训报告

一.设计方案根据题目分析可知硬件电分为主机模块和从机模块。

主机模块中包含单片机子模块、lcd1602显示子模块和矩阵键盘模块,从机模块则包括单片机子模块、LED显示模块。

在主模块中由AT89C51单片机担任主机,LCD1602担任显示设备和由4位独立按键做矩阵键盘。

在整个系统中有一个从机模块,有一片AT89C51单片机担任从机模块的控制模块,串口采用单工及异步通信方式。

整个硬件结构原下图所示。

主机从机二.硬件分析(1)控制模块控制模块采用AT89C51作为主控芯片,11.0592MHZ的晶振频率作为时钟震荡电路。

基本电路图如下所示。

仿真图由于在protues里面,单片机内部默认自带晶振,所以不需要再连接振荡电路。

控制模块原理图(2)显示模块采用LCD1602作为显示模块,LCD1602用来显示当前从机LED的状态。

仿真图如下所示:仿真图在画原理图时,由于没有LCD1602的封装。

所以,本人直接用16跟引脚的排针代替。

然后在给相应的引脚表上网络位口。

但是再画PCB,必须控制好原件之间的距离,以免导致制版时,元件位置冲突。

原理图如下所示:原理图(3)矩阵键盘模块矩阵键盘用来给单片机输入一个电平值,然后再通过主机CPU发送给从机,最后从机CPU接收,并通过LED显示出结果。

当按键按下,相当于给主机CPU 送入一个低电平,主机再把这个电平值发送给从机。

因为LED是采用共阳连接的方式,所以可以点亮LED。

矩阵键盘仿真图,以及原理图如下所示:仿真图原理图(4)LED显示模块LED显示模块,主要用来显示主机送给从机的电平值是高电平还是低电平,同时也可以用来检测,整个通信系统是否能够正常工作。

为了整个电路简化,以及效果更明显,所以决定采用共阳连接的方式。

LED显示模块的仿真图,以及原理图如下所示:仿真图原理图三.软件分析根据题目分析可知硬件电分为主机模块和从机模块。

AT89C51单片机担任主机模块和从机模块的控制模块,串口采用单工及异步通信方式。

实验六——双机通信及PCB设计

实验六——双机通信及PCB设计

中国石油大学(北京)实验报告实验课程:单片机原理及应用实验名称:实验六——双机通信与PCB设计一、实验目的掌握串口通信工作原理及程序开发方法,熟悉ARES软件PCB设计过程。

二、实验内容1、按照P241图A.72绘制电路原理图1,将第6章实例2中2#机的查询法收发程序改为中断法(1#机发送过程不变)并实现原有功能;2、按照图A7.3和表A7.3绘制电路原理图2,并定义电源端口;3、采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文件,其中BCD数码管需按照图A.74所示尺寸进行PCB自定义封装;4、完成实验报告。

三、实验要求提交的实验报告中应包括:电路原理图1,2#机的C51源程序,双机通信仿真效果及讨论*,PCB设计图(电路原理图2、排版图、3D效果图、光绘文件分层图3-4幅)以及实验小结。

提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验六。

*讨论:中断法与查询法的程序结构差异及优缺点。

1、电路原理图1图1 电路原理图2、2#机的C51源程序图2 2#机源程序3、双机通信仿真效果及讨论图3 仿真运行一说明:利用KEIL编写1#机和2#机的源程序并生成“.HEX”文件,分别加载在两个单片机上。

1#机循环发送0-F数据,2#机实时接收数据,两机数据通过各自的BCD数码管显示出来。

图4仿真运行二说明:1#机循环发送“0—F”数据,如图1#机发送数据“F”,2#机接收数据后在数码管上输出,1#机接收2#机返回的数据对比无误后在数码管上同时输出“F”。

图5 仿真运行三说明:输出“0—F”后,1#机循环发送“0—F”的数据,2#机实时接收数据,两机数据通过各自的BCD数码管显示出来。

讨论:从单片机仿真的结果上看,2#机采用中断法编程并生成HEX文件后加载到单片机上后进行仿真运行的效果与采用查询法编程的效果一致。

从源程序上看,采用查询法时, CPU需要不断等待单片机发送和接收完数据后才能进行下一步的操作。

单片机实验报告-流水灯-双机通信-交通灯-定时时钟

实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机是点亮12发光二极管,闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计流水灯原理图四、系统软件设计演示程序五、实验过程中遇到的问题及解决方法1)每次循环无论正转还是反转程序,总先是先执行P1口的8位led灯。

原因:在利用KEIL自带的库函数中的_crol_和_cror_时,在正转和反转程序中应该调换顺序的,开始没注意到。

改正后显示正常。

2)在开始实验的时候实行的是一直循环的方式,利用按键嵌套。

后来发现不理想,每次按键按到三次以上后进入死循环。

解决方案:利用一个按键,显示一次。

并加入按键释放,防止误动作。

指导老师签字:日期:实验一程序:/******************************************************************** **************工程说明:本工程主要完成了一下功能:1,复位后演示所有功能2,灯闪烁三次3,流水灯正转4,流水灯反转函数说明:yanshi():演示程序dengss():闪烁程序right():正转程序left():反转程序scankey():按键扫描********************************************************************* **************/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,a,b,c,d;uchar flag=0;//亮灯判断标志uchar aa,bb,cc,dd,ss;sbit H1=P3^6;sbit key1=P0^5;sbit key2=P0^6;sbit key3=P0^7;void delay(uint); //1ms延时void yanshi(void);//演示所有亮灯方式void dengss(void);//闪烁三次void left(void); //左循环亮灯void right(void);//右循环亮灯void scankey(); //按键扫描#endif#include"stc10.h"#include<intrins.h>#include<led.h> //包含各种变量定义及函数声明main(){yanshi();delay(2000); //两秒后进入可控大循环while(1){scankey();if(flag==0)right();if(flag==1)left();if(flag==2)dengss();}}void delay(uint x){uint i,j;for(i=110;i>0;i--)for(j=x;j>0;j--);}void yanshi(){dengss();right();left();P2=0XFF;P3=0XFF;}void dengss(){for(ss=3;ss>0;ss--){P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}flag+=3;//退出小循环,只亮一次,增大按键扫描频率}void right(){aa=0xfe;for(a=8;a>0;a--){P2=aa;aa=_crol_(aa,1);delay(500);}bb=0xfb;P2=0xff;//熄灭循环后亮着的for(b=4;b>0;b--){P3=bb;bb=_crol_(bb,1);delay(500);}//D12保留发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频率}void left(){cc=0xdf;for(c=4;c>0;c--){P3=cc;cc=_cror_(cc,1);delay(500);}P3=0xff;//熄灭D9dd=0x7f;for(d=8;d>0;d--){P2=dd;dd=_cror_(dd,1);delay(500);}//D1保留发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频率}void scankey(){H1=0;if(key1==0){delay(10);if(key1==0){flag=0;while(!key1);//等待按键释放}}if(key2==0){delay(10);if(key2==0){flag=1;while(!key2);//等待按键释放}}if(key3==0){delay(10);if(key3==0){flag=2;while(!key3);//等待按键释放}}}实验二定时器或实时时钟实验一、实验目的1)数码管动态显示技术2)定时器的应用3)按键功能定义二、实验实现的功能1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

双机互联实验报告总结

双机互联实验报告总结双机互联实验报告总结一、实验介绍本次实验是基于网络通信的双机互联实验,主要内容为设计一个能够在两台计算机之间传输数据的程序,并测试程序的性能和可靠性。

本次实验采用的是C++语言进行编程,运用WinSock库实现网络通信功能。

二、实验原理WinSock是Windows系统提供的一组网络编程接口,通过这组接口可以实现网络通信,包括TCP/IP协议,UDP协议等。

本次实验采用TCP协议,因为TCP协议是一种面向连接的协议,能够确保数据传输的可靠性和完整性,对于本次实验而言显得尤为重要。

三、实验步骤1. 设计服务器端程序服务器端程序主要有以下功能:- 创建socket- 绑定socket到指定端口- 发送数据给客户端- 关闭连接具体实现过程如下:```cpp// 创建socketSOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sListen == INVALID_SOCKET) {cout << "创建socket失败:" << WSAGetLastError() << endl;WSACleanup();return 0;// 将socket绑定到指定端口struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(PORT);sin.sin_addr.S_un.S_addr = INADDR_ANY;if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) { cout << "绑定socket失败:" << WSAGetLastError() << endl;closesocket(sListen);WSACleanup();return 0;}if (listen(sListen, 5) == SOCKET_ERROR) {cout << "监听socket失败:" << WSAGetLastError() << endl;closesocket(sListen);WSACleanup();return 0;}sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);SOCKET sClient = accept(sListen, (SOCKADDR *)&remoteAddr, &nAddrLen); if (sClient == INVALID_SOCKET) {closesocket(sListen);WSACleanup();return 0;// 发送数据char szData[] = "Hello, world!";if (send(sClient, szData, strlen(szData), 0) == SOCKET_ERROR) { cout << "发送数据失败:" << WSAGetLastError() << endl;closesocket(sClient);WSACleanup();return 0;}// 关闭连接closesocket(sClient);closesocket(sListen);WSACleanup();return 0;```2. 设计客户端程序客户端程序主要有以下功能:- 创建socket- 连接服务器- 接收从服务器传回的数据- 关闭连接具体实现过程如下:```cpp// 创建socketSOCKET sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sClient == INVALID_SOCKET) {cout << "创建socket失败:" << WSAGetLastError() << endl;WSACleanup();return 0;}// 设置服务器地址和端口号sockaddr_in remoteAddr;remoteAddr.sin_family = AF_INET;remoteAddr.sin_port = htons(PORT);remoteAddr.sin_addr.S_un.S_addr = inet_addr(SERVER_ADDR);// 连接服务器if (connect(sClient, (SOCKADDR *)&remoteAddr, sizeof(remoteAddr)) == SOCKET_ERROR) {cout << "连接服务器失败:" << WSAGetLastError() << endl;closesocket(sClient);WSACleanup();return 0;}// 接收数据char szData[256];ZeroMemory(szData, sizeof(szData));int nRet = recv(sClient, szData, sizeof(szData), 0);if (nRet == SOCKET_ERROR) {cout << "接收数据失败:" << WSAGetLastError() << endl;closesocket(sClient);WSACleanup();return 0;}cout << "接收到的数据为:" << szData << endl;// 关闭连接closesocket(sClient);WSACleanup();return 0;```3. 编译和运行程序将服务器程序和客户端程序分别编译,并在服务器上先运行服务器程序,再在客户端上运行客户端程序。

双机互联实验报告

双机互联实验报告一、实验目的通过搭建双机互联实验,了解和学习在实际应用中实现双机互联的方法与技术,掌握常见的网络连接方式和网络配置方法,提高对网络拓扑和网络协议的理解。

二、实验设备与工具1.实验设备:两台计算机、一个网络交换机、两根网线。

2. 实验工具:Windows系统、Wireshark抓包工具、SecureCRT远程连接软件。

三、实验步骤与过程1.搭建实验环境:将两台计算机和网络交换机连接起来,连接方式为一台计算机的网口连接到交换机,另一台计算机的网口连接到交换机,通过网线实现互联。

2.配置网络设置:分别登录两台计算机,打开“控制面板” - “网络和共享中心”,点击“更改适配器设置”,找到对应的以太网适配器,右键点击并选择“属性”。

在“属性”窗口中选择“Internet协议版本4(TCP/IPv4)”,点击“属性”,依据实际情况进行IP地址和子网掩码的设置。

例如,计算机1的IP地址配置为192.168.0.1,子网掩码配置为255.255.255.0;计算机2的IP地址配置为192.168.0.2,子网掩码配置为255.255.255.0。

点击“确定”保存设置。

3.配置默认网关:在“Internet协议版本 4(TCP/IPv4)属性”窗口中点击“高级”,在“默认网关”选项卡中点击“添加”按钮,设置网关地址为计算机1的IP地址(即192.168.0.1)。

点击“确定”保存设置。

4.检查网络连接:分别登录两台计算机,在命令提示符窗口中输入ping命令来测试网络连接。

在计算机1上输入“ping 192.168.0.2”,在计算机2上输入“ping 192.168.0.1”,确保两台计算机之间能够相互ping通。

5.抓包分析:在计算机1上安装Wireshark抓包工具,打开软件并选择对应的以太网适配器。

点击开始抓包,然后在计算机2上执行网络操作,例如访问网页或发送文件等。

在Wireshark软件中观察抓包结果,分析网络通信过程和数据包的内容。

单片机实验报告流水灯双机通信交通灯定时时钟

实验一流水灯实验一、实验目的1)简单 I/O 引脚的输出2)掌握软件延时编程方法3)简单按键输入捕捉判断二、实验实现的功能1)开机是点亮 12 发光二极管,闪耀三下2)依据顺时针循环挨次点亮发光二极管3)经过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计流水灯原理图四、系统软件设计演示程序按键正转闪耀反转五、实验过程中碰到的问题及解决方法1) 每次循环不论正转仍是反转程序,总先是先履行P1 口的 8 位 led 灯。

原由:在利用 KEIL 自带的库函数中的 _crol_ 和_cror_ 时,在正转和反转程序中应当调动次序的,开始没注意到。

更正后显示正常。

2)在开始实验的时候推行的是向来循环的方式,利用按键嵌套。

以后发现不理想,每次按键按到三次以上后进入死循环。

解决方案:利用一个按键,显示一次。

并加入按键开释,防备误动作。

指导老师署名:日期:实验一程序 :/******************************************************************** **************工程说明:本工程主要达成了一下功能:1,复位后演示全部功能2,灯闪耀三次3,流水灯正转4,流水灯反转函数说明:yanshi() :演示程序dengss() :闪耀程序right():正转程序left():反转程序scankey() :按键扫描********************************************************************* **************/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,a,b,c,d;uchar flag=0;//亮灯判断标记uchar aa,bb,cc,dd,ss;sbit H1=P3^6;sbit key1=P0^5;sbit key2=P0^6;sbit key3=P0^7;void delay(uint);//1ms 延时void yanshi(void);//演示全部亮灯方式void dengss(void);//闪耀三次void left(void); //左循环亮灯void right(void);//右循环亮灯void scankey(); //按键扫描#endif#include"stc10.h"#include<intrins.h>#include<led.h> //包含各样变量定义及函数申明main(){yanshi();delay(2000); //两秒后进入可控大循环while(1){scankey();if(flag==0)right();if(flag==1)left();if(flag==2)dengss();}}void delay(uint x){uint i,j;for(i=110;i>0;i--)for(j=x;j>0;j--);}void yanshi(){dengss();right();left();P2=0XFF;P3=0XFF;}void dengss(){for(ss=3;ss>0;ss--)P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void right(){aa=0xfe;for(a=8;a>0;a--){P2=aa;aa=_crol_(aa,1);delay(500);}bb=0xfb;P2=0xff;//熄灭循环后亮着的for(b=4;b>0;b--){P3=bb;bb=_crol_(bb,1);delay(500);}//D12 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void left(){cc=0xdf;for(c=4;c>0;c--){P3=cc;cc=_cror_(cc,1);delay(500);P3=0xff;// 熄灭 D9dd=0x7f;for(d=8;d>0;d--){P2=dd;dd=_cror_(dd,1);delay(500);}//D1 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void scankey(){H1=0;if(key1==0){delay(10);if(key1==0){flag=0;while(!key1);//等候按键开释}}if(key2==0){delay(10);if(key2==0){flag=1;while(!key2);//等候按键开释}}if(key3==0){delay(10);if(key3==0){flag=2;while(!key3);//等候按键开释}}}实验二准时器或实不时钟实验一、实验目的1)数码管动向显示技术2)准时器的应用3)按键功能定义二、实验实现的功能1) 经过按键能够设定准不时间,启动准时器,准不时间到,让12 个发光二极管闪耀,达成准时器功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档