实验3:微机系统串行口的测试
- 格式:doc
- 大小:164.50 KB
- 文档页数:7
(一)8251 串行接口应用实验一、实验目的1、掌握8251的工作方式。
2、学习串行通讯的有关知识。
二、实验设备1、TDN86/88教学实验系统一台。
2、示波器一台。
3、一组排线。
三、实验内容及步骤1、系统中的8251芯片系统装有一片8251芯片,并和标准RS-232C接口连接好,如下图所示。
该电路用来完成同PC微机的联机以及串行监控操作的实现,其端口地址为:数据口:C0H 控制口:C1H2、实验单元中的8251这片8251芯片用于各种串行口实验,连线见下图,其端口地址为:数据口:80H 控制口:81H3、8251串行接口应用实验本实验中,串行传输的数据格式规定如下:(1)一位逻辑‘0’的起始位,8位数据位(由低位开始传输),1位逻辑‘1’停止位。
(2)传输波特率9600baut。
数据信号的串行输出送示波器,可观察数据波形。
与示波器连线如下:8251 示波器TxD _____________ +GND_____________ -4、实验程序,见13-1.ASMCODE SEGMENTASSUME CS:CODESTART: CALL INIT ;初始化8253和8251A1: CALL SEND ;向串口送55HA2: MOV CX,0200H ;定时时间到,再发送下一个数据LOOP A2JMP A1 ;重复送数INIT: MOV AL,76H ;8253的计数器1工作在方式3,送出方波信号,作为8251收发时钟OUT 43H,ALMOV AL,0CH ;方波频率为153.6KHzOUT 41H,ALMOV AL,00HOUT 41H,ALCALL RESET ;复位8251,即向控制口送3个0,一个40HCALL DELAY ;8251工作速度慢,每送一个控制字,等待一会儿MOV AL,7EH ;置异步方式:1个停止位,偶校验,字符长为8位,波特率因子为16OUT 81H,AL ;控制口CALL DELAYMOV AL,31H ;RTS输出0,使CTS输入0OUT 81H,AL ;清除错误标志,并使TxEN置1,允许发送CALL DELAYRETRESET: MOV AL,00H ;复位8251OUT 81H,ALCALL DELAYOUT 80H,ALCALL DELAYOUT 80H,ALCALL DELAYMOV AL,40HOUT 81H,ALRETDELAY: PUSH CX ;延时子程序MOV CX,6000HA3: LOOP A3POP CXRETSEND: PUSH AX ;发送55HMOV AL,31HOUT 81H,ALPOP AXMOV AL,55HOUT 80H,ALRETCODE ENDSEND START5、实验步骤(1)将示波器与8251的TxD、GND排针引脚相连接。
课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二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. 通过实验,加深对单片机串行口工作原理和程序设计的理解。
二、实验原理串行通讯是指将数据一位一位地按顺序传送的通信方式。
与并行通讯相比,串行通讯的通信线路简单,成本低,适用于远距离通信。
串行通讯主要有两种通信方式:异步通信和同步通信。
1. 异步通信异步通信中,每个字符之间没有固定的时钟同步,而是通过起始位和停止位来标识字符的开始和结束。
每个字符由起始位、数据位、奇偶校验位和停止位组成。
2. 同步通信同步通信中,数据传输过程中有固定的时钟同步信号,发送方和接收方通过同步时钟来保证数据传输的准确性。
三、实验设备1. 单片机最小系统教学实验模块2. 数码管显示模块3. 串行数据线4. 电脑四、实验内容1. 单片机串行口初始化首先,我们需要对单片机串行口进行初始化,包括设置波特率、通信方式、数据位、停止位等。
2. 数据发送在单片机程序中,编写数据发送函数,将数据通过串行口发送出去。
3. 数据接收编写数据接收函数,从串行口接收数据。
4. 数据显示将接收到的数据通过数码管显示出来。
5. 双机通信通过两套单片机实验模块,实现双机通信。
一台单片机作为发送方,另一台单片机作为接收方。
五、实验步骤1. 将单片机最小系统教学实验模块和数码管显示模块连接到电脑上。
2. 编写单片机程序,初始化串行口,并设置波特率、通信方式、数据位、停止位等。
3. 编写数据发送函数,将数据通过串行口发送出去。
4. 编写数据接收函数,从串行口接收数据。
5. 编写数据显示函数,将接收到的数据通过数码管显示出来。
6. 编写双机通信程序,实现两台单片机之间的通信。
7. 将程序下载到单片机中,进行实验。
六、实验结果与分析1. 通过实验,成功实现了单片机串行口的初始化、数据发送、数据接收和数据显示。
2. 成功实现了双机通信,两台单片机之间可以相互发送和接收数据。
串行口实验报告
《串行口实验报告》
实验目的:通过串行口实验,探索数据传输的可靠性和稳定性。
实验材料:计算机、串行口数据线、串行口设备。
实验步骤:
1. 连接串行口数据线:首先,将串行口数据线插入计算机的串行口接口,并将另一端连接到串行口设备上。
2. 设置串行口参数:在计算机上打开串行口设置界面,设置波特率、数据位、校验位和停止位等参数,确保与串行口设备相匹配。
3. 发送数据:通过计算机上的串行口通讯软件,向串行口设备发送数据,观察数据传输的稳定性和可靠性。
4. 接收数据:同样通过串行口通讯软件,接收串行口设备发送的数据,检验数据接收的准确性和完整性。
实验结果:
经过一系列的实验操作,我们发现串行口数据传输的稳定性和可靠性较高。
在设置合适的参数后,数据传输过程中几乎没有出现丢失或错误的情况。
同时,数据的传输速度也较为稳定,符合预期的要求。
实验结论:
通过本次串行口实验,我们验证了串行口数据传输的可靠性和稳定性。
在实际应用中,可以通过合理设置串行口参数,确保数据的准确传输。
串行口技术在工业控制、通讯设备等领域有着广泛的应用前景,为数据传输提供了一种可靠的解决方案。
《微机原理与接口技术》课程实验指导书实验内容EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求✧实验一实验系统及仪器仪表使用与汇编环境✧实验二简单程序设计实验✧实验三存储器读/写实验✧实验四简单I/0口扩展实验✧实验五8259A中断控制器实验✧实验六8253定时器/计数器实验✧实验七8255并行口实验✧实验八DMA实验✧实验九8250串口实验✧实验十A/D实验✧实验十一D/A实验✧实验十二8279显示器接口实验EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求EL-8086-III微机原理与接口技术教学实验系统是为微机原理与接口技术课程的教学实验而研制的,涵盖了目前流行教材的主要内容,该系统采用开放接口,并配有丰富的软硬件资源,可以形象生动地向学生展示8086及其相关接口的工作原理,其应用领域重点面向教学培训,同时也可作为8086的开发系统使用。
可供大学本科学习《微机原理与接口技术(8086)》,《单片机应用技术》等课程提供基本的实验条件,同时也可供计算机其它课程的教学和培训使用。
为配合使用EL型微机教学实验系统而开发的8086调试软件,可以在WINDOWS 2000/XP等多种操作系统下运行。
在使用本软件系统调试程序时,可以同时打开寄存器窗口、内存窗口、反汇编窗口、波形显示窗口等等,极大地方便了用户的程序调试。
该软件集源程序编辑、编译、链接、调试与一体,每项功能均为汉字下拉菜单,简明易学。
经常使用的功能均备有热键,这样可以提高程序的调试效率。
一、基本特点EL型微机教学实验系统是北京精仪达盛科技有限公司根据广大学者和许多高等院校实验需求,结合电子发展情况而研制的具有开发、应用、实验相结合的高科技实验设备。
旨在尽快提高我国电子科技发展水平,提高实验者的动手能力、分析解决问题能力。
系统具有以下特点:1、系统采用了模块化设计,实验系统功能齐全,涵盖了微机教学实验课程的大部分内容。
微机串口通信功能综合检测一、设计内容设计PC机主串口、辅串口通用的自动测试程序。
二、设计目的学习串口的参数设置和编程。
三、设计要求编程实现8250的初始化、监控口的工作状态并实现以下功能:1)通过人机会话由测试者选择测试内容:主串口内环测试、主串口外环测试、辅串口内环测试及辅串口外环测试。
为了简化程序,人机会话分两次进行。
第一次屏显:⑴TEST COM 1 ⑵TEST COM 2 ⑶TEST END第二次屏显:⑴INTERNAL LOOP ⑵EXTERNAL LOOP2)用查询方式编程,对端口直接操作,将测试电文“THE QUICK BROWN FOR JUMPS OVER LAZY DOG”发10遍给选中的串口,在经过内环或者外环短路线接收,显示在屏幕上。
如果串口有故障应屏幕“COM BAD!”。
四、设计思路1.编写程序本设计的电路与前一个设计没有太大区别,只是在前一个设计的基础上将单个串口的内环自测扩展为多种单机串口的检测方法。
测试的内容包括两个串口内环自测,串口间的外环检测以及和终端通信的检测。
其中8250初始化参数的设置不同对程序产生较大影响。
为使程序通用,在编程时,首先进入人机会话界面,根据用户的选择决定进行何种测试。
按照用户的选择,对串口初始化。
对串口初始化后,字符被送入串口,计数器开始计数。
根据计数器计数值判断一帧数据是否发送完毕,若是,则在屏幕上显示,否则继续发送数据。
2.硬件端口连接在硬件接线方面,对不同的测试方法,串口测试环的接线方法也不一样。
具体接线方法可参照图。
3.程序参考流图微机串口通信参考流程图4可编程并行接口芯片8255A4.1可编程接口的概念8255A是常用的可编程接口芯片,可编程接口芯片即指电路的工作状态可由计算机指令编程控制的芯片。
目前所用的接口芯片大部分是多通道、多功能的。
多通道即指一个接口芯片一面与CPU连接,另一面可接几个外设。
多功能即指一个接口芯片能实现多种接口功能。
最新微机接口实验报告实验目的:1. 熟悉微机接口的基本原理和功能。
2. 掌握微机接口的编程和操作技巧。
3. 通过实验加深对微机接口技术的理解。
实验环境:- 微机接口实验箱- 个人电脑- 相关软件和驱动程序实验内容:1. 实验一:了解微机接口的基本结构和工作原理。
- 学习微机接口的基本概念,包括数据总线、地址总线、控制总线等。
- 观察实验箱中的微机接口模块,识别各部分的功能。
2. 实验二:编写简单的输入输出程序。
- 使用汇编语言或C语言编写程序,实现对微机接口的控制。
- 通过程序实现LED灯的点亮和熄灭,以及按键的读取。
3. 实验三:中断和DMA操作。
- 学习中断的基本概念和处理流程。
- 实现一个基于中断的键盘输入程序。
- 了解DMA的工作原理,并编写相应的数据传输程序。
实验步骤:1. 准备实验环境,确保所有设备和软件均已正确安装和配置。
2. 按照实验指导书的要求,逐步完成各个实验项目。
3. 在实验过程中记录关键步骤和结果,以便撰写实验报告。
4. 对遇到的问题进行分析和解决,记录解决方案。
实验结果:1. 成功理解微机接口的基本结构和功能。
2. 编写的输入输出程序能够正确控制LED灯和读取按键状态。
3. 中断和DMA操作实验顺利完成,实现了预期的功能。
实验结论:通过本次实验,加深了对微机接口技术的理解,掌握了基本的编程和操作技能。
实验中遇到的问题和挑战也有助于提高解决问题的能力。
通过实践,更加明确了理论知识与实际应用之间的联系。
建议和反思:- 在实验过程中,应更加注重对理论知识的应用,以提高实验效率。
- 对于复杂的问题,应采取分步解决的策略,避免在实验中出现混乱。
- 未来应加强实验前的准备工作,确保实验能够顺利进行。
串口实验报告串口实验报告一、引言串口是一种常见的通信接口,广泛应用于计算机、嵌入式系统和电子设备中。
本次实验旨在通过实际操作串口通信,掌握串口通信的原理和基本操作。
二、实验目的1. 了解串口通信的基本原理;2. 掌握串口通信的设置和配置方法;3. 实现串口通信的数据传输。
三、实验仪器和材料1. 电脑一台;2. 串口线一根;3. 串口调试助手软件。
四、实验步骤1. 连接串口线:将串口线的一端连接到电脑的串口接口,另一端连接到需要进行通信的设备;2. 打开串口调试助手软件:在电脑上打开串口调试助手软件,并选择正确的串口号和波特率;3. 配置串口参数:根据实际需要,设置数据位、停止位、校验位等串口参数;4. 发送数据:在串口调试助手软件的发送窗口中输入需要发送的数据,并点击发送按钮;5. 接收数据:在串口调试助手软件的接收窗口中查看接收到的数据;6. 关闭串口:实验完成后,关闭串口调试助手软件,并断开串口线的连接。
五、实验结果与分析通过实验操作,我们成功地进行了串口通信,并实现了数据的发送和接收。
在发送数据时,我们可以通过串口调试助手软件输入需要发送的数据,并通过点击发送按钮将数据发送出去。
在接收数据时,我们可以在串口调试助手软件的接收窗口中即时查看到接收到的数据。
六、实验总结通过本次实验,我们深入了解了串口通信的原理和基本操作。
串口通信作为一种常见的通信方式,具有稳定、可靠的特点,广泛应用于各个领域。
掌握串口通信的设置和配置方法,对于进行设备之间的数据传输和通信具有重要意义。
在实验过程中,我们还发现了一些问题。
首先,正确选择串口号和波特率非常重要,否则无法正常进行通信。
其次,串口参数的设置也需要根据实际需求进行调整,不同设备可能需要不同的参数配置。
最后,及时关闭串口和断开连接是保证实验安全的重要步骤,避免设备损坏或数据丢失。
综上所述,本次实验使我们对串口通信有了更深入的了解,并掌握了串口通信的基本操作方法。
微机原理与接口技术实验报告实验一,微机原理实验。
1. 实验目的。
本实验旨在通过对微机原理的实验,加深学生对微机原理相关知识的理解,提高学生的动手能力和实验技能。
2. 实验内容。
本实验主要包括微机原理的基本知识、微处理器的结构和功能、微机系统的总线结构、存储器与I/O接口。
3. 实验步骤。
(1)了解微机原理的基本知识,包括微处理器的分类、功能和工作原理。
(2)学习微机系统的总线结构,掌握总线的分类、功能和工作原理。
(3)了解存储器与I/O接口的基本概念和工作原理。
(4)进行实际操作,通过实验板进行微机原理实验,加深对微机原理知识的理解。
4. 实验结果。
通过本次实验,我深刻理解了微机原理的基本知识,掌握了微处理器的结构和功能,了解了微机系统的总线结构,以及存储器与I/O接口的工作原理。
通过实际操作,我对微机原理有了更深入的认识,提高了自己的动手能力和实验技能。
实验二,接口技术实验。
1. 实验目的。
本实验旨在通过对接口技术的实验,加深学生对接口技术相关知识的理解,提高学生的动手能力和实验技能。
2. 实验内容。
本实验主要包括接口技术的基本知识、接口电路的设计与调试、接口技术在实际应用中的作用。
3. 实验步骤。
(1)了解接口技术的基本知识,包括接口的分类、功能和设计原则。
(2)学习接口电路的设计与调试,掌握接口电路设计的基本方法和调试技巧。
(3)了解接口技术在实际应用中的作用,包括各种接口的应用场景和实际案例。
(4)进行实际操作,通过实验板进行接口技术实验,加深对接口技术知识的理解。
4. 实验结果。
通过本次实验,我深刻理解了接口技术的基本知识,掌握了接口电路的设计与调试方法,了解了接口技术在实际应用中的作用。
通过实际操作,我对接口技术有了更深入的认识,提高了自己的动手能力和实验技能。
总结。
通过微机原理与接口技术的实验,我对微机原理和接口技术有了更深入的理解,提高了自己的动手能力和实验技能。
希望通过今后的学习和实践,能够更加深入地掌握微机原理与接口技术的知识,为将来的工作和研究打下坚实的基础。
课程 _ __ __ 第 1 页共页系别_计算机科学与技术系____________ __ 实验日期年月日专业班级计算机科学与技术班_组别_________ 实验报告日期年月日姓名___ ___学号报告退发 ( 订正、重做 ) 同组人_____ ________ _____ 教师审批签字串行接口实验一、实验目的:⑴掌握16550的工作方式及应用。
⑵学习有关串行通讯的知识。
⑶学习PC机串口的操作方法。
二、实验设备:PC机一台、TD-PIT/TD-PIT-B实验装置两套,示波器一台。
三、实验内容1、串行通讯基础实验。
编写程序,向串口连续发送一个数据(55H),将串口输出连接到示波器上,用示波器观察数据输出产生的波形。
2、串口自发自收应用实验。
编写程序,将一串数据发至串口,再接收回来显示。
四、实验说明及步骤1. 串行通讯基础实验对16550进行编程,不断向发送寄存器送数,用示波器观察TXD信号脉冲变化,仔细分析波形,理解波形原理。
串行传输的数据格式可设定如下:传输波特率为9600Baud,每个字节有一个逻辑“0”的起始位,8位数据位,1位逻辑1的停止位。
16550串行通讯基础实验参考接线图如图所示。
具体实验步骤如下所述:(1)编写实验程序,连续向发送寄存器写55H。
(2)设计实验线路图,并将PCI总线扩展卡上的ADD-ON总线与仿真ISA总线进行连接,完成线路连接,并将TXD与实验装置GND同示波器相连接。
(3)打开实验箱电源,运行程序,在示波器上观察波形。
(4)可以先改变发送的数据,再仔细观察波形。
2、串口自发自收应用实验实验要求将16550 RXD与TXD连接起来,实现一个自发自收的功能。
编写一个程序向串口写数,再将收到到的数据显示在屏幕上。
16550串口自发自收应用实验参考接线图如下:具体实验步骤如下所示:(1)编写实验程序,连续向发送寄存器写A到Z,并完成接收和显示。
(2)设计实验线路图,并将PCI总线扩展卡上的ADD-ON总线与防真ISA总线进行连接,完成线路连接。
实验三串口调试直接返回数据一、实验目的:1、了解单片机串行口的结构、使用方法,学习串行口应用程序的编写方法。
2、熟悉单片机串行口接收和发送数据的实现方法。
3、熟悉单片机串行通信的格式规定。
4、掌握μVision环境中调试串行口应用程序的方法。
二、实验设备:51/AVR实验板、USB连接线、电脑软件:Keil μVision、串口调试助手v2.2、STC-ISP-V480三、实验原理:通信是人们传递信息的方式。
计算机通信是将计算机技术和通信技术相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。
这种信息交换可以分为两大类:并行通信与串行通信。
并行通信通常是将数据字节的各位用多条数据线同时进行传送,如图所示:由图可见,并行通信除了数据线外还有通信联络控制线。
数据发送方在发送数据前,要询问数据接收方是否“准备就绪”。
数据接收方收到数据后,要向数据发送方回送数据已经接收到的“应答”信号。
并行通信的特点是:控制简单,传输速度快。
由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,串行通信时,数据发送设备先将数据代码由并行形式转换成串行形式,然后一位一位地放在传输线上进行传送。
数据接收设备将接收到的串行形式数据转换成并行形式进行存储或处理。
串行通信的特点是:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备。
但数据的传送控制比并行通信复杂。
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。
为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
为了实现异步传输字符的同步,采用的办法是使传送的每一个字符都以起始位“0”开始,以停止位“1”结束。
这样,传送的每一个字符都用起始位来进行收发双方的同步。
停止位和间隙作为时钟频率偏差的缓冲,即使双方时钟频率略有偏差,总的数据流也不会因偏差的积累而导致数据错位。
单片机原理及应用随堂实验报告学院计算机与电子信息学院专业电子信息工程班级电信11 -1班姓名温石坚学号 11034030132 指导教师左敬龙实验报告评分:_______一、实验原理及电路当按下8个按键中的一个按键时,与被按下的按键相连接的那个灯会亮。
同时,甲机中的程序会逐个检查是哪个按键被按下。
当检查出哪个按键被按下时,甲机就会执行这个按键被按下时应该执行的程序。
(按键的处理程序是:void kx(){SBUF=tab[x];while(TI= =0);TI=0;}x号的按键被按下,会将tab[ ]数组中的x号元素送到SBUF中)做完以上步骤后,乙机将会接收到从甲机中接收到信号,并将SBUF中的数据送到乙机中的一个数组中,同时将数据送到led数码管中,显示出x。
实验电路图如下(此时第五个按键被按下):二、功能说明此次实验我做的电路实现的是用led数码管显示出一个数字,表示第几个按键被按下了。
按键被按下的同时,与被按下的按键相连接的那个灯会亮。
在这里,用了两个AT89c51单片机,实现了单片机与单片机之间的通讯。
当有按键被按下时,甲机会扫描出哪个按键被按下,然后会将信号传输给乙机,乙机得到从甲机来的信号后,后作出相应的反应,将相应的数据送到led数码管中。
三、实验框图甲机乙机四、实验代码甲机#include<reg51.h>#define uchar unsigned charunsigned char tab[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};void delay( ){unsigned char n,j; for(j=0;j<200;j++); for(n=0;n<200;n++); }void k0( ){SBUF=tab[0]; while(TI==0);TI=0;}void k1( ){SBUF=tab[1]; while(TI==0);TI=0;}void k2( ){SBUF=tab[2]; while(TI==0);TI=0;}void k3( ){SBUF=tab[3]; while(TI==0);TI=0;}void k4( ){SBUF=tab[4]; while(TI==0);TI=0;}void k5(){SBUF=tab[5]; while(TI==0);TI=0;}void k6( ){SBUF=tab[6]; while(TI==0);}void k7( ){SBUF=tab[7];while(TI==0);TI=0;delay( );delay( );delay( );delay( );delay( );delay( );delay( );}void main(){TMOD=0x20;TL1=0xe8;TH1=0xe8; PCON=0x00;SCON=0x40;TR1=1;{unsigned char key;P1=0xff;while(1){key=P1;if(P1!=0xff){delay( );key=P1;}else continue;while(P1!=0xff); switch(key){case 0xfe:k0( );break;case 0xfd:k1( );break;case 0xfb:k2( );break;case 0xf7:break;case 0xef:k4( );break;case 0xdf:k5( );break;case 0xbf:k6( );break;case 0x7f:k7( );break;default:continue;}}}}乙机#include<reg51.h>#define uchar unsigned charuchar i=8,j;unsigned char temp[8];void main( ){TMOD=0x20;TL1=0xe8;TH1=0xe8;PCON=0x00;SCON=0x50;TR1=1;for(i=0;i<8;i++){while(RI==0);RI=0;temp[i]=SBUF;P2=temp[i];}}五、实验过程这个实验做得比较纠结,在完成这个实验之前,自己用了很多方案,可是很多都行不通,搞得自己很纠结。
实验六串行口通信实验一、实验内容实验板上有RS-232接口,将该接口与PC机的串口连接,可以实现单片机与PC机的串行通信,进行双向数据传输。
本实验要求当PC机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC机上显示,并用串口助手工具软件进行调试。
二、实验目的掌握单片机串行口工作原理,单片机串行口与PC机的通信工作原理及编程方法。
三、实验原理51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。
进行串行通讯信要满足一定的条件,比如电脑的串口是RS232电平(-5~-15V为1,+5~+15V为0),而单片机的串口是TTL电平(大于+2.4V为1,小于- 0.7V为0),两者之间必须有一个电平转换电路实现RS232电平与TTL电平的相互转换。
为了能够在PC机上看到单片机发出的数据,我们必须借助一个Windows软件进行观察,这里我们可以使用免费的串口调试程序SSCOM32或Windows的超级终端。
单片机串行接口有两个控制寄存器:SCON和PCON。
串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。
在这种方式下,数据为8位,只能从RXD端输入输出,TXD端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12。
由软件置位串行控制寄存器(SCON)的REN位后才能启动,串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将SCON寄存器的T1位置1,必须由软件清零。
单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和远近通信接口的不同处理技术。
在DOS操作环境下,要实现单片机与微机的通信,只要直接对微机接口的通信芯片8250进行口地址操作即可。
WINDOWS的环境下,由于系统硬件的无关性,不再允许用户直接操作串口地址。
如果用户要进行串行通信,可以调用WINDOWS的API 应用程序接口函数,但其使用较为复杂,可以使用KEILC的通信控件解决这一问题。
实验报告一.实验任务采用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. 了解串行通信的基本原理和常用接口。
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. 仔细阅读相关资料,正确设置串口参数。
一、实验目的1. 理解串行通信的基本原理和常用方式。
2. 掌握串行通信接口的硬件连接和软件编程。
3. 实现两个设备之间的串行通信,验证通信的可靠性。
二、实验原理串行通信是指数据在一条线上按位顺序传输,每传输一位数据后,再传输下一位数据。
与并行通信相比,串行通信具有传输距离远、抗干扰能力强、成本较低等优点。
常用的串行通信方式有RS-232、RS-485等。
三、实验设备1. 电脑一台2. 串口通信模块(如:USB转串口模块)3. 串行通信线(如:串行线、USB线)4. 实验板(如:Arduino板)5. 相关软件(如:串口调试助手)四、实验步骤1. 硬件连接(1)将USB转串口模块连接到电脑,确保模块上的指示灯亮起,表示已正常连接。
(2)将串行通信线的一端连接到USB转串口模块的TXD、RXD、GND引脚,另一端连接到实验板的RXD、TXD、GND引脚。
2. 软件设置(1)打开串口调试助手,设置串行通信参数:- 波特率:9600- 数据位:8- 停止位:1- 校验位:无(2)将实验板上的串行通信模块(如Arduino板)连接到电脑,打开实验板上的电源。
3. 编写程序(1)编写实验板的程序,实现数据的发送和接收。
以下为Arduino板示例程序:```cpp#include <SoftwareSerial.h>SoftwareSerial mySerial(10, 11); // RX, TXvoid setup() {Serial.begin(9600);mySerial.begin(9600);}void loop() {if (mySerial.available()) {char received = mySerial.read();Serial.print("Received: ");Serial.println(received);}if (Serial.available()) {char sent = Serial.read();mySerial.print("Sent: ");mySerial.println(sent);}}```(2)将程序上传到实验板。