串行IO接口实验报告

合集下载

串行接口实验报告

串行接口实验报告

课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二1. 实验目的 (3)2. 实验内容 (3)3. 实验原理 (3)4. 程序代码 (6)5. 实验体会 (13)实验二1.实验目的1.熟悉串行接口芯片8251的工作原理2.掌握串行通讯接收/发送程序的设计方法2.实验内容通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。

具体过程如下:1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。

2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。

3.实验原理1.8251控制字说明在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。

控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。

另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。

2.8251方式指令(端口地址2B9H)3.8251工作指令(端口地址2B9H)4.8251状态字(端口地址2B9H)5.8253控制字(283H)6.8253计数初值(283H)计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz波特率=1200波特率因=16计数初值= 1000000/1200*16=527.程序流程框图4.程序代码Fxc.asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址mes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop 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,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz nextmov dl,0ffh ;有键盘输入,读入字符mov ah,06hint 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend startSend .asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址buf3 byte 0mes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop 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,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz next; mov dl,0ffh ;有键盘输入,读入字符;mov ah,06h; int 21hmov dx,28ahin al,dxcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend start步进电机:1.K0=0,逆时针转;K0=1,顺时针转2.K1=0,慢转;K1=1,快转data segmentbuf1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;LED显示buf2 byte 0 ;步进电机数据buf3 byte 0 ;保存开关数据buf4 byte 0 ;保存顺转数据buf5 byte 9 ;保存反转数据buf6 byte 0 ;开关机data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov buf2,00110011b ;步进电机数据mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;-----------------------------逆转控制----------------R0: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jnz kai ;转反转test al,01 ;测试K0=1?jnz L0 ;转反转mov al,buf4 ;走马灯开始一步顺转cmp al,9jnz S1call change9_0S1: inc al ;数据加1mov buf4,almov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;数据完成加1mov al,buf2 ;电机开始一步逆转ror al,1 ;数据左移mov buf2,almov dx,288h ;A口输出out dx,al ;电机完成一步逆转mov al,buf3 ;回复C口数据test al,02jnz R1 ;转快转call delay_s ;否则慢转jmp R0R1: call delay_q ;快转jmp R0;------------------------------顺转控制-----------------L0: mov al,buf5 ;走马灯开始一步顺转cmp al,0jnz S2T2: test al,03 ;测试K2=1?jnz T2call change0_9S2: dec al ;数据减1mov buf5,al ;mov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;走马灯结束一步顺转mov al,buf2 ;电机开始一步顺转rol al,1 ;数据右移mov buf2,almov dx,288h ;A口输出out dx,al ;电机结束一步顺转mov al,buf3 ;回复C口数据test al,02jnz L1 ;转快转call delay_s ;否则慢转jmp R0T3: test al,03 ;测试K2=1?jnz T3L1: call delay_q ;快转jmp R0kai: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jz L0 ;转反转jmp kaiexit: mov ah,4chint 21hdelay_s proc near ;长延时mov bx,20hlp1: mov cx,0ffffhlp2: loop lp2dec bxjnz lp1retdelay_s endpdelay_q proc near ;短延时mov bx,1lp11: mov cx,0ffffhlp22: loop lp22dec bxjnz lp11retdelay_q endpchange9_0 proc nearmov buf4,-1mov al,buf4retchange9_0 endpchange0_9 proc nearmov buf5,10mov al,buf5retchange0_9 endpcode endsend start5.实验体会这次实验需要用到两种芯片8253和8251,两种芯片的作用分别是8253提供串行通讯所需的特定频率的脉冲信号,8251提供输入输出控制,所以在实验的过程中需要熟悉这两种芯片的方式字等使用规范,在仔细阅读了书本以及书本的编程实例后,基本摘掉了程序的设计方法实验过程中,出现了程序编译通过了但是不能运行的情况,后来经过检查发现是程序没有设置好的原因,要设置为编译后运行状态,否知只编译不运行,经过这次实验,知道了8253和8251两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。

串行口实验报告

串行口实验报告

串行口实验报告
《串行口实验报告》
实验目的:通过串行口实验,探索数据传输的可靠性和稳定性。

实验材料:计算机、串行口数据线、串行口设备。

实验步骤:
1. 连接串行口数据线:首先,将串行口数据线插入计算机的串行口接口,并将另一端连接到串行口设备上。

2. 设置串行口参数:在计算机上打开串行口设置界面,设置波特率、数据位、校验位和停止位等参数,确保与串行口设备相匹配。

3. 发送数据:通过计算机上的串行口通讯软件,向串行口设备发送数据,观察数据传输的稳定性和可靠性。

4. 接收数据:同样通过串行口通讯软件,接收串行口设备发送的数据,检验数据接收的准确性和完整性。

实验结果:
经过一系列的实验操作,我们发现串行口数据传输的稳定性和可靠性较高。

在设置合适的参数后,数据传输过程中几乎没有出现丢失或错误的情况。

同时,数据的传输速度也较为稳定,符合预期的要求。

实验结论:
通过本次串行口实验,我们验证了串行口数据传输的可靠性和稳定性。

在实际应用中,可以通过合理设置串行口参数,确保数据的准确传输。

串行口技术在工业控制、通讯设备等领域有着广泛的应用前景,为数据传输提供了一种可靠的解决方案。

串转并的IO口实验实验报告

串转并的IO口实验实验报告

实验六串转并的I/O口实验一实验目的熟悉并掌握串转并的I/O口扩展方法二实验设备及器件IBM PC机一台单片机仿真器,编程器,实验仪三合一综合开发平台一台三实验内容1. 写程序,通过单片机的P1口控制74HC164的串行输入端口,实现串并转换.2. 验证串并转换的正确性.四实验要求熟悉串转并的工作原理,学会使用串并转换芯片扩展单片机的I/O口资源.五实验步骤1. 短接C5区JP10接口,将C5区J43接口与A2区J61接口的P10~P13对应相连(CLK对P10等)。

2. 运行编写好的软件程序,完成一次串并转换.3. 使用C2区的逻辑笔或D1区的J52接口(LED指示灯)测试并行输出数据Q0~Q7数据的正确性.六实验原理七实验参考程序CLK EQU P1.0DINA EQU P1.1DINB EQU P1.2CLR164 EQU P1.3ORG 0000HLJMP MAINORG 0100HMAIN:MOV SP,#60H ;设置堆栈向量NOP ;设置以下端口初始化CLR CLK ;CLK=0SETB DINB ;DINB=1CLR CLR164 ;CLR=0输出端口清零SETB CLR164 ;CLR=1MOV A,#0AAH ;用户输出数据初始化MOV R4,#08HSLCHG: RLC AMOV DINA,C ;串行输出一位数据SETB CLK ;移位时钟NOPCLR CLKNOPDJNZ R4,SLCHGSJMP $ ;程序结束,完成一次串并转换END八程序流程图九实验思考尝试编写程序,实现8位LED流水灯的控制。

原理图同上。

十完成实验报告。

实验四:串行接口输入输出实验

实验四:串行接口输入输出实验

实验四串行接口输入输出实验一、实验目的1、学习TEC-2000教学计算机I/O接口扩展的方法;2、学习串行通信的基本知识,掌握串行通信接口的设置和使用方法。

二、实验说明1、TEC-2000教学机配置了两个串行接口COM1和COM2,其中COM1口是系统默认的串行接口,上电复位后,监控程序对其进行初始化,并通过COM1与PC机终端相连,监控程序负责对COM1进行管理。

COM2口预留给实验者扩展使用,监控程序不对COM2进行任何处理,实验者需要对COM2进行初始化、使用和管理。

2、实验前查阅有关资料,了解可编程串行通信接口芯片8251的工作原理,了解8251复位、初始化、数据传输过程控制等方面的知识。

注意,①每次对8251复位后(即按了“RESET”键),都需要对其进行初始化,然后再进行正常的数据传输;②每次复位后,只能对8251进行1次初始化,多次初始化将导致串口工作不正常。

3、在使用COM2口时,需要将两片8251芯片之间的跳线短接(缺省状态),以便为COM2正常工作提供所需的控制信号和数据;此外,还需要为其分配端口地址。

教学机已将COM2口的C/(/D)与地址总线的最低位A0相连,但片选信号/CS未连,只引出1个插孔,实验时,应将该插孔与标有“I/O /CS”的7个插孔中的1个相连。

三、实验内容1、为扩展I/O口选择一个地址,即将8251的/CS与标有I/O /CS的一排插孔中的一个相连。

2、将COM2口与终端或另一台运行有PCEC16的PC机的串口相连。

3、用监控程序的A命令,编写一段小程序,先初始化COM2口,再向COM2口发送一些字符,也可从COM2口接收一些字符,或实现两个串口的通信。

四、实验要求应了解监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入到相应的存储单元中。

五、实验步骤1、为扩展I/O接口选择一个地址,将8251的/CS与标有I/O /CS的插孔中地址为A0~AF的插孔相连;2、将教学机COM1口与微机PC1相连,在PC1上运行PCEC16.EXE,进入联机状态后保持PCEC的运行状态;3、断开教学机COM1与PC1的串口线,将其连接到另一台微机PC2的串口上,在PC2上运行PCEC16.EXE联机;4、用另一条串口线将PC1与教学机的COM2接口相连。

实验7串行接口输入输出实验

实验7串行接口输入输出实验

北京林业大学11学年—12学年第 2 学期计算机组成原理实验任务书专业名称:计算机科学与技术实验学时: 2课程名称:计算机组成原理任课教师:张海燕实验题目:实验七串行接口输入输出实验实验环境:TEC-XP+教学实验系统、PC机实验内容1.串行接口输入输出;2.串行接口扩展。

实验目的学习串行口的正确设置与使用。

实验要求1.实验之前认真预习,明确实验的目的和具体实验内容,做好实验之前的必要准备。

2.想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果;3.在教学实验过程中,要爱护教学实验设备,记录实验步骤中的数据和运算结果,仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。

4.实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,运算结果的分析讨论,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。

善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。

必要知识串行接口是计算机主机和某些设备之间实现通信,硬件造价比较低廉、标准化程度比较高的一种输入输出接口线路,缺点是通信的速度比较低。

从在程序中使用串行接口芯片的角度看,接口芯片内有用户可以访问的4个寄存器,分别是接收CPU送来数据的输出数据缓冲寄存器,向CPU提供数据的输入数据缓冲寄存器,接收CPU发来的控制命令的控制寄存器,向CPU提供接口运行状态的状态寄存器,必须有办法区分这4个寄存器。

接口芯片中还有执行数据串行和并行转换的电路,接口识别电路等。

串行接口用于执行数据的输入输出操作。

一次输入或输出操作通常需要两个操作步骤完成,第一步是为接口芯片提供入出端口地址,即把指令寄存器低位字节的内容(8位的IO端口地址)经过内部总线和运算器部件写进地址寄存器AR,第二步是执行输入或输出操作,若执行输入指令IN,则应从接口芯片读出一个8位的数据并经过数据总线DB和内部总线IB写进寄存器堆中的R0寄存器,若执行OUT指令,则需要把R0寄存器的内容经过内部总线IB和数据总线DB写入接口芯片。

微机原理实验报告串行IO接口

微机原理实验报告串行IO接口

微机原理实验报告串⾏IO接⼝微机原理实验预习报告串⾏I/O接⼝实验1)理解RS232串⾏通信协议以及接⼝设计2)理解SPI串⾏通信协议3)掌握RS232串⾏接⼝设计4)掌握SPI串⾏接⼝设计5)掌握串⾏AD/DA接⼝设计⼆实验任务SPI接⼝DA转换输出锯齿波满量程下的锯齿波硬件电路框图软件流程图四实现步骤硬件实现1、加⼊中断控制器和SPI总线接⼝2、配置SPI接⼝参数,:⼀次传输16位数据,分频⽐为4,SCLK的频率为25MHz3、端⼝连接配置4、UCF配置软件实现1、导出到SDK2、建⽴⼀个新的空⼯程3、将源码加⼊新的c源⽂件中源代码及注释:#include"xparameters.h"#include"xspi.h"#include"xintc.h"#include"xil_exception.h"#define BUFFER_SIZE 2void SpiIntrHandler(void *CallBackRef, u32 StatusEvent, u32 ByteCount); //⽤户定义的SPI终端服务程序static XIntc IntcInstance;static XSpi SpiInstance;volatile int TransferInProgress;//中断结束状态标志int Error;u8 ReadBuffer[BUFFER_SIZE];u8 WriteBuffer[BUFFER_SIZE];int main(void)int Status,Count;Status = XSpi_Initialize(&SpiInstance,XPAR_SPI_0_DEVICE_ID);Status = XSpi_Initialize(&SpiInstance,XPAR_INTC_0_DEVICE_ID);Status = XIntc_Connect(&IntcInstance, XPAR_INTC_0_SPI_0_VEC_ID, (XInterruptHandler) XSpi_InterruptHandler,(void *)&SpiInstance);Status = XIntc_Start(&IntcInstance, XIN_REAL_MODE);XIntc_Enable(&IntcInstance, XPAR_INTC_0_SPI_0_VEC_ID);microblaze_register_handler((XInterruptHandler)XIntc_InterruptHandler, &IntcInstance); microblaze_enable_interrupts();//设置SPI接⼝⽤户中断服务函数XSpi_SetStatusHandler(&SpiInstance,&SpiInstance,(XSpi_StatusHandler) SpiIntrHandler); //配置SPI接⼝⼯作模式Status = XSpi_SetOptions(&SpiInstance,XSP_MASTER_OPTION|XSP_CLK_PHASE_1_OPTION);//设置从设备选择信号Status = XSpi_SetSlaveSelect(&SpiInstance,1);//使能SPI接⼝XSpi_Start(&SpiInstance);//循环输出数据到SPI接⼝控制DAC输出锯齿波while(1){WriteBuffer[0] = (u8) (Count);//SPI输出数据的低8位WriteBuffer[1] = (u8) (Count>>8)&0x0f;// SPI输出数据的⾼8位,其中⾼4位清零,使得Vout正常输出电压Count=Count+32;if (Count==4096)Count=0;//12位DAC转换数据达到最⼤值时,恢复到0TransferInProgress = TRUE; // 设置传输状态标志为1XSpi_Transfer(&SpiInstance, WriteBuffer, (void*)0, 2);//⼀次传输2个字节while (TransferInProgress);// 等待传输结束}return XST_SUCCESS;}void SpiIntrHandler(void *CallBackRef, u32 StatusEvent, u32 ByteCount){TransferInProgress = FALSE;//进⼊中断表⽰传输结束,修改传输状态标志为0if (StatusEvent != XST_SPI_TRANSFER_DONE){Error++;}}五实验验证观察峰峰值为3.3v左右,即为满量程的⼯作电压六实验总结1)通过实验学会了在AXI总线上连接SPI接⼝2)学会了并⾏I/O接⼝的设计3)知道了波形的输出条件和量程的选择。

简单i o口扩展实验实验报告

简单i o口扩展实验实验报告

简单i o口扩展实验实验报告简单I/O口扩展实验实验报告引言:简单I/O口扩展实验是一项基础的电子实验,通过扩展I/O口,可以实现对外部设备的控制和数据交互。

本实验旨在通过实际操作,了解I/O口扩展的原理和应用。

实验目的:1. 了解I/O口的基本概念和工作原理;2. 学习使用I/O口扩展芯片实现对外部设备的控制;3. 掌握I/O口扩展的编程方法和应用技巧。

实验器材和材料:1. Arduino开发板;2. I/O口扩展芯片;3. 连接线;4. 外部设备(如LED灯、蜂鸣器等)。

实验步骤:1. 连接Arduino开发板和I/O口扩展芯片。

将I/O口扩展芯片的引脚与Arduino开发板的数字引脚相连,确保连接正确可靠。

2. 编写程序。

使用Arduino开发环境,编写程序代码,实现对I/O口扩展芯片的控制。

根据实际需求,可以选择控制外部设备的开关、亮度、频率等。

3. 上传程序。

将编写好的程序上传到Arduino开发板,确保程序能够正确运行。

4. 运行实验。

运行程序,观察外部设备的状态变化。

通过改变程序中的参数,可以实现对外部设备的不同控制效果。

实验结果与分析:通过实验,我们成功地实现了对外部设备的控制。

通过改变程序中的参数,我们可以控制外部设备的开关、亮度、频率等。

这说明I/O口扩展技术具有很大的应用潜力,可以实现对各种外部设备的控制和数据交互。

实验总结:通过本次实验,我们深入了解了I/O口扩展的原理和应用。

通过编写程序,我们掌握了I/O口扩展的编程方法和应用技巧。

通过实验,我们成功地实现了对外部设备的控制,这为我们进一步研究和应用I/O口扩展技术奠定了基础。

实验中遇到的问题和解决方法:在实验过程中,我们遇到了一些问题,如连接错误、程序错误等。

我们通过仔细检查连接和程序代码,逐一解决了这些问题。

这提醒我们在实验中要认真细致,仔细检查和排除错误,以保证实验的顺利进行。

实验的局限性和改进方向:本次实验只是简单地介绍了I/O口扩展的基本原理和应用,还有很多相关的知识和技术需要进一步学习和探索。

实验七串行口通讯实验报告

实验七串行口通讯实验报告

实验七串行口通讯实验报告一、引言串行口通讯是一种常见的数据传输方式,通过串行口可以在计算机和其他设备之间实现数据的传输和通信。

本实验通过使用Arduino开发板,以及利用串行口通讯实现从计算机向Arduino开发板发送指令,控制LED 灯的亮灭。

二、实验目的1.了解串行口通讯的基本原理和工作方式;2.掌握Arduino上位机通讯程序的编写及与硬件的串行口通讯方法;3.通过串行口通讯实现计算机对Arduino开发板的远程控制。

三、实验设备和器材1. Arduino Uno板;2.计算机;B数据线;4.杜邦线;5.LED灯。

四、实验原理当计算机与Arduino开发板连接时,可以通过串行口通讯实现双方之间的数据传输。

串行口通讯使用两根信号线:一根发送线(TX),用于发送数据;一根接收线(RX),用于接收数据。

通讯的双方都必须发送和接收数据,因此需要双向数据传输,即双向通讯。

五、实验步骤1. 连接Arduino开发板和计算机,使用USB数据线将两者连接;2. 打开Arduino IDE开发环境,编写以下代码并上传到Arduino开发板:```c++int ledPin = 13;void setuSerial.begin(9600);pinMode(ledPin, OUTPUT);void looif (Serial.available( > 0) { // 如果串行口接收到数据digitalWrite(ledPin, HIGH);digitalWrite(ledPin, LOW);}}```3. 打开串行监视器(Serial Monitor),设置波特率为9600,并选择“无”作为换行符;4.在串行监视器中输入“1”,回车,LED灯将点亮;5.在串行监视器中输入“0”,回车,LED灯将熄灭;6.关闭串行监视器。

六、实验结果和分析在本实验中,通过串行口通讯实现了从计算机向Arduino开发板发送指令,控制LED灯的亮灭。

串行口实验报告

串行口实验报告

串行口实验报告串行口实验报告一、实验目的本次实验旨在通过串行口通信实验,掌握串行口通信的基本原理和使用方法,加深对计算机硬件接口的理解。

二、实验原理串行口通信是一种常用的计算机通信方式,通过串行口可以实现计算机与外部设备的数据传输。

串行口通信的基本原理是将数据位按照一定的顺序逐个传输,每个数据位都有一个起始位和一个停止位,以及可能的奇偶校验位。

串行口通信的数据传输速率可以通过波特率来衡量。

三、实验器材1.计算机2.串行口线缆3.串行口设备(如串口打印机、串口调试器等)四、实验步骤1.将串行口线缆的一端插入计算机的串行口,另一端插入串行口设备。

2.打开计算机,进入操作系统。

3.在操作系统中打开串行口通信软件。

4.在串行口通信软件中设置波特率、数据位、停止位、奇偶校验位等参数。

5.发送数据:在串行口通信软件中输入需要发送的数据,点击发送按钮进行数据传输。

6.接收数据:在串行口通信软件中接收并显示从串行口设备传输过来的数据。

五、实验结果与分析在本次实验中,我们使用了串行口通信软件与串行口设备进行数据传输。

通过设置合适的参数,我们成功地发送和接收了数据。

在实验过程中,我们发现串行口通信的波特率设置对数据传输速率有着重要影响。

较高的波特率可以实现更快的数据传输,但也容易造成数据传输错误。

因此,在实际应用中,需要根据具体情况选择合适的波特率。

此外,我们还观察到了串行口通信的数据位、停止位和奇偶校验位等参数的作用。

数据位决定了每个数据字节的位数,停止位用于标识数据传输的结束,奇偶校验位则用于检测和纠正传输过程中可能出现的错误。

六、实验总结与思考通过本次实验,我们深入了解了串行口通信的基本原理和使用方法。

串行口作为计算机与外部设备之间的重要接口,广泛应用于各个领域。

掌握串行口通信的知识,对于我们理解计算机硬件接口的工作原理,以及进行数据传输和通信都具有重要意义。

在今后的学习和实践中,我们可以进一步探索串行口通信的应用领域,如串口调试、串口通信协议等方面的知识。

实验八串行接口实验

实验八串行接口实验

实验八串行接口实验实验八串行接口实验微电子学【实验目的】1、掌握8031串行口方式1的工作方式及编程方法。

2、掌握串行通讯中波特率的设置,在给定通讯波特率的情况下,会计算定时时间常数。

3、掌握串行口工作方式的程序设计和单片机通讯程序的编制方法。

【实验原理】MCS-51 单片机串行通讯的波特率随串行口工作方式选择的不同而不同,它除了与系统的振荡频率f,电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置有关。

1、在工作方式0时,波特率固定不变,仅与系统振荡频率有关,其大小为f/12。

2、在工作方式2时,波特率也只固定为两种情况:当SMOD=1时,波特率=f/32当SMOD=0时,波特率=f/643、在工作方式1和3时,波特率是可变的:当SMOD=1时,波特率=定时器T1的溢出率/16当SMOD=0时,波特率=定时器T1的溢出率/32其中,定时器T1的溢出率=f/(12*(256-N)),N为T1的定时时间常数。

在实际应用中,往往是给定通讯波特率,而后去确定时间常数。

例如:f=6.144MHZ,波特率等于1200,SMOD=0时,则:1200=6144000/(12*32*(256-N)),计算得N=F2H。

【实验内容】1.利用8031串行口发送和接收数据,并将接收的数据通过扩展I/O口74LS273输出到发光二极管显示,结合延时来模拟一个循环彩灯。

设置串行口工作于方式1,SMOD=0,波特率为1200。

循环彩灯的变化花样也可自行设计。

实验连线:8031 的TXD 接RXD;74LS273 的CS273 接CS0;O0~O7 接发光二极管的L1~L8。

参考程序见D81.ASM2.双机实验:本实验由两人共同完成。

分别设计甲、乙两个程序。

甲程序为接收程序,在甲机运行,将接收到的字符在数码管上显示出来;乙程序为发送程序,在乙机运行,每次按P-键后发送,每次发送3个字符。

通讯协议:[起始字节(05)][3个数据][结束字符0E],B=2400,用串口通信方式1.实验连线:甲机8031CPU板上的RXD接乙机的TXD,甲机的GND接乙机的GND。

2023年嵌入式实验报告ARM的串行口实验

2023年嵌入式实验报告ARM的串行口实验

贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间05.03 指导教师余佩嘉成绩实验项目名称ARM的串行口实验实验目的1.掌握ARM的串行口工作原理2.学习编程实现ARM的UART通讯3.掌握CPU运用串口通讯的方法实验原理1.异步串行I/O异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。

数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。

接受方对于同一根线上一连串的数字信号,一方面要分割成位,再按位组成字符。

为了恢复发送的信息,双方必须协调工作。

在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,并且允许时钟频率有一定误差,因此实现较容易。

但是由于每个字符都要独立拟定起始和结束(即每个字符都要重新同步),字符和字符间还也许有长度不定的空闲时间,因此效率较低。

图3-1给出异步串行通信中一个字符的传送格式。

开始前,线路处在空闲状态,送出连续“1”。

传送开始时一方面发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。

每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。

后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。

也可以约定不要奇偶校验,这样就取消奇偶校验位。

最后是表信号地所有的信号都要通过信号地线构成耦合回路。

通信线有以上三条(TXD、RXD和信号地)就能工作了。

其余信号重要用于双方设备通信过程中的联络(握手信号),并且有些信号仅用于和MODEM的联络。

若采用微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设立成不要任何联络信号,则其它线都可不接。

有时在通信线的同一端将相关信号短接以“自握手”方式满足联络规定。

这就是如图3-2(a)所示的情况。

RTS/CTS 请求发送值号RTS是发送器输出的准备好信号。

接受方准备好后送回清除发送信号CTS后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准备好即可发送。

串行口实验实验报告

串行口实验实验报告

串行口实验实验报告实验报告:串行口实验一、实验目的:1. 掌握串行口通信原理;2. 熟悉使用串行口进行数据通信;3. 学习使用串行口进行数据的发送和接收。

二、实验仪器和材料:1. 串行口连线2. 上位机软件(如串口调试助手)3. PCB板三、实验原理:串行口通信是一种通过传送位来传送数据的通信方式。

通过串行口,计算机可以与其他设备进行数据交换。

串行通信需要发送方和接收方之间通过一条传输线连通,在一定的波特率下,发送方将数据转换为一系列位发送给接收方,接收方将接收到的位转换为相应的数据。

四、实验步骤:1. 将串行口连线正确连接好,一端连接到计算机的串行口,另一端连接到实验设备;2. 打开上位机软件,配置串行口参数,如波特率、数据位等;3. 在上位机软件中发送数据,观察实验设备上接收到的数据;4. 在实验设备中发送数据,观察上位机软件接收到的数据。

五、实验数据记录:在实验过程中,我们尝试了不同的波特率和数据位设置,并记录了每次的实验数据接收情况。

以下是其中一次实验的数据记录:- 实验参数:波特率9600bps,数据位8位,无校验位,停止位1位;- 发送数据:0x55;- 接收到的数据:0x55。

六、实验结果分析:根据实验数据,我们可以发现发送的数据0x55成功被接收到,说明串行口通信正常工作。

这说明我们正确配置了串行口参数,并且发送和接收的数据没有出现错误。

七、实验总结:通过本次实验,我们掌握了串行口通信的原理,学会了如何使用串行口进行数据通信。

实验结果表明,我们成功地发送和接收了数据。

在实际应用中,串行口通信在许多领域中都有广泛的应用,比如计算机与外设的连接、嵌入式系统的开发等。

掌握串行口通信技术对于我们的学习和工作都具有重要意义。

八、存在的问题和改进方向:在本次实验中,我们没有发现明显的问题。

但是,在实际应用中,串行口通信可能会面临一些问题,比如数据丢失、传输错误等。

我们可以进一步学习调试和排查这些问题,并学习如何处理和解决这些问题。

实验五:串行接口输入输出实验

实验五:串行接口输入输出实验

实验五串行接口输入/输出实验一、实验目的1、学习TEC-XP+教学计算机I/O接口扩展的方法;2、学习串行通信的基本知识,掌握串行通信接口芯片的设置和使用方法。

二、实验说明1、TEC-XP+教学计算机的I/O结构TEC-XP+教学计算机配置有COM1和COM2两个串行接口,其中COM1是TEC-XP+默认的标准接口,与PC终端相连接,监控程序负责对COM1进行初始化和使用管理。

COM2预留给用户扩展使用,监控程序不能识别COM2,也不对COM2进行任何操作,用户需要对COM2进行初始化和使用管理。

COM1和COM2均由可编程串行通信接口芯片intel8251芯片构成。

2、Intel8251的组成及控制和使用方法可编程串行通信接口芯片Intel8251支持同步和异步两种通信方式。

在异步方式下,波特率为0~19.2Kbps,数据位可为5、6、7或8位,可设1个奇偶校验位,1个起始位,1个、1.5个或2个停止位。

Intel8251内部有7个功能模块负责实现与CPU的数据交换以及与I/O设备的数据通信功能,内部有6个寄存器,其中与异步通信方式的有关的寄存器有5个,即模式寄存器、控制寄存器、状态寄存器、数据发送寄存器和数据接收寄存器。

模式寄存器的功能是设定intel8251的工作模式,控制寄存器的功能是控制intel8251的数据发送和接收等工作过程,状态寄存器的功能是反映intel8251数据发送和接收等工作的状态,各寄存器的格式如图5-1、图5-2和图5-3所示。

当CPU把需发送的数据写入数据发送寄存器后,intel8251将自动把数据组成帧并逐位发送出去。

Intel8251能自动完成数据接收操作,并把接收到的数据存放在数据接收寄存器中,CPU从中读取即可。

图5-1模式寄存器格式图5-2 控制寄存器格式图5-3 状态寄存器格式CPU对模式寄存器、控制寄存器和数据发送寄存器只能写入,不能读出。

对状态寄存器和数据接收寄存器只能读出,不能写入。

串行IO接口实验报告

串行IO接口实验报告

电子信息与通信学院实验报告实验名称:串行IO接口设计课程名称:微机原理实验专业班级:电信卓越1201班姓名:钟远维学号:U201213500实验成绩:指导教师:罗杰2014年12月23日一.实验目的1.理解RS232串行通信协议以及接口设计2.理解SPI串行通信协议3.掌握RS232串行接口设计4.掌握SPI串行接口设计5.掌握串行AD/DA接口设计二.实验任务SPI接口DA转换输出锯齿波,频率1kHz以上(降低采样频率),峰峰值约3.3V要求:全部采用中断方式。

三.实验步骤1.接口电路如图所示:DAC121S101中断控制方式接口电路2.硬件平台建立1)使用XPS创建一个基于AXI总线的最小计算机系统。

File –> New BSB Project,如图:2)修改时钟设置:将时钟产生器的时钟输入信号进行修改,修改为单一时钟源。

修改后的结果如图:3)添加AXI Interrupt Controller IP核:a.在IP Catalog标签中,双击下面图标创建INTC IP核:b.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:4)加入AXI SPI接口控制器:a.如图所示,选择AXI SPI。

b.配置SPI接口参数如图所示。

这是由于该SPI接口仅需要输出数据,而且一次传输需要16位数据,一个从设备,且D/A转换芯片要求SCLK 最高速率30MHz,由于AXI总线频率为100MHz,一次分频比为4,此时SCLK的频率仅为25MHz。

c.设置端口连接配置,如图:5)为AXI INTC添加中断源,如图:6)配置UCF文件:在UCF文件中修改如图所示配置,此时是通过PMOD JA上排插针进行连接:7)创建工程过程完成后,a.在主界面下选择Hardware->Generate Netlist;b.在主界面下选择Hardware->Generate Bitstream;c.单击Graphical Design View,可以看到系统的连接图,如下:3.软件平台建立a.SDK提供的外设驱动以及应用程序,点击Export&Launch1.点击project->Expert Hardware Design to SDK…SDK:2.在SDK中,点击file->new->board support package,如图:3.点击file->new->application project,创建一个Empty Applicant工程,在src中新建一个SPIDIswitch.c文件,如图所示:b.源代码及注释:四.实验结果和调试过程首先,把SPI接口D/A模块跟Nexys4的板子相接;然后,下载并运行该工程,将示波器的探针连接到J2的1脚,可以看到锯齿波的波形。

io口实验报告

io口实验报告

io口实验报告IO口实验报告引言:IO口(Input/Output Port)是计算机硬件中的一种通信接口,用于与外部设备进行数据交互。

本实验旨在通过对IO口的实际应用,深入了解IO口的原理和使用方法。

一、实验目的通过本次实验,我们的目标是掌握IO口的基本原理和操作方法,了解IO口在计算机系统中的重要性,并能够熟练地使用IO口进行数据输入和输出。

二、实验装置本次实验所需的装置包括一台计算机、IO口接口板、连接线和外部设备(如LED灯、按钮等)。

三、实验过程1. 连接IO口接口板将IO口接口板与计算机通过连接线连接好,并确保连接稳固。

接口板上通常会有标识,根据标识将连接线插入正确的接口。

2. 配置IO口参数打开计算机,并进入操作系统。

根据计算机型号和操作系统的不同,配置IO口参数的具体步骤可能会有所不同。

一般来说,可以通过设备管理器或者控制面板中的设备设置选项来进行配置。

3. 进行IO口输入实验将一个按钮连接到IO口接口板的输入端口上。

通过编写简单的程序代码,实现当按钮按下时,计算机能够读取到IO口的输入信号,并作出相应的反应,如显示一个提示信息或者改变屏幕上的图像。

4. 进行IO口输出实验将一个LED灯连接到IO口接口板的输出端口上。

通过编写程序代码,实现当计算机发出IO口的输出信号时,LED灯能够亮起。

可以尝试不同的输出信号模式,如闪烁、渐变等,以观察LED灯的不同反应。

5. 拓展实验除了按钮和LED灯,还可以尝试连接其他外部设备,如蜂鸣器、温度传感器等,以进一步探索IO口的应用。

通过编写相应的程序代码,实现与这些设备的交互,并观察其效果。

四、实验结果与分析通过以上实验操作,我们可以得到以下实验结果:1. IO口输入实验:当按下按钮时,计算机能够读取到IO口的输入信号,并作出相应的反应。

这说明IO口能够实现数据的输入,为计算机提供外部信息。

2. IO口输出实验:当计算机发出IO口的输出信号时,LED灯能够亮起。

串行接口实验报告

串行接口实验报告

串行接口实验报告串行接口实验报告引言:串行接口是一种用于数据传输的通信协议,它通过一条线路逐位地传输数据。

与并行接口相比,串行接口在使用的线路数量上更加节省,因此在某些场景下更为常见和实用。

本实验旨在通过搭建一个串行接口的实验平台,研究串行接口的工作原理和性能。

实验设备与方法:本次实验使用了一台计算机、一根串行线缆以及一个串行接口转换器。

首先,将计算机与串行接口转换器通过串行线缆连接起来。

然后,通过计算机上的串行接口软件,设置串行接口的参数,如波特率、数据位、校验位等。

最后,通过发送和接收数据的操作,验证串行接口的正常工作。

实验结果与分析:在实验过程中,我们首先测试了串行接口的数据传输速率。

通过调整波特率,我们发现串行接口的传输速率与波特率成正比。

当波特率较低时,数据传输速度较慢,而当波特率较高时,数据传输速度较快。

这说明串行接口的传输速率受到波特率的限制。

接下来,我们测试了串行接口的数据可靠性。

通过发送一组数据,并在接收端进行校验,我们可以判断数据是否传输正确。

实验结果显示,当串行接口的校验位设置正确时,数据传输的可靠性较高。

然而,当校验位设置错误时,数据传输的可靠性会降低。

这表明校验位的设置对于数据传输的正确性至关重要。

此外,我们还测试了串行接口的最大传输距离。

通过逐渐增加传输距离,我们发现当传输距离超过一定范围时,数据传输会出现错误。

这是因为串行接口的信号在传输过程中会受到衰减和干扰的影响,导致数据传输的不可靠。

因此,在实际应用中,需要根据传输距离选择合适的串行接口设备。

结论:通过本次实验,我们深入了解了串行接口的工作原理和性能。

串行接口的传输速率受到波特率的限制,数据可靠性与校验位的设置密切相关,传输距离会影响数据传输的可靠性。

在实际应用中,我们应根据需求选择合适的串行接口设备,并根据实际情况进行参数设置,以确保数据传输的稳定和可靠。

未来展望:随着科技的不断发展,串行接口在各个领域的应用越来越广泛。

串行接口实验报告

串行接口实验报告

一、实验目的1. 理解串行接口的基本原理和功能。

2. 掌握串行接口的硬件连接和软件编程方法。

3. 学习使用串行接口进行数据传输。

4. 了解串行接口在实际应用中的重要性。

二、实验原理串行接口是一种数据传输方式,将数据按位顺序一位一位地传输。

与并行接口相比,串行接口具有传输距离远、传输速度快、抗干扰能力强等优点。

在串行接口中,数据以一定的速率、格式和协议进行传输。

串行接口的基本原理是:发送端将数据按位发送,接收端按照同样的速率和格式接收数据,并通过软件或硬件解码恢复原始数据。

串行接口的硬件连接主要包括发送端和接收端,其中发送端包括发送数据缓冲器、串行移位寄存器、时钟发生器等;接收端包括接收数据缓冲器、串行移位寄存器、时钟恢复电路等。

三、实验内容1. 硬件连接(1)根据实验要求,连接实验板上的串行接口电路。

(2)将实验板与计算机连接,确保通信线路畅通。

2. 软件编程(1)使用C语言编写串行接口发送和接收数据的程序。

(2)设置串行接口的波特率、数据位、停止位和校验位等参数。

(3)实现数据的发送和接收,并对接收到的数据进行处理。

3. 实验步骤(1)启动实验环境,编译并运行串行接口发送和接收数据的程序。

(2)在计算机上打开串行通信调试软件,如串口调试助手。

(3)设置调试软件的波特率、数据位、停止位和校验位等参数,确保与实验程序设置一致。

(4)在调试软件中发送数据,观察实验板接收到的数据是否正确。

(5)修改实验程序,调整发送和接收的数据,验证串行接口通信功能。

四、实验结果与分析1. 实验结果通过实验,成功实现了串行接口的发送和接收功能。

在计算机上发送数据,实验板接收到的数据与发送数据一致,说明串行接口通信功能正常。

2. 实验分析(1)在实验过程中,需要注意串行接口的波特率、数据位、停止位和校验位等参数设置,确保与接收端一致。

(2)在实际应用中,串行接口通信需要考虑抗干扰能力,可以通过采用差分传输、增加滤波电路等措施来提高通信质量。

串行口实验报告

串行口实验报告

一、实验目的1. 理解串行通信的基本原理和常用协议。

2. 掌握单片机串行口的工作方式及其程序设计。

3. 通过实际操作,实现单片机之间的串行通信,验证通信协议的正确性。

4. 学习串行通信在实际应用中的调试和故障排除方法。

二、实验设备1. 单片机开发板(如STC89C52、AT89C51等)2. 串行通信模块(如MAX232、CH340等)3. 连接线(杜邦线、串行线等)4. 电脑(用于调试程序)5. 串口调试工具(如串口助手、PuTTY等)三、实验原理串行通信是指数据在一条线路上按位顺序传送,一次只能传送一位。

与并行通信相比,串行通信具有成本低、传输距离远、易于实现等优点。

串行通信的常见协议有RS-232、RS-485、I2C、SPI等。

本实验采用RS-232协议,通过单片机的串行口实现数据的发送和接收。

四、实验步骤1. 硬件连接将单片机的串行口(如RXD、TXD)与串行通信模块的RXD、TXD引脚相连,并通过杜邦线连接到电脑的串口。

2. 软件设计(1)编写单片机程序,实现数据的发送和接收。

(2)编写电脑端程序,用于发送和接收数据。

3. 程序调试(1)将单片机程序烧写到单片机中。

(2)在电脑端打开串口调试工具,设置波特率、数据位、停止位、校验位等参数。

(3)通过串口调试工具发送数据,观察单片机接收到的数据是否正确。

4. 实验结果分析通过实验,成功实现了单片机之间的串行通信。

在调试过程中,遇到以下问题:(1)波特率设置不正确:波特率设置错误会导致数据无法正确接收。

通过查阅相关资料,找到了正确的波特率设置方法。

(2)串行口初始化错误:串行口初始化参数设置错误会导致通信中断。

通过查阅相关资料,找到了正确的初始化方法。

(3)数据接收错误:数据接收过程中,可能出现乱码现象。

通过检查程序代码,发现是数据接收缓冲区溢出导致的。

通过调整接收缓冲区大小,解决了该问题。

五、实验总结通过本次实验,掌握了单片机串行通信的基本原理和编程方法。

单片机串行口实验报告实验总结

单片机串行口实验报告实验总结

单片机串行口实验报告实验总结一、实验目的本实验旨在让学生了解单片机串行口的基本原理和应用,掌握单片机串行口的编程方法,培养学生动手实践和解决问题的能力。

二、实验器材1. STC89C52单片机开发板2. 电脑串口线3. 电脑终端仿真软件Tera Term三、实验原理串行口是单片机与外部设备进行通信的重要接口之一。

串行口通信是指将数据一个位一个地传输,每个数据位之间有一个时钟脉冲来同步传输。

常见的串行通信协议有RS232、RS485、SPI等。

本实验主要涉及到RS232协议。

四、实验内容1. 实现单片机向电脑发送数据并显示。

2. 实现电脑向单片机发送数据并控制LED灯闪烁。

五、实验步骤1. 连接STC89C52单片机开发板和电脑,使用Tera Term打开串口终端。

2. 编写程序,设置单片机的串行口通信参数(波特率、数据位数、停止位数等),并利用SendData函数向电脑发送数据。

3. 在Tera Term中设置相应的串口参数,并打开“local echo”选项,以便观察单片机发送的数据。

4. 编写程序,接收电脑发送的数据,并根据接收到的数据控制LED灯闪烁。

5. 在Tera Term中输入相应的命令,向单片机发送数据,观察LED灯的闪烁情况。

六、实验结果1. 实现了单片机向电脑发送数据并显示。

2. 实现了电脑向单片机发送数据并控制LED灯闪烁。

七、实验总结本实验使我对串行口通信有了更深入的理解,掌握了单片机串行口编程方法。

同时也锻炼了我的动手能力和解决问题的能力。

在实验过程中还需要注意串口参数设置和通信协议选择等问题,加深了我对这些知识点的理解。

微机原理-串行接口实验报告

微机原理-串行接口实验报告

实验报告一.实验任务采用UART IP 核,实现Nexys4 或Nexys4 DDR 实验板UART接口之间的通信。

要求当拨动开关时,将开关对应的值通过UART1发送到UART2,同时利用LED 灯指示UART2接收到的当前开关的值;当按下按键时,将按键对应的值通过UART2发送到UART1,同时利用数码管指示UART1接收到的当前按下的按键位置码(C,U,d,L,r)。

UART 波特率为9600bps。

二.硬件电路框图三.程序源代码#include "xil_io.h"#include "stdio.h"#include "xintc_l.h"#include "xgpio_l.h"#include "xuartlite_l.h"void UART_SR();void BtnHandler();void My_ISR() __attribute__ ((interrupt_handler));int main(){Xil_Out32(XPAR_AXI_GPIO_2_BASEADDR+XGPIO_TRI_OFFSET,0x1f); //设定BUTTON为输入方式Xil_Out16(XPAR_GPIO_0_BASEADDR+XGPIO_TRI2_OFFSET,0x0); //LED灯输出Xil_Out32(XPAR_AXI_GPIO_2_BASEADDR+XGPIO_IER_OFFSET,XGPIO_IR_CH1_MASK); //通道1允许中断Xil_Out32(XPAR_AXI_GPIO_2_BASEADDR+XGPIO_GIE_OFFSET,XGPIO_GIE_GINTR_ENABLE_ MASK); //允许GPIO中断输出Xil_Out32(XPAR_AXI_UARTLITE_3_BASEADDR+XUL_CONTROL_REG_OFFSET,XUL_CR_ENABL E_INTR|XUL_CR_FIFO_RX_RESET|XUL_CR_FIFO_TX_RESET);//使能中断,清除RX,TX寄存器Xil_Out32(XPAR_AXI_INTC_0_BASEADDR+XIN_IER_OFFSET,XPAR_AXI_GPIO_2_IP2INTC_IRPT _MASK|XPAR_AXI_UARTLITE_3_INTERRUPT_MASK);//对中断控制器进行中断源使能Xil_Out32(XPAR_AXI_INTC_0_BASEADDR+XIN_MER_OFFSET,XIN_INT_MASTER_ENABLE_MA SK|XIN_INT_HARDWARE_ENABLE_MASK);microblaze_enable_interrupts();//允许处理器处理中断return 0;}void My_ISR(){int status;status=Xil_In32(XPAR_AXI_INTC_0_BASEADDR+XIN_ISR_OFFSET);//读取ISRxil_printf("0x%x\n",status);if((status&XPAR_AXI_UARTLITE_3_INTERRUPT_MASK)==XPAR_AXI_UARTLITE_3_INTERRUPT _MASK){UART_SR();}elseif((status&XPAR_AXI_GPIO_2_IP2INTC_IRPT_MASK)==XPAR_AXI_GPIO_2_IP2INTC_IRPT_MASK) BtnHandler(); //调用按键中断Xil_Out32(XPAR_AXI_INTC_0_BASEADDR+XIN_IAR_OFFSET,status);//写IAR}void UART_SR(){Xil_Out16(XPAR_GPIO_0_BASEADDR+XGPIO_DATA2_OFFSET,Xil_In32(XPAR_AXI_UARTLITE_3 _BASEADDR+XUL_RX_FIFO_OFFSET));}void BtnHandler(){unsigned short btncode;btncode=Xil_In8(XPAR_AXI_GPIO_2_BASEADDR+XGPIO_DATA_OFFSET)&0x1f;while((Xil_In32(XPAR_AXI_GPIO_2_BASEADDR+XGPIO_DATA_OFFSET)&0x1f)!=0){xil_printf("The pushed button's code is 0x%x\n",btncode);//打印输入的按键序号}switch(btncode){case 0x1:Xil_Out32(XPAR_AXI_UARTLITE_3_BASEADDR+XUL_TX_FIFO_OFFSET,btncode);break;case 0x2:Xil_Out32(XPAR_AXI_UARTLITE_3_BASEADDR+XUL_TX_FIFO_OFFSET,btncode);break;case 0x4:Xil_Out32(XPAR_AXI_UARTLITE_3_BASEADDR+XUL_TX_FIFO_OFFSET,btncode);break;case 0x8:Xil_Out32(XPAR_AXI_UARTLITE_3_BASEADDR+XUL_TX_FIFO_OFFSET,btncode);break;case 0x10:Xil_Out32(XPAR_AXI_UARTLITE_3_BASEADDR+XUL_TX_FIFO_OFFSET,btncode);break;default:break;}Xil_Out32(XPAR_AXI_GPIO_2_BASEADDR+XGPIO_ISR_OFFSET,Xil_In32(XPAR_AXI_GPIO_2_B ASEADDR+XGPIO_ISR_OFFSET)); //清除中断}四.实验结果五.实验心得在这个实验当中,主要是运用UART模块实现Nexys4 DDR 实验板UART接口之间的通信,在实验进程中,硬件平台搭设时,需要增加新的UART IP核作为标准输入输出接口,另外在管脚约束时,需要自己重新定义。

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

电子信息与通信学院实验报告
实验名称:串行IO接口设计
课程名称:微机原理实验
专业班级:电信卓越1201班
姓名:***
学号:U*********
实验成绩:
指导教师:**
2014年12月23日
一.实验目的
1.理解RS232串行通信协议以及接口设计
2.理解SPI串行通信协议
3.掌握RS232串行接口设计
4.掌握SPI串行接口设计
5.掌握串行AD/DA接口设计
二.实验任务
SPI接口DA转换输出锯齿波,频率1kHz以上(降低采样频率),峰峰值约3.3V
要求:全部采用中断方式。

三.实验步骤
1.接口电路如图所示:
DAC121S101中断控制方式接口电路
2.硬件平台建立
1)使用XPS创建一个基于AXI总线的最小计算机系统。

File –> New BSB Project,如图:
2)修改时钟设置:将时钟产生器的时钟输入信号进行修改,修改为单一时钟
源。

修改后的结果如图:
3)添加AXI Interrupt Controller IP核:
a.在IP Catalog标签中,双击下面图标创建INTC IP核:
b.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,
如图:
4)加入AXI SPI接口控制器:
a.如图所示,选择AXI SPI。

b.配置SPI接口参数如图所示。

这是由于该SPI接口仅需要输出数据,
而且一次传输需要16位数据,一个从设备,且D/A转换芯片要求SCLK 最高速率30MHz,由于AXI总线频率为100MHz,一次分频比为4,此时SCLK的频率仅为25MHz。

c.设置端口连接配置,如图:
5)为AXI INTC添加中断源,如图:
6)配置UCF文件:
在UCF文件中修改如图所示配置,此时是通过PMOD JA上排插针进行连接:
7)创建工程过程完成后,
a.在主界面下选择Hardware->Generate Netlist;
b.在主界面下选择Hardware->Generate Bitstream;
c.单击Graphical Design View,可以看到系统的连接图,如下:
3.软件平台建立
a.SDK提供的外设驱动以及应用程序
1.点击project->Expert Hardware Design to SDK…,点击Export&Launch
SDK:
2.在SDK中,点击file->new->board support package,如图:
3.点击file->new->application project,创建一个Empty Applicant工程,
在src中新建一个SPIDIswitch.c文件,如图所示:
b.源代码及注释:
四.实验结果和调试过程
首先,把SPI接口D/A模块跟Nexys4的板子相接;
然后,下载并运行该工程,将示波器的探针连接到J2的1脚,可以看到锯齿波的波形。

实验结果,如图所示:
可以看到,锯齿波的峰峰值3.32V,频率为1.451kHz,符合实验内容的要求。

五.实验心得
通过串行IO接口的实验,我理解了SPI串行通信协议,同时也掌握了SPI 串行接口的设计以及串行AD/DA接口的设计。

不仅如此,通过这次实验,我对中断的理解更加深刻了,对它的操作更加熟练。

这个实验的过程中,令我觉得最困难的不是硬件部分的理解和搭建,而是软件部分代码的理解,由于代码中利用到了中断,所以对中断状态的理解和使用上面遇到了一些问题。

通过与同学交流,和看书上的相关内容,最后我也把代码理解了,这样就很好地把整个实验的过程都理解了。

总的来说,本次实验做得还比较轻松,原理方面容易掌握,操作方面也容易实验。

希望综合项目的实验也一样顺利。

相关文档
最新文档