第4章 单片机原理及接口技术讲稿(第三版)-李朝青(范文大全)

时间:2019-05-14 17:36:47下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《第4章 单片机原理及接口技术讲稿(第三版)-李朝青》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《第4章 单片机原理及接口技术讲稿(第三版)-李朝青》。

第一篇:第4章 单片机原理及接口技术讲稿(第三版)-李朝青

第4章

汇编语言程序设计及知识

§4.1 编程的步骤、方法和技巧

§4.1.1 编程的步骤

一、分析问题

对需要解决的问题进行分析,以求对问题由正确的理解。如, 解决问题的任务是什么?  工作过程?

 现有的条件,已知数据,对运算的精度和速度方面的要求?  设计的硬件结构是否方便编程?

二、确定算法

算法是如何将实际问题转化成程序模块来处理。

在编程以前,先要对几种不同的算法进行分析、比较,找出最适宜的算法

三、画程序流程图

程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。流程图步骤分得越细致,编写程序是也越方便。画流程图是程序结构设计是采用的一种重要手段。

一个系统软件有总的流程图(主程序框图)和局部的流程图。流程图常采用的图形和符号。

四、编写程序

用89C51汇编语言编写的源程序行(一条语句)包括四个部分,也叫四个字段: 〔标号:〕〔操作码〕〔操作数〕;〔注释〕

每个字段之间要用分隔符分隔,而每个字段内部不能使用分隔符。可以用作分隔符的符号:空格“

”、冒号“:”、、逗号“,”、分号“;”等。

例:LOOP:MOV A,#00H;立即数00H→A  标号

标号是用户定义的符号地址。

一条指令的标号是该条指令的符号名字,标号的值是汇编这条指令时指令的地址。标号由以英文字母开始的1~8个字母或数字组成,以冒号“:”结尾。

标号可以由赋值伪指令赋值,如果没有赋值,汇编程序把存放该指令目标码第一字节的存储单元的地址赋给该标号,所以,标号又叫指令标号。

 操作码

操作码是必不可少的。

它用一组字母符号表示指令的操作码。在89C51中,由89C51的指令助记符组成。 操作数

汇编语言指令可能要求或不要求操作数,所以这一字段可能有也可能没有。若有两个操作数,操作数之间用逗号“,”分开。操作数包括的内容有:

(1)工作寄存器:由PSW.3和PSW.4规定的当前工作寄存器区中的R0~R7。(2)特殊功能寄存器:21个SFR的名字。

(3)标号名:赋值标号—由汇编指令EQU等赋值的标号;指令标号—指令标号指示的指令的第一字节地址是该标号的值。

(4)常数:可用二进制(B)、十进制、十六进制(H),若常数以字符开头,前面加0。(5)$:用来表示程序计数器的当前值。

1(6)表达式:汇编时,计算出表达式的值填入目标码。 注释

注释部分不是汇编语言的功能部分,只是用语增加程序的可读性。良好的注释是汇编语言程序编写中的重要组成部分。

§4.1.2 编程的方法和技巧

一、模块化的程序设计方法

1、程序功能模块化的优点

单个模块结构的程序功能单一,易于编写、调试和修改。

便于分工,从而可使多个程序员同时进行程序的编写和调试工作,加快软件研制进度。程序可读性好,便于功能扩充和版本升级。

对程序的修改可局部进行,其它部分可以保持不变。

对于使用频繁的子程序可以建立子程序库,便于多个模块调用。

2、划分模块的原则

每个模块应具有独立的功能,能产生一个明确的结果,即单模块的功能高内聚性。

模块之间的控制耦合应尽量简单,数据耦合应尽量少,即模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。

模块长度适中。20条~100条的范围较合适。

二、编程技巧

1、尽量采用循环结构和子程序。

2、尽量少用无条件转移指令。

3、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出),即保护现场。

4、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。

5、用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。

§4.1.3 汇编语言程序的基本结构

一、顺序程序

顺序程序是最简单的程序结构,即顺序结构。程序按顺序一条一条地执行指令。

二、分支程序

程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程序。

分支程序又分为单分支和多分支结构。

多分支程序是首先把分支程序按序号排列,然后按序号值进行转移。

在MCS-51指令系统中,通过条件判断实现单分支程序转移的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态作为条件进行程序分支的指令,如JC、JNC、JB、JNB、JBC等。使用这些指令可以完成0、1、正、负,以及相等、不相等作为各种条件判断依据的程序转移。

结构如图4-1所示。

例4-1: 128种分支转移程序。

功能:根据入口条件转移到128个目的地址。入口:(R3)=转移目的地址的序号00H~7FH。出口:转移到相应子程序入口。JMP_128:MOV

A,R3

RL

A

MOV

DPTR,#JMPTAB

JMP

@A+DPTR JMPTAB:AJMP

ROUT00

AJMP

ROUT01

AJMP

ROUT7F

说明:此程序要求128个转移目的地址(ROUT00 ~ROUT7FH)必须驻留在与绝对转移指令AJMP相同的一个2KB存储区内。

RL指令对变址部分乘以2,因为每条AJMP指令占两个字节。

三、循环程序

在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部分:

1、置循环初值

2、循环体(循环工作部分)

3、修改控制变量

4、循环控制部分 其组织方式如图4-2所示。

1、置循环初值

对于循环程序中所使用的工作单元,在循环开始时应置初值。

例如,工作寄存器设置计数初值,累加器A清0,以及设置地址指针、长度等。

2、循环体(循环工作部分)

重复执行的程序段部分,分为循环工作部分和循环控制部分。

循环控制部分每循环一次,检查结束条件,当满足条件时,就停止循环,往下继续执行其他程序

3、修改控制变量

在循环程序中,不许给出循环结束条件。

常见的是计数循环,当循环了一定的次数后,就停止循环。

在单片机中,一般用一个工作寄存器Rn作为计数器,对该计数器赋初值作为循环次数。每循环一次,计数器的值减1,即修改循环控制变量,当计数器的置件为0时,就停止循环。

4、循环控制部分

根据循环结束条件,判断是否结束循环。

89C51可采用DJNZ指令来自动修改控制变量并能结束循环。

§4.2 汇编语言源程序的编辑和汇编

§4.2.1 源程序编辑

在微型计算机上,借助编辑软件,编写或修改汇编语言源程序。如行编辑或屏幕编辑软件。

§4.2.2 源程序的汇编

汇编:将汇编语言源程序转换为机器码表示的目标程序的过程。对单片机有:

一、手工汇编

二、机器汇编

三、反汇编

一、手工汇编

通过手工方式查指令编码表,逐个把助记符指令“翻译”成机器码,然后把得到的机器码程序键入单片机,进行调试和运行。

手工汇编的缺点:

1、偏移量的计算容易出错

2、程序的修改会引起后面指令地址的变化,转移指令的偏移量也要重新计算。

二、机器汇编

机器汇编是在计算机上使用交叉汇编程序进行源程序的汇编。汇编工作由机器自动完成,最后得到以机器码表示的目标程序。

三、反汇编

将二进制机器语言程序翻译成汇编语言程序的过程称反汇编。汇编和反汇编的过程如图4-3所示。

图4-3

汇编和反汇编过程

§4.2.3 伪指令

伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序,只是用来对汇编过程进行某种控制。

 ORG 汇编起始命令 格式:ORG

16位地址

功能:规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。例如:

ORG

2000H START:MOV

A,#64H

规定了START的地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。 END 汇编结束指令 格式:END 功能:通知汇编程序结束汇编。在END之后所有的汇编指令均不予以处理。

 EQU 赋值命令

格式:字符名称

EQU 项(数或汇编符号)功能:把“项”赋给“字符名称”。

注意:字符名称不等于标号(其后没有冒号);其中的项,可以是数,也可以是汇编符号。EQU赋值过的符号名可以用作数据、代码地址、位地址或一个立即数。可以是8位的,也可以是16位的。

例如: 例1:

AA

EQU

R1

MOV A,AA;AA代表工作寄存器R1 例2:

A10

EQU

DELY

EQU

07EBH

MOV

A,A10;A10作为片内的一个直接地址

LCALL

DELY;DELY作为一个16位子程序的入口地址  DATA

数据地址赋值命令

格式:字符名称

DATA

表达式 功能:与EQU类似,但有以下差别:

1、EQU定义的字符名必须先定义后使用,而DATA定义的字符名可以后定义先使用。

2、用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名。

3、DATA语句可以把一个表达式的值赋给字符名称,其中的表达式应是可求值的。DATA伪指令在程序中用来定义数据地址

 DB 定义字节命令 格式:DB(项或项表)

功能:通知汇编程序从当前ROM地址开始,保留一个字或字节串的存储单元,并存入DB后的数据。

注意:项或项表可以是一个字节,用逗号隔开的字节串或括在单引号中的ASCII字符串。例如:

ORG

2000H

DB

0A3H LIST:DB

26H,03H STR:DB

‘ABC’

经汇编后(2000H)=A3H,(2001H)=26H,(2002H)=03H,(2003H)=41H,(2004H)=42H,(2005H)=43H,(41H,42H,43H分别为A,B,C的ASCII码) DW 定义字命令

格式:DW

16位数据项或项表

功能:把DW后的16位数据项或项表从当前地址连续存放。每项数值为16位二进制数,高8位先放,低8位后存放。DW用于定义一个地址表。

例如:

ORG

1500H TABLE:DW

7234H,8AH,10H

经汇编后(1500H)=72H,(1501H)=34H,(1502H)=00H,(1503H)=8AH,(1504H)=00H,(1505H)=10H, DS 定义存储空间命令 格式:DS

表达式

功能:在汇编时,从指定地址开始保留DS之后表达式的值所规定的存储单元以备后用。例如:

ORG

1000H DS

08H DB

30H,8AH 汇编后,从1000H保留8个单元,然后从1008H按DB命令给内存赋值,即(1008H)=30H

(1009H)=8AH  BIT 位地址符号命令 格式:字符名

BIT

位地址

功能:把BIT后的位地址值赋给字符名。其中字符名不是标号,其后没有冒号,但字符名是必须的。

例如:

A1

BIT

P1.0 A2

BIT

02H 汇编后,P1口第0位的位地址90H就赋给了A1,而A2的值则为02H。

第二篇:第7章 单片机原理及接口技术讲稿(第三版)-李朝青

第7章

89C51串行口及串行通信技术

本书前几章涉及的数据传送都是采用并行方式,如8051与存储器,存储器与存储器,8051与并行打印机之间的通信。89C51处理8位数据,若以并行传送方式一次传送一个字节的数据,至少需要8条数据线。当89C51与打印机连接时,除8条数据线外,还需要状态、应答等控制线。一些微机系统,如IBM-PC系列机,由于磁盘机、CRT、打印机与主机系统的距离有限,所以,使用多条电缆线以提高数据传送速度还是合算的。但是,计算机之间、计算机与其终端之间的距离有时非常远,此时,电缆线过多是不经济的

串行通信只用一位数据线传送数据的位信号,即使加上几条通信联络控制线,也用不了很多电缆线。因此,串行通信适合远距离数据传送,如大型主机与其远程终端之间、处于两地的计算机之间采用串行通信就非常经济。当然,串行通信要求有转换数据格式、时间控制等逻辑电路,这些电路目前已被集成在大规模集成电路中(称为可编程串行通信控制器),使用很方便。

本章将介绍89C51串行口的结构及应用,PC机与89C51间的双机通信,一台PC机控制多台89C51前沿机的分布式系统,以及通信接口电路和软件设计,并给出设计实例,包括接口电路、程序框图、主程序和接收/发送子程序。

7.1 串行通信基本知识

7.1.1数据通信

在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。

通信方式有两种,即并行通信和串行通信。

通常根据信息传送的距离决定采用哪种通信方式。

例如,在IBM-PC机与外部设备(如打印机等)通信时,如果距离小于30m,可采用并行通信方式;当距离大于30m时,则要采用串行通信方式。89C51单片机具有并行和串行二种基本通信方式。

并行通信是指数据的各位同时进行传送(发送或接收)的通信方式。其优点是传送速度快;

缺点是数据有多少位,就需要多少根传送线。

例如,89C51单片机与打印机之间的数据传送就属于并行通信。

图7-1(a)所示为89C51与外设间8位数据并行通信的连接方法。并行通信在位数多、传送距离又远时就不太合适了。

串行通信指数据是一位一位按顺序传送的通信方式。

它的突出优点是只需一对传输线(利用电话线就可作为传输线),这样就大大降低了传送成本,特别适用于远距离通信;

其缺点是传送速度较低。假设并行传送N位数据所需时间位T,那么串行传送的时间至少为NT,实际上总是大于NT的。

图7-1(b)所示为串行通信方式的连接方法。

7.1.2串行通信的传输方式

串行通信的传送方向通常有三种:

单向(或单工)配置,只允许数据向一个方向传送;

半双向(或半双工)配置,允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;

全双向(全双工)配置,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接受能力。图7-2所示为串行通信中的数据传送方式。

图7-2 串行通信中的数据传送方式

7.1.3异步通信和同步通信

串行通信有两种基本通信方式,即异步通信和同步通信。

1、异步通信

在异步通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式如图7-3所示

图7-3 异步通信数据格式

在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始为(0),然后是5位--8位数据(规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位(1)。

始位(0)信号只占用一位,用来通知接收设备一个待接收的字符开始到达。线路上在不传送字符时应保持为1。接收端不断检测线路的状态,若连续为1以后又测到一个0,就知道发来一个新字符,应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。

起始位后面紧接着是数据位,它可以是5位(D0--D4)、6位、7位或8位(D0--D7)。奇偶校验(D8)只占一位,但在字符中也可以规定不用奇偶校验位,则这一位就可省去。也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等)。

停止位用来表征字符的结束,它一定是高电位(逻辑1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一个字符做好准备--只要再接收到0,就是新的字符的起始位。若停止位以后不是紧接着传送下一个字符,则使线路电平保持为高电平(逻辑1)。

图7-3(a)表示一个字符紧接一个字符传送的情况,上一个字符的停止位和下一个字符的起始位是紧邻的;

图7-3(b)则是两个字符间有空闲位的情况,空闲位为1,线路处于等待状态。存在空闲位正是异步通信的特征之一。

例如,规定用ASCII编码,字符为七位,加一个奇偶校验位、一个起始位、一个停止位,则一帧共十位。

2、同步通信

同步通信中,在数据开始传送前用同步字符来指示(常约定1个--2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。

同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,其数据格式如图7-4所示。

同步字符的插入可以是单同步字符方式或双同步字符方式,如图7-4所示,然后是连续的数据块。同步字符可以由用户约定,当然也可以采用ASCII码中规定的SYNC代码,即16H。按同步方式通信时,先发送同步字符,接收方检测到同步字符后,即准备接收数据。

在同步传送时,要求用时钟来实现发送端与接收端之间的同步。为了保证接收正确无误,发送方除了传送数据外,还要同时传送时钟信号。

同步传送可以提高传输速率(达56kb/s或更高),但硬件比较复杂。

3、波特率(Baud rate)

波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。波特率对于CPU与外界的通信是很重要的。

假设数据传送速率是120字符/s,而每个字符格式包含1个代码位(1个起始位、1个终止位、8个数据位)。这时,传送的波特率为:

10b/字符×120字符/s=1200b/s 每一位代码的传送时间Td为波特率的倒数。Td=1b/(1200bs-1)=0.833ms 异步通信的传送速率在50b/s--19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。

7.1.4串行通信的过程及通信协议

1、串←→并转换与设备同步

两个通信设备在串行线路上成功地实现通信必须解决两个问题:

一是串←→并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;

二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。

(1)串←→并转换

串行通信是将计算机内部的并行数据转换成串行数据,将其通过一根通信线传送;并将接收的串行数据再转换成并行数据送到计算机中。

在计算机串行发送数据之前,计算机内部的并行数据被送入移位寄存器并一位一位地输出,将并行数据转换成串行数据。如图7-5所示。

在接收数据时,来自通信线路的串行数据被压入移位寄存器,满8位后并行送到计算机内部。如图7-6所示。

在串行通信控制电路中,串--并、并--串转换逻辑被集成在串行异步通信控制器芯片中。89C51单片机的串行口和IBM-PC相同。(2)设备同步

进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。

设备同步对通信双方有两个共同要求: 一是通信双方必须采用统一的编码方法; 二是通信双方必须能产生相同的传送速率。

采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度,当然还包括统一的逻辑电平规定,即电平信号高低与逻辑1和逻辑0的固定对应关系。

通信双方只有产生相同的传送速率,才能确保设备同步,这就要求发送设备和接收设备采用相同频率的时钟。发送设备在统一的时钟脉冲上发出数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。

2、串行通信协议

通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。

通信双方必须遵守统一的通信协议。串行通信协议包括同步协议和异步协议两种。在此只讨论异步串行通信协议和异步串性协议规定的字符数据的传送格式。(1)起始位

通信线上没有数据被传送时处于逻辑1状态。

当发送设备要发送一个字符数据时,首先发出一个逻辑0信号,这个逻辑低电平就是起始位。

起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。

起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。(2)数据位

当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8。IBM-PC中经常采用7位或8位数据传送,89C51串行口采用8位或9位数据传送。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据。(3)奇偶校验位

数据位发送完之后,可以发送奇偶校验位。奇偶校验用于有限差错检测,通信双方需约定已知的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。(4)停止位约定

在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。(5)波特率设置

通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。(6)挂钩(握手)信号约定

(见本章7.4节实例)

7.2 串行口及应用

89C51单片机除具有4个8位并行口外,还具有串行接口。

此串行接口是一个全双工串行通信接口,即能同时进行串行发送和接收数据。它可以作UATR(通用异步接收和发送器)用,也可以作同步移位寄存器用。

使用串行接口可以实现89C51单片机系统之间点对点的单机通信和89C51与系统机(如IBM-PC机等)的单机或多机通信。

7.2.1 89C51串行口

1、结 构

89C51通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。其内部结构简化示意图如图7-7所示。图中有两个物理独立的接收、发送缓冲器SBUF,它们占用同一低值99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。

串行发送与接收的速率与移位时钟同步。89C51用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。

图7-7 串行口内部结构示意简图

从图中可看出,接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。

串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时(执行“MOV SBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。

在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOV A,SBUF”命令),便由接收缓冲器(SBUF)取出信息通过89C51内部总线送CPU。

对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误,一般不需要用双缓冲器结构来保持最大传送速率。

2、串行口控制字及控制寄存器

89C51串行口是可编程接口,对它初始化编程只用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中即可。(1)SCON(98H)

89C51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示,其控制字格式如图7-8所示。

图7-8 串行口控制寄存器SCON ①SM0和SM1(SCON.7,SCON.6)¡ª¡ª串行口工作方式选择位。两个选择位对应4种通信方式,如表7-1所示。其中,fosc是振荡频率。

②SM2(SCON.5)——多机通信控制位,主要用于方式2和方式3。

若置SM2=1,则允许多机通信。当一片89C51(主机)与多片89C51(从机)通信时,所有从机的SM2位都置1。主机首先发送的一帧数据为地址,即从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。

各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM2=1。

若SM2=0,即不属于多机通信情况,则接收一贞数据后,不管第九位数据是0还是1,都制RI=1,接收到的数据装入SBUF。

根据SM2这个功能,可实现多个89C51应用系统的串行通信。

在方式1时,若SM2=1,则只有接收到有效停止位时,RI才制1,以便接收下一贞数据。在方式0时,SM2必须是0。

③REN(SCON.4)——允许接收控制位。

由软件置1或清0,只有当REN=1时才允许接收,相当于串行接收的开关;若REN=0,则禁止接收。

在串行通信接收控制过程中,如果满足RI=0和REN=1(允许接收)的条件,就允许接收,一帧数据就装载入接收SBUF中。

④TB8(SCON.3)——发送数据的第9位(D8)装入TB8中。

在方式2或方式3中,根据发送数据的需要由软件置位或复位。在许多通信协议中可用作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。对于后者,TB8=1,说明该帧数据为地址;TB8=0,说明该帧数据为数据字节。在方式0或方式1中,该为未用。⑤RB8(SCON.2)——接收数据的第9位。

在方式2或方式3中,接收到的第9位数据放在RB8位。它或是约定的奇/偶校验位,或是约定的地址/数据标识位。在方式2和方式3多机通信中,若SM2=1,如果RB8=1,说明收到 7 的数据为地址帧。

在方式1中,若SM2=0(即不是多机通信情况),RB8中存放的是已接收到的停止位。在方式0中,该位未用。

⑥TI(SCON.1)——发送中断标志。

在一帧数据发送完时被置位。在方式0串行发送第8位结束或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询。它同时也申请中断,TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。串行口发送中断被响应后,TI不会自动清0,必须由软件清0。

⑦RI(SCON.0)——接收中断标志。

在节收到一帧有效数据后由硬件置位。在方式0中,第8位数据发送结束时,由硬件置位;在其他三种方式中,当接收到停止位中间时由硬件置位。RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。CPU响应中断,取走数据。RI也必须由软件清0,清除中断申请,并准备接收下一帧数据。

串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。

复位时,SCON所有位均清0。(2)PCON(87H)

电源控制寄存器PCON中只有SMOD位与串行口工作有关,如图7-9所示。

图7-9 电源控制寄存器PCON SMOD(PCON.7)——波特率倍增位。

在串行口方式

1、方式2和方式3时,波特率和SMOD成正比,亦即当SMOD=1时,波特率提高一倍。

复位时,SMOD=0。

3、串行通信工作方式

根据实际需要,89C51串行口可设置4种工作方式,可有8位、10位或11位帧格式。方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。其帧格式如下:

方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1)。其帧格式为:

方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1)。其帧格式为:

附加第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。(1)串行口方式0 方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口。

串行数据通过RXD输入或输出,而TXD用于输出移位时钟,作为外接部件的同步信号。

这种方式不适用于两个89C51之间的直接数据通信,但可以通过外接移位寄存器来实现单片机的接口扩展。

图7-10 方式0发送电路及时序

图7-11 方式0接收电路及时序

例如,74LS164可用于扩展并行输出口,74LS165可用于扩展输入口。

在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止位,波特率是固定的。

发送过程中,当执行一条将数据写入发送缓冲器SBUF(99H)的指令时,串行口把SBUF中8位数据以fosc/12的波特率从RXD(P3.0)端输出,发送完毕置中断标志TI=1。方式0发送 9 时序如图7-10(b)所示。写SBUF指令在S6P1处产生一个正脉冲,在下一个机器周期的S6P2处数据的最低位输出到RXD(P3.0)脚上;再在下一个机器周期的S3,S4,S5输出移位时钟为低电平,而在S6级下一个机器周期的S1,S2为高电平,就这样讲8位数据由低位至高位一位一位顺序通过RXD线输出,并在TXD脚上输出fosc/12的移位时钟,在“写SBUF”有效后的第10个机器周期的S1P1将发送中断标志TI置位。图中,74LS164是TTL“串入并出”移位寄存器。

接收时,用软件置REN=1(同时,RI=0),即开始接收。接收时序如图7-11(b)所示。当使SCON中的REN=1(RI=0)时,产生一个正脉冲,在下一个机器周期的S3P1~S5P2,从TXD(P3.1)脚上输出低电平的移位时钟,在此机器周期的S5P2对P3.0脚采样,并在本机器周期的S6P2通过串行口内的输入移位寄存器将采样值移位接收;在同一个机器的S6P1到下一个机器周期的S2P2,输出移位时钟为高电平。于是,讲述句字节从地位至高位一位一位地接收下来病状如SBUF中,在启动接收过程(即写SCON,清RI位)将SCON中的RI清0之后的第10个机器周期的S1P1,RI被置位。这一帧数据接收完毕,可进行下一帧接收。图7-11(b)中,74LS165是TTL“并入串出”移位寄存器,QH端为74LS165的串行输出端,经P3.0输入至89C51。(2)串行口方式1 方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。

收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。串行口方式1的发送和接收时序如图7-12(a)和(b)所示

图7-12 方式1发送和接收时序

方式1发送时,数据从引脚TXD(P3.1)端输出。当执行数据写入发送缓冲器SBUF的命令时,就启动了发送器开始发送。发送时的定时信号,也就是发送移位时钟(TX时钟),是由定时器T1(见图7-7)送来的溢出信号经过16分频或32分频(取决于SMOD的值)而得到的,TX时钟就是发送波特率。可见,方式1的波特率是可变的。发送开始的同时,SEND变为有效,将起始位向TXD输出;此后每经过一个TX时钟周期(16分频计数器溢出一次为一个时钟周期,因此,TX时钟频率由波特率决定。)产生一个移位脉冲,并由TXD输出一个数据位;8位数据位全部发送完后,置为位TI,并申请中断置TXD为1作为停止位,再经一个时钟周期,SEND失效。

方式1接收时,数据从引脚RXD(P3.0)端输入。接收是在SCON寄存器中REN位置1的前提下,并检测到起始位(RXD上检测到1→0的跳变,即起始位)而开始的。接收时,定时信号有两种(如图7-12(b)所示):一种是接收移位时钟(RX时钟),它的频率和传送波特率相同,也是由定时器T1的溢出信号经过16或32分频而得到的;另一种是位检测器采样脉冲,它的频率是RX时钟的16倍,亦即在一位数据期间有16位检测器采样脉冲,为完成检测,以16倍于波特率的速率对RXD进行采样。

为了接受准确无误,在正式接受数据之前,还必须判定这个1→0跳变是否是干扰引起的。为此,在这位中间(即一位时间分成16等份,在第7,第8及第9等份)连续对RXD采样三次,取其中两次相同的值进行判断。这样能较好地消除干扰的影响。当确认是真正的起始位(0)后,就开始接受一帧数据。当一帧数据接受完毕后,必须同时满足以下两个条件,这次接受才真正有效。

①RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中数据已被取走。由软件使RI=0,以便提供“接收SBUF已空”的信息。

②SM2=0或收到的停止位为1(方式1时,停止位进入RB8),则将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI;如果不满足,接收到的数据不能装入SBUF,这意味着该帧信息将会丢失。

值得注意的是,在整个接收过程中,保证REN=1是一个先决条件。只有当REN=1时,才能对RXD进行检测。

(3)串行口方式2和方式3 串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,所不同的只是波特率)。

每帧11位,即1位起始位,8位数据位(低位在前),1位可编程的第9数据位和1位停止位。发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8,从而进行奇偶校验;接收时,第9数据位进入SCON的RB8。

方式2和方式3的发送、接收时序如图7-13所示。其操作与方式1类似。

图7-13 方式

2、方式3发送和接收时序

发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址/数据标志位),然后将要发送的数据写入SBUF,即可启动发送过程。串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去。发送完毕,使TI=1。

接收时,使SCON中的REN=1,允许接收。当检测到RXD(P3.0)端有1→0的跳变(起始位)时,开始接收9位数据,送入移位寄存器(9位)。当满足RI=0且SM2=0,或接收到的第9位数 11 据为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,置RI为1;否则,这次接收无效,也不置位RI。

4、波特率设计

在串行通信中,收发双方对发送或接收的数据速率有一定的约定,通过软件对89C51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。

串行口的四种工作方式对应着三种波特率。由于输入的移位时钟来源不同,因此,各种方式的波特率计算公式也不同。(1)方式0的波特率

由图7-14可见,方式0时,发送或接收一位数据的移位时钟脉冲由S6(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。

图7-14 串行口方式0波特率的产生

方式0波特率 ≌ fosc / 12 注意,符号“≌”表示左面的表达式只是引拥右面表达式的数值,即右面的表达式是提供了一种计算的方法。(2)方式2的波特率

串行口方式2波特率的产生与方式0不同,即输入的时钟源不同,其时钟输入部分入图7-15所示。

图7-15 串行口方式2波特率的产生

控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:

SMOD=0时,波特率为fosc的1/64; SMOD=1时,波特率为fosc的1/32。即方式2波特率≌2SMOD/64×fosc(3)方式1和方式3的波特率

方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,如图7-16所示。因此,89C51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时决定。即方式

1、方式3波特率≌T1溢出率/n

图7-16 串行口方式

1、方式3波特率的产生

当SMOD=0时,n=32;SMOD=1时,n=16。所以,可用下式确定方式1和方式3的波特率: 方式

1、方式3波特率≌2SMOD/32×(T1溢出速率)其中,T1溢出速率取决于T1的计数速率(计数速率≌fosc/12)和T1预置的处置。若定时器T1采用模式1时,波特率公式如下:

串行方式

1、方式3波特率≌2SMOD/32×(fosc/12)/(216-初值)表7-2列出了串行口方式

1、方式3常用波特率及其初值。

表7-2 常用波特率与其他参数选取关系

定时器T1用作波特率发生器时,通常选用定时器模式2(自动重装初值定时器)比较实用。要设置定时器T1为定时方式(使C/T=0),让T1计数内部振荡脉冲,即计数速率为fosc/12(注意应禁止T1中断,以免溢出而产生不必要的中断)。先设定TH1和TL1定时即输初值为X,那么每过“28-X”个机器周期,定时器T1就会产生一次溢出。

4、波特率设计

因此,T1溢出速率为

T1溢出速率≌(fosc/12)/(28-X)13

于是,可得出定时器T1模式2的初始值X:

例7-1:89C51单片机时钟振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400b/s,求初值。

解:设置波特率控制为(SMOD)=0

所以,(TH1)=(TL1)=F4H。

系统晶体振荡频率选为11.0592MHz就是为了使初值为整数,从而产生精确的波特率。如果串行通信选用很低的波特率,可将定时器T1置于模式0或模式1,即13位或16位定时方式;但在这种情况下,T1溢出时,需要中断服务程序重装初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的办法加以调整。

7.2.2 89C51串行口的工作方式及应用

如前所述,89C51串行口的工作主要受串行口控制寄存器SCON的控制,另外,也和电源控制寄存器PCON有些关系。SCON寄存器用来控制串行口的工作方式,还有一些其他的控制作用。

89C51单片机串行口的四种工作方式传送的数据位数叙述如下:

①方式0:移位寄存器输入/输出方式。串行数据通过RXD线输入或输出,而TXD线专用于输出时钟脉冲给外部移位寄存器。方式0可用来同步输出或接收8位数据(最低位首先输出),波特率固定为fosc/12,其中,fosc为单片机的时钟频率。

②方式1:10位异步接收/发送方式。一帧数据包括1位起始位(0),8位数据位和1位停止位(1)。串行接口电路在发送时能自动插入起始位和停止位;在接收时,停止位进入特殊功能寄存器SCON的RB8位。方式1的传送波特率是可变的,可通过改变内部定时器的定时值来改变波特率。

③方式2:11位异步接收/发送方式。除了1位起始位、8位数据位、1位停止位之外,还可以插入第9位数据位。

④方式3:同方式2,只是波特率可变。

1、串行口方式0的应用

89C51单片机串行口基本上是异步通信接口,但在方式0时是同步操作。外接串入——并出或并入——串出器件,可实现I/O的扩展。

串行口方式0的数据传送可以采用中断方式,也可以采用查询方式。无论哪种方式,都要借助于TI或RI标志。

在串行口发送时,或者靠TI置位后引起中断申请,在中断服务程序中发送下一组数据;或者通过查询TI的值,只要TI为0就继续查询,直到TI为1后结束查询,进入下一个字符的发送。

在串行口接收时,由RI引起中断或对RI查询来决定何时接收下一个字符。无论采用什么方式,在开始串行通信前,都要先对SCON寄存器初始化,进行工作方式的设置。在方式0中,SCON寄存器的初始化只是简单地把00H送入SCON就可以了。

例7-2:用89C51串行口外接164串入——并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法,如图7-17所示。

解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现。程序清单:

ORG 0023H;串行口中断入口

AJMP SBR;转入串行口中断服务程序

ORG 2000H;主程序起始地址

MOV SCON ,#00H;串行口方式0初始化

MOV A ,#88H;最左一位发光二极管先亮

CLR P1.0;关闭并行输出

MOV SBUF,A;开始串行输出 LOOP : SJMP $;等待中断 SBR : SETB P1.0;启动并行输出

ACALL DELAY;显示延迟一段时间

CLR TI;清发送中断标志

RR A;准备右边一位显示

CLR P1.0;关闭并行输出

MOV SBUF , A;再一次串行输出

RETI;中断返回

用方式0外加移位寄存器来扩展8位输出口时,要求移位寄存器带有输出控制,否则串行移位过程也会反映到并行输出口;另外,输出口最好再接一个寄存器或锁存器,以免在输出门关闭使(STB=0)输出又发生变化。

用方式0加上并入——串出移位寄存器可扩展一个8位并行输入口。移位寄存器必须带有预置/移位的控制端,由单片机的一个输出端子加以控制,以实现先由8位输入口置数到移位寄存器,然后再串行移位从单片机的串行口输入到接收缓冲器,最后再读入到CPU中。

例7-3:用89C51串行口外加移位寄存器165或166扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号。如图7-18所示。

解:串行口方式0的接收要用SCON寄存器中的REN位作为开关来控制。因此,初值化时,除了设置工作方式之外,还要使REN位为1,其余各位仍然为0。

对RI采用查询方式来编写程序,当然,先要查询开关K是否闭合。程序清单:

START: MOV SCON ,#10H;串行口方式0初始化

JB P1.1 ,$;开关K未闭合,等待

SETB P1.0;P/S=1,并行置入数据

CLR P1.0;PS=0,开始串行移位

JNB RI ,$;查询RI

CLR RI;查询结束,清RI

MOV A ,SBUF;读数据到累加器

ACALL LOGSIM;进行逻辑模拟

SJMP START;准备下一次模拟

2、串行口方式1的发送和接收

例7-4:89C51串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用可校验方式,要求传送的波特率为1200b/s。编写有关的通信程序。

解:7位ASCII码加1位奇校验共8位数据,故可采用串行口方式1。

89C51单片机的奇偶校验位P是当累加器A中1的数目为奇数时,P=1。如果直接把P的值放入ASCII码的最高位,恰好成了奇偶校验,与要求不符。因此,要把P的值取反以后放入ASCII码最高位,才是要求的奇校验。

双工通信要求收、发能同时进行。实际上,收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是RI置位还是TI置位来决定CPU是进行发送操作还是接收操作。发送和接收都通过调用子程序来完成,设发送数据区的首地址为20H,接收数据区的首地址为40H,fosc为6MHz,通过查波特率初值(表7-2)可知定时器的初装值为F3H。定时器T1采用工作模式2,可以避免计数溢出后用软件重装定时初值的工作。

程序清单: 主程序

MOV TMOD ,#20H;定时器1设为模式2 MOV TL1 , #0F3H;定时器初值 MOV TH1 ,#0F3H;8位重装值

SETB TR1;启动定时器1 MOV SCON ,#50H;设置为方式1,;REN=1 MOV R0 ,#20H;发送数据区首址 MOV R1 ,#40H;接收数据取首址 ACALL SOUT;先输出一个字符 SETB ES SETB EA SJMP $;等待中断 中断服

ORG 0023H;串行口中断入口

AJMP SBR1;转至中断服务程序 ORG 0100H SBR1: JNB RI ,SEND;TI=1,为发送中断 ACALL SIN;RI=1,为接收中断 SJMP NEXT;转至统一的出口 SEND: ACALL SOUT;调用发送子程序 NEXT: RETI;中断返回

发送子程序

SOUT: CLR TI MOV A ,@R0;取发送数据到A MOV C ,P;奇偶标识赋予C CPL C;奇校验

INC R0;修改发送数据指针 MOV SBUF ,A;发送ASCII码 RET;返回 接收子程序 SIN: CLR RI MOV A ,SBUF;读出接收缓冲区内容 MOV C ,P;取出校验位 CPL C;奇校验

ANL A ,#7FH;删去校验位

MOV @R1 ,A;读入接收缓冲区

INC RI;修改接收数据指针 RET;返回

在主程序中已初始化REN=1,则允许接收。以上程序基本上具备了全双工通信的能力,但不能说很完善。例如,再接收子程序中,虽然检验了奇偶校验位,但没有进行出错处理;另外,发送和接收数据区的范围都很有限,也不能满足实际需要。但有了一个基本的框架之后,逐渐完善还是可以做到的。

例7-5:采用查询方式由串行口发送带奇偶校验位的数据块。

解:本理由内部RAM单元20H-3FH取出ASCII码数据,在最高位上加奇偶校验位后由串行口发出。采用8位异步通信方式,波特率为1200b/s,fosc=11.059MHz。

由要求可知,应把串行口设置为方式1,采用定时器1模式2作为波特率发生器,预置值(TH1)=0E8H。

程序清单: 主程序;

MOV TMOD ,#20H;设置定时器1为模式2 MOV TL1 ,#0E8H;初值,波特率为1200b/s MOV TH1 ,#0E8H SETB TR1;启动T1运行

MOV SCON ,#01000000B;设置串行口为方式1 MOV R0 ,#20H MOV R7 ,#32;数据块长度 LOOP: MOV A ,@R0 ACALL SP-OUT JNB P ,ERROR;传输出错处理,由SP-OUT中“CPL C”结果决定

INC R0 DJNZ R7 ,LOOP „„

串行口发送子程序(奇校验);

SP-OUT: MOV C ,PSW.0;设置奇校验位,校验位P=1为奇校验

CPL C;奇校验(无此指令位偶校验)MOV ACC.7 ,C;ACC.7补0或1 MOV SBUF ,A;启动串行口发送过程

CLR TI;清TI标志,允许在发送 RET ERROR:(略)

例7-6:由串行口接收带奇偶校验位的数据块。

解:采用查询方式,本例与上例相呼应,接收器把接收到的32B数据存放在20H-30H单元内,波特率同上,若奇偶校验出错则置进位位为1。

程序清单: 主程序;

MOV SCON ,#01010000B;设串口方式1,允许接收

MOV TMOD ,#20H;设置定时器T1为模式2 MOV TL1 ,#0E8H;初值,波特率为1200b/s MOV TH1 ,#0E8H SETB TR1;启动T1运行

MOV R0 ,#20H MOV R7 ,#32;数据块长度 LOOP: ACALL SP-IN;调接收一帧子程序

JC ERROR;由SP-IN中“CPL C”结果决定 MOV @R0 ,A;存放接收的数据 INC R0 DJNZ R7 ,LOOP „„

接收一帧子程序;

SP-IN: JNB RI ,$;RI由硬件置位

CLR RI;软件清除RI

MOV A ,SBUF

MOV C ,P;检查奇校验位

CPL C;置C为主程序“JC ERROR”用

ANL A ,#7FH;去掉奇校验位

RET ERROR:(略)

例7-7:利用串行口和堆栈技术发送字符串常量。解:

上面两个例子中,发送和接收的都是一些变量数据,且存放在内部RAM单元中。现说明如何利用堆栈技术发送存放在程序存储器内的字符串常量。

下面的例子中,这些字符串是发送给CRT终端的,以回车符(CR)和换行符(LF)开始,以换码符(ESC)为结尾。下面是程序片断:

CR EQU 0DH;ASCII回车符 LF EQU 0AH;ASCII换行符 ESC EQU 1BH;ASCII换码符 „„

MOV TMOD ,#20H;设置定时器T1为模式2 18 MOV TL1 ,#0FDH;设波特率位9600b/s ;(fosc=11.059MHz)MOV TH1 ,#0FDH SETB TR1;启动T1运行 MOV SCON ,#01000000B;设置串行口方式1 ACALL XSTRING DB CR ,LF DB ‘NU&BIAA’;字符串常量 DB ESC „„

XSTRING: POP DPH;把第1个字符的地址装入DPTR POP DPL XSTR-1: CLR A;设偏移量为零 MOVC A ,@A+DPTR;取第1个字符 XSTR-2: MOV SBUF ,A;启动一帧发送过程 JNB TI ,$;等待发送一帧完 CLR TI INC DPTR;指向下一字符 CLR A;偏移量为0 MOVC A ,@A+DPTR;取下一字符

CJNE A ,#ESC ,XSTR-2;读到ESC符时,;停止发送 MOV A ,#1 JMP @A+DPTR;返回执行ESC符后 ;的一条指令,即接着

;执行背景程序

2、串行口方式1的发送和接收

说明:程序中采用了“ACALL XSTRING”指令,而实际上由XSTRING开始的程序段形式上并不构成一个子程序,因为子程序,因为子程序应由RET作为结尾。

采用ACALL指令的目的在于利用子程序调用协议,即执行调用指令后,把一个单元(存放常量CR)的地址压入了堆栈。

这样,XSTRING段的第1,2条指令执行后,就把放置字符常量CR的单元地址置入DPTR了。ESC后一个单元应是背景程序中送完字符串后要执行的那条指令,故执行完XSTRING程序段的最后2条指令,将继续执行背景程序。

3、串行口方式

2、方式3的发送和接收

串行口方式 2与方式 3基本一样(只是波特率设置不同),接收/发送 11位信息:开始为l位起始位(0),中间8位数据位,数据位之后为1位程控位(由用户置SCON的TB8决定),最后是1位停止位(1)。只比方式l多了一位程控位。

例7-8:用第9个数据位作奇偶校验位,编制串行口方式2的发送程序。解:设计一个发送程序,将片内RAM 50H~5FH中的数据串行发送;串行口设定为方式2状态,TB8作奇偶校验位。在数据写入发送缓冲器之前,先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用。

方式2发送程序流程图如图7-19所示。

程序清单如下:

TRT: MOV SCON ,#80H;方式2设定

MOV PCON ,#80H;取波特率为fosc/32 MOV R7 ,#10H;数据长度10H→R7 LOOP: MOV A ,@R0;取数据→A MOV C ,PSW.0;P→TB8 MOV TB8 ,C MOV SBUF ,A;数据→SBUF,启动发送 WAIT: JBC TI ,CONT;判断发送中断标志

SJMP WAIT CONT: INC R0 DJNZ R7 ,LOOP RET 例7-9 编制一个串行口方式2接收程序,并核对奇偶校验位。

解:根据上面介绍的特点,在方式

2、方式3的发送过程中,将数据和附加在TB8中的奇偶位一块发向对方。因此,作为接收的一方应设法取出该奇偶位进行核对,相应的接收程序段为:

RRR: MOV SCON ,#90H;选方式2,并允许接收(REN=1)LOOP: JBC RI ,RECEIV;等待接收数据并清RI SJMP LOOP RECEIV: MOV A ,SBUF;将接收到的字符取出后,送到ACC。注意,;传送指令影响PSW,产生接收端的奇偶值 JB PSW.0 ,ONE;判断接收端的奇偶值

JB RB8 ,ERR;判断发送端的奇偶值

SJMP RIGHT ONE: JB RB8 ,ERR RIGHT: „„;接收正确

„„

ERR: „„ ;接收有错

当接收到一个字符时,从SBUF转移到ACC中时会产生接收端的奇偶值,而保存在RB8中的值为发送端的奇偶值,两个奇偶值应相等,否则接收字符有错。发现错误要及时通知对方重发。

例7-10:编制一个发送程序,将片内RAM中50H—5FH的数据串行发送。串行口设定为工作方式2,TB8作奇偶校验位。

解:在数据写入发送SBUF之前,先将数据的奇偶标志P写入TB8,此时,第9位数据便可作奇偶校验用。可采用查询和中断两种方式发送。

(1)采用查询方式的程序段

ORG 0000H AJMP MAIN;上电,转向主程序

ORG 0100H;主程序

MAIN: MOV SCON ,#80H;设工作方式2 MOV PCON ,#80H;取波特率为fosc/32 MOV R0 ,#50H;首址50H送R0 MOV R7 ,#10H;数值长度送R7 LOOP: MOV A ,@R0;取数据

MOV C ,PSW.0;P→C MOV TB8 ,C;奇偶标志送TB8 MOV SBUF ,A;发送数据 WAIT: JBC TI ,CONT AJMP WAIT;等待中断标志TI=1 CONT: INC R0 DJNZ R7 ,LOOP;数值尚未发送完,继续发送下一个数据

SJMP $ END(2)采用中断方式的程序段 ORG 0000H AJMP MAIN;上电,转向主程序 ORG 0023H;串行口的中断入口地址 AJMP SERVE;转向中断服务程序 ORG 0100H;主程序 MAIN: MOV SCON ,#80H MOV PCON ,#80H MOV R0 ,#50H MOV R7 ,#0FH SETB ES;允许串行口中断 SETB EA;CPU允许中断 MOV A ,@R0 MOV C ,PSW.0;P→C MOV TB8 ,C MOV SBUF ,A;发送第一个数据 SJMP $ SERVE: CLR TI;清除发送中断标志 INC R0;修改数据地址 MOV A ,@R0 MOV C ,PSW.0;P→C MOV TB8 ,C MOV SBUF ,A;发送数据

DJNZ R7 ,ENDT;判断数据块发送完否

;若未发 送完,则转ENDT CLR ES;若发送完,则禁止串行口中断 ENDT: RETI;中断返回 END 例7-11:编制一个接收程序,将接收的16B数据送入片内RAM的5OH—5FH单元中。设串行口工作于方式 3,波特率为2400b/s。

解:方式3为11位异步通信方式,波特率取决于TI的溢出率。查 表7-2可知,当晶振为11.059MHz,波特率为2400b/s时,可取SMOD=0。

源程序如下:

MAIN: MOV TMOD ,#20H;设TI工作于模式2 MOV TH1 ,#0F4H;赋循环计数初值 MOV TL1 ,#0F4H;赋计数值

SETB TR1;启动定时器TI MOV R0 ,#50H;首地址送R0 MOV R7 ,#10H;数据长度送R7 MOV SCON ,#0D0H;串行口工作与方式3,可接收 MOV PCON ,#00H;设SMOD=0 WAIT: JBC RI ,PR1;接收完一帧数据,清RI,转PR1 SJMP WAIT;否则等待 PR1: MOV A ,SBUF;读入数据 JNB P ,PNP;P=0,转PNP JNB RB8 ,PER;P=1,RB8=0,转出错处理 SJMP RIGHT PNP: JB RB8 ,PER;P=0,RB8=1,转出错处理 RIGHT: MOV @R0 ,A;数据送内存

INC R0;修改地址指针

DJNZ R7 ,WAIT;数据未接收完,继续接收下一个数据 CLR PSW.5;置正确接收完毕标志F0=0 RET PER: SETB PSW.5 RET 22 7.3 RS-232C标准接口总线及串行通信硬件设计

前面介绍了有关串行通信的基本知识及单片机的串行口结构。下面介绍PC机与单片机间串行通信的硬件和软件设计。

在工业自动控制、智能仪器仪表中,单片机的应用越来越广泛。随着应用范围的扩大以及根据解决问题的需要,对某些数据要做较复杂的处理。由于单片机的运算功能较差,对数据进行较复杂的处理时,往往需要借助计算机系统。因此,单片机与PC机进行远程通信更具有实际意义。利用89C51单片机的串行口与PC机的串行口COM1或COM2进行串行通信,将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理;或者实现PC机对远程前沿单片机进行控制。

在实现计算机与计算机、计算机与外设间的串行通信时,通常采用标准通信接口、这样就能很方便地把各种计算机、外部设备、测量仪器等有机地连接起来,进行串行通信。RS-232C是由美国电子工业协会(EIA)正式公布的,在异步串行通信中应用最广的标准总线(C表示此标准修改了三次)。它包括了按位串行传输的电气和机械方面的规定,适用于短距离或带调制解调器的通信场合。为了提高数据传输率和通信距离,EIA又公布了RS-422,RS-423和RS-485串行总线接口作准。

7.3.1 RS-232C标准接口总线

ELA RS-232C是目前最常用的串行接口标准,用于实现计算机与计算机之间、计算机与外设之间的数据通信。

该标准的目的是定义数据终端设备(DTE)之间接口的电气特性。一般的串行通信系统是指微机和调制解调器(modem),如图7-20。调制解调器叫数据电路终端设备(简称DCE)。RS-232C提供了单片机与单片机、单片机与PC机间串行数据通信的标准接口。通信距离可达到 15 m。

RS-232C接口的具体规定如下:

(l)范围

RS-232C标准适用于DCE和 DTE间的串行二进制通信,最高的数据速率为 19.2 kb/s。如果不增加其他设备的话,RS-232C标准的电缆长度最大为15 m。

RS-232C不适于接口两边设备间要求绝缘的情况。(2)RS-232C的信号特性

为了保证二进制数据能够正确传送,设备控制准确完成,有必要使所用的信号电平保持一致。为满足此要求,RS-232C标准规定了数据和控制信号的电压范围。由于RS-232C是在TTL集成电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,规定+3V—15V之间的任意电压表示逻辑0电平,-3V—15V之间的任意电压表示逻辑1电平。(3)RS-232C接口信号及引脚说明

表7-3给出了RS-232C串行标准接口信号的定义以及信号分类。串行通信信号引脚分为两类: 一类为基本的数据传送信号引脚,另一类是用于MODEM控制的信号引脚。

①基本的数据传送信号

基本的数据传送信号引脚有TXD,RXD,GND 3个。

TXD为数据发送信号引脚。数据由该脚发出,送上通信线,在不传送数据时,异步串行通信接口维持该脚为逻辑1。

RXD为数据接收信号引脚。来自通信线的数据从该引脚进入。在无接收信号时,异步串行通信接口维持该脚为逻辑1。

GDN为地信号引脚。GND是其他引脚信号的参考电位信号。

“在零调制解调器”连接中,最简单的形式就是只使用上述3个引脚,如图7-21。其中,收发端的TXD与RXD交错相连,GND与GND相连。

②MODEM控制(握手)信号引脚

从计算机到MODEM的信号引脚包括DTR和RTS两个: DTR信号引脚用于通知MODEM,计算机已经准备好。RTS信号引脚用于通知MODEM,计算机请求发送数据。

从MODEM到计算机的信号包括DSR,CTS,DCD,RI共4个。DSR信号引脚用于通知计算机,MODEM已经准备好。

CTS信号引脚用于通知计算机,MODEM可以接收传送数据。DCD信号引脚用于通知计算机,MODEM已与电话线路连接好。RI信号引脚为振铃指示,用于通知计算机有来自电话网的信号。近年的RS-232C接口都是采用9针的连接器,(25针中有很多引脚是无意义的),如图7-22所示。

7.3.2信号电气特性与电平转换

1.电气特性

为了增加信号在线路上的传输距离和提高抗干扰能力,RS-232C提高了信号的传输电平。该接口采用双极性信号、公共地线和负逻辑。

使用RS-232C,数据通信的波传率允许范围为0b/s—20kb/s。在使用 19200b/s进行通信时,最大传送距离在 20 m之内。降低彼特率可以增加传输距离。

2.电平转换

RS-232C规定的逻辑电平与一般微处理器、单片机的逻辑电平是不一致的。因此,在实际应用的,必须把微处理器的信号电平(TTL电平)转换为RS-232C电平,或者对两者进行逆转换。这两种转换是通过专用电平转换芯片实现的。

MAX232、MAX202和早期的MC1488,75188等芯片可实现TTL→RS-232C的电平转换;MC1489,75189等芯片可实现RS-232C→TTL的电平转换。

MC1488,MC1489的电路结构与引脚排列见图7-23。

图7-23 MC1488,MC1489的电路结构与引脚排列

MC1488由3个“与非”门和1个反相器构成。Vcc可接+15V或+12V,VEE可接-15V或-12V,输入为TTL电平,输出为RS-232C电平。

MC1489由4个反相器组成。Vcc接+5V,每个反相器都有一个控制端,它可接到电源电压上,用以调整输入的门限特性,也可通过一滤波电容接地。

单片机的串行口通过电平转换芯片所组成的RS-232C标准接口电路如图7-24所示。

图7-24 RS-232C标准接口电路 7.3.3单片机与PC机通信的接口电路

利用PC机配置的异步通信适配器,可以很方便地完成IBM-PC系列机与MCS-51单片机的数据通信。

PC机与89C51单片机最简单的连接是零调制三线经济型,这是进行全双工通信所必须的最少数目的线路。

由于89C51单片机输入、输出电平为TTL电平,而IBM-PC机配置的是RS-232C标准串行接口,二者的电气规范不一致,因此,要完成PC机与单片机的数据通信,必须进行电平转换。1.MAX232芯片简介

MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的+10V电压。所以,采用此芯片接口的串行通信 25 系统只需单一的+5V电源就可以了。对于没有+12V电源的场合,其适应性更强。加之其价格适中,硬件接口简单,所以被广泛采用。

MAX232芯片的引脚结构如图7-25所示。

图7-25 MAX232芯片引脚图

MAX232芯片的典型工作电路如图7-26所示。

图7-26 MAX232典型工作电路图

图7-26中上半部分电容C1,C2,C3,C4及V+,V-是电源变换电路部分。

在实际应用中,器件对电源噪声很敏感。因此,VCC必须要对地加去耦电容C5,其值为0.lμF。电容C1,C2,C3,C4取同样数值的钽电解电容1.0μF/16V,用以提高抗干扰能力,在连接时必须尽量靠近器件。

下半部分为发送和接收部分。实际应用中,T1IN,T2IN可直接接TTL/CMOS电平的MCS-51单片机的串行发送端 TXD;R1OUT,R2OUT可直接接TTL/CMOS电平的MCS-51单片机的串行接收端RXD;T1OUT,T2OUT可直接接PC机的 RS-232串口的接收端RXD;R1IN,R2IN可直接接PC机的RS-232串口的发送端TXD。

2.采用 MAX232芯片接口的 PC机与 MCS-5l单片机串行通信接口电路

现从MAX232芯片中两路发送接收中任选一路作为接口。要注意其发送、接收的引脚要对应。如使T1IN接单片机 的发送端TXD,则PC机的RS-232的接收端RXD一定要对应接T1OUT引脚。同时,R1OUT接单片机的RXD引脚,PC机的 RS-232的发送端TXD对应接R1IN引脚。其接口电路如图7-27所示。

图7-27采用 MAX232接口串行通信电路

7.4 89C51与89C51点对点异步通信

7.4.1通信协议

要想保证通信成功,通信双方必须有一系列的约定,比如:

作为发送方,必须知道什么时候发送信息,发什么,对方是否收到,收到的内容有没有错,要不要重发,怎样 通知对方结束等等。作为接收方,必须知道对方是否发送了信息,发的是什么,收到的信息是否有错,如果有错怎 样通知对方重发,怎样判断结束等。

这种约定就叫做通信规程或协议,它必须在编程之前确定下来。要想使通信双方能够正确交换信息和数据,在 协议中对什么时候开始通信,什么时候结束通信,何时交换信息等等都必须作出明确的规定。只有双方遵守这些规 定才能顺利地进行通信。

7.4.2波特率设置

在串行通信中,一个重要的指标是波恃率,它反映了串行通信的速率,也反映了对于传输通道的要求。波特率越高,要求传输通道的频带越宽。一般异步通信的波特率在 50 b/s—600 b/s之间。

由于异步通信双方各用自己的时钟源,要保证捕捉到的信号正确,最好采用较高频率的时钟。一般选择时钟频率比波特率高16倍或64倍。若是时钟频率等于波特率,则频率稍有偏差便会产生接收错误。

在异步通信中,收、发双方必须事先规定两件事:

一是字符格式,即规定字符各部分所占的位数是否采用奇偶校验以及校验的方式(偶校验还是奇校验)等通信协议;

二是采用的波特率以及时钟频率和波特率的比例关系。

89C51的串行通信的波特率(由图7-16可知)由定时器T1的溢出率获得(仅指串行口方式

1、方式3时),当串行口工作于方式1或方式3时,波特率为

其中,k为定时器1的位数

定时器模式0,k=13;

定时器模式1,k=16;

定时器模式2和摸式3.k=8。

若定时器T1工作于模式1,采用11.059MHz的晶振,要求利用定时器1产生1200b/s的波特率,则

令SMOD=0,可算得初值为

那么,TH1的初值为0FFH,TL1的初值为0E8H。有关的程序如下:

MAIN: SETB PT1;设定T1为高中断优先级

SETB EA;开放CPU中断

SETB ET1;开放定时器T1中断

MOV TMOD ,#01H;置定时器T1为莫时1 MOV TL1 ,#0E8H;装入初值

MOV TH1 ,#0FFH MOV PCON ,#00H;SMOD=0

SETB TR1;启动T1运行

„„

如果串行口工作于方式1,T1作为波特率发生器,需在T1溢出中断服务程序中重装初值。T1溢出中断服程序:

MOV TL1 ,#0E8H;重新装入初值 MOV TH1 ,#0FFH RETI;中断返回

由于T1模式2是定时器自动重装载的操作模式,当定时器T1工作于模式2时,可直接用作串行口的波特率发生器。

与上例相同,算得重装载值

有关程序为:

MOV TMOD ,#20H;置T1为模式2 MOV TL1 ,#0E8H;装入初值 MOV TH1 ,#0E8H MOV PCON ,#00H;SMOD=0 SETB TR1;启动T1运行

MOV SCON ,#01000000B;设置串行口为方式1 „„

除非波特率很低,一般都采用T1模式2。因为当T1溢出后,参数自动装入,可避免不必要的中断请求。

在第二节中,表7-2给出了晶振fosc=6MHz或12MHz时,常用波特率和定时器的初装值。但要注意,表中的初装值和波特率之间是有一定误差的。

若晶指fosc=11.095MHz,设置波特率为9600b/s,则定时器T1的初装值为0FDH。设定时器操作于模式2,SMOD=0。

若要求比较准确的波特率,只能靠调整单片机的时钟频率fosc来得到。

7.4.3通信程序举例

例7-12:设甲机发送,乙机接收。串行接口工作于方式3(每帧数据为11位,第9位用于奇偶校验),两机均选用 6.0000MHz的振荡频率,波特率为 24O0 b/s。通信的功能为:

甲机:将片外数据存储器4000H—407FH单元的内容向乙机发送,每发送一帧信息,乙机对接收的信息进行奇偶校验。此例对发送的数据作偶校验,将P位值放在TB8中。若校验正确,则乙机向甲机回发“数据发送正确”的信号(例中以00H作为应答信号)。甲机收到乙机“正确”的应答信号后再发送下一个字节。若奇偶校验有错,则乙机发出“数据发送不正确”的信号(例中以FFH作为应答信号)。甲机接收到“不正确”应答信号后,重新发送原数据,直至发送正确。甲机将该数据块发送完毕后停止发送。

乙机:接收甲机发送的数据,并写入以4000H为首址的片外数据存储器中。每接收一帧数据,乙机对所接收的数据进行奇、偶校验,并发出相应的应答信号,直至接收完所有数据。解:

(1)计算定时器计数初值X 29 将已知数据fosc=6MHZ,波特率=2400b/s代人,得

取SMOD=0时,X=249.49。因取整数误差过大,故设SMOD=1,则X=242.98≈243=F3H。因此,实际波特率=2403.85 b/S。

(2)能实现上述通信要求的甲、乙机的流程图如图7-28,图7-29所示。

图7-28 甲机发送流程

图7-29 已机发送流程

(3)源程序

①甲机 主程序 ORG 0000H LJMP MAIN;上电,转向主程序 ORG 0023H;串行口的中断入口地址 LJMP SERVE1;转向甲机中断服务程序 ORG 2000H;主程序

MAIN: MOV TMOD ,#20H;设T1工作与模式2 MOV TH1 ,#0F3H;赋计数初值 MOV TL1 ,#0F3H;赋计数值

SETB TR1;启动定时器T1 MOV PCON ,#80H;设SMOD=1 MOV SCON ,#0D0H;置串行口方式3,允许接收 MOV DPTR ,#4000H;置数据块首址 MOV R0 ,#80H;置发送字节数初值 SETB ES;允许串行口中断 SETB EA;CPU开中断

MOVX A ,@DPTR;取第一个数据发送 MOV C ,P MOV TB8 ,C;奇偶标志送TB8 MOV SBUF ,A;发送数据 SJMP $;等待中断 中断服务程序

SERVE1: JBC RI ,LOOP;是接收中断,清除RI,转入接收

;乙机的应答信息

CLR TI;是发送中断,清除此中断标志 SJMP ENDT LOOP: MOV A ,SBUF;取乙机的应答信息 CLR C SUBB A ,#01H;判应答信号是#00吗? JC LOOP1;是#00H,发送正确

;(#00H-#01H),C=1,转LOOP1 MOVX A ,@DPTR;否则甲机重发 MOV C ,P MOV TB8 ,C MOV SBUF ,A;甲机重发原数据 SJMP ENDT LOOP1: INC DPTR;修改地址指针,准备发送下 一个数据 MOVX A ,@DPTR MOV C ,P MOV TB8 ,C MOV SBUF ,A;发送

DJNZ R0 ,ENDT;数据块未发送完,返回继续发送 CLR ES;全部发送完,禁止串行口中断 ENDT: RETI;中断返回 END ①乙机主程序;

ORG 0000H LJMP MAIN;上电,转向主程序 ORG 0023H;串行口的中断入口地址 LJMP SERVE2;转向乙机中断服务程序 ORG 2000H;主程序

MAIN: MOV TMOD ,#20H;设T1工作与模式2 MOV TH1 ,#0F3H;赋计数初值 MOV TL1 ,#0F3H;赋计数值

SETB TR1;启动定时器T1 MOV PCON ,#80H;设SMOD=1 MOV SCON ,#0D0H;置串行口方式3,允许接收 MOV DPTR ,#4000H;置数据区首址 MOV R0 ,#80H;置接收字节数初值 SETB ES;允许串行口中断 SETB EA;CPU开中断 SJMP $;等待中断 中断服务程序:

SERVE2: JBC RI ,LOOP;是接收中断,清除此中断 标志,转LOOP(接收)CLR TI;是发送中断,清除此中断 标志,中断返回 SJMP ENDT LOOP: MOV A ,SBUF;接收(读入)数据 MOV C ,P;奇偶标志送C 32 JC LOOP1;为奇数,转LOOP1 ORL C ,RB8;为偶数,检测RB8 JC LOOP2;奇偶校验错,转LOOP2 SJMP LOOP3 LOOP1: ANL C ,RB8;检测RB8 JC LOOP3;奇偶校验正确,转LOOP3 LOOP2: MOV A ,#0FFH MOV SBUF ,A;发送“不正确”应答信号 SJMP ENDT LOOP3: MOVX @DPTR ,A;存放接收数据 MOV A ,#00H MOV SBUF ,A;INC DPTR;DJNZ R0 ,ENDT;CLR ES;ENDT: RETI;END 发送“正确”应答信号 修改数据区指针

数据块未接收完,返回

所有数据接收完毕,禁止串行口中断中断返回 33

7.5 89C51与PC机间通信软件的设计

将一台IBM-PC机和若干台89C51单片机构成小型分散控制或测量系统,是目前微计算机应用的一大趋势。

在这样的系统中,以89C51芯片为核心的智能式测控仪表(作为从机)既能完成数据采集、处理和各种控制任务,又可将数据传送给PC机(作为主机),PC机将这些数据进行加工处理或显示、打印,同时将各种控制命令送给各个从机,以实现集中管理和最优控制。显然,要组成这样的系统,首先要解决PC机与各单片机之间的数据通信问题,这是一个多机通信问题。在解决该问题之前,先来讨论一下PC机与一台89C51之间点对点(亦即双机)通信的软件设计。

7.5.1 PC机通信软件设计

1.通信协议

波特率:1200b/s;

信息格式:8位数据位,1位停止位,无奇偶检验;

传送方式:PC机采用查询方式收发数据;89C51采用中断方式接收,查询方式发送; 校验方式:累加和校验;

握手信号:采用 软件握手。发送方在发送之前先发一联络信号(用“?”号的ASCII码,接收方接到“?”号后回送一个“·”号作为应答信号),随后依次发送数据块长度(字节数),发送数据,最后发送校验和。收方在收到发送方发过来的校验和后与自己所累加的校验和相比较,相同则回送一个“0”,表示正确传送并结束本次的通信过程;若不相同则回送一个“F”,并使发送方重新发送数据,直到接收正确为止。2.PC机发送文件子程序

首先介绍通过串口发送一个文件的函数sendf()。规定欲发送的这个文件存在当前盘上,并且为了便于说明问题,只传送总字节小于256个字符的文件。

sendf()函数程序流程图如图7-30所示。

图7-30 PC机发送文件子函数sendf()流程图 PC机发送文件子函数sendf()程序清单如下:

3、PC机接收文件子程序

接收函数receivef()采用查询方式从串口接收一个总字节数小于256个字符的文件,接收的文件也存于当前盘上。

接收文件子函数receivef()的程序流程图如图7-31所示。

图7-31 PC机接收文件子函数receivef()流程图

4、PC机主程序(函数)

在有了上述发送和接收文件两个子函数之后,主函数的编写就非常简单了。主函数的工作只是在完成串口初始化后,根据键入的命令来决定是发送文件还是接收文件。

主函数流程图如图7-32所示。

图7-32 PC机主函数流程图

PC机主函数如下:

这里采用的是带参主函数main(int argc,char *argv[ ])。其中,argc是一个整型变量,argv[ ]是一个字符型指针数组。利用main函数的参数可以使主程序从系统得到所需数据(也就是说带参函数可直接从DOS命令行中得到参数值,当然,这些值是字符串)。当程序运行时(在DOS下执行.EXE文件),可以根据输入的命令行参数进行相应的处理。

例如,执行程序mypro时,若要从当前盘上将名为f1.c的文件从串口发送出去,需键入下述命令:

mypro s f1.c 其中,mypro是源文件mypro.c经编译连接后生成的可执行文件 mypro.exe。键入命令:

mypro r f2.c 可以从串口接收若干字符,并写入当前盘上名为f2.c的文件中去。

7.5.2 89C51通信软件设计

1、单片机查询发送子程序

本程序将片外RAM从1000H开始的小于256B的数据从串行口发送出去,发送的数据字节数在R7中,用R6作累加和寄存器。程序流程图如图7-33所示。

图7-33 单片机查询发送子程序流程图

单片机查询发送子程序如下:

SEND: MOV A,#3FH MOV SBUF,A JNB TI,$ 37 CLR TI;发‘?’号,即3FH JNB RI,$ CLR RI MOV A,SBUF CJNE A,#2EH,SEND;应答信号是‘.’,即

; 2EH,则发字节数 MOV A,R7 MOV R3,A;暂存总字节数 MOV SBUF,A JNB TI,$ CLR TI MOV R6,#00H MOV DPTR,#1000H SEND1: MOVX A,@DPTR MOV SBUF,A;发送一个字符 JNB TI,$ CLR TI ADD A,R6;计算校验和 MOV R6,A INC DPTR DJNZ R7,SEND1;计数器(R7)不为零则转SEND1 MOV A,R6 MOV SBUF,A JNB TI,$ CLR TI;发送校验和 MOV A,SBUF CJNE A,#46H,SEND2;如收到应答是‘F’,即

;46H,则重发数据 RET SEND2: MOV DPTR,#1000H MOV R6,#00H MOV A,R3 MOV R7,A AJMP SEND1

2、单片即接收中断服务子程序

在中断服务子程序中,为了区别所接收的信号是联络信号还是字节数、是数据还是校验和,需要设立不同的标志位,为此在可位寻址的RAM中设定:

位地址

00H 接收联络信号标志位 01H 接收字节数标志位 02H 接收数据标志位 03H 接收文件结束标志位

在初始化时,这些位均为0。程序流程图如图7-34所示。

图7-34 单片机接收中断服务子程序流程图

在中断服务子程序中,将接收到的字节数存入R7中,接收的数据存入片外RAM从1000H开始的单元中。

单片机接收中断服务子程序如下: RECE: CLR ES CLR RI JB 00H,RECE1 MOV A,SBUF CJNE A,#3FH,RECE2;收的不是‘?’号则 退出 MOV A,#2EH MOV SBUF,A JNB TI,$ CLR TI;发送应答信号‘.’, 即2EH SETB 00H SETB ES 39 RETI RECE2: MOV A,#24H MOV SBUF,A JNB TI,$ CLR TI;发送应答信号‘$’,即24H SETB ES RETI RECE1: JB 01H,RECE4 MOV A,SBUF;接收字节数 MOV R7,A MOV R3,A;暂存总字节数 SETB 01H SETB ES RETI RECE4: JB 02H,RECE5 MOV A,SBUF;接收一字符 MOVX @DPTR,A;存入外RAM中 ADD A,R6 MOV R6,A INC DPTR DJNZ R7,RECE7 SETB 02H RECE7: SETB ES RETI RECE5: MOV A,SBUF CJNE A,06H,RECE8;06H为R6的字节地址 MOV A,#4FH;校验和不正确,重发 数据 MOV SBUF,A JNB TI,$ CLR TI;校验正确发‘0’,即4FH SETB 03H SETB ES RETI RECE8: MOV DPTR,#1000H MOV R6,#00H MOV A,R3 MOV R7,A MOV A,#46H MOV SBUF,A JNB TI,$ CLR TI;校验不正确,发‘F’,即46H CLR 02H SETB ES RETI

3、单片机主程序

主程序流程图如图7-35所示。

图7-35 单片机的主程序流程图

单片机主程序如下: ORG 0000H AJMP MAIN ORG 0023H AJMP RECE ORG 0040H MAIN: MOV SP,#60H MOV SCON,#50H;串口初始化 MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#00H;设置波特率 SETB TR1;启动定时器1 SETB EA;开放中断 SETB ES;开放串行中断 L3: CLR 00H CLR 01H CLR 02H CLR 03H MOV R6,#00H MOV DPTR,#1000H L2: JB 03H,L1 SJMP L2 L1: ACALL SEND AJMP L3 41

7.6 PC机与多个单片机间通信

应用IBM-PC系列微机和多个单片机构成小型分布系统在一定范围内是最经济可行的方案,已被广泛采用。这种分布系统在许多实时工业控制和数据采集系统中,充分发挥了单片机功能强、抗干扰性能好、温限宽、面向控制等优点,同时又可以利用PC机弥补单片机在数据处理及交互性等方面的不足。在应用系统中,一般是以IBM-PC系列微机作为主机,定时扫描以单片机为核心的智能化控制器(即从机作为前沿机)以便采集数据或发送控制信息。在这样的系统中,智能化控制器既能独立完成数据处理和控制任务,又可以将数据传送给PC机。PC机则将这些数据形象地显示在 CRT上或通过打印机打印成各种报表,并将控制命令传送给各个前沿单片机,以实现集中管理和最优控制。下面将讨论PC机与多个单片机之间的通信问题。

7.6.1采用RS-232C标准总线通信

1、采用MAX232芯片的RS-232C接口的通信电路

PC机与多个单片机通信接口电路如图7-36所示。整个通信系统的硬件结构设计为主从式串行总线型。PC机串口给出的已是标准的RS-232C电平,而单片机则为TTL/CMOS电平。采用单一电源的MAX232芯片就可实现电平的转换和驱动。

图7-36多个单片机与PC机通信电路

2、多个单片机与PC机通信协议的约定

PC机和89C51单片机双向传送数据代码和功能代码。数据代码是通信过程必须传送的目的代码;功能代码是应答信号(如PC机要向单片机发数据,PC机允许单片机发数据,有误码重发等)以及表征数据特 征和数量的代码。

通信程序除具备前述的通信协议约定以外,还必须具有以下功能:(1)帧格式

PC机必须能够向单片机发送被寻呼的单片机站号(地址)、命令、字段、数据首地址长度、数据块及各种核验值。单片机必须能够向PC机发进自身站号(地址)、国据长度、国据块及校验值。

(2)差错检测

通信线的传输差错是不可避免的,通信系统必须具有识别这种差错的能力。例如,可以采用数据位累加法,即统计信息位中1的个数来进行差错检测,也可采用累加和校验法。(3)差错处理

每发送一数据块,仅当数据块接收正确时,才会发送一个响应帧;否则,回送出错信息,要求重发该数据块,直至被正确接收为止。为了防止系统出错引起撍浪鴶,最多只允许重发三次,否则转出错处理程序,显示系统出错。

我们把通信协议分为三段,即主机与从机的连接挂钩、握手阶段,发送(接收)阶段以及结束阶段。连接阶段主要是完成通信联络任务,主机发送从机的地址信号,从机接收到后如果与本机地址相符,回送应答信号,置SM2=0;否则不予理睬(SM2仍为1),实现主机与从机间的点对点通信。然后便可以开始发送或接收数据。在发送或接收数据过程中,选择校验方法,对数据的传输进行校验。结束阶段则是当通信系统出错或误码次数越限时宣告通信失败而结束 42 通信。

PC机的通信软件必须包括如下内容:

①根据用户的要求和通信协议规定,对 8250初始化,即设置波特率(1200 b/s)、数据位数(8位)、奇偶类型和停止位位数(l位)。需要指出的是,这里的奇偶校验位用作发送地址码或数据的特征值,而数据通信的校核采用累加和校验方法。

②确定数据传送方式。采用查询方式发送和接收。在发送地址或数据时,首先由输入指令检查发送保持寄存器是否为空,若空,则由输出指令将一个数据输出给8250,8250会自动依据初始化设置的要求把二进制数串行发送到串行通信线上。

在接收数据时,8250把串行数据转换成并行数据送到接收器的数据寄存器中,并把“接收数据准备好”信号放入状态寄存器中。计算机读到这个信号后,就可以用输入指令从接收器的数据寄存器中读入一个数据了。

③确定PC机为主机,所有单片机为从机。从机的地址码为0F1H—0F4H。下面给出查询方式的PC机通信主程序框图。如图7-37所示。

图7-37多个单片机与PC机通信主程序框图

PC机开始设置为地址传送方式。从0F1H地址码开始发送,然后接收地址回送码,如回送地址等于发送地址码,则说明与1号从机握手成功。继而可以设置为数据传送方式,开始与1号从机交换数据。传送数据结束后,又开始与2号从机(地址码0F2H)联络。如PC机发送从机地址后,接收回送地址码与发送地址码不等,则与此地址码的从机握手失败。继续与其他从机联络„„

④为了避免出现死循环,设置了按PC机任意键退出的功能。

4、单片机的通信软件

单片机的波特率要与PC机一致。定时器T1作为波特率发生器,设置为工作模式2。串口设置为工作方式3,数据的传送格式为11位,即1位起始位、8位数据位、1位停止位和作为数据/地址控制位的第9位。采用查询方式发送和接收数据。单片机在通信开始阶段,首先设置为传送地址方式,等待接收地址,只有当接收到本机的地址码时,才回送本机地址给PC机,以作为应答信号。

然后设置为传送数据方式,以便开始传送救据。其通信数据的约定要与PC机一致,即以什么样的数据为结束标志,多少位数据为一个数据块或多少位数据进行一次累加和校验。校验回送码为00H时表示发进正确,0FFH为错误,需要重发。重发的次数也要与PC机取得一致,不超过三次。

下面给出单片机查询方式通信的主程序。其程序框图如图7-38所示。4台从机的通信程序基本相同,不同之处只是地址码不同。

图7-38单片机查询方式通信的主程序

7.6.2采用RS-422A标准总线的通信系统

RS-422A标准是美国电气工业协会(EIA)公布的“平衡电压数字接口电路的电气特性”标准,是为改善RS-232C标准的电气特性,又考虑与RS-232C兼容而制定的。

RS-422A比RS-232C传输信号距离长、速度快,传输率最大为 10 Mb/s,在此速率下,电缆允许长度为 120 m;如采用较低传输速率,如在 90000 b/s时,最大距离可达1200 m。

RS-422A每个通道要用二相信号线,如果其中一根是逻辑1状态,另一根就为逻辑0。RS-422A电路由发送路、平衡连接电缆、电缆终端负载、接收器几部分组成。规定电路中只允许有一个发送器,可有多个接收器。因此,通常采用点对点通信方式。该标准允许驱动器输出为±(2V—6V),接收器可以检测到的输入信号电平可低到200mV。

目前,RS-422与TTL的电平转换最常用的芯片是传输线驱动器SN75174或MC3487和传输线接收器SN75175或MC3486,其内部结构及引脚如图7-39所示。

图7-39 RS-422电平转换芯片SN75174和SN75175 SN75174是具有三态输出的单片4差分线驱动器,其设计符合EIA标准RS-422A规范,适用于噪声环境中长总线线路的多点传输,采用+5V电源供电,功能上可与MC3487互换。

SN75175是具有三态输出的单片4差分接收器,其设计符合EIA标准RS-422A规范,适用于噪声环境中长总线线路上的多点总线传输,该片采用+5V电源供电,功能上可与MC3486互换。

这里主要讨论采用RS-422A标准总线实现上位机与多台前沿下位控制机之间的远距离通信。

分布式通信系统网络采用了主从式串行总线结构,如图7-40所示。所有下位控制机全部挂在上位PC机的串行通信RS-422A标准总线上,下位控制机之间不进行通信,只在上位机和下位机之间进行主从方式通信。

图7-40 控制网络系统结构图

PC机中一般都有一块RS-232串行通信板,该板完成串行数据转换和串行数据接收、发送的任务,采用RS-232C通信标准。这块板使用简单,不加调制解调器时,只用三条线即可完成通信功能。其不足之处是带负载能力差、通信范围小——不超过十几米,很难满足一般集散控 45 制系统的需要。

为了充分利用这块现有的串行接口板,并且进一步扩大通信范围,可制作一块RS-232/RS-422通信转接板,接在PC机RS-232串行总线和通信线路之间,这样就把通信标准从 RS-232C标准变成了RS-422A标准。RS-232/RS-422通信转接板电路如图7-40中虚线框内部分所示。

转接板中的MC1488和MC1489是实现RS-232标准通信的一对芯片。前者发送,完成TTL电平到RS-232标推电平的转换;后者接收,完成从RS-232标准电平到TTL电平的转换。MC3487和MC3486是实功RS-422标准通信的一对芯片。前者发送,把TTL电平变成RS-422标准电平;后者接收,将RS-422标准电平变成TTL电平。

通信标准改变以后,采用了平衡传输方式,带负载能力和抗干扰能力大大提高,通信距离可以达到 1200m以上,完全可以满足一般集散控制系统多机通信的要求。通信软件与前例大同小异。

一个实际的PC机RS-232/RS-422接口转接板电路如图7-41所示。

图7-41 PC机RS-232/RS-422接口转接板电路

当PC机发送数据时,首先由RS-232口的请求发送信号RTS的1电平经MC1489→74LS05→光电隔离器到达75174的三态控制端,打开75174的三态门;发送的数据由TXD经MC1489→74LS05→光电隔离器到75174的输入端,经75174输出转换成双端输出的RS-422标准电平信号,从而完成了RS-232到RS-422的转换。

当PC及接收数据时,75175的三态控制端接高电平,三态门是常开的,75175双端输入(RXD+和RXD-)的信号变成单端输出到达74LS05→光电隔离器→MC1488输入给PC机RS-232口的RXD端,从而完成了RS-422标准的转换。

第三篇:单片机原理及接口技术课程设计指导书

长 沙学院

课程设计指导书(部)

级单片机原理及接口技术机电工程系机械设计制造及其自动化

年月日 课程设计名称系专班

课程名称:《单片机原理及接口技术》课程设计

课程编号:JX010146

主 笔 人:程立志

主 审 人:许焰

1、课程设计的目的通过《单片机原理及接口技术》课程设计,使学生初步具备以下能力:

1.1、加深对《单片机原理及接口技术》所学知识的理解;

1.2、掌握单片机内部资源的使用方法和步骤;

1.3、掌握单片机应用的环节和步骤;

1.4、进一步熟悉在proteus软件里进行硬件设计和编程调试;

1.5、能使用汇编语言或C语言编程环境Keil编写程序、编译、仿真和修改程序;

1.6、能初步判断分析单片机系统的简单故障;

1.7、能对自己的实践工作进行总结,具备编写实习报告书能力;

1.8、初步具备辩证思维和逻辑分析的能力;

1.9、培养学生热爱科学,实事求是的学风和创新意识、精神,合作精神。

2、课程设计的题目

单片机的应用领域非常广泛,就其基本的控制原理和实现方法无外乎是对一些常见的如:距离或位移(米)、重量(千克)、时间(秒)、电流或电压(安培)、温度(开尔文)、等物理量进行测量控制,鉴于单片机当前的应用状态和学员对其应掌握的程度,本次课程设计题目的设定主要是以贴近现实生活为主,提出了一些在教学、工业控制和科研等领域基本常见的课题,其目的是要让学员们拓宽视野,着重体会其学习基本的原理及控制编程基础的重要性,以期达到培养学员们的兴趣和今后再学习的愿望。

2.1、;LED流水灯控制设计:

拓展:广告灯的左移右移控制设计;汽车尾灯模拟控制设计;城市景观灯的控制设计;…

2.2、电子日历、数字钟设计:

拓展:智能晨起系统控制设计;智能全自动洗衣机控制设计;秒表/时钟计时器控制设计;…

2.3、数字温度计的控制设计:

拓展:新生儿恒温箱监控系统设计;多点温度的控制设计;传导系数测量仪的应用设计;…

2.4、16×16 点阵LED汉字显示设计:

拓展:机场、车站、码头、商场、银行、政务等公共服务场所信息指示牌设计;…

2.5、1602液晶显示屏显示设计:

拓展:机场、车站、码头、商场、银行、政务等公共服务场所信息指示牌设计;…

2.6、128×64点阵LED汉字显示设计:

拓展:机场、车站、码头、商场、银行、政务等公共服务场所信息指示牌设计;…

2.7、直流电机控制设计:

拓展:传送带单控与顺序控制设计;电子装配生产线部件移动控制设计;多层电梯控制设计;…

2.8、步进电机控制设计:

拓展:机械手动作行程控制设计;安防监控自动寻迹云台的控制设计;条码打印机的控制设计;…

2.9、AD/DA转换控制设计:

拓展:简易数字电压表设计;简易数字压力计设计;吊车悬臂角度的控制设计;超声波测距器的设计…

2.10、逻辑算法控制设计:

拓展:抢答器控制设计;交通灯设计;多层电梯控制设计;4×4 矩阵键盘计算器设计…

2.11、遥控设计:

拓展:无线电遥控升降系统控制设计、红外遥控升降系统控制设计、红外遥控多路开关控制设计;…

2.12、PWM方式控制设计:

拓展:直流电机调速控制设计;城市立交桥景观带的控制设计;…

2.14、电子琴设计;

拓展:报警发生器控制设计;函数信号发生器的设计;

3、课程设计内容(主要技术关键的分析、解决思路和方案比较等)

要求学生根据所选课题,结合实际工程应用情况参照以下几例给出的具体实现功能和控制参数完成课题的设计任务书。

3.1、简易数字电压表的设计

利用MCS-51系列单片机设计简易数字电压表测量0~5v的8路输入电压值,并在四位LED数码管上轮流显示或单路选择显示。测量最小分辨率为0.019V,测量误差约为±0.02V

3.2、秒表/时钟计时器的设计

秒表/时钟计时器要求使用六位LED数码显示管显示时、分、秒,以24(小时)计时方式。使用按键开关可实现时分调整、秒表/时钟功能转换功能。

3.3、电子日历的设计

电子日历上能显示阳历年,月,日,星期,时,分,秒和阴历年、月,使用按键开关可实现调整。

3.4、超声波测距器的设计

设计一个超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0.10-4.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。

3.5、DS18B20数字温度计的设计

利用89C51单片机、DS18B20温度传感器,制作数字温度计。要求测温范围为-50~110℃,精度误差在0.1℃以内,LED数码管直接显示测量温度值。

3.6、1602液晶显示屏设计

设计一个室内用1602液晶显示屏,要求在目测条件下LED显示屏个点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。

3.7、六路数字抢答器的设计

1)、抢答器同时供6名选手或6个代表队比赛,分别用6个按钮S0 ~ S5表示。

2)、设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3)、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

4)、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5)、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6)、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

3.8、机械手动作行程控制

1)、设“单步”、“单程”、“往返”、“连续”4个按钮及4个键值灯;

2)、设“左上”、“左下”、“右上”、“右下”4个电磁位置开关及4个指示灯。

3)、设“左上”为初始位置,根据不同的选择按钮,驱动相应的(3台)直流电机正反转,完成相应的行程动作。

3.9、三层楼电梯呼叫控制

1)、第一层只设“上”、第二层设“上”、“下”、第三层只设“下”共四个按钮;

2)、每层都设一个电磁位置开关,轿厢上下指示灯;共享一台直流电机正反转。

3)、电梯轿厢内设“1”、“2”、“3”三个楼层键及键位指示灯,轿厢上下指示灯,开关门指示灯,电梯根据当前层位和楼层选择按钮的先后顺序,决定向上或向下,电机以正反转时延2秒完成层间动作。

3.10、16×16 点阵LED汉字显示设计。

1)、点阵显示汉字“长沙大学机电系”;

2)、实现自定义滚动效果,如左滚屏,有滚屏,上、下卷帘等。

单片机的应用系统随着用途不同,它们的硬件和软件结构差别很大,但系统设计的方法和步骤基本上是相同的。一般包括总体设计、硬件设计、软件设计、仿真调试、固化程序、应用系统独立运行等步骤。

课程设计由于时间安排、学生水平、实验条件等诸方面的限制,仅要求学生完成仿真调试即可,同时根据实际情况,在试验箱上调试通过。

由于设计时间紧迫,不要在完成全部设计后再编写设计说明书。而应在设计过程中逐步完成。一开始不可能设计出满意的主程序框图。因此,总体设计部分在完成全部设计任务后再写。而硬件部分和软件部分可以在设计过程同步完成。

4、注意事项

4.1、充分调研相关文献,针对课题需要进行系统详细的论证,不能盲目生搬硬套,严谨抄袭;

4.2、以小组为单位(原则上是3人一组),小组内成员分工明确,各司其职,按照所分配的任务在规定的时间内合理的完成好。

4.3、课程设计报告要包括:设计功能要求,设计控制参数,硬件电路设计(元件选型,硬件电路布局),系统程序的设计(注意总结出现的问题、疑难以及解决的方法和思路,对以后的借鉴作用等),调试及性能分析,课程设计小结、控制源程序清单等;图包括设计方案框图、硬件原理图(要求有描述)、程序流程图等。

第四篇:《单片机原理与接口技术》课程设计教学大纲

《单片机原理与接口技术》课程设计教学大纲

课程编号:

课程英文名称:Course Design of Micro-controller Principle and Interface Technology 学时数:18

学分数:1 使用层次和专业:本科

电气工程及其自动化、电子信息工程、机械设计制造及其自动化等专业

一、课程设计的性质、目的

《单片机原理及接口技术》课程设计是在基本学完该课程之后,综合运用所学单片机知识,完成一个单片机应用系统设计,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础。

通过该课程设计,主要达到以下目的:

1、巩固和加深对单片机原理和接口技术知识的理解,使学生增进对单片机系统的感性认识,加深对单片机理论方面的理解,为顺利完成毕业设计打下基础。

2、使学生掌握对单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口和串行口通讯等,进一步深化和巩固所学基础理论、专业知识及实验技能,培养学生综合运用所学专业知识分析问题和解决问题的能力。

3、培养学生根据课题需要选学参考书籍、查阅手册和文献资料的能力,了解与课题有关的硬件元器件的工程规范,能按课程设计任务书的要求编写课程设计说明书,学会方案论证的比较方法,初步掌握工程设计的基本方法,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。使学生了解和掌握单片机应用系统的软、硬件设计过程、方法及实现,提高学生的技术应用能力,为以后设计和实现单片机应用系统打下良好基础。

4、这一环节对掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法,掌握单片机技术在生产实践中的应用,提高学生的工程实践能力、动手能力、创新能力,使学生树立正确的人生观,养成严谨、踏实的工作作风。

二、课程设计的内容

课程设计主要内容包括:理论设计、调试及写出总结报告等,其中理论设计又包括选择总体方案、硬件系统设计和软件系统设计。硬件设计包括单元电路、选择元器件及计算参数等;软件设计包括模块化层次结构图、程序流程图等。程序设计是课程设计的关键环节,通过调试,进一步完善程序设计,使之达到课题所要求的指标,使理论设计更接近于 1

实际产品。课程设计的最后要写出设计总结报告,把理论设计内容,调试的过程及性能指标的测试结果进行全面的总结,把实践内容上升到理论高度。

以下8个设计题目每组学生可任选一项: 题目一 智能交通灯控制系统设计

1、设计要求

(1)用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。

(2)A、B两车道交叉组成十字路口,A是主车道,B是支道。正常情况下,A、B两车道轮流放行,A放行50s,B放行30s,各含5s警告时间。

(3)交通繁忙时,该系统应有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车道繁忙,可通过开关获得15s放行时间。

(4)有紧急车辆通过时,另需一开关设置两车道均禁止通行20s。

2、主要功能模块

智能交通灯控制系统主要功能模块包括电源电路、单片机主控电路、按键控制电路和道路显示电路组成。根据具体情况选择合适型号的单片机,发光二极管,开关等硬件设备进行设计。

题目二 温度控制系统设计

1、设计要求

(1)用单片机控制一个由1kw电炉加热的电烤箱,最高温度不超过120℃。(2)电烤过程恒温控制,温度可通过系统设置,误差不超过±2℃。(3)实时显示温度和设置温度,显示精确为1℃。

(4)温度超出设置温度±5℃时发超限报警,对升温和降温过程不作要求。

2、主要功能模块

温度控制系统的主要功能模块包括温度测量(温度传感器、放大器、ADC转换器)、温度控制(光电隔离、驱动电路、可控硅电路、电炉)、温度给定(按键)、温度显示和报警等几部分。根据具体情况选择合适型号的单片机,温度传感器、ADC转换器等硬件设备进行设计。

题目三 点阵LED电子显示屏的设计(第8章)

1、设计要求

(1)设计4个16×16的LED电子显示屏,能稳定、清晰地显示图形或文字。(2)图形或文字显示通过编程能实现静止、左移和右移等多种显示方式。

(3)采用动态扫描方式,保证在目测条件LED显示屏可亮度均匀地显示图形和文字,并且稳定、清晰、无串扰。

2、主要功能模块

LED电子显示屏系统的主要功能模块包括单片机主控模块、16×16的点阵显示、行驱动电路、列驱动电路、译码电路几部分。根据具体情况选择合适型号的单片机等硬件设备进行设计。题目四 密码锁设计

1、设计要求

(1)要求密码锁可以设置8位密码,每位密码值范围为1~8,用户可以自行设定和修改密码。

(2)若输入的8位开锁密码不正确,则报警5s,连续错3次要报警1分钟,报警期间输入密码无效;输入的8位开锁密码完全正确才能开锁,开锁时有1s提示音

(3)锁内有备用电池,内部上电复位时才能设置或修改密码;电磁锁的电磁线圈每次通电5s,然后恢复初态;密码键盘上只允许有8个密码按键,密码设定完毕后要有2s的提示音。

2、主要功能模块

密码锁系统主要功能模块包括主控模块、按键扫描模块、蜂鸣器、电源电路、复位电路、晶振电路、驱动电路几部分。根据具体情况选择合适型号的单片机,三极管等硬件设备进行设计。

题目五 LED点阵显示电子钟设计

1、设计要求

(1)时钟的显示由LED点阵构成。

(2)能正确显示时间,上电显示为12点,时间能够由按键调整。(3)误差小于1s。

2、主要功能模块

LED点阵显示电子钟系统主要功能模块包括主控模块、LED点阵扫描模块、电子钟模块组成。其中电子钟由显示电路、行驱动电路、列驱动电路、按键电路和复位电路、晶振电路、驱动电路几部分组成。根据具体情况选择合适型号的单片机,锁存驱动器、译码器等硬件设备进行设计。题目六 智能抢答器设计

1、设计要求

(1)设计一个智力竞赛抢答器,可同时供8名选手或8个代表队参加比赛,分别使用一个按钮,编号从0~7。

(2)设置一个控制开关,用来控制系统的清零和抢答开始。

(3)抢答器具有数据锁存功能、显示功能和声音提示功能。抢答开始后,有选手按动抢答按钮,锁存对应编号,并在LED数码管上显示选手的编号,同时灯亮且伴随声音提示。同时锁存电路,禁止其他选手抢答,显示编号一直保持到系统清零。

2、主要功能模块

智能抢答器系统主要功能模块包括主控模块、复位电路、电源电路、选手按键、控制开关按钮,声音提示和数码显示等部分组成。根据具体情况选择合适型号的单片机,蜂鸣器、数码管等硬件设备进行设计。题目七 比赛记分牌设计

1、设计要求

(1)启动时显示为0分,计分范围为0~100分。(2)得分时加上相应的分数,失分时剪去相应的分数。(3)刷新分数的按键按下时,伴随提示音。

2、主要功能模块

比赛记分牌系统主要功能模块包括单片机主控模块、显示模块、按键模块、电源模块等部分组成。根据具体情况选择合适型号的单片机,蜂鸣器、数码管等硬件设备进行设计。题目八 学习型红外线遥控器设计

1、设计要求

(1)适用于编码式红外线遥控型家用电器。(2)可遥控多台家用电器。(3)具有一个学习/控制复用键。

(4)可通过一个设备选择键和各个功能控制键实现对多台设备的常用功能的学习和控制。(5)成本低,抗干扰能力强。

2、主要功能模块

学习型红外线遥控器控制系统主要功能模块包括单片机主控模块、红外接收及发射电路、复位电路、按键及状态指示电路等部分组成。根据具体情况选择合适型号的单片机、一体化红外遥控接收器等硬件设备进行设计。

三、课程设计的要求

1、课程设计的组织形式:将班级分成若干组,每组3~5人,自行分工完成一个题目。

2、课程设计流程:

(1)审题、查阅相关资料,确定系统总体方案;

(2)完成硬件设计,画出硬件设计原理图(包括设备模块选择、搭接线路、计算参数等)

(3)根据所完成的任务、硬件原理图绘制系统软件框图,编制程序;

(4)系统调试,认真客观地记录和观察实验结果,对实验结果进行深入的分析,写出实验心得;

(5)撰写课程设计报告及答辩。

3、课程设计报告的编写要求:(1)设计任务书一份;

(2)硬件设计原理图一份(A4图纸);(3)设计模块说明;(4)软件调试说明;

(5)实验结果分析(包括硬件设计和软件调试分析)。

四、成绩考核方式

1、硬件设计成绩(20%);

2、软件设计成绩(20%);

3、实验调试(40%);

4、实验报告和平时成绩(20%)。

五、教材和参考文献

1、推荐教材

[1]杨居义.单片机课程设计指导.清华大学出版社.2009年9月.[2]李海滨.单片机技术课程设计与项目实例.中国电力出版社.2009年10月.2、教学参考书

[1]付家才.单片机实验与实践.高等教育出版社.2006年3月.[2]李广第.单片机基础.北京航空航天大学出版社.2005年9.[3]朱珍.单片机原理.石油工业出版社.2001年6.[4]胡锦.单片机技术实用教程.高等教育出版社

2004.6.[5]薛钧义.微机控制系统及应用.西安交通大学出版社.2003年2.[6]彭介华.电子技术课程设计指导.高等教育出版社.1999年10月.大纲制定人:李娜、吴泽、赵忠彪

大纲审定人:白政民

修订日期:2012.3

第五篇:单片机原理与接口技术教案

《单片机原理与接口技术》教案

班级:05电子(1)(2)

日期:2007.3.8

课题:单片机硬件系统 教学目的:使学生理解单片机的结构、硬件原理和工作特性等基础知识 重点难点:单片机硬件组成和数据存储区分配

第一章 单片机硬件系统一、概述

(一)单片机及单片机应用系统

单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实现一种或多种功能的实用系统。

(二)MCS-51单片机系列

二、MCS-51单片机结构和原理

(一)单片机的内部组成及信号引脚

组成:CPU、内部RAM、内部ROM、定时/计数器、并行I/O口、串行口、中断系统、时钟电路等。

(二)内部数据存储器 1.寄存器区 2.位寻址区 3.用户RAM区

4.特殊功能寄存器区

(三)内部程序存储器

三、并行输入/输出口电路结构

组成结构:P0口、P1口、P2口、P3口

四、时钟电路与复位电路

常用晶体振荡器时钟电路(最大12MHz)、复位电路(RST引脚高电平产生复位)。

小结:单片机硬件电路和工作原理是学好本课的基础。

班级:05电子(1)(2)

日期:2007.3.22

课题:单片机开发系统 教学目的:使学生理解单片机硬件和软件调试的方法 重点难点:单片机开发软件的应用

第二章 单片机开发系统一、开发系统的功能

在线仿真、辅助调试、辅助设计、程序固化。

二、单片机应用系统的调试

调试方法:单步、跟踪、全速运行、设置断点

小结:调试方法和调试软件是单片机系统设计的必要工具。班级:05电子(1)(2)

日期:2007.3.28

课题:单片机指令系统 教学目的:使学生掌握单片机指令的含义和使用方法 重点难点:逻辑和位操作指令

第三章 MCS-51单片机指令系统一、寻址方式

包括:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。

二、指令系统

共111条指令。

数据传送指令(29条)

算术运算指令(24条)

逻辑运算指令(24条)

控制转移指令(17条)位操作指令(17条)

三、常用伪指令

包括:定位伪指令、定义字节伪指令、定义空间伪指令、定义符号伪指令、数据赋值伪指令、数据地址赋值伪指令、汇编结束伪指令。

小结:本章是整个课程的重点,应将使用方法以举例的方式详细讲解。

作业:3.3~3.16

班级:05电子(1)(2)

日期:2007.4.11

课题:单片机编程方法 教学目的:使学生掌握单片机汇编语言的编程方法 重点难点:分支程序、循环程序和子程序设计

第四章 MCS-51单片机汇编语言程序设计

一、简单程序设计

顺序控制程序。编程前,要分配内存工作区及有关端口地址。

二、分支程序设计

分支程序就是按照分支条件,判断程序流向,并执行。1.两分支程序设计(单入口、两出口)2.三分支程序设计

3.多分支程序设计(散转程序)

三、循环程序设计

1.单重循环程序设计

2.双重循环程序设计(延时程序设计)3.数据传送程序

4.循环程序结构(初始化、循环体、循环控制)

四、查表程序(主要用于数码管显示子程序)

表格是预先定义在程序的数据区中,然后和程序一起固化在ROM中的一串常数。

五、子程序设计与堆栈技术

1.子程序调用和返回过程 2.子程序嵌套

3.参数传递与现场保护和恢复

4.子程序结构(子程序名、子程序功能、入口参数、出口参数、占用资源)5.堆栈操作与堆栈功能

6.堆栈操作与RAM操作的比较

六、实用子程序举例

1.代码转换(二进制数转换为BCD码)2.算术运算(双字节无符号数乘法)3.查找、排序程序(冒泡排序法)

小结:汇编语言程序设计基本结构包括顺序结构、分支结构、循环结构和子程序结构等。

作业:4.1~4.16

班级:05电子(1)(2)

日期:2007.4.12

课题:定时与中断系统 教学目的:使学生掌握单片机定时/计数器与外部中断的工作原理和编程方法 重点难点:定时工作方式与中断系统原理

第五章 定时与中断系统一、定时/计数器

1.定时/计数器的结构 2.定时/计数器工作原理

3.定时/计数器的方式寄存器和控制寄存器

二、定时/计数器的工作方式

共4种定时工作方式:方式0、方式

1、方式

2、方式3。

三、定时/计数器的编程和应用

定时初值的计算方法、方式设置、控制方式设置

四、中断系统

1.中断的概念和特点 2.中断系统的结构框图 3.中断源和中断标志 4.中断处理过程

五、中断系统的应用

1.中断系统的功能(中断响应、中断处理、中断返回)2.中断请求的撤除、中断响应时间 3.外部中断源的扩展

4.定时中断控制信号灯闪烁功能的应用实例

小结:定时中断在单片机程序控制中,是很有用的,但中断的概念对初学者比较难理解,需细讲。

作业:5.4、5.5

班级:05电子(1)(2)

日期:2007.4.25

课题:单片机系统扩展 教学目的:使学生掌握单片机系统扩展的原理和相关集成电路的使用方法 重点难点:扩展电路接口与地址的控制方法

第六章 单片机系统扩展

一、程序存储器扩展

1.单片机程序存储器概述 2.EPROM程序存储器扩展实例(2732)

3.常用程序存储器类型(2716、27128、2864A)

二、数据存储器扩展

1.单片机RAM概述

2.SRAM扩展(以一片2KB静态6116为例)

三、并行I/O口扩展

1.MCS-51内部并行I/O口及其作用

单片机内部,P0口分时作为低8位地址线和数据线,P2口作为高8位地址线。2.简单的I/O口扩展

以74LS244和74LS273分别作为扩展输入和输出端口,其地址的计算方法。3.采用8255扩展I/O口

8255的结构、8255的控制字、8255与单片机的接口 4.采用8155扩展I/O口

8155的结构、I/O口的工作方式、作外部RAM的使用方法、与单片机的接口

小结:本章的重点是学习对不同扩展电路,其地址的计算方法。但要首先了解相关控制的工作原理和控制方法,据此计算地址就容易很多。

班级:05电子(1)(2)

日期:2007.5.14

课题:单片机接口技术 教学目的:使学生掌握单片机系统常用外围电路的接口技术和使用方法 重点难点:数码管显示、D/A、A/D转换接口与编程

第七章 单片机接口技术

一、单片机与键盘接口

1.键盘的工作原理(键输入原理、按键消抖的方法、按键编码方法)2.独立式按键(硬件结构和软件编程)

3.矩阵式按键(矩阵式键盘的结构、按键识别方法、键盘编码、键盘扫描的工作方式)

二、单片机与数码管显示器的接口

1.8段码数码管工作原理

2.数码管字形编码方法(共阴极与共阳极两种情况)3.静态显示接口(原理和编程方法)4.动态显示接口(原理和编程方法)

三、D/A转换器接口

1.D/A转换器的技术性能指标(分辨率、建立时间、接口形式)2.典型D/A转换器芯片DAC0832 3.单缓冲方式的接口与应用 4.双缓冲方式的接口与应用

四、A/D转换器接口

1.A/D转换的工作原理

2.典型A/D转换器芯片ADC0809 3.单片机与ADC0809接口 4.编程方法

小结:按键、LED数码管显示、A/D、D/A是单片机系统的常用外设电路,本章的学习对于提高单片机系统的设计水平很有帮助。

大作业:7.6

班级:05电子(1)(2)

日期:2007.6.20

课题:串行口通信技术 教学目的:使学生掌握单片机串行通信技术的原理和编程方法 重点难点:串行接口、程序设计

第八章 串行口通信技术

一、串行通信基础

1.串行通信的分类

(1)异步通信(字符帧、波特率)(2)同步通信

2.串行通信的制式(单工、半双工、全双工)3.串行通信的接口电路

二、串行通信总线标准及其接口

1.RS-232C接口

2.RS-449、RS-422A、RS-423A标准接口 3.20mA电流环路串行接口

三、MCS-51的串行接口

51系列单片机内部有一个可编程全双工串行通信接口,它具有UART的全部功能,该串行口有4种工作方式,帧格式有8位、10位和11位,并能设置各种波特率。

1.MCS-51串行口结构(SBUF、SCON、PCON控制字的定义)2.串行工作方式(方式0、1、2、3)3.串行口的波特率

四、MCS-51单片机之间的通信

1.双机通信硬件电路(RXD、TXD、公共地线)2.双机通信软件编程(查询方式、中断方式)3.多机通信

五、PC机和单片机之间的通信(接口设计、软件编程)

小结:串行通信在现代社会应用广泛,单片机串行通信是通信技术的基础。

作业:8.4

班级:05电子(1)(2)

日期:2007.7.4

课题:单片机应用系统的设计与开发 教学目的:使学生从总体上了解单片机应用系统的设计方法 重点难点:温度控制系统的设计

第九章 单片机应用系统的设计与开发

一、单片机温度控制系统的设计

二、单片机应用系统开发的一般方法

1.确定任务指标和目标

2.总体设计(选型、软硬件分工)

3.硬件设计(程序存储器、数据存储器和I/O口、地址译码电路、总线驱动能力、系统速度匹配、抗干扰措施)

4.软件设计(监控程序、功能程序)

5.系统调试(软件调试、硬件调试、联机调试)

三、单片机应用系统实用技术

1.低功耗设计

2.加密技术(硬件加密、软件加密)

四、抗干扰设计

1.电源、地线、传输干扰及其对策

2.硬件抗干扰措施(隔离技术、系统监控技术)

3.软件抗干扰措施(数字滤波提高数据采集的可靠性、控制状态失常的软件抗干扰措施、程序运行失常的软件抗干扰措施)

小结:单片机应用系统的设计方法,应采取软件和硬件相结合的方法,硬件设计、软件设计与调试是对系统进行完善的关键。

下载第4章 单片机原理及接口技术讲稿(第三版)-李朝青(范文大全)word格式文档
下载第4章 单片机原理及接口技术讲稿(第三版)-李朝青(范文大全).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《单片机原理及接口技术》课程设计报告——多通道秒表定时器(DOC)

    《单片机原理及接口技术》 课程设计报告 课程设计名称:多通道秒表定时计数器设计院 系:自动控制与机械工程学院专业:电气工程及其自动化 班级:2012级电气二班 姓名:黄瑞 学号:2012......

    微机原理及接口技术试卷及答案

    一、(共30分) 1.(10分) (1)将十进制数+107/128化成二进制数、八进制数和十六进制数(3分) (2)请回答什么是二--十进制编码?什么是有权码、什么是无权码、各举一个你熟悉的有权码......

    单片机原理与接口技术-LED显示屏单字滚动报告[推荐]

    单片机课程设计 LED 点 阵 单 字 滚 动 系别: 班级: 设计人: 指导老师: 2013年1月6日星期日 一.设计任务 本设计要使用新的开发箱,使用16*16点阵LED显示滚动的文字信息,类似于大家......

    河南工程学院2018年春《单片机及接口技术》期末试卷

    1. ( 多选题 ) (多选题)单片机的应用范围包括下列哪些项(本题5.0分)(本题5.0分) A、 智能仪表 B、 工业控制 C、 网络通信 D、 汽车领域 学生答案:A,B,D 标准答案:ABC......

    (语言、微机原理及接口技术)实验交通灯

    课程设计说明书课程设计名称:微机原理与接口技术课程设计课程设计题目:微机打印口外接交通灯模拟LED显示器学院名称:信息工程学院专业:计算机科学与技术班级:学号:姓名:评分:教师:201......

    微机原理与接口技术试题及答案

    一、 填空题(每空 1 分,共 15 分) 得分 评阅人 1.RESET信号到来后8088/86的CS和IP 分别为 _FFFF_H 和_0000_H。 2. 在特殊全嵌套方式下,8259可响应 同级或高级 中断请求。 3......

    2012年微机原理与接口技术试题及答案

    一. 选择(每题1分) 下列各题四个选择项中,只有一个选项是正确的。请将正确选项号写在相应空位置上。 1.系统总线又称为_______,这是指模块式微处理机机箱内的底版总线。 1)主板......

    微机原理与接口技术考试试题及答案A

    《微机原理与接口技术》课程期末考试试卷(A卷,考试) 一、单项选择(在备选答案中选出一个正确答案,并将其号码填在题干后的括号内。每题2分,共30分) 1 .某微机最大可寻址的内存空间......