实验七串行通信
07实验七 Linux环境下的串行通信实验
连接驱动器的使能端,使得当RTS设置成高(逻辑1)时,有效RS485驱动器;设置RTS为低 时,使驱动器处于三态,这时候实际上从总线上断开了驱动器,从而允许其他节点可以使 用同一传输线。当使用RTS时,必须确保发送数据前将RTS设置成高,在发送完数据的最 后一位后,将RTS线设成低。。另一种可选方法是自动发送数据控制。这种方法要求特殊 的电路,当数据传输时自动使能或无效驱动器。它减少了软件开销和程序员的潜在错误。
五、基础知识
串行通信 1、基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行 端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提 出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 2、串口通信的基本任务 (1) 实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实 现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的 帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2) 进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是 并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送 入计算机处理。因此串并转换是串行接口电路的重要任务。 (3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选 择和控制的能力。 (4) 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他 校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用
串行通信实验报告
串行通信实验报告串行通信实验报告引言:串行通信是一种数据传输方式,通过将数据一位一位地传输,相比并行通信具有更高的传输效率和更少的硬件成本。
本实验旨在通过搭建串行通信系统,了解串行通信的原理和应用,并探究不同参数对传输效果的影响。
一、实验目的本实验旨在:1. 了解串行通信的原理和基本概念;2. 掌握串行通信的实验搭建方法;3. 分析不同参数对串行通信传输效果的影响。
二、实验原理串行通信是一种将数据一位一位地传输的通信方式。
在串行通信中,数据以二进制形式传输,每一位的传输时间相等。
常见的串行通信方式有同步串行通信和异步串行通信。
同步串行通信中,发送端和接收端的时钟信号同步,以确保数据的准确传输。
发送端将数据按照一定的帧格式发送,接收端通过时钟信号进行同步,按照相同的帧格式接收数据。
异步串行通信中,发送端和接收端的时钟信号不同步,通过起始位和停止位来标识数据的开始和结束。
发送端在每个数据帧前加上一个起始位,接收端通过检测起始位来判断数据的开始。
三、实验步骤1. 搭建串行通信系统:将发送端和接收端连接,通过串口线进行数据传输。
2. 设置串行通信参数:根据实验要求,设置波特率、数据位、停止位等参数。
3. 编写发送端程序:通过编程语言编写发送端程序,实现数据的发送。
4. 编写接收端程序:通过编程语言编写接收端程序,实现数据的接收和显示。
5. 调试和测试:进行通信测试,观察数据的传输效果,记录实验结果。
四、实验结果与分析在实验中,我们通过设置不同的串行通信参数进行测试,观察数据的传输效果。
实验结果显示,在较低的波特率下,数据传输速度较慢,但传输稳定性较高;而在较高的波特率下,数据传输速度较快,但传输稳定性较差。
此外,我们还测试了不同数据位和停止位对传输效果的影响。
结果显示,增加数据位可以提高数据的传输精度,但也会增加传输的时间和成本。
增加停止位可以增加数据的传输稳定性,但也会降低传输速度。
五、实验总结通过本次实验,我们深入了解了串行通信的原理和应用,并通过实验搭建了串行通信系统。
串行通信技术实验报告
#### 实验目的1. 理解串行通信的基本原理和常用通信协议。
2. 掌握串行通信硬件设备的连接与配置。
3. 熟悉串行通信软件编程,实现数据传输。
4. 通过实验验证串行通信的稳定性和可靠性。
#### 实验时间2023年10月15日#### 实验地点电子实验室#### 实验设备1. 两台PC机2. 串行通信模块(如USB转串口模块)3. 串行通信软件(如PuTTY)4. 串行通信协议转换器(如RS-232转RS-485模块)5. 数据线、电源线等辅助连接线#### 实验原理串行通信是一种通信方式,将数据一位一位地依次传输,按位顺序组成字符或字节。
与并行通信相比,串行通信在传输距离、传输速率和设备复杂度上具有优势。
本实验采用RS-232协议进行串行通信。
#### 实验步骤1. 硬件连接:- 将两台PC机通过串行通信模块连接,确保通信模块与PC机的串口正确对应。
- 如果需要,使用RS-232转RS-485模块实现串行通信协议的转换。
2. 软件配置:- 在PC机上安装并运行串行通信软件,如PuTTY。
- 设置串行通信参数,包括波特率、数据位、停止位、校验位等,确保两台PC机的串行通信参数一致。
3. 编程实现:- 在PC机上编写串行通信程序,实现数据的发送和接收。
- 使用C语言或Python等编程语言,调用串行通信库函数进行编程。
4. 实验验证:- 在一台PC机上发送数据,另一台PC机上接收数据。
- 检查接收到的数据是否与发送的数据一致,验证串行通信的稳定性。
#### 实验结果与分析1. 硬件连接:- 成功连接了两台PC机,并使用串行通信模块进行通信。
2. 软件配置:- 串行通信软件成功运行,并设置好通信参数。
3. 编程实现:- 编写串行通信程序,实现数据的发送和接收。
4. 实验验证:- 发送数据成功,接收到的数据与发送的数据一致,验证了串行通信的稳定性。
#### 结论通过本次实验,我们成功实现了两台PC机之间的串行通信。
8250串口实验
实验七 8250串口实验一、实验目的1、熟悉串行通信的一般原理和8250的工原理。
2、了解RS--232串行接口标准及连接方法。
3、掌握8250芯片的编程方法。
二、实验设备MUT—Ⅲ型实验箱、8086CPU模块。
三、实验原理介绍1.实验原理图见8250串行接口电路。
由MAX232完成RS232电平和TTL电平的转换,由8250完成数据的收发。
8250内部有10个寄存器,分别对应着不同的IO口地址。
对不同的寄存器进行初始化或读出写入操作就可以完成与计算机的通信。
由于不能同时收发数据,所以8250又称为通用串行异步收发器,简写为:UART。
8250实验电路的所有信号均已连好。
8250串行接口电路(1)电路原理:该电路由一片8250,一片MAX232组成,该电路所有信号线均已接好。
原理图如下:(2)电路测试:见整机测试2.程序框图(8250.ASM)3.程序代码;*******************************************code segment ;define data segmentassume cs:codeorg 0100hstart:mov bx,0480hmov dx,bxadd dx,6mov ax,80hout dx,axmov dx,bxmov ax,0ch ;000ch---9600 ,clk=4.77MHZ/4 ; AL=4770000/16/9600/4=8out dx,axadd dx,2mov ax,0hout dx,axadd dx,4mov ax,07 ;no pe,8 bit, 1 stopout dx,axmov dx,bxadd dx,2 ;no interuptmov ax,0out dx,axadd dx,8hin ax,dxmov dx,bxin ax,dxcrd: call recvcall sendjmp crdsend: push axmov bx,0480hmov dx,bxadd dx,0ahin ax,dxtest ax,20hjnz recv2pop axjmp sendrecv2: pop axmov dx,bxout dx,axretrecv: mov bx,0480hmov dx,bxadd dx,0ahin ax,dxtest ax,01hjnz recv1jmp recvrecv1: mov dx,bxin ax,dxretcode ends ;end of code segmentend start ;end assembly3.实验提示实验中,通讯波特率选用9600bps。
串行通信 实验报告
串行通信实验报告串行通信实验报告引言:串行通信是一种在计算机科学和电子工程中广泛使用的通信方式。
与并行通信相比,串行通信通过逐位传输数据,具有更高的可靠性和稳定性。
本实验旨在研究串行通信的原理和应用,并通过实际操作来验证其性能。
一、实验目的本实验的主要目的是掌握串行通信的基本原理和操作方法,并通过实验验证串行通信的性能。
二、实验设备和材料1. 串行通信模块2. 电脑3. 串行通信线缆4. 示波器5. 逻辑分析仪三、实验步骤1. 连接串行通信模块和电脑,确保连接正确稳定。
2. 设置串行通信模块的波特率、数据位、停止位等参数,根据实际需求进行调整。
3. 编写电脑端的串行通信程序,实现数据的发送和接收功能。
4. 使用示波器和逻辑分析仪监测串行通信的信号波形,分析数据传输的过程和效果。
四、实验结果与分析通过实验,我们成功地建立了串行通信连接,并实现了数据的传输和接收。
通过示波器和逻辑分析仪的监测,我们可以清晰地观察到串行通信的信号波形和数据传输的过程。
在实验中,我们发现串行通信相较于并行通信,虽然传输速率较慢,但具有更高的可靠性和稳定性。
由于数据逐位传输,串行通信可以更好地应对信号干扰和传输错误的情况。
同时,串行通信可以通过调整参数来适应不同的传输距离和传输速率需求。
根据实验结果和分析,我们可以得出结论:串行通信是一种可靠且稳定的通信方式,广泛应用于计算机科学和电子工程领域。
在实际应用中,我们需要根据具体需求选择合适的串行通信参数,以确保数据的正确传输和接收。
五、实验总结通过本次实验,我们深入了解了串行通信的原理和应用。
实验结果表明,串行通信具有较高的可靠性和稳定性,适用于各种数据传输场景。
在今后的学习和工作中,我们将继续探索串行通信的更多应用领域,并不断提高串行通信技术的性能和效率。
六、参考文献[1] 张三, 串行通信技术研究, 电子通信学报, 2008.[2] 李四, 串行通信在计算机网络中的应用, 计算机应用技术, 2010.注:本实验报告仅供参考,如需引用请注明出处。
数电实验报告串行(3篇)
第1篇一、实验目的1. 理解串行通信的基本原理和方式。
2. 掌握串行通信接口电路的设计与调试方法。
3. 熟悉串行通信在实际应用中的使用。
二、实验原理串行通信是一种数据传输方式,它将数据一位一位地顺序传送,每位的持续时间远远大于数据信号的持续时间。
与并行通信相比,串行通信具有传输距离远、抗干扰能力强、成本低等优点。
串行通信方式主要有两种:同步串行通信和异步串行通信。
同步串行通信使用统一的时钟信号来同步发送和接收设备,而异步串行通信则使用起始位和停止位来同步。
三、实验器材1. 实验箱2. 串行通信模块3. 信号发生器4. 示波器5. 计算器四、实验步骤1. 连接电路根据实验要求,将串行通信模块、信号发生器、示波器等设备正确连接到实验箱上。
2. 设置参数根据实验要求,设置串行通信模块的波特率、数据位、停止位和校验位等参数。
3. 发送数据使用信号发生器生成要发送的数据信号,通过串行通信模块发送出去。
4. 接收数据通过示波器观察接收到的数据信号,分析其波形和参数。
5. 调试与优化根据观察到的波形和参数,对串行通信模块进行调试和优化,确保数据传输的准确性和可靠性。
五、实验结果与分析1. 发送数据波形观察到发送的数据信号波形符合要求,波特率、数据位、停止位和校验位等参数设置正确。
2. 接收数据波形观察到接收到的数据信号波形与发送端一致,说明数据传输过程中没有发生错误。
3. 调试与优化通过调整串行通信模块的参数,提高了数据传输的稳定性和抗干扰能力。
六、实验结论1. 通过本次实验,掌握了串行通信的基本原理和方式。
2. 熟悉了串行通信接口电路的设计与调试方法。
3. 了解了串行通信在实际应用中的重要性。
七、实验心得1. 串行通信在实际应用中具有广泛的应用前景,如工业控制、远程通信等。
2. 在设计和调试串行通信接口电路时,要充分考虑抗干扰能力和数据传输的稳定性。
3. 要熟练掌握串行通信模块的参数设置,以确保数据传输的准确性。
串行通讯的实验报告
一、实验目的1. 理解串行通讯的基本原理和通信方式。
2. 掌握串行通讯的硬件设备和软件实现方法。
3. 学会使用串行通讯进行数据传输。
4. 通过实验,提高动手能力和分析问题、解决问题的能力。
二、实验原理串行通讯是指用一条数据传输线将数据一位一位地按顺序传送的通信方式。
与并行通讯相比,串行通讯具有线路简单、成本低等优点。
串行通讯的基本原理如下:1. 异步串行通讯:每个字符独立发送,字符间有时间间隔,不需要同步信号。
每个字符由起始位、数据位、奇偶校验位和停止位组成。
2. 同步串行通讯:数据块作为一个整体发送,需要同步信号。
同步串行通讯分为两种方式:面向字符方式和面向比特方式。
三、实验设备1. 计算机:一台2. 串行通讯设备:串行数据线、串行接口卡、串口调试助手等3. 单片机实验平台:一台4. 数码管显示模块:一个四、实验内容1. 异步串行通讯实验(1)硬件连接:将计算机的串口与单片机实验平台的串行接口连接。
(2)软件设计:编写程序,实现单片机向计算机发送数据,计算机接收数据并显示在屏幕上。
(3)实验步骤:a. 设置串行通信参数:波特率、数据位、停止位、奇偶校验位等。
b. 编写发送程序,实现单片机向计算机发送数据。
c. 编写接收程序,实现计算机接收数据并显示在屏幕上。
2. 同步串行通讯实验(1)硬件连接:与异步串行通讯实验相同。
(2)软件设计:编写程序,实现单片机向计算机发送数据块,计算机接收数据块并显示在屏幕上。
(3)实验步骤:a. 设置串行通信参数:波特率、数据位、停止位、奇偶校验位等。
b. 编写发送程序,实现单片机向计算机发送数据块。
c. 编写接收程序,实现计算机接收数据块并显示在屏幕上。
3. 双机通讯实验(1)硬件连接:将两台单片机实验平台通过串行数据线连接。
(2)软件设计:编写程序,实现两台单片机之间相互发送和接收数据。
(3)实验步骤:a. 设置串行通信参数:波特率、数据位、停止位、奇偶校验位等。
串行通信实验报告
串行通信实验报告实验报告:串行通信实验一、实验目的本实验旨在通过搭建串行通信系统,了解串行通信的基本原理和工作方式,掌握串行通信的相关知识和技术。
二、实验仪器和材料1. Arduino开发板B数据线3.跳线若干4.电脑三、实验原理串行通信是一种通过连续的、位的形式传输数据的通信方式。
在串行通信中,数据通过一个数据线一位一位地传输,与并行通信相比,串行通信的线路数量较少,适用于数据传输距离较远的场景。
在本实验中,我们使用Arduino开发板作为串行通信的发送和接收端,通过USB数据线连接电脑与Arduino开发板进行数据交互。
四、实验步骤1. 连接电路:将Arduino开发板通过USB数据线连接至电脑,确保连接稳定。
2. 编写Arduino代码:使用Arduino IDE软件编写Arduino代码,实现数据发送和接收的功能。
代码示例://发送端void setuSerial.begin(9600); //设置串行通信波特率为9600void looString message = "Hello World!"; //待发送的消息Serial.println(message); //通过串行通信发送消息delay(2000); //延迟2秒//接收端void setuSerial.begin(9600); //设置串行通信波特率为9600void looif (Serial.available() { //如果串行通信接收到数据String message = Serial.readString(; //读取接收到的数据Serial.println("Received: " + message); //打印接收到的数据}3. 上传代码:将编写好的代码上传至Arduino开发板,使其开始工作。
4. 打开串行监视器:在Arduino IDE中点击“工具”菜单并选择“串行监视器”(或使用快捷键Ctrl+Shift+M)打开串行监视器。
串行口实验实验报告
串行口实验实验报告实验报告:串行口实验一、实验目的:1. 掌握串行口通信原理;2. 熟悉使用串行口进行数据通信;3. 学习使用串行口进行数据的发送和接收。
二、实验仪器和材料:1. 串行口连线2. 上位机软件(如串口调试助手)3. PCB板三、实验原理:串行口通信是一种通过传送位来传送数据的通信方式。
通过串行口,计算机可以与其他设备进行数据交换。
串行通信需要发送方和接收方之间通过一条传输线连通,在一定的波特率下,发送方将数据转换为一系列位发送给接收方,接收方将接收到的位转换为相应的数据。
四、实验步骤:1. 将串行口连线正确连接好,一端连接到计算机的串行口,另一端连接到实验设备;2. 打开上位机软件,配置串行口参数,如波特率、数据位等;3. 在上位机软件中发送数据,观察实验设备上接收到的数据;4. 在实验设备中发送数据,观察上位机软件接收到的数据。
五、实验数据记录:在实验过程中,我们尝试了不同的波特率和数据位设置,并记录了每次的实验数据接收情况。
以下是其中一次实验的数据记录:- 实验参数:波特率9600bps,数据位8位,无校验位,停止位1位;- 发送数据:0x55;- 接收到的数据:0x55。
六、实验结果分析:根据实验数据,我们可以发现发送的数据0x55成功被接收到,说明串行口通信正常工作。
这说明我们正确配置了串行口参数,并且发送和接收的数据没有出现错误。
七、实验总结:通过本次实验,我们掌握了串行口通信的原理,学会了如何使用串行口进行数据通信。
实验结果表明,我们成功地发送和接收了数据。
在实际应用中,串行口通信在许多领域中都有广泛的应用,比如计算机与外设的连接、嵌入式系统的开发等。
掌握串行口通信技术对于我们的学习和工作都具有重要意义。
八、存在的问题和改进方向:在本次实验中,我们没有发现明显的问题。
但是,在实际应用中,串行口通信可能会面临一些问题,比如数据丢失、传输错误等。
我们可以进一步学习调试和排查这些问题,并学习如何处理和解决这些问题。
串行通信实验原理
串行通信实验原理序串行通信技术是一种基本的数字通信技术,它已经广泛地应用于现代的数字通信系统中。
与并行通信相比,串行通信在处理速度高、传输距离远、信号线使用少等方面具有很大的优势,因此在现代计算机内部以及计算机与外部设备之间的通信中应用广泛。
串行通信实验是理解串行通信原理和掌握串行通信应用的基本途径之一。
本文将介绍串行通信实验的原理、步骤以及注意事项,希望能够对读者在学习串行通信方面起到一定的帮助。
一、实验原理1.串行通信的基本概念串行通信是一种数据传输的方式,数据信号按照一个比特一个比特地顺序传输,每个比特之间通过同步信号进行分隔。
与之相对应的是并行通信,其数据信号在多根信号线上并行传输。
串行通信具有传输距离远、传输速度快、线路简单等优点,因此被广泛应用于各种数字通信系统中。
2.串行通信的实现串行通信的实现需要用到一些重要的电路,包括移位寄存器、同步信号发生器等。
移位寄存器用于将数据按照顺序存入、读出,并进行位移操作;同步信号发生器则用于发生用于分隔数据的同步信号,使得发送方和接收方的时序保持一致。
三、实验步骤本实验以ASM51单片机为例,演示了串行通信的应用过程。
1.硬件连接将示波器的通道1连接到P1.0引脚上,通道2连接到P3.0引脚上,波形分别对应发送数据和接收数据。
2.编写程序编写程序,对串行通信的数据发送、接收、位移等进行设置和控制,具体实现过程如下:(1) 设置移位寄存器,将需要发送的数据从高位开始存入。
(2) 设置同步信号发生器,发生用于分隔数据的同步信号。
(3) 控制寄存器进行位移操作,将数据按照顺序读出并发送。
(4) 在接收方,需要通过串行口中断方式对接收到的数据进行判断和处理。
3.实验操作按照编写的程序对硬件进行操作,发送一些测试数据,观察示波器上的波形变化,以及数据是否正确接收和处理。
四、实验注意事项1.串行通信实验需要耐心和细心,对硬件和程序进行仔细的连接和设置。
2.在传输数据时,需要保证发送方和接收方的时序保持一致,否则可能会导致数据发送失败或者数据接收错误,因此需要认真设置同步信号发生器。
串行通信实验16550
(一)实验名称串行通信实验16550(二)实验内容1)串行通讯基础实验。
编写程序,向串口连续发送一个数据(55H),将串口输出连接到示波器上,用示波器观察数据输出产生的波形。
2)串口自发自收应用实验。
编写程序,将一串数据发送至串口,再接收回来显示。
(三)实验目的1)学习和掌握有关串行通信的知识2)学习和体会16550的工作原理、工作方式,利用其进行应用编程3)学习和掌握PC机串口的操作方法(四)实验日期、时间和地点2011—1—4 6,7节2011-1-7 1,节微机高级实验室(五)实验环境(说明实验用的软硬件环境及调试软件)PC机一台,PIT-B实验箱一套,TDPIT、td-debug软件环境一套(六)实验步骤(只写主要操作步骤,要简明扼要,还应该画出程序流程图或实验电路的具体连接图)一:二:自发自收(七)实验结果(经调试通过的源程序的所有代码,应包含必要的说明文字)MY_03F8 EQU 0E480HMY_03FB EQU 0E483HMY_03FD EQU 0E485HDATAS SEGMENTNUM DB 55H;此处输入数据段代码DATAS ENDSSTACKS SEGMENTDW 10 DUP(0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;初始化16550MOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,80H ;置DLAB=1,设置除数寄存器OUT DX,ALCALL DALLYMOV DX,MY_03F8 ;除数寄存器地址送DXMOV AX,03C0H ;波特率为1200bit/sOUT DX,ALCALL DALLYMOV AL,AHINC DXOUT DX,ALCALL DALLYMOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,0BH ;8位数据位,奇校验,1位停止位OUT DX,ALCALL DALLYCALL GOMOV AH,4CHINT 21HGO PROC NEARLOP1:MOV DX,MY_03FD ;通信状态寄存器地址送DXIN AL,DXCALL DALLYTEST AL,20H ;检测发送器是否准备就绪 JZ LOP1LOP2:MOV DX,MY_03F8MOV AL,NUMOUT DX,ALCALL DALLYCALL BREAKJMP LOP2RETGO ENDPDALLY PROC NEARPUSH CXPUSH AXMOV CX,0100HD1: MOV AX,1000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPBREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODES ENDSEND START二:自发自收MY_03F8 EQU 0E480HMY_03FB EQU 0E483HMY_03FD EQU 0E485HMY_03FC EQU 0E48CHDATAS SEGMENTSTR1 DB'this is good'LEN EQU $-STR1STR2 DB 20 DUP (0),'$';此处输入数据段代码DATAS ENDSSTACKS SEGMENTDW 10 DUP (0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AX,STACKSMOV SS,AX;初始化16550MOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,80H ;置DLAB=1,设置除数寄存器OUT DX,ALCALL DALLYMOV DX,MY_03F8 ;除数寄存器地址送DXMOV AX,03C0H ;波特率为1200bit/sOUT DX,ALCALL DALLYMOV AL,AHINC DXOUT DX,ALCALL DALLYMOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,1BH ;8位数据位,奇校验,1位停止位OUT DX,ALCALL DALLYMOV DX,MY_03FCMOV AL,03HOUT DX,ALCALL DALLYCALL GOLEA DX,STR2 ;显示str2MOV AH,09HINT 21HMOV AH,4CHINT 21HGO PROC NEARLEA BX,STR1LEA DI,STR2MOV CX,LENINC CXLOP1:DEC CXJZ DONELOP2:MOV DX,MY_03FDIN AL,DXTEST AL,20H ;测试发送是否就绪JZ LOP2MOV DX,MY_03F8MOV AL,[BX] ;取出发送区域的待发送数据 OUT DX,ALLOP3:MOV DX,MY_03FDIN AL,DXTEST AL,1EH ;数据是否有错误JNZ ERROR ;跳转错误处理TEST AL,01H ;查看接受缓存器是否有信息 JZ LOP3MOV DX,MY_03F8IN AL,DXMOV [DI],ALINC BXINC DIJMP LOP1CLC ;接收成功,清CY标志位JMP DONEERROR:STC ;接收不成功,置CY标志位DONE:RETGO ENDPDALLY: PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,2000HD2: DEC AXJNZ D2 LOOP D1POP AXPOP CX RETCODES ENDSEND START。
串行通信实验报告
串行通信实验报告班级姓名学号日期一、实验目的:1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。
2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。
3、学习串口通讯的程序编写方法。
二、实验要求1.单机自发自收实验:实现自发自收。
编写相应程序,通过发光二极管观察收发状态。
2.利用单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
三、实验说明通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。
也可以将本机的TXD接到RXD上。
连线方法:在第一个实验中将一台实验箱的RXD和TXD相连,用P1.0连接发光二极管。
波特率定为600,SMOD=0。
在第二个实验中,将两台实验箱的RXD和TXD交叉相连。
编写收发程序,一台实验箱作为发送方,另一台作为接收方,编写程序,从内部数据存储器20H~3FH单元中共32个数据,采用方式1串行发送出去,波特率设为600。
通过运行程序观察存储单元内数值的变化。
四、程序甲方发送程序如下:ORG 0000HLJMP MAINORG 0023HLJMP COM_INTORG 1000HMAIN: MOV SP,#53HMOV 78H,#20HMOV 77H,00HMOV 76H,20HMOV 75H,40HACALL TRANS HERE: SJMP HERE TRANS: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1MOV SCON,#40H MOV IE,#00HCLR F0MOV SBUF,78H WAIT1: JNB TI,WAIT1 CLR TIMOV SBUF,77H WAIT2: JNB TI,WAIT2 CLR TIMOV SBUF,76H WAIT3: JNB TI,WAIT3 CLR TIMOV SBUF,75H WAIT4: JNB TI,WAIT4CLR TIMOV IE,#90HMOV DPH,78HMOV DPL,77HMOVX A,@DPTRMOV SBUF,A WAIT: JNB F0,WAITRETCOM_INT: CLR TIINC DPTRMOV A,DPHCJNE A,76H,END1 MOV A,DPLCJNE A,75H,END1 SETB F0CLR ESCLR EARETEND1: MOVX A,@DPTRMOV SBUF,AEND乙方发送程序如下:ORG 0000HLJMP MAINORG 0023HLJMP COM_INTORG 1000H MAIN: MOV SP,#53HACALL RECEI HERE: SJMP HERE RECEI: MOV R0,#78H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1MOV SCON,#50H MOV IE,#90H CLR F0CLR 7FH WAIT: JNB 7FH,WAITCOM_INT: PUSH DPLPUSH DPHPUSH AccCLR RIJB F0,R_DATAMOV A,SBUFMOV @R0,ADEC R0CJNE R0,#74H,RETN SETB F0RETN: POP AccPOP DPHPOP DPLRETIR_DATA: MOV DPH,78HMOV DPL,77HMOV A,SBUFMOVX @DPTR,AINC 77HMOV A,77HJNZ END2INC 78HEND2: MOV A,76HCJNE A,78H,RETNMOV A,75HCJNE A,77H,RETNCLR ESCLR EASETB 7FHSJMP RETNEND五、实验过程中遇到的主要问题OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN equ 08001h ; 键盘读入口HasRcv equ 20h.0 ; 接收标志位LEDBuf equ 40h ; 显示缓冲RCVBuf equ 50H ; 接收缓冲ORG 0000HLJMP START; 串行口中断程序ORG 0023HJNB TI,S0_RCLR TINOPSJMP S0_RETS0_R: ; 接收数据CLR RIMOV RCVBUF,SBUF ; 保存数据SETB HasRcv ; 提示收到数据NOPS0_RET:RETILEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ; 共6个八段管mov r2, #00100000b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管mov a, @r0mov dptr, #OUTSEGmovx @dptr,amov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, LoopretTestKey:mov dptr, #OUTBITmov a, #0movx @dptr, a ; 输出线置为0mov dptr, #INmovx a, @dptr ; 读入键状态cpl aanl a, #0fh ; 高四位不用retKeyTable: ; 键码定义db 16h, 15h, 14h, 0ffhdb 13h, 12h, 11h, 10hdb 0dh, 0ch, 0bh, 0ahdb 0eh, 03h, 06h, 09hdb 0fh, 02h, 05h, 08hdb 00h, 01h, 04h, 07hGetKey:mov dptr, #OUTBITmov P2, dphmov r0, #Low(IN)mov r1, #00100000bmov r2, #6KLoop:mov a, r1 ; 找出键所在列cpl amovx @dptr, acpl arr amov r1, a ; 下一列movx a, @r0cpl aanl a, #0fhjnz Goon1 ; 该列有键入djnz r2, KLoopmov r2, #0ffh ; 没有键按下, 返回0ffhsjmp ExitGoon1:mov r1, a ; 键值= 列X 4 + 行mov a, r2dec arl arl amov r2, a ; r2 = (r2-1)*4mov a, r1 ; r1中为读入的行值mov r1, #4LoopC:rrc a ; 移位找出所在行jc Exitinc r2 ; r2 = r2+ 行值djnz r1, LoopCExit:mov a, r2 ; 取出键码mov dptr, #KeyTablemovc a, @a+dptrmov r2, aWaitRelease:mov dptr, #OUTBIT ; 等键释放clr amovx @dptr, amov r6, #10call Delaycall TestKeyjnz WaitReleasemov a, r2retSTART:MOV SP, #60HMOV IE, #0 ; DISABLE ALL INTERRUPTMOV TMOD,#020H ; 定时器1工作于方式2 (8位重装)MOV TH1, #0F3H ; 波特率?2400BPS @ 12MHzMOV TL1, #0F3HANL PCON,#07FH ; SMOD 位清零orl PCON,#80hMOV SCON,#050H ; 串行口工作方式设置MOV LEDBuf, #0ffh ; 显示8.8.8.8.mov LEDBuf+1, #0ffhmov LEDBuf+2, #0ffhmov LEDBuf+3, #0ffhmov LEDBuf+4, #0mov LEDBuf+5, #0SETB TR1SETB ESSETB EA;mov sbuf,a;jnb ti,$MLoop:jb HasRcv, RcvData ; 收到数据?call DisplayLED ; 显示call TestKey ; 有键入?jz MLoop ; 无键入, 继续显示call GetKey ; 读入键码anl a, #0fh ; 通讯口输出键码MOV SBUF,ALJMP MLoopRcvData:clr HasRcv ; 是mov a, RcvBuf ; 显示数据mov b,aanl a,#0fh ; 显示低位mov dptr, #LEDMapmovc a, @a+dptrmov LEDBuf+5, amov a,bswap a ; 显示高位anl a,#0fhmov dptr, #LEDMapmovc a, @a+dptrmov LEDBuf+4, aljmp MLoopEND六、实验后的心得体会。
串行通信技术实验报告
串行通信技术实验报告一、实验目的1.了解异步串行通信原理2.掌握MSP430异步串行通信模块及其编程方法二、必做实验任务1.了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用拆下单片机的功能拓展板,将主板上的eZ430-FET板载仿真器的BRXD,BTXD收发信号端口连接,通过串口调试助手即可实现串口的自发自收功能。
接线如下图:思考:异步串行通信接口的收/发双方是怎样建立起通信的?答:异步串行通信的收发双方进行通信,在硬件与软件方面都有要求。
①在硬件方面需要两条线,分别从一方的发送端口到另一方的接收端口,从而实现“异步”;②需要一个通信协议,确保通信正确;③在这个实验中由于是自发自收,因此收发两方均为PC机,所以两条线其实是同一条线,而且由于是自发自收所以信号格式也是统一的,因此可以实现自发自收功能。
2.查询方式控制单片机通过板载USB转串口与PC机实现串行通信本实验通过编程实现单片机和PC机之间的通信,信号格式为波特率9600bps,无校验,8位数据,先低后高,1个停止位,字符串以@结尾,单片机将接收到的字符保存在RAM中,收到@字符之后再将所储存的字符发给PC机。
连线方式如下图:实验程序如下:#include "io430.h"unsigned char string[];int main( void ){// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;void USCIA0_int(){UCA0CTL1|=UCSWRST; //swrst=1;//置P1.1、P1.2为USCI_A0的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;//时钟SMCLK选择为1.0MHzif (CALBC1_1MHz!=0xff){BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;}//设置控制寄存器UCA0CTL1|=UCSSEL_2+UCRXEIE;//设置波特率寄存器,采用低频波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=~UCSWRST; //swrst=0 }While(1){unsigned int j;for (j=0;string[j]!='@';j++){while((IFG2&UCA0RXIFG)==0);string[j]=UCA0RXBUF;}unsigned i=j;for (j=0;j!=i+1;j++){while((IFG2&UCA0TXIFG)==0);UCA0TXBUF=string[j];}思考:如果在两个单片机之间进行串行通信,如何设计连线和编程?答:a.编程:其中一个单片机可以继续采用本实验中所用的程序,另一个单片机则编程输出一串以@结尾的字符,之后进入接收状态,初始化及寄存器的设置部分的程序不变;b.连线:将一个单片机的P1.1、P1.2接口分别与另一个的P1.2、P1.1接口连接,控制两个单片机同时运行程序即可完成两个单片机之间的通信。
串行通信的实验报告
串行通信的实验报告一、实验目的了解串行通信的基本概念和原理,并通过实际搭建串行通信系统,掌握串行通信的实验过程和操作方法。
二、实验设备1. 一台个人电脑2. 两台串行通信设备3. USB转串口线三、实验原理串行通信是将数据按位顺序传输,相对于并行通信来说,节省了传输线的数量。
串行通信一般采用帧的方式进行数据传输,包括起始位、数据位、校验位和停止位。
在实验中,我们将使用两台串行通信设备通过串口进行数据传输。
四、实验步骤1. 将一台串行通信设备连接到个人电脑的USB转串口线上,使用USB接口将其连接到个人电脑的USB接口上。
2. 打开串行通信设备的电源,并将其与个人电脑连接好。
3. 在个人电脑上打开串行通信软件,根据实际情况选择波特率、数据位、校验位和停止位等参数,并建立通信连接。
4. 在串行通信软件中,输入要发送的数据,并点击发送按钮。
5. 在另一台串行通信设备上观察接收到的数据。
五、实验结果与分析经过实验,我们成功地建立了串行通信系统,并进行了数据传输。
在发送端输入的数据在接收端得到了正确的接收,表明串行通信系统正常工作。
通过实验我们可以得出以下结论:1. 串行通信较并行通信更经济和节省资源,因为它只需一根传输线,而并行通信需要多根。
2. 串行通信的传输速率相对较慢,但可以通过改变波特率提高传输速度。
3. 串行通信的稳定性较强,不容易出现数据冲突和传输错误。
六、实验总结通过本次实验,我们了解到了串行通信的基本概念和原理,并通过搭建串行通信系统实际操作了一次串行通信。
实验结果表明串行通信系统正常工作,实验目的得到了满足。
在实验过程中,我们也注意到了一些问题,例如串行通信的传输速率较慢,不适合传输大量数据;同时,串行通信的配置稍显复杂,需要设置多个参数。
综上所述,本次实验使我们对串行通信有了更深入的理解,并有助于我们在日后的相关研究和应用中更好地应用和掌握串行通信技术。
串行实验报告
实验名称:串行通信实验实验目的:1. 了解串行通信的基本原理和常用接口。
2. 掌握串行通信的编程方法和数据传输过程。
3. 验证串行通信在实际应用中的可行性。
实验器材:1. PC机一台2. 串口通信模块(如USB转串口模块)3. 短路板4. 连接线若干5. 相关软件(如串口调试助手)实验原理:串行通信是指数据在一条线路上按位进行传输的通信方式。
与并行通信相比,串行通信具有线路简单、传输速率较低等特点。
在串行通信中,数据按照一定的顺序一位一位地传输,每个数据位占用一个固定的位时间。
串行通信通常采用以下接口:RS-232、RS-485、RS-422等。
本实验采用USB转串口模块实现串行通信。
实验步骤:1. 将USB转串口模块插入PC机USB接口。
2. 在PC机上安装驱动程序,确保模块正常工作。
3. 使用短路板将USB转串口模块与PC机的串口连接。
4. 打开串口调试助手,设置串口参数:波特率、数据位、停止位、校验位等。
5. 编写串行通信程序,实现数据发送和接收。
6. 运行程序,观察串口调试助手中的数据传输情况。
实验内容:1. 发送数据(1)编写发送数据函数,实现数据的串行发送。
(2)在PC机上发送一段文本数据,观察串口调试助手中的接收情况。
2. 接收数据(1)编写接收数据函数,实现数据的串行接收。
(2)在PC机上发送一段文本数据,观察串口调试助手中的接收情况。
实验结果与分析:1. 发送数据实验结果:在串口调试助手中成功接收到了发送的文本数据,证明发送数据功能正常。
2. 接收数据实验结果:在串口调试助手中成功接收到了发送的文本数据,证明接收数据功能正常。
结论:通过本次实验,我们掌握了串行通信的基本原理和编程方法,验证了串行通信在实际应用中的可行性。
在实验过程中,我们遇到了以下问题:1. 串口参数设置不正确导致数据无法正常传输。
2. 编程时,数据发送和接收函数编写不正确。
针对以上问题,我们进行了以下改进:1. 仔细阅读相关资料,正确设置串口参数。
实验七、UART串行数据通信实验
实验七、UART串行数据通信实验1(查询与中断方式)一、实验目的通过实验,掌握UART查询与中断方式的程序的设计。
二、实验设备●硬件:PC 机一台●LPC2131教学实验开发平台一套●软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境。
●EasyARM工具软件。
三、实验原理EasyARM2131 开发板上,UART0 的电路图如图8.1 所示,当跳线JP6 分别选择TxD0和RxD0 端时方可进行UART0 通讯实验。
图8.1 UART0 电路原理图四、实验内容实验内容1使用查询方式,通过串口0 接收上位机发送的字符串如“Hello EasyARM2131!”,然后送回上位机显示,主程序以及各子程序流程如图8.2 所示。
(改写发送内容,字符个数不同)。
说明:需要上位机(PC机)串口终端如EasyARM.exe 软件。
使用串口延长线把LPC2131教学实验开发平台的CZ2(UART0)与PC机的COM1 连接。
PC 机运行EasyARM 软件,设置串口为COM1,波特率为115200,然后选择【设置】->【发送数据】,在弹出的发送数据窗口中点击“高级”即可打开接收窗口。
图8.2 串口实验相关程序流程图1.实验预习要求①研读LPC2000 UART工作原理与控制章节,注意FIFO 接收情况的特性。
②了解LPC2131教学实验开发平台的硬件结构,注意串口部分的电路。
2.实验步骤①启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立一个工程DataRet_C。
②在user 组中的main.c 中编写主程序代码,在项目中的config.h 文件中加入#include <stdio.h>。
③选用DebugInFlash生成目标,然后编译连接工程。
④将EasyARM2131开发板上的JP6跳线分别选择TxD0和RxD0端时,方可进行UART0通信实验。
串行通信实验报告
串行通信实验报告串行通信实验报告一、引言在现代信息技术的发展中,串行通信作为一种常见的数据传输方式,被广泛应用于各个领域。
本实验旨在通过实际操作,了解串行通信的原理和过程,并掌握串行通信的基本操作方法。
二、实验目的1. 掌握串行通信的基本原理和概念;2. 学会使用串行通信进行数据传输;3. 理解串行通信的优势和应用场景。
三、实验设备和材料1. 串行通信设备:串行通信线、串行通信接口等;2. 个人电脑或终端设备;3. 实验软件或编程语言。
四、实验步骤1. 连接串行通信设备:将串行通信线连接到电脑或终端设备的串行通信接口上;2. 配置串行通信参数:根据实验需求,设置串行通信的波特率、数据位、校验位等参数;3. 编写发送程序:使用实验软件或编程语言编写发送程序,将待发送的数据转换为串行通信格式;4. 编写接收程序:同样使用实验软件或编程语言编写接收程序,接收并解析串行通信传输的数据;5. 运行程序:分别运行发送程序和接收程序,观察数据传输的过程和结果;6. 分析实验结果:根据实验结果,对串行通信的性能和应用进行分析和讨论。
五、实验结果与分析通过实验,我们成功地实现了串行通信的数据传输。
在不同的串行通信参数设置下,我们观察到了不同的传输速率和数据可靠性。
较高的波特率可以实现更快的数据传输速度,但也增加了传输错误的可能性。
而校验位的设置可以用于检测和纠正传输中的错误,提高数据传输的可靠性。
串行通信在实际应用中有着广泛的应用。
例如,在计算机网络中,串行通信被用于连接不同的网络设备,实现数据的传输和交换。
在工业自动化领域,串行通信被用于控制和监测各种设备,实现远程操作和数据采集。
此外,串行通信还被应用于智能家居、物联网等领域,为各种设备之间的互联提供了便利。
六、实验总结通过本次实验,我们深入了解了串行通信的原理和过程,掌握了串行通信的基本操作方法。
我们了解到串行通信在现代信息技术中的重要性和广泛应用,并认识到了不同参数设置对串行通信性能的影响。
串行口通信实验心得
串行口通信实验心得
串行口通信是一种常见的数据传输方式,在实际应用中被广泛使用。
在进行串行口通信实验时,我学到了以下几点心得体会。
首先,了解串行口通信的基本原理是非常重要的。
串行口通信是一种逐位传输的数据传输方式,通信双方通过一根信号线来传输数据。
在数据传输过程中,需要约定好通信协议,包括数据帧格式、校验方式等。
只有了解了这些基本原理,才能更好地理解串行口通信实验的过程和结果。
其次,合理选择串行口通信的参数对于实验的成功非常重要。
在实验中,我们可以根据不同的需求设置不同的波特率、数据位、停止位、校验位等参数。
合理的参数选择可以保证数据传输的稳定性和准确性,提高实验效率。
最后,实践是提高串行口通信技能的最好方法。
在实验中,我通过实际操作来巩固和加深了对串行口通信的理解和掌握。
通过不断的实践和调试,我逐渐掌握了串口通信的一些技巧和方法,如如何发送和接收数据、如何进行数据校验等。
总之,串行口通信实验是一项非常有意义的实践活动,通过这个实验,我不仅学习了串行口通信的基本原理和技术,还提高了自己的实践能力和解决问题的能力。
- 1 -。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七 串行通信一.实验目的(1)了解串行通讯的基本原理。
(2) 掌握串行接口芯片8251的工作原理和编程方法。
二.实验环境1.硬件环境微型计算机(Intel x86系列CPU)一台,清华科教仪器厂TPC-2003A微机接口实验装置一台;扩充i8251芯片一片;数字记忆示波器一台.2.软件环境(1)Windows XP操作系统,编辑、汇编、链接和调试程序;(2)PC2003A集成开发环境软件一套及实验装置电子版资料三.基本实验1.基本实验内容和要求(1) 按图7.1 连接好电路,(8251插在带锁通用插座D上), 其中8253计数器用于产生8251的发送和接收时钟, TXD和RXD直接相连。
(注意: 实验装置未采用MC1488/1489或ICL232 等长线收发器, 故有关RS232/422等电平标准及转换内容可自行参考相关资料)(2) 编程实现从键盘输入一个字符, 将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示。
实现自发自收。
2.编程提示(1) 图7.1电路8251的控制口地址为2B9H,数据口地址为2B8H。
(3) 8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接脉冲源1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
(3) 收发采用查询方式。
参考流程图(见图7.2)图7.1 串行接口芯片8251收发电路程序名:E8251.ASMdata segmentioport equ0d400h-0280hio8253a equ ioport+280hio8253b equ ioport+283hio8251a equ ioport+2b8hio8251b equ ioport+2b9hmes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endsSSEG SEGMENT STACKDW 256 DUP(?)SSEG ENDScode segmentassume cs:code,ds:datamain PROC FARstart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16hout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251xor al,almov cx,03 ;向8251控制端口送3个0delay: call out1loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251binal,dxtest al,01 ;发送是否准备好jzwaitimov ah,01 ;是,从键盘上读一字符21hintcmp al,27 ;若为ESC,结束exitjzdx,io8251amovalincout dx,al ;发送cx,0F00hmovs51: loop s51 ;延时next: mov dx,io8251binal,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待dx,io8251amovin al,dx ;准备好,接收; inc al ;如果需要处理,如加1dl,almovmov ah,02 ;将接收到的字符显示在屏幕上int21hwaitijmpexit: mov ah,4ch ;退出21hintmain ENDPout1 proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,0F00hgg: loop gg ;延时pop cxretout1 endpcode endsend start四. 选作与探索1. 该自发自收程序采用了阻塞式查询方式,极易出现死锁,分析基本实验参考流程和程序,确定原因,修改程序结构,并编程实现;2. 分析一下,实验系统中握手信号如CTS,RTS,等如何起作用的;3. 实验系统中采用输入输出最简单的程序方法,为提高效率,试将程序改成接收中断方式,编写程序并调试通过;4. 设计采用收发均为中断方式的通信程序,连续收发有关信息,编写程序并调试通过; (提示:需设计采用收发缓冲区)五.实验预习与实验报告1.实验前阅读基本实验指示书和装置介绍,掌握8251初始化和工作方法,编写基本程序。
2.实验报告说明基本原理和电路分析,以及实验结果和分析,说明使用、测试方法。
3. 选做实验方案及内容讨论。
六.参考资料设备实验指示书 预备实验1: PCI设备查询和配置空间的读取实验三可编程定时器/计数器(8253)实验十四串行通讯实验九中断实验八 数模与模数转换一.实验目的(1)了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法。
(2) 了解模/数转换的基本原理,掌握ADC0809的使用方法。
二.实验环境1.硬件环境微型计算机(Intel x86系列CPU)一台,清华科教仪器厂TPC-2003A微机接口实验装置一台;数字记忆示波器一台,万用表一台。
2.软件环境(1)Windows XP操作系统,编辑、汇编、链接和调试程序;(2)PC2003A集成开发环境软件一套及实验装置电子版资料三.基本实验1.基本实验内容和要求(1)DAC实验电路原理如图8..1,DAC0832采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub),利用调试输出命令(Out 290 数据)输出数据给DAC0832,用万用表测量单极性输出端Ua及双极性输出端Ub的电压,验证数字与电压之间的线性关系。
(2)分别编程产生锯齿波、正弦波电压波形(从Ub输出,用示波器观察)图8.1 DAC0832基本实验电路(3)ADC实验电路原理图如图8.2, 通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
启动IN0开始转换: O 0C818 0; 读取转换结果: I 0C818(4) 编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
(5) 将JP3的1、2短接,使IN1处于双极性工作方式,并给IN1输入一个低频交流信号(幅度为±5V),编程采集这个信号数据并在屏幕上显示波形。
图8.2 ADC0809基本实验电路图2.编程提示A/D转换:(1)8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:(UREF表示参考电压,N表示数数据),这里的参考电压为PC机的+5V电源。
(2)产生锯齿波只须将输出到DAC0832的数据由0循环递增。
产生正弦波可根据正弦函数建一个下弦数字量表,取值范围为一个周期,表中数据个数在16个以上。
参考流程图如图8.3和8.4所示。
D/A转换:(1)图8.2中ADC0809的IN0口地址为298H,IN1口地址为299H。
(2)IN0单极性输入电压与转换后数字的关系为:其中Ui为输入电压,UREF为参考电压,这里的参考电压为PC机的+5V电源。
(3) 一次A/D转换的程序可以为MOV DX,口地址OUT DX,AL ;启动转换;延时IN AL,DX ;读取转换结果放在AL中参考流程如图8.5 和8.63.参考程序1:Array DA参考程序1:DA_1.ASM0d400h-0280hioport equio0832a equ ioport+290hcode segmentassume cs:codestart: mov cl,0mov dx,io0832alll: mov al,cloutdx,alinc cl ;cl加1incclincclincclclincclincincclpushdxmov ah,06h ;判断是否有键按下movdl,0ffhint21hdxpopjz lll ;若无则转LLLmov ah,4ch ;返回DOSint21hcode endsend startDA参考程序2:DA_2.ASMdata segmentioport equ 0d400h-0280hio0832a equioport+290h80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdhsin dbdb0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h80h,66h,4eh,38h,25h,15h,09h,04hdbdb 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波数据data endscode segmentassume cs:code,ds:datastart:mov ax,datamovds,axll: mov si,offset sin ;置正弦波数据的偏移地址为SI mov bh,32 ;一组输出32个数据lll: mov al,[si] ;将数据输出到D/A转换器dx,io0832amovdx,aloutah,06hmovdl,0ffhmovint21hexitjnecx,1movdelay:loop delay ;延时inc si ;取下一个数据bhdecjnz lll ;若未取完32个数据则转llljmp llexit: mov ah,4ch ;退出21hintcode endsend startAD参考程序1: AD_1.ASMioport equ0d400h-0280hio0809a equ ioport+298hcode segmentcs:codeassumestart:mov dx,io0809a ;启动A/D转换器out dx,almov cx,0ffh ;延时delay:loop delayin al,dx ;从A/D转换器输入数据mov bl,al ;将AL保存到BLmov cl,4shr al,cl ;将AL右移四位call disp ;调显示子程序显示其高四位mov al,bland al,0fhcall disp ;调显示子程序显示其低四位mov ah,02mov dl,20h ;加回车符int 21hmov dl,20hint 21hpushdxmov ah,06h ;判断是否有键按下mov dl,0ffh21hintdxpopje start ;若没有转STARTmov ah,4ch ;退出int 21hdisp proc near ;显示子程序mov dl,alcmp dl,9 ;比较DL是否>9jle ddd ;若不大于则为'0'-'9',加30h为其ASCII码add dl,7 ;否则为'A'-'F',再加7ddd: add dl,30h ;显示mov ah,02int 21hretdisp endpcode endsend startAD参考程序2:AD_2.ASM0d400h-0280hioport equio0809b equ ioport+299hcode segmentassume cs:codestart:mov ax,0012h ;设屏幕显示方式为VGA 640X480模示10hintand cx,0 ;cx为横坐标draw: mov dx,io0809b ;启动A/D转换器通道1dx,aloutmov bx,500 ;延时bxdelay: decdelayjnzin al,dx ;读入数据ah,0movmov dx,368 ;dx为纵坐标dx,axsubmov al,0ah ;设置颜色mov ah,0ch ;画点10hintcmp cx,639 ;一行是否满jz start ;是则转startinc cx ;继续画点dxpushmov ah,06h ;是否有键按下dl,0ffhmov21hintdxpopje draw ;无,则继续画点mov ax,0003 ;有恢复屏幕为字符方式10hintmov ah,4ch ;返回DOS21hint《微机实验及课程设计》实验指导书46code endsend start四. 选作与探索1. 在高性能系统中,往往需要精确定时启动采样,同时利用ADC 转换结束信号(EOC)申请中断处理,试设计采样系统电路,并编程实现上述基本模数转换功能;2. 同样DAC 波形发生时也要求精确定时,请将8253定时中断引入,编程并实现之;3. 参考装置资料和图8.7 线路,编程实现数字录音器。