工业通信网与控制技术实验指导书.docx
实验指导书一、基于RS-232的数据传输(一)2二、基于RS232的数据传输(二)6三、字符串数据的传输9四、二进制数据的打包处理13五、工业通信网中的数据校验16六、工业通信网中的上位机界面实现18七、综合设计基于PC的网络电子钟21V(TC+ Ckl12L、2()U345Rxl678M112MiaT20PI.0Pl.lPl.2Pl.3Pl.4Pl .5Pl .6PI .7RSI7VPDP3.(yRxDP3.1/lxDP32IN7T) P3.3INT1 P3.4HDP3.5T1P3.8WRP3.力 RDXTAL2 XTAL1 GNDVCC PO.O P0.1P0.2PO.3P0.4P0.5P0.6P0.7EA/Vpp ALHPROG PSENVCCzrVCCT_P2.P2.P2.P2.P2.P2.P2.P2.38P0137P0236P0335P()434P0533P0632P0731VCC30VCC29T28P2727P2626P2525P2424P2323P2222P2I21P204()39POf)RP2l(k12345678;9P05P04JITXD232RXD232P30SI-OOP31SW-PBIS2-OO1P32SW-PB4S3 _ -OO1P33SW-PBIS4 _ -O O1P34SW-PB4S5 _ -OO1P35SW-PBlS6 -OO1P36SW-PBlS7 -O O1SW-PBI S8SW-PBI图3-1单片机系统RS-232与数码管电路P03H)2P01POO12字符串发送子程序流程:结束SE33?字符串接收子程序流程:(2)发挥局部:a.将基本步骤的两局部程序进行整合。b.能够使用串口调试助手进行波特率的修改(更改后串口调试助手也要使用新的波特率进行通信)。6.实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。7.实验预习及思考题1)采用字符串传输的优缺点。2) printf函数和sprintf函数的功能与使用方法。3) SBUF=0x31;和 SBUF=' V 的功能区别。四、二进制数据的打包处理1.实验目的1)掌握数据打包的基本原理与方法。2)掌握将PC机发送来的打包数据进行解析并转换的方法。3)熟悉数码管动/静态显示和显示内容的更新方法。2 .实验设备计算机一台、单片机实验箱一套、Keil C软件一套、串口调试软件一套。3 .实验基本原理字符串的识别是靠字符串中的字符每个对应ASCII唯一编码,但是这样相同的信息量的传输可能会花 费更多的时间或者资源。例如传送一个数字1234,如果看作一个整型数据的话它只占2个字节,内容为 0x04, 0xd2,而如果看作是字符串它就占4个字节0x31, 0x32, 0x33, 0x34。从空间和时间上都多了一倍, 所以采用字符串传输的方式效率相对较低,要提高效率,可以采用直接二进制传输的方式。可以制定这样的协议:引导码占2个字节、数据长度占2个字节、数据1. .数据n占n个字节、校验码1个字节(校验码在 下个实验中介绍)。例如我们要传送1234这个数据,它的二进制占两个字节,那么我们引导码用0x55, Oxaa,数据长度 为0x00, 0x02,数据为0x04, 0xd2,这样当收到2个数据后,接收操作自动结束,虽然看似占用的资源 比字符串传输多,但是对于大量的数据传输效率的提升时很明显的。实际数据包为:0x55, Oxaa, 0x00, 0x02, 0x04, 0xd2当单片机串口收到0x55时判断下一个是不是Oxaa,如果是Oxaa那么将后面收到的数据认为是一帧数 据。当然这样数据中如果有0x55, Oxaa序列就认为是引导码也不对,所以还要有其他的措施,比方超时 检测,转义数据等等方式。数码管显示采用动态扫描方式,也可以将其位段固定(这样子数码管显示内容将是相同的)。电路如 图4-1所示。共阴数码管,P0为位段,P2为码段。4 .实验内容1)通过PC在串口调试助手上使用16进制模式发送数据给数码管显示。2)打包发送16进制数据,在串口调试助手上发送4个字节16进制数据,实现最大99999999的显示。3)控制实验板上数码管的显示内容(静态、动态)。5 .实验步骤(1)基本步骤:a.按照实验一进行电路连接。b.编写串口初始化程序和串口发送接收程序,初始化成功后,每隔1秒发送4个字节的加1数据。c.通过串口调试助手发送数据送数码管显示(16进制),首先完成静态,即发送单个数据在数码管上显 示,然后完成更新整组数据,如发送数据为00 BC 61 4E,那么对应数码管上显示12345678。(2)发挥局部:a.加入引导码控制,实现非引导数据发送时,单片机不进行送显处理。+VCCJP1Cd20URxl IK3(toFP30 西7 运 叵 西P35 远 P371TTTTTT 叵 To T J2 J3 J4 H J6 77J9 20P1.0VCCPl.lPO.OPl.2P0.1Pl.3P0.2Pl.4P0.3Pl.5P0.4Pl.6P0.5Pl.7P0.6RS1/VPDP0.7P3ORDEA/VppP3.1/TxDALE/PROGP3.2/INTOPSENP3.MNHP2.7P3.4/TDP2.6P3.5T1P2.5PS.GWRP2.4P3.7/RDP2.3XTAI2P2.2XTAL1P2.1GNDP2.0VCC l(kT39POO38POI37P0236P0335P0434P0533P0632P0731VCC30VCC29T40VCC28_P2727 市西25P2424 国23 两22 西21 两SIP301234567891234567899Ul 1345iTP3110ZZilP30-9-q+ gC1-。+Q-T1INT2INR1OUTR2ag 5MAX232v-T10UTT2OUTRUNR2INo VCC="1C52a- IIJZL14 luF -7 TXD232138RXI3232TXD232RXD232-P3Io oSW-PB4 S2O O1SW-PB4S3SW-PB4 S4sw-pm S5P34 已. Lsw-pm S6P35OOSW-PB4 S7P36P3O O1sw-pm S8O O1SW-PB4RPlP0712P069RP2P058图4-1单片机系统RS-232与数码管电路.实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。6 .实验预习及思考题1)采用二进制进行数据传输的优缺点。2)画出具有引导码的数据接收程序的流程图。3)如果二进制数据中有引导码应该怎么处理?4)预习写出基本要求的流程图或验证代码。五、工业通信网中的数据校验1 .实验目的1)掌握网络中最基本的数据校验方法一一奇偶校验。2)掌握数据校验的常用算法和校验、CRC校验。3) 了解和校验、CRC校验的程序设计。2 .实验设备计算机一台、单片机实验箱一套、Keil C软件一套、串口调试软件一套。3 .实验基本原理串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符其各位为: 0100, 0101M5HD7 D0由于干扰,可能使某些位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫 “检错九发现错误后,如何消除错误,叫“纠错,最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或 偶校验。奇校验:所有传送的数位(含字符的各数位和校验位)中,的个数为奇数,如:1 0110, 010100110, 0001偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如:1 0100, 01010 0100, 0001奇偶校验能够检测出信息传输过程中的局部误码(1位误码能检出,2位及2位以上误码不能检出),同 时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。常用的奇偶校验法为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验。另一种数据校验方式为和校验,即将要传输的数据包内所有数据相加,将和最后发送到接收方,接收方 将接收到的数据进行相同的处理,最后的和跟收到的校验和比拟,如果相同那么认为数据正确,否那么数据错误, 请求重发。循环冗余码校验CRC是常用的重要校验方法之一。CRC校验采用多项式编码方法,被处理的数据块可以 看作是一个n阶的二进制多项式。这里,假定待发送的二进制数据段为g(x),生成多项式为m(x),得到的 CRC校验码为c (x) oCRC校验码的编码方法是用待发送的二进制数据g(x)除以生成多项式m(x),将最后的余数作为CRC校验 码,实现步骤如下。 设待发送的数据块是m位的二进制多项式g(x),生成多项式为r阶的m(x)。在数据块的末尾添加r 个0,数据块的长度增加到m+r位,对应的二进制多项式为G(x)。用生成多项式m(x)去除G(x),求得余数为阶数是L1的二进制多项式c(x)。此二进制多项式c(x) 就是g(x)经过生成多项式m(x)编码的CRC校验码。用模2的方式减去c(x),得到的二进制多项式就是包含了 CRC校验码的待发送字符串。CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于r (r为m(x)的阶数)的突发错误。所 以,CRC的生成多项式的阶数越高,误判的概率就越小。CCITT建议:2048 Kb/s的PCM基群设备采用CRC-4 方案,使用的CRC校验码生成多项式m(x)=x+x+l。采用16位CRC校验,可以保证在1014bit码元中只含 有1位未被检测出的错误。在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16,其生 成多项式m(x)=xWx,x2+l;而在CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用 CCITT-16,其生成多项式m(x)=x- CRC-32的生成多项式为:/ 32 . 26 . 23 . 22 .16 .12 ,11 ,10 . 8 . 7 . 5 . 4 . 2 .m(x;=x +x +x +x +x +x +x +x +x+x+x+x+x+x+l。0-32出错的概率为0-16的1。5。由于CRC-32的可靠性,把CRC-32用于重要数据传输十分合适,所 以在通信、计算机等领域运用十分广泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SI0)内, 都采用了 CRC校验码进行过失控制;以太网卡芯片、MPEG解码芯片中,也采用CRC-32进行过失控制。m(x)生成多项式的系数为0或1,但是m(x)的首项系数为1,末项系数也必须为1。m(x)的次数越高, 其检错能力越强。4 .实验内容1)编写单片机串口初始化程序,对奇偶校验进行设置。2)在数码管上显示串口调试助手发送的数据,并用最高位显示校验位数值。3)编程实现和校验算法,在串口调试助手中发送数据,手动计算校验和,然后在单片机上进行校验,并 将校验和显示在数码管上。4*)编写CRC校验算法,进行CRC数据校验。5 .实验步骤(1)基本步骤:a.切断开发板电源,将串口线和下载线连接到开发板后重开电源。b.编写串口初始化程序对串口进行初始化。c.在串口调试助手中设定不校验,而单片机串口初始化设为奇校验或者偶校验(通过按键操作),将单个 字节数据送数码管显示,数码管最高位显示校验位的值,观察现象,记录并总结。d.在串口调试助手中设定奇校验或偶校验,重复步骤c中内容。e.编程实现和校验算法,在串口调试助手中发送数据,手动计算校验和,然后在单片机上进行校验,并 将校验和显示在数码管上。发挥局部:a.编写CRC校验算法,进行CRC数据校验。6 .实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。7.实验预习及思考题1)课前预习好校验的相关方法以及算法。2)思考奇偶校验能否同时进行。3)查阅资料了解什么时垂直奇偶校验,水平奇偶校验和垂直水平奇偶校验。4)思考如果校验和结果位数变化该如何处理,例如两个8位和为9位,再多个数据位数会更多。5)思考这种校验适合字符串数据还是二进制数据,为什么。六、工业通信网中的上位机界面实现1 .实验目的1) 了解PC机编写基本程序界面的方法。2) 了解PC机编程控制串口收发数据的方法。3) 了解VB编程的基础知识。2 .实验设备计算机一台、单片机实验箱一套、Keii C软件一套、串口调试软件一套。3 .实验基本原理在计算机控制中经常会遇到各种各样的程序界面,在这些界面实现数据传输是工程重要问题,可以实现 界面编写及数据传输的编程工具很多,例如VB、VC、BC、Delphi等,这些工具都能实现类似的功能,可根据 需要进行选取。4 .实验内容:1)使用VB实现如下列图6-1界面。图6-1上位机界面2)编写VB相关程序,实现界面的指示功能。3)编写单片机程序,能够接收并解析VB编写程序发送的控制指令,能够将按键信息发送给PC机通过VB显示状态。4*)用VB实现单片机板的数码管的控制。5 .实验步骤(1)基本步骤:a. 使用VB构建如图6T界面。用到的控件主要有label, shape, timer, ms comm, VScrollob.文字显示使用label,图形用shape,设定圆形或长方形,灯内的D7是在shape上叠加了 labelo 调整各个控件的位置。各个控件的属性修改如下:label (指示)只改变captionlabel (shape 内)改变 caption 另外需改变 backstyle=transparentshape (圆形 circle 属性) boardcolor=白色 fillcolor =白色 fillstyle =0-solidshap (矩形 rectangle 属性)boardcolor=黑fillcolor 二白色 fillstyle =0-solidtimerinterval = 1c.双击shape内label在弹出的代码窗口中添加程序。实现点击图形改变颜色的功能 Private Sub Labe19_Click()If Shape3. FilIColor = RGB(255, 255, 255) ThenShape3. FillColor = RGB(255, 0, 0)Else: Shape3. FillColor = RGB(255, 255, 255) End If End Subd.步骤c成功后,在该函数后添加发送函数MSComml. Output=“L7”。e.切断开发板电源,将串口线和下载线连接到开发板后重开电源编写单片机程序,使其接收到“L7” 时点亮P1 口的第7位上的发光二极管,依次完成其他发光二极管的控制。f.编写独立按键识别程序,当单片机识别到按键时,将按键信息发给上位机。g.编写VB程序解析发送来的按键信息,可以现将其放入一个label中显示,在进行解析让图形变化。 VB接收参考程序如下:Private Sub MSComml OnComm()Select Case MSComml. CommEvent借着取代底下每一个case语句来处理每个事件与错误'事件 Case Case Case CaseCasecomEvCD comEvCTS comEvDSR comEvRingcomEvReceiveCD线的状态发生变化.CTS线的状态发生变化.DSR线的状态发生变化.Ring Indicator 变化.'收到 RThreshold # ofreceivetemp = Trim(MSComml. Input)Case comEvSend '传输缓冲区有Sthreshold个字符'End SelectIf receivetemp = Then receive =Elself receivetemp <> Then receive = receive + receivetemp'Text2. Text = Text2.Text + receive receive =Elsecounter = counter + 1基于RS-232的数据传输(一)串口键盘的简易实现.实验目的1)掌握计算机串口与外部设备(单片机控制板)的连接方法。2)掌握单片机利用C语言编程实现数据发送的方法。3) 了解串口调试的方法。1 .实验设备计算机一台、单片机实验箱一套、Keil C软件一套、串口调试软件一套。2 .实验基本原理串行口对控制系统而言意义重大,它可以实现控制系统设备间的通讯。就本实验采用的设备(单片机控 制板)而言,它可以实现的控制板数据传输到电脑端,也能实现电脑对单片机控制板的操作。串行通信多位数据在一根数据线上顺序进行传送,其速度比并行通信要慢。电路简单,适合多数位、长距离 通信。采用某些手段可以提高传输距离。主要有异步通信和同步通信两种。A、异步通信:传输数据常以字节为单位分组,每组数据前后分别加一位起始位和停止位(还可增加), 可在停止位前加一位校验位。这组数据称为一帧。异步通信中收发两端必须保证相同的速率,及每秒钟的发 送位数(一位一位发送),因此有波特率的概念bps,常用的有3。0、600、900、1200、2400、4800、9600、 19200、38400、115200 等。起始位奇偶校验位一|停”.位空闲位卜数据位. | 0/10/10/1 Q,l 0/10/10.1 Q 1 I I 1I LSBMSBI,也 /1、B、同步方式:以字节为单位,每次传输12个同步字符,假设干数据和校验字符,同步自符起联络作用。 为到达完全同步,常采用同步时钟(调制方式或专线)。传输速度快,适于高速通信。另外,根据通信线路的工作方式,又分为单工、半双工和全双工三类。MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口不仅能同时进行数 据的发送和接收,也可作为一个同步移位寄存器使用(由工作方式决定)。在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须 与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc 经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。由于PC机上的RS-232串行口接口电平为正负15V,而单片机为TTL电平,因此单片机要通过RS-232 与PC机进行通信时需要进行电平转换,另外PC机的RS-232接口早期是为Modem通信设计的,目前保存的 多为DB9接口,在这个接口中有9个引脚,除了地线和串行输入输出信号外,其他均为辅助信号,在进行某 些数据传输时,这些辅助信号可以不予考虑,因此我们只用了 3条线,即地线、TXD和RXD。实验电路如图 1-1所不End IfEnd Sub(2)发挥局部:a.用VB实现单片机板的单个数码管的控制,使用Label和VScroll。6 .实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。7 .实验预习及思考题1)课前预习VB编程基本知识,主要包括实验中所用的添加方法,属性修改等。2)复习前面实验的内容,熟悉单片机解析串口数据和发送数据给PC的程序编写。3)思考开发板上的其他资源如何与上位机连接(组态软件)。七、综合设计一一基于PC的网络电子钟1 .实验目的及要求1)能够系统性地总结掌握的知识,将单元模块知识有机的结合在一起。2)能够充分协调好硬件与软件之间的相互结合,合理设计硬件电路。3)掌握基于RS-232传输的工程基本设计方法。2 .实验设备计算机一台、单片机实验箱一套、Keii C软件一套、串口调试软件一套。3 .实验基本原理通过网络能够将系统板的时钟(及其他信息)收集到PC机,同时又能通过PC机对系统版进行控制,如 设定时间等,由于数据的信息两较大,因此需要在数据帧中设定命令字,以区分后续数据的内容。另外由于 数据操作过程中需要保存临时的设定结果,因此应使用缓冲区来暂存相关信息。4 .设计主要技术指标1)在单片机板上实现正确稳定地显示小时(两位数)、分钟(两位数)、秒钟(两位数),同时数码管应无闪 烁问题。2)通过按键分别实现时、分信息的调整,方便用户对时间的校准。3)在PC机上实现时钟界面,并将单片机板时钟实时传给PC机显示(普通文本)。4)可以通过PC机修改单片机板时钟。5*)加入闹铃功能,在单片机板上可以设定闹铃,闹铃时间到给出声音报警,并发送给PC机,同时PC机 能够接收闹铃信息并用色块指示,闹铃取消自动回复,PC机能够实现对闹铃的设置。6*)将实验六的功能加入该时钟。该实验PC界面如图7-1所示。图7-1上位机界面5 .设计步骤I)设计单片机板时钟,使其能够正常显示时分秒信息,并在每一秒发送时间给PC机。2)设计PC软件,在Label中显示收到的时间。3)在时钟中加入时间调整函数,入口参数为时分秒信息,使用缓冲区,将按键信息先保存在缓冲区, 最后通过确认按键调用时间调整函数进行时间的设定。4) PC机设定时间,输入使用文本框,固定格式,通过按钮确认发送,单片机解析数据后调用时间调整 函数来设定时间。5*)在单片机板上加入闹铃,和时间设定类似,使用缓冲区和函数,闹铃匹配时报警并发送闹铃信息, PC解析后给出指示。6*) PC机设定闹铃同步骤4)。7*)功能拓展,将实验六内容加入。6 .实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。(执笔人:于新业)填表说明:1 . “实验性质”、“要求”栏目,可在相应选项中打.请注明执笔人。z-t2OJ22 TT777qHF34FaHF34FT; 1112M TP30 画 pFP33 亩 变P36P37!012TT 亘 叵IS20P1.0vccPl.lPO.Opi 7PM 1ri.Pl .3rv» I F0.2PI .4ro.3Pl .5P0.4Pl.6Dt TP0.5r!./rU.ORSTWDP0.7P.KKRxDEA/Vppw.rrxDALE PROGP3.2IKHJrsmP3.31NDP2.7P3.4TUP2.6P3.5TIP2.5P3.6WRP2.4P3.7RDP2.3KTAL2P2.2XTAIJP2.1GNDP2.0JPI8*5240vcc_JVCC39DB038DBI37DB236DB335Dfrl34DBS_33_DB632DB7-vcc-6783029282726 互 2423 22 2Ovex:9俳 | luFOoO4C1+或Q-v+C2+V-C2-TIINTIOUT12IN piitT2OUT pi itKIUU 1R2吟RINR2INMAX2326aI1411iF7TXD232138RXD232TXEC32RXCC32 3图IT单片机系统RS-232与矩阵键盘接口4.实验内容1)编写单片机串口初始化程序,要求入口参数为波特率,出口参数为真假,初始化成功返回1否那么返回 Oo2)实现单片机矩阵键盘8=4*2的扫描,将按键结果通过串口发送给PC机,PC机用串口调试助手观测如 图1-2所不。串口波特里 校验目数据位停止位|COM1 114800 1AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF 1 AFAFAFAFAFAFAFAFAFAFM关闭串口滑空接收区|停止显示C:AP自动清空P十六进制显示SS空董埴 | 愎送的字符/数据 十六进制发送手动发送|r自动发送限期改变后重选)自动发送周期:面广毫秒I选择发送文件还没有选择文件MAIL WEB川(STATUS : COM1 OPENED > 4800, N, 8, 1 | RT58TX:OCounterRESET图1-2串口调试助手界面3)使用串口调试助手的非十六进制观测(ASCH码),将矩阵键盘的8二4*2个按键分别重新编码为0、7, 以及重新编码为以下键信息:enter> tab、left、'*'、'#'、.实验步骤(1)基本步骤:a,切断开发板电源,将串口线和下载线连接到开发板后重开电源。b.编写串口初始化程序对串口进行初始化,初始化后以1秒钟为间隔向串口发送单一字符比方'Y',观 察串口调试助手收到的数据,分别用16进制和非16进制显示,记录现象。串口初始化程序参考流程图:发送单字节数据流程图:否C.编写键盘扫描程序(不能使用P3.0和P3.1,所以键盘成为8=4*2),将按键的键值送串口传给PC机 显示(16进制显示)。d.将键盘扫描结果进行转换后,送PC机显示(实验内容3要求)。发挥局部:a.将实验中的各个功能模块写成函数的形式,如串口初始化函数,发送单个字符函数,键盘扫描函数等 等,设计函数的入口和出口参数。b.修改串初始化函数,将入口参数改为结构体指针,使入口参数扩展为:波特率、通信方式、奇偶校 验等信息。5 .实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。6 .实验预习及思考题1)课前预习好编程的基本知识。程序的基本概念、*.asm、礼c、*.hex、*.uv2所表示的文件类型等。2)复习单片机相关知识。串口的应用、矩阵键盘的扫描及其编程。3)思考RS-232所使用的3条线的连接方式:计算机和单片机分别有自己的TXD, RXD, GND应该如何连接。4)思考串口调试助手种16进制和非16进制显示的区别和原由。5)思考如何将一串数据发送给PC机,如"hello world !"o提示:由于单片机芯片烧录时需用到Pl 口,故在烧录过程中PL5、Pl.6、P1.7 口不应有导线连接,否那么易 引起实验台初始化失败等错误(烧录完成后可以进行连接)。二、基于RS-232的数据传输(二)网络控制PWM调光.实验目的1) 了解PWM调光的基本原理与编程实现。2)掌握单片机利用C语言编程实现数据接收的方法。3) 了解串口调试的方法。2 .实验设备计算机一台、单片机实验箱一套、Keil C软件一套、串口调试软件一套。3 .实验基本原理1) PWM调光:发光元件为发光二极管,直接有单片机的10 口进行控制电路如图2-1所示。PWM即脉 宽调制,就是固定矩形波的周期,改变其高电平的宽度(脉冲宽度)对整个周期的影响来实现调节光的亮度。实际上周期固定,周期对高电平作用的平均化相当于平均电压,因此高电平的宽度即占空比与平均电压成正 比,从而实现了调整输出电压的目的。采用PWM方式的一个好处是,由于输出电压为5V的TTL电平,不会出现调电压出现的低于发光二极管的开启电压的情况,所以优于直接调电压控制发光亮度的方式。图2-1单片机系统RS-232与LED电路2)串口数据接收:串口接收数据有两种方式,一种是查询,另一种是中断。查询的方式编程简单,但是 耗费CPU资源,中断的方式编程需要考虑的问题比拟多,但是程序执行效率很高,可以根据需要进行选择。4 .实验内容1)编写并调试PWM调光程序(可以使用按键控制进行调光)。2)编写串口初始化程序和串口接收程序(通过串口调试助手进行测试)。3)将两局部程序融合,并进行调试,通过串口调试助手发送占空比(可以用16进制方式)。5 .实验步骤基本步骤:a.按照实验一进行电路连接。b.编写串口初始化程序和串口接收程序,在单片机初始化后,采用查询的方式接收数据,将接收的数据 送P0 口,例如串口调试助手发送的数据为0x55,那么对应的P0 口上的发光二极管的状态应该是“亮 灭亮灭亮灭亮灭”高位在左。c.编写PWM调光程序,其中用到三个参数,一个为周期Period,另一个为占空比Duty,最后一个是Counter 遍历Period。注意Period为变量,范围为099,改变的是Duty,范围099。首先固定Duty为50, 下载程序应该看到一个亮度,或者是LED闪烁。然后改变Duty为25,观察并记录现象,改变Duty为 75,观察并记录结果。d.将b.c中的程序合并,把串口发送来的数据送到Duty中,通过串口调试工具改变Duty的值,观察并 记录结果。查询方式接收数据流程图:PWM产生流程图:发挥局部:a.将串口接收程序改为中断方式实现。b.将Duty值的分辨率变为0.1,即Duty可以设成90. 8等带有小数点的值,并能够通过串口调试助手传 送(可以考虑非十六进制方式)。c.将Period的值和Duty值同变为可变值,通过串口调试助手进行设置。6 .实验报告要求1)记录实验每一步骤的具体过程及实验现象。2)表达实验步骤中发挥局部程序的具体构思,同时将调试过程作详细记录。3)记录完整的实验程序,同时将程序分块化,对程序进行注释,并且标注好每局部程序块功能及关键语 句的作用。4)总结本次实验知识点及编程调试心得体会。7 .实验预习及思考题1)思考对P0 口上的发光二极管成组控制和单个控制的方法。2)说明串口调试助手各个设定选项的作用(写出简易说明书)。3)如何编写一个UART.c驱动文件,专门存放与串口相关的函数,包括初始化、发送、接收、中断接收等。三、字符串数据的传输1 .实验目的I)掌握使用单片机发送字符串给PC机的编程方法(自定义函数和库函数的使用)。2)掌握将PC机发送来的字符串进行解析并转换的方法。3)熟悉数码管动/静态显示和显示内容的更新方法。2 .实验设备计算机一台、单片机实验箱一套、Keil C软件一套、串口调试软件一套。3 .实验基本原理在进行数据传输时,我们可以很容易的识别一个字节,但如果是多个字节数据(一帧)我们该如何处理 呢?首先我们假定发送的数据为ASCII码,因为ASCII码中定义了各种控制字符方便识别。1)发送:在前几次试验中,我们可以实现单片机单个字节发送给PC机,这个功能可以写成一个函数如 trans_one(unsigned char),当然函数名可以根据需要自己设定,这个函数参数就是要发送的字节,因此很 容易想到发送一串字符就是将trans.one这个函数调用屡次便可,但是如何来知道发送结束呢?假如字符串 发送函数为trans_str (unsigned char *);这里有两种方案:第一、函数的参数中多加一个信息, 就是要发送的数据的长度;第二、使用字符串结束标志0来决定发送结束标志。方案二参考程序如下:trans_str(unsigned char *ptS) while(*ptS!='0' )trans_one(*(ptS+);2)接收:对于一帧数据的接收我们不可能一个字节一个字节的进行处理,因为收到一个字节后我们还不 知道要进行操作的内容,所以,我们要把一帧数据全部收完,解析才知道这一串数据要完成什么任务,因此 我们接收数据要设立接收缓冲区,大小以传输数据最大帧大小为标准。另外我们已假定传输的是ASCH码, 我们要解析一串数据首先要找到数据头,也就是要定义一个帧头,或者说定义一个是数据协议。例如用' 和'将要传