专业:电子信息工程 姓名:彭嘉乔 实验报告
学号:3130104084 日期:2015.05 地点:东3-409 课程名称:微机原理与接口技术 指导老师:张军明 成绩:__________________ 实验名称:实验四 串口通信实验 实验类型:________________同组学生姓名:吴越 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得
一、实验目的
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:
图1 RS232九针串口母头功能说明
分别为1:载波检测 (DCD); 2:接收数据 (RXD);3:发送数据(TXD); 4:数据终端准备好 (DTR);5:信号地(GND);6:数据准备好(DSR);7:发送请求(RTS);8:发送清除(CTS);9:振铃指示(RI)接法。
本实验采用三线制连接串口,也就是说和电脑的9针串口只需连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是已满足本实验硬件需求,电路如图2所示,MAX232的第11脚和单片机的11脚连接,通过MAX232芯片的电平转换,将T1OUT输出连接板子上9针串口(母头)第2脚的RXD;板子上9针串口(母头)第3脚的TXD与MAX232芯片的第13脚相连,通过RS232电平转换为TTL电平后,将MAX232芯片的第12脚和单片机的10脚连接,同时9针串口第5脚的GND与单片机的第20脚GND连接。图2中所示的DTR4与DSR6留空。
图2 RS232通讯接线示意图
3.2 串口助手软件
串口调试助手3.0版是 WMD工作室 最新研发的智能调试工具,是不折不扣的“串口助手”。 串口调试助手3.0版可以实现的功能包括发送接收16进制数、字符串、传输文件、搜索出空闲串口等,此外,还可以搜索用户自定义设置其他的项目。
串口调试助手为绿色软件,下载后只需要复制到硬盘上的指定目录中即安装完成。
四、实验要求
1、要求单片机串行口选择模式1,并设定合适的波特率。 2、选用定时器T1为波特率发生器,晶振为6M。
3、要求每隔1000ms由上位机向下位机发送一个字节,同时把下位机接收到的数值显示在30H开始的RAM中,并将接收到的数值返回到上位机,并显示在信息窗口中。
五、程序源代码及注释
ORG 0000H AJMP MAIN ORG 0030H MAIN:
MOV TMOD,#20H 设定时器/计数器T1 为定时器方式2 MOV SCON,#50H 置串行口方式1、接收
MOV TL1,#0FAH 置T1 定时常数(串行口波特率为2604) MOV TH1,#0FAH
MOV R0,#30H 存储地址 SETB TR1 启动定时器 SETB EA 允许中断
CLR ES 不允许串行口中断
MOV PCON,#00H 波特率不倍增 CLR TI CLR RI
WAIT1: 接收 JNB RI,WAIT1 CLR RI
MOV A,SBUF MOV @R0,A
MOV SBUF,A 发送 WAIT2:
JNB TI,WAIT2 CLR TI INC R0
SJMP WAIT1
六、实验程序LST文件 ORG 0000H
0000 0130 AJMP MAIN ORG 0030H MAIN:
0030 758920 MOV TMOD,#20H 0033 759850 MOV SCON,#50H 0036 758BFA MOV TL1,#0FAH 0039 758DFA MOV TH1,#0FAH 003C 7830 MOV R0,#30H 003E D28E SETB TR1 0040 D2AF SETB EA 0042 C2AC CLR ES
0044 758700 MOV PCON,#00H 0047 C299 CLR TI 0049 C298 CLR RI WAIT1:
004B 3098FD JNB RI,WAIT1 004E C298 CLR RI
0050 E599 MOV A,SBUF
0052 F6 MOV @R0,A 0053 F599 MOV SBUF,A WAIT2:
0055 3099FD JNB TI,WAIT2 0058 C299 CLR TI 005A 08 INC R0
005B 80EE SJMP WAIT1
符号值类型
AC = 00D6H CONST 常量 ACC = 00E0H CONST 常量 B = 00F0H CONST 常量 CY = 00D7H CONST 常量 DPH = 0083H CONST 常量 DPL = 0082H CONST 常量 EA = 00AFH CONST 常量 ES = 00ACH CONST 常量 ET0 = 00A9H CONST 常量 ET1 = 00ABH CONST 常量 EX0 = 00A8H CONST 常量 EX1 = 00AAH CONST 常量 F0 = 00D5H CONST 常量 F1 = 00D1H CONST 常量 IE = 00A8H CONST 常量 IE0 = 0089H CONST 常量 IE1 = 008BH CONST 常量 IP = 00B8H CONST 常量 IT0 = 0088H CONST 常量 IT1 = 008AH CONST 常量 MAIN = 0030H CODE 标号 OV = 00D2H CONST 常量 P = 00D0H CONST 常量 P0 = 0080H CONST 常量 P1 = 0090H CONST 常量 P2 = 00A0H CONST 常量 P3 = 00B0H CONST 常量 PCON = 0087H CONST 常量 PS = 00BCH CONST 常量 PSW = 00D0H CONST 常量 PT0 = 00B9H CONST 常量 PT1 = 00BBH CONST 常量 PX0 = 00B8H CONST 常量 PX1 = 00BAH CONST 常量 RB8 = 009AH CONST 常量
REN = 009CH CONST 常量 RI = 0098H CONST 常量 RS0 = 00D3H CONST 常量 RS1 = 00D4H CONST 常量 SBUF = 0099H CONST 常量 SCON = 0098H CONST 常量 SM0 = 009FH CONST 常量 SM1 = 009EH CONST 常量 SM2 = 009DH CONST 常量 SP = 0081H CONST 常量 TB8 = 009BH CONST 常量 TCON = 0088H CONST 常量 TF0 = 008DH CONST 常量 TF1 = 008FH CONST 常量 TH0 = 008CH CONST 常量 TH1 = 008DH CONST 常量 TI = 0099H CONST 常量 TL0 = 008AH CONST 常量 TL1 = 008BH CONST 常量 TMOD = 0089H CONST 常量 TR0 = 008CH CONST 常量 TR1 = 008EH CONST 常量 WAIT1 = 004BH CODE 标号 WAIT2 = 0055H CODE 标号 公有符号: 59 私有符号: 0 七、实验感想
本次实验主要参考了教材P177的程序,简化了中断等步骤,使得实验顺利完成。通过实验我掌握了80C51串行口工作方式选择,理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程中的时序关系,掌握了串口初始化的设置方法和串行通信编程的能力,了解了PC机通讯的基本要求,掌握上位机和下位机的通讯方法。