串行接口实验报告

串行接口实验报告
串行接口实验报告

课程实验报告实验名称:串行接口

专业班级:

学号:

姓名:

同组人员:

指导教师:

报告日期:

实验二

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=52

7.程序流程框图

4.程序代码

Fxc.asm

;************************;

;*8251串行通讯(自发自收)*;

;************************;

data segment

io8253a 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,24h

mes2 dd mes1

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov dx,io8253b ;设置8253计数器0工作方式

mov al,16h ;控制字为00010110B

out dx,al

mov dx,io8253a

mov al,52 ;给8253计数器0送初值

out dx,al

mov dx,io8251b ;初始化8251

;xor al,al

;mov cx,03 ;向8251控制端口送3个0

;delay: call out1

;loop delay

mov al,40h ;向8251控制端口送40H,使其复位

call out1

mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1

mov al,27h ;向8251送控制字允许其发送和接收

call out1

lds dx,mes2 ;显示提示信息

mov ah,09

int 21h

waiti: mov dx,io8251b

in al,dx

test al,01 ;发送是否准备好

jz next

mov ah,0bh

int 21h

test al,0ffh ;检测是否有键盘输入

jz next

mov dl,0ffh ;有键盘输入,读入字符

mov ah,06h

int 21h

cmp al,27 ;若为ESC,结束

jz exit

mov dx,io8251a

;inc al

out dx,al ;发送

; mov cx,40h

;s51: loop s51 ;延时

next: mov dx,io8251b

in al,dx

test al,02 ;检查接收是否准备好

jz waiti ;没有,等待

mov dx,io8251a

in al,dx ;准备好,接收

mov dl,al

mov ah,02 ;将接收到的字符显示在屏幕上

int 21h

jmp waiti

exit: mov ah,4ch ;退出

int 21h

out1 proc near ;向外发送一字节的子程序

out dx,al

;push cx

;mov cx,40h

;gg: loop gg ;延时

; pop cx

ret

out1 endp

code ends

end start

Send .asm

;************************;

;*8251串行通讯(自发自收)*;

;************************;

data segment

io8253a equ 280h ;8253计数0端口地址

io8253b equ 283h ;8253控制端口地址

io8251a equ 2b8h ;8251数据端口地址

io8251b equ 2b9h ;8251控制端口地址

buf3 byte 0

mes1 db 'you can play a key on the keybord!',0dh,0ah,24h

mes2 dd mes1

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov dx,io8253b ;设置8253计数器0工作方式

mov al,16h ;控制字为00010110B

out dx,al

mov dx,io8253a

mov al,52 ;给8253计数器0送初值

out dx,al

mov dx,io8251b ;初始化8251

mov dx,28bh ;8255控制口初始化

mov al,81h ;1000,0001

out dx,al

;xor al,al

;mov cx,03 ;向8251控制端口送3个0

;delay: call out1

;loop delay

mov al,40h ;向8251控制端口送40H,使其复位

call out1

mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1

mov al,27h ;向8251送控制字允许其发送和接收

call out1

lds dx,mes2 ;显示提示信息

mov ah,09

int 21h

waiti: mov dx,io8251b

in al,dx

test al,01 ;发送是否准备好

jz next

mov ah,0bh

int 21h

test al,0ffh ;检测是否有键盘输入

jz next

; mov dl,0ffh ;有键盘输入,读入字符

;mov ah,06h

; int 21h

mov dx,28ah

in al,dx

cmp al,27 ;若为ESC,结束

jz exit

mov dx,io8251a

;inc al

out dx,al ;发送

; mov cx,40h

;s51: loop s51 ;延时

next: mov dx,io8251b

in al,dx

test al,02 ;检查接收是否准备好

jz waiti ;没有,等待

mov dx,io8251a

in al,dx ;准备好,接收

mov dl,al

mov ah,02 ;将接收到的字符显示在屏幕上

int 21h

jmp waiti

exit: mov ah,4ch ;退出

int 21h

out1 proc near ;向外发送一字节的子程序

out dx,al

;push cx

;mov cx,40h

;gg: loop gg ;延时

; pop cx

ret

out1 endp

code ends

end start

步进电机:

1.K0=0,逆时针转;K0=1,顺时针转

2.K1=0,慢转;K1=1,快转

data segment

buf1 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 ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov buf2,00110011b ;步进电机数据

mov dx,28bh ;8255控制口初始化

mov al,81h ;1000,0001

out dx,al

;-----------------------------逆转控制----------------

R0: mov dx,28ah ;读C口

in al,dx

mov buf3,al ;保存C口数据

test al,04 ;

jnz kai ;转反转

test al,01 ;测试K0=1?

jnz L0 ;转反转

mov al,buf4 ;走马灯开始一步顺转

cmp al,9

jnz S1

call change9_0

S1: inc al ;数据加1

mov buf4,al

mov bx,offset buf1

xlat

mov dx,289h ;B口输出

out dx,al ;数据完成加1

mov al,buf2 ;电机开始一步逆转

ror al,1 ;数据左移

mov buf2,al

mov dx,288h ;A口输出

out dx,al ;电机完成一步逆转

mov al,buf3 ;回复C口数据

test al,02

jnz R1 ;转快转

call delay_s ;否则慢转

jmp R0

R1: call delay_q ;快转

jmp R0

;------------------------------顺转控制-----------------

L0: mov al,buf5 ;走马灯开始一步顺转

cmp al,0

jnz S2

T2: test al,03 ;测试K2=1?

jnz T2

call change0_9

S2: dec al ;数据减1

mov buf5,al ;

mov bx,offset buf1

xlat

mov dx,289h ;B口输出

out dx,al ;走马灯结束一步顺转

mov al,buf2 ;电机开始一步顺转

rol al,1 ;数据右移

mov buf2,al

mov dx,288h ;A口输出

out dx,al ;电机结束一步顺转

mov al,buf3 ;回复C口数据

test al,02

jnz L1 ;转快转

call delay_s ;否则慢转

jmp R0

T3: test al,03 ;测试K2=1?

jnz T3

L1: call delay_q ;快转

jmp R0

kai: mov dx,28ah ;读C口

in al,dx

mov buf3,al ;保存C口数据

test al,04 ;

jz L0 ;转反转

jmp kai

exit: mov ah,4ch

int 21h

delay_s proc near ;长延时

mov bx,20h

lp1: mov cx,0ffffh

lp2: loop lp2

dec bx

jnz lp1

ret

delay_s endp

delay_q proc near ;短延时

mov bx,1

lp11: mov cx,0ffffh

lp22: loop lp22

dec bx

jnz lp11

ret

delay_q endp

change9_0 proc near

mov buf4,-1

mov al,buf4

ret

change9_0 endp

change0_9 proc near

mov buf5,10

mov al,buf5

ret

change0_9 endp

code ends

end start

5.实验体会

这次实验需要用到两种芯片8253和8251,两种芯片的作用分别是8253提供串行通讯所需的特定频率的脉冲信号,8251提供输入输出控制,所以在实验的过程中需要熟悉这两种芯片的方式字等使用规范,在仔细阅读了书本以及书本的编程实例后,基本摘掉了程序的设计方法

实验过程中,出现了程序编译通过了但是不能运行的情况,后来经过检查发现是程序没有设置好的原因,要设置为编译后运行状态,否知只编译不运行,经过这次实验,知道了8253和8251两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。

微机实验_可编程串行通信(8250)

学生实验报告

3FFH ×不用1.传输线路控制寄存器LCR(3FBH)如图10-1所示。 图10-1 2.除数寄存器DLL、DLH(3F8H,3F9H) 常用波特率及除数对照表如表10-2所示。 表10-2 除数寄存器 波特率(BIT/S) 高字节低字节 04H 17H 110 03H 00H 150 01H 80H 300 00H C0H 600 00H 60H 1200 00H 30H 2400 00H 18H 4800 00H 0CH 9600 3.中断允许寄存器IER(3F9H)如图10-2所示。 图10-2 4.MODEM控制寄存器MCR(3FCH)如图10-3所示。

图10-3 5.9针串口插座(DB-9)外形如图10-4所示,引脚说明如表10-3所示。 图10-4 表10-3 RS-232C信号说 9芯引脚号引脚名称 明 1 空 2 RXD 接收数据 3 TXD 发送数据 4 DTR 数据终端就绪 5 GND 信号地 6 DSR 数据装置就绪 7 RTS 发送请求 8 CTS 发送允许 9 保护地6.编程提示 (1)程序流程图如图10-5所示。

图10-5 程序流程图 四、实验参考程序 STACK SEGMENT PARA STACK 'STACK' DB 256 DUP(?) STACK ENDS CODE SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CODE START PROC FAR PUSH DS ;保存PSP 地址 XOR AX,AX PUSH AX ;初始化8250为7位数据位,1位停止位,奇校 ;验,波特率1200,并设定为内部连接方式MOV DX,3FBH MOV AL,80H OUT DX,AL ;设传输线控制寄存器D7为1 MOV DX,3F8H ;设波特率为1200 MOV AL,60H OUT DX,AL MOV DX,3F9H MOV AL,0 OUT DX,AL MOV DX,3FBH ;设奇校验,1位停止位,7位数据位 MOV AL,0AH OUT DX,AL MOV DX,3FCH ;设MODEM控制寄存器发DTR和RTS信号,

RS232串口通信实验报告

RS232串口通信实验报告 学院:电子信息学院 班级:08031102 姓名:张泽宇康启萌余建军 学号:2011301966 2011301950 2011301961 时间:2014年11月13日 学校:西北工业大学

一.实验题目: 设计一个简单的基于串口通信的信息发送和接受界面 二.实验目的: 1.熟悉并掌握RS232串口标准及原理。 2.实现PC机通过RS232串口进行数据的收发。 3.熟悉VC语言编写程序的环境,掌握基本的VC语言编程技巧。 三.实验内容 程序代码: P// PC1PC2Dlg.cpp : implementation file // #include "stdafx.h" #include "PC1PC2.h" #include "PC1PC2Dlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL

串行接口实验报告

课程实验报告实验名称:串行接口 专业班级: 学号: 姓名: 同组人员: 指导教师: 报告日期:

实验二 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=52

8086接口实验

接口实验部分 实验1 简单I/O口扩展实验 一、实验目的 1、熟悉74LS273,74LS244的应用接口方法。 2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。 二、实验设备 CPU挂箱、8086CPU模块。 三、实验内容 逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。 四、实验原理介绍 本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。 五、实验步骤 1、实验接线:(?表示相互连接) CS0 ?CS244; CS1?CS273;平推开关的输出K1~K8 ? IN0~IN7(对应连接); O0~O7?LED1~LED8。 2、编辑程序,单步运行,调试程序 3、调试通过后,全速运行程序,观看实验结果。 4、编写实验报告。 六、实验提示 74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。 七、实验结果 程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如: K2置于L位置,则对应的LED2应该点亮。 八、程序框图(实验程序名: T244273.ASM)

九、程序源代码清单 assume cs:code code segment public org 100h start: mov dx,04a0h ;74LS244地址 in al,dx ;读输入开关量 mov dx,04b0h ;74LS273地址 out dx,al ;输出至LED jmp start code ends end start

实验2 存储器读写实验 一、实验目的 1.掌握PC机外存扩展的方法。 2.熟悉6264芯片的接口方法。 3.掌握8086十六位数据存储的方法。 二、实验设备 CPU挂箱、8086CPU模块。 三、实验内容 向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。 四、实验原理介绍 本实验用到存储器电路 五、实验步骤 1、实验接线:本实验无需接线。 2、编写调试程序 3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。 六、实验提示 1、RAM区的地址为02000H,编程时可将地址设为01000H,则偏移地址为1000H。 2、如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。 3、626 4、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用作数据存储器扩展。本实验所进行的内存置数在程序中经常用到。计算机系统运行中会频繁地进行内存与外设或者内存与内存之间的数据传输,所以本实验虽然简单但对理解系统程序的运行很关键,望学习和实验时认真对待。 七、实验结果 在断点1处内存区02000H~020FFH单元为00H;在断点2处偶地址为AAH,奇地址为55H 八、程序框图(实验程序名:RAM.ASM)

8250串口

一、实验目的 1、熟悉串行通信的一般原理和8250的工原理。 2、了解RS--232串行接口标准及连接方法。 3、掌握8250芯片的编程方法。 二、实验内容 在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,如通讯正确则下位机返回一个同样的字符,如果不正确,则无返回或不相同。 三、实验原理介绍 实验原理图见8250串行接口电路。由MAX232完成RS232电平和TTL 电平的转换,由8250完成数据的收发。8250内部有10个寄存器,分别对应着不同的IO口地址。对不同的寄存器进行初始化或读出写入操作就可以完成与计算机的通信。由于不能同时收发数据,所以8250又称为通用串行异步收发器,简写为:UART。8250实验电路的所有信号均已连好。 四、实验步骤 1、实验接线 利用串口电缆连接实验箱的串口和计算机的串口(COM1或COM2) 2、编写程序。 3、在实验箱上运行86编译系统,下载实验程序8250.asm,并全速运行。 4、实验箱退出86编译系统,启动实验六的上位机驱动程序 T6UP.EXE,首先选择串行端口(COM1或COM2),端口与步骤1一致,键入串口号即可,然后从键盘上输入字符,看返回字符是否正确。欲退出T6UP.EXE,按回车键。 五、实验提示 实验中,通讯波特率选用9600bps。上下位机均采用查询方式。8250的端口地址为0480起始的偶地址单元。 实验中,上位机向下位机发送一个字符,下位机将接收到的字符返回。事实上这就实现了串口通信的基本过程。掌握了此实验中的编程方法再编制复杂的串行通信程序也就不难了。 串行通信和并行通信是计算机与外围设备进行信息交换的基本方法,二者有不同的特点。简而言之,前者电路及连线简单,最少用三根线就可以实现串口通信,但通信速率慢,适用于长距离慢速通信;后者电路及连线复杂,成本较高,但通信速率快,适用于短距离高速通信。 六、程序框图8250.ASM

串口通信实验报告全版.doc

实验三双机通信实验 一、实验目的 UART 串行通信接口技术应用 二、实验实现的功能 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 三、系统硬件设计 (1)单片机的最小系统部分 (2)电源部分 (3)人机界面部分

数码管部分按键部分 (4)串口通信部分 四、系统软件设计 #include #define uchar unsigned char #define uint unsigned int void send(); uchar code0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的数码管显示 sbit H1=P3^6; sbit H2=P3^7;

sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; uint m=0,i=0,j; uchar temp,prt; /***y延时函数***/ void delay(uint k) { uint i,j; //定义局部变量ij for(i=0;i

{ m=1; //KEY1键按下 return(m); } if(H2==0) { m=4; //KEY4键按下 return(m); } } } if(L2==0) { delay(5); if (L2==0) { L2=0;H1=1;H2=1; if(H1==0) { m=2; //KEY2键按下 return(m); } if(H2==0) { m=5; //KEY5键按下 return(m); } } } if(L3==0) { delay(5); if (L3==0) { L3=0;H1=1;H2=1; if(H1==0) { m=3; //KEY3键按下

UART串口通信实验报告

实验四 UART 串口通信 学院:研究生院 学号:1400030034 姓名:张秋明 一、 实验目的及要求 设计一个UART 串口通信协议,实现“串 <-->并”转换功能的电路,也就是 “通用异步收发器”。 二、 实验原理 UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实 现全双工传输和接收。在嵌入式设计中,UART 用来主机与辅助设备通信,如汽 车音响与外接AP 之间的通信,与PC 机通信包括与监控调试器和其它器件,如 EEPROM 通信。 UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一 位接一位地传输。 其中各位的意义如下: 起始位:先发出一个逻辑” 0的信号,表示传输字符的开始。 资料位:紧接着起始位之后。资料位的个数可以是 4、5、6、7、8等,构成 一个字符。通常采用ASCII 码。从最低位开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“ 1的位数应为偶数(偶校验)或奇数 (奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是 1位、1.5位、2位的高电 平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能 在通信中两台设备间出现了小小的不同步。 因此停止位不仅仅是表示传输的结束, 并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步 的容忍程度越大,但是数据传输率同时也越慢。 空闲位:处于逻辑“ 1状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol )。 一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为 120 字符/秒,传输使用256阶符号,每个符号代表8bit ,则波特率就是120baud,比 特率是120*8=960bit/s 。这两者的概念很容易搞错。 三、 实现程序 library ieee; use ieee.std 」o gic_1164.all; end uart; architecture behav of uart is en tity uart is port(clk : in std_logic; rst_n: in std 」o gic --系统时钟 --复位信号 rs232_rx: in std 」o gic rs232_tx: out std 」o gic --RS232接收数据信号; --RS232发送数据信号;); use ieee.std_logic_ un sig ned.all;

单片机串口通讯实验报告

实验十单片机串行口与PC机通讯实验报告 ㈠实验目的 1.掌握串行口工作方式的程序设计,掌握单片机通讯的编制; 2.了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议; 3.了解PC机通讯的基本要求。 ㈡实验器材 1.G6W仿真器一台 2.MCS—51实验板一台 3.PC机一台 ㈢实验内容及要求 利用8051单片机串行口,实现与PC机通讯。 本实验实现以下功能,将从实验板键盘上键入的字符或数字显示到PC 机显示器上,再将PC机所接收的字符发送回单片机,并在实验板的LED上显示出来。 ㈣实验步骤 1.编写单片机发送和接收程序,并进行汇编调试。 2.运行PC机通讯软件“commtest.exe”,将单片机和PC机的波特率均设定 为1200。 3.运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符), 检查PC机所接收的字符是否与发送的字符相同。 4.将PC机所接收的字符发送给单片机,与此同时运行单片机接受程序,检 查实验板LED数码管所显示的字符是否与PC机发送的字符相同。

㈤ 实验框图

源程序代码: ORG 0000H AJMP START ORG 0023H AJMP SERVE ORG 0050H START: MOV 41H,#0H ;对几个存放地址进行初始化 MOV 42H,#0H MOV 43H,#0H MOV 44H,#0H MOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示 MOV TMOD,#20H ;设置为定时器0,模式选用2 MOV TL1, #0E6H ;设置1200的波特率 MOV TH1, #0E6H SETB TR1 ;开定时器 MOV SCON,#50H ;选用方式1,允许接收控制 SETB ES SETB EA ;开中断 LOOP: ACALL SOUT ;键盘扫描并发送,等待中断 SJMP LOOP SERVE JNB RI,SEND ;判断是发送中断还是接收中断,若为发送中 断则调用 ACALL S IN ;发送子程序,否则调用接收子程序 RETI SEND: CLR TI ;发送子程序 RETI SIN: CLR RI ;接受子程序 MOV SCON, #00H MOV A, SBUF ;接收数据 LCALL XS ;调用显示子程序 RETI 子程序: SOUT: CLR TI ;清发送中断标志位 LCALL KEY ;调用判断按键是否按下子程序 MOV A,R0 ;将按键对应的数字存入A MOV SBUF,A ;输出按键数字给锁存 RET KEY: MOV P1,#0FFH ;将P1设置为输入口 MOV A, P1 CPL A ;将A内值取反

硬件接口应用实验

微机原理与接口技术 实验报告 实验内容:硬件接口应用实验 组别:x 姓名:xxx 班级:xxxxxx 学号:xxxxxx

实验一 8259中断控制器实验 一、实验目的 1、掌握8259的工作原理。 2、掌握编写中断服务程序的方法。 3、掌握初始化中断向量的方法。 二、实验内容 用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。 1、实验设备 微机实验教学系统实验箱、8086CPU模块 2、连接线路 3、编辑程序,编译链接后,调试程序。 4、调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序 停在中断服务程序内的断点处。 三、实验方法 1、设计思路 连线图:

2、程序流程图 图1 8259初始化流程图 四、实验源程序 CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H ;程序初始化 MOV AX,13H OUT DX,AX ;写ICW1 :上升沿触发,单片8259,要写ICW4 MOV DX,4A2H MOV AX,80H OUT DX,AX ;写ICW2 MOV AX,01 OUT DX,AX ;写ICW4 MOV AX,0 OUT DX,AX ;写OCW1 MOV AX,0 MOV DS,AX MOV SI,200H MOV AX,OFFSET HINT

MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI ;开中断,设置IF=1 JMP $ HINT: ;中断服务程序 XOR CX,0FFH MOV DX,4B0H MOV AX,CX OUT DX,AX ;输出高低电平控制LED等的亮灭 MOV DX,4A0H MOV AX,20H OUT DX,AX IRET ;中断返回 CODE ENDS END START 五、实验结果 每按一次单脉冲发生器,发光二极管点亮、熄灭交替进行。 六、思考题 1、将P+连线连接到IR1—IR7任意一个;重新编写程序。 思路:将P+接在IR1上,只要在源程序的基础上,把写ICW2的控制字改为81H,再把向量的入口地址改为0204H即可。 实验现象:每按一次单脉冲发生器,发光二极管点亮、熄灭交替进行。 2、设置OCW1,屏蔽某个中断请求,运行程序观察现象。 思路:将IR0重新接入LED0,设置OCW1为01H,屏蔽中断IR0,则IR0的中断 无法得到响应。 CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H ;写ICW1 MOV AX,13H ;上升沿触发,单片8259,要写ICW4 OUT DX,AX MOV DX,4A2H ;写ICW2 MOV AX,80H ;IR0的中断向量码为80H OUT DX,AX MOV AX,01 OUT DX,AX ;一般嵌套,非缓冲方式,非自动EOI MOV AX,01H ;写中断屏蔽字OCW1 OUT DX,AX ;屏蔽IR0中断中断向量存放在(0000H:0204H)

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 segment assume cs:code org 0100h start: mov bx,0480h mov dx,bx add dx,6 mov ax,80h out dx,ax mov dx,bx mov ax,0ch ;000ch---9600 ,clk=4.77MHZ/4 ; AL=4770000/16/9600/4=8 out dx,ax add dx,2 mov ax,0h out dx,ax add dx,4 mov ax,07 ;no pe,8 bit, 1 stop out dx,ax mov dx,bx add dx,2 ;no interupt mov ax,0 out dx,ax add dx,8h in ax,dx mov dx,bx in ax,dx crd: call recv call send jmp crd send: push ax mov bx,0480h mov dx,bx

最新串行通信实验报告整理

串行通信实验报告 班级姓名学号日期 一、实验目的: 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 0000H LJMP MAIN ORG 0023H LJMP COM_INT ORG 1000H MAIN: MOV SP,#53H MOV 78H,#20H

MOV 77H,00H MOV 76H,20H MOV 75H,40H ACALL TRANS HERE: SJMP HERE TRANS: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1 MOV SCON,#40H MOV IE,#00H CLR F0 MOV SBUF,78H WAIT1: JNB TI,WAIT1 CLR TI MOV SBUF,77H WAIT2: JNB TI,WAIT2 CLR TI MOV SBUF,76H WAIT3: JNB TI,WAIT3 CLR TI

单片机实验报告串行口

单片机实验报告 实验名称:串行通信实验 姓名:魏冶 学号:090402105 班级:光电一班 实验时间:2011-11-29 南京理工大学紫金学院电光系

一、实验目的 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD、RXD口; 3、了解MAX232芯片的使用。 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。它有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。 要发送的字节数据直接写入发送缓冲器,SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行接口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号做接收或发送移位寄存器的移位时钟。TI和RI分别发送完数据和接收完数据的中断标志,用来向CPU发中断请求。 三、实验内容 1、学会DPFlash软件的操作与使用,以及内部内嵌的一个串口调试软件的使用。 2、用串口连接PC机和DP-51PROC单片机综合仿真实验仪。 3、编写一个程序,利用单片机的串行口发送0x55,波特率为9600。 程序设计流程图

4、程序下载运行后,可在PC机上的串口调试软件上(内嵌在DPFlash软件的串口调 试器,设置通信口为COM1口,波特率为9600,数据位8,停止位1)看到接收到“UUUUUU……”,出现这样的结果就基本达到要求。 (1)代码: #include void main() { long int i; SCON=0x40; PCON=0; TMOD=0x20; TH1=0xfd; TL1=0xfd; TI=1; TR1=1; star:for(i=0;i<5000;i++); SBUF=0x55; goto star; } (2)电路图; 5、在单片机接收到0x55时返回一个0x41,在PC机一端,以接收到0x41完成,波特率2400。

单片机串口通信实验报告

信息工程学院实验报告 课程名称:单片机原理及接口 实验项目名称:串口通信实验实验时间:2017、5 一、实验目得: 1.了解什么就是串口,串口得作用等。 2、了解串口通信得相关概念 3、利用keil软件,熟悉并掌握中串口通信得使用 4、通过实验,熟悉串口通信程序得格式,串口通信得应用等 二、实验原理 1、串口通信概念: 单片机应用与数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。如下图所示。 2、串口数据通信方式及特点 ★数据通信方式有两种:并行通信与串行通信 ★并行通信: 所传送数据得各位同时发送或接收, ?数据有多少位就需要多少根数据线。 特点: 速度快,成本高,适合近距离传输 如计算机并口,打印机,8255 。 ★串行通信:所传送数据得各位按顺序一位一位 地发送或接收。 只需一根数据,一根地线,共2 根 特点:成本低,硬件方便,适合远距离通信, 传输速度低。 串行通信与并行通信示意图如下: 成绩: 指导老师(签名):

3、串行通信基本格式 ①单工通信:数据只能单向传送。 ②半双工通信:通信就是双向得,但每一时刻,数据流通得方向就是单向得。 ③全双工通信:允许数据同时在两个方向流动,即通信双方得数据发送与接收就是同时进行得。 4、异步串行通信/同步串行通信 ①异步串行通信: 异步串行通信采用如下得帧结构: 起始位+ 8位数据位+ 停止位或起始位+ 9位数据位+停止位 其中:起始位为低电平,停止位为高电平。 优点:硬件结构简单 缺点:传输速度慢 ②同步串行通信: 在同步通信中,发送方在数据或字符开始处就用同步字符(常约定1~2个字节)指示一帧得开始,由时钟来实现发送端与接收端同步,接收方一旦检测到与规定得同步字符符合,下面就连续按顺序传送若干个数据,最后发校验字节。见下图: 5、串行通信过程与UART 基本得计算机异步串行通信系统中,两台计算机之间通过三根信号线TxD、RxD与GND连接起来,TxD与GND构成发送线路,RxD与GND构成接收线路。一台计算机得TxD、RxD线分别与另一台计算机得RxD、TxD线相连。 由于在串行通信过程中得并串转换、串并转换、线路检测、采样判决、组帧、 拆帧、发送与接收等操作需消耗CPU大量时间,以至CPU无法处理其它工 作,因而开发出专用于处理异步串行通信发送与接收工作得芯片UART(通用 异步串行通信接收发送器)。 CPU只需将要发送得一个字节数据交给UART,其它发送工作由UART自动完成,当UART将一帧数据发送完毕,会通知CPU 已发送完,可提交下一个字节。 UART自动监测线路状态并完成数据接收工作,当接收到一个字节数据后,UART会通知CPU来读取。采用UART 后,CPU得负担大大减轻了。

串行通信接口标准详解

几种串行通信接口标准详解 在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。1969年,美国电子工业协会(EIA)公布了RS-232C作为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信设备(DCE)间按位串行传输的接口信息,合理安排了接口的电气信号和机械要求,在世界范围内得到了广泛的应用。但它采用单端驱动非差分接收电路,因而存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位速率为20Kb/s)的问题。远距离串行通信必须使用Modem,增加了成本。在分布式控制系统和工业局部网络中,传输距离常介于近距离(<20m=和远距离(>2km)之间的情况,这时RS-232C(25脚连接器)不能采用,用Modem又不经济,因而需要制定新的串行通信接口标准。 1977年EIA制定了RS-449。它除了保留与RS-232C兼容的特点外,还在提高传输速率,增加传输距离及改进电气特性等方面作了很大努力,并增加了10个控制信号。与RS-449同时推出的还有RS-422和RS-423,它们是RS-449的标准子集。另外,还有RS-485,它是RS-422的变形。RS-422、RS-423是全双工的,而RS-485是半双工的。 RS-422标准规定采用平衡驱动差分接收电路,提高了数据传输速率(最大位速率为10Mb/s),增加了传输距离(最大传输距离1200m)。 RS-423标准规定采用单端驱动差分接收电路,其电气性能与RS-232C几乎相同,并设计成可连接RS-232C和RS-422。它一端可与RS-422连接,另一端则可与RS-232C连接,提供了一种从旧技术到新技术过渡的手段。同时又提高位速率(最大为300Kb/s)和传输距离(最大为600m)。 因RS-485为半双工的,当用于多站互连时可节省信号线,便于高速、远距离传送。许多智能仪器设备均配有RS-485总线接口,将它们联网也十分方便。 串行通信由于接线少、成本低,在数据采集和控制系统中得到了广泛的应用,产品也多种多样 一.RS-232-C详解 串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 在讨论RS-232C接口标准的内容之前,先说明两点: 首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C 标准与计算机不兼容的地方就不难理解了。 其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都

串口实验报告

《嵌入式系统开发》课程实验报告 班级:电信141 姓名:冯录鹏 学号: 140407112 实验日期: 5月6日 电子通信工程系

实验一串口通信实验 学时安排:2学时 一、实验目的: 1、熟悉STM32的编程环境的使用; 2、掌握STM32的串口的编程; 二、实验步骤: 1.在keil环境下编辑源文件,并编译。 2.在野火STM32实验板上运行,调试程序,观察实验现象,理解并掌握相关知识。 3.编写STM32 的串行通信程序,实现由串口调试助手输入任意字符串,STM接收后返回到串 口调试助手输出。 三、实验内容: 设计思路及程序代码。 1、建立工程,编写主要代码 2、时钟配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); 3、GPIOA配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // USART1_TX (PA.9) GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //USART1_RX (PA.10) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10 4、USART 初始化设置 USART_https://www.360docs.net/doc/2c882060.html,ART_BaudRate = bound;//一般设置为9600; USART_https://www.360docs.net/doc/2c882060.html,ART_WordLength = USART_WordLength_8b;//字长为8位数据格式 USART_https://www.360docs.net/doc/2c882060.html,ART_StopBits = USART_StopBits_1;//一个停止位 USART_https://www.360docs.net/doc/2c882060.html,ART_Parity = USART_Parity_No;//无奇偶校验位

实验六 双PC机串口通信

实验六双PC机串口通信 一、实验目的和要求: 1、熟悉串口通信的基本原理,掌握RS-232接口标准以及DB9的主要引脚功能。 2、初步掌握可编程串行接口芯片的使用方法。 3、掌握用汇编语言进行串口编程的方法。 4、熟悉汇编语言程序的上机过程。 二、实验环境 1、硬件:PC机和RS-232接口连线。 2、软件:(1)汇编语言程序开发平台:Win2000/WinXP+集成开发工具VisualASM 1.0。 (2)汇编语言程序测试平台:Win98/DOS。 三、实验内容 甲机:接收键盘上输入的字符并通过串口发送到乙机。 乙机:接收甲机发送来的字符并显示到屏幕上。 四、实验原理 1、异步串行通信 串行通信是CPU与外部设备之间进行信息交换的基本方法。采用串行通信时,构成一个字符或数据的各位按时间先后,从低位到高位一位一位地传送,与并行通信相比,它占用较少的通信线,因而使成本降低,而且适合较远距离的传输。串行通信常作为计算机与低速外设或计算机之间传输信息用。当传输距离较远时,可采用通信线路(如电话线、无线电台等)。由于它占用的通信线路较少,所以应用较广泛。在使用时,发送及接收端必须具备并行-串行转换电路。图1是串行通信的示意图。 图1 串行通信示意图 串行通信包括异步通信和同步通信两种通信方式。一般情况下使用串行异步通信,本实验采用的就是这种通信方式。在异步串行通信中,每个字符作为一个独立的整体进行发送,字符之间的时间间隔可以是任意的。为了实现同步,需要在每个字符的第一位前加1位起始位(逻辑1),并在字符的最后一位后加1位、1.5位或2位停止位(逻辑0)。异步通信格式如图2所示。 图2 异步通信格式 2、RS-232-C接口标准 EIA RS-232-C是一种串行异步通信接口标准,其常用的连接器有两种:DB-25型和DB-9

串口实验报告

课程名称:嵌入式实验班级:2013级物联网1班姓名程谣日期:2015.12.10 一、实验题目:串口通信实验 二、实验目的 1、熟悉STM32的编程环境的使用; 2、掌握STM32的串口的编程; 三、实验内容 编写STM32 的串行通信程序,实现由串口调试助手输入任意字符串,STM接收后返回到串口调试助手输出。 四、实验步骤 1、建立工程,编写主要代码 2、时钟配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); 3、GPIOA配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // USART1_TX (PA.9) GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //USART1_RX (PA.10) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10 4、USART 初始化设置 USART_https://www.360docs.net/doc/2c882060.html,ART_BaudRate = bound;//一般设置为9600; USART_https://www.360docs.net/doc/2c882060.html,ART_WordLength = USART_WordLength_8b;//字长为8位数据格式 USART_https://www.360docs.net/doc/2c882060.html,ART_StopBits = USART_StopBits_1;//一个停止位 USART_https://www.360docs.net/doc/2c882060.html,ART_Parity = USART_Parity_No;//无奇偶校验位 USART_https://www.360docs.net/doc/2c882060.html,ART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制

实验四-串口通信实验

实验报告 课程名称:微机原理与接口技术 指导老师:张军明 成绩:__________________ 实验名称:实验四 串口通信实验 实验类型:________________同组学生姓名:吴越 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的 1、掌握80C51串行口工作方式选择、理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程中的时序关系。 2、掌握串口初始化的设置方法和串行通信编程的能力。 3、了解PC 机通讯的基本要求,掌握上位机和下位机的通讯方法。 4、编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等)。 二、实验器材 1、Micetek 仿真器一台。 2、实验板一块。 3、PC 机电脑一台。 4、九针串口线一条。 三、实验原理 串口通讯对单片机而言意义重大,不但可以实现将单片机(下位机)的数据传输到PC 端(上位机),而且也能实现PC 对单片机的控制,51单片机有一个全双工的串行通讯口,所以单片机和PC 之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL 电平的,两者之间必须有一个电平转换电路,本实验采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。 3.1 RS232九针串口基本功能简介 九针串口即RS-232接口,是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association ,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。该接口分为公头子和母头子。九针串口(母头)的功能如下,请见图1: 专业:电子信息工程 姓名:彭嘉乔 学号:3130104084 日期:2015.05 地点:东3-409

相关文档
最新文档