《任务T2-7用电脑控制灯光.ppt》由会员分享,可在线阅读,更多相关《任务T2-7用电脑控制灯光.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LOGO第第12章章 任务任务T2-7用电脑控制灯光用电脑控制灯光 212.1 本章的知识点和技能点本章的知识点和技能点知识点技能点vSCI通信协议通信协议 v灵活使用定时器灵活使用定时器v使用使用SCI通信协议通信协议v掌握单片机与电脑的交互方法掌握单片机与电脑的交互方法12.2 任务描述任务描述MC9S08AC16通用功能板的单片机通过通用功能板的单片机通过SCI(串口)与电脑相连,然后电脑通过专用软件串口)与电脑相连,然后电脑通过专用软件或者串口助手向单片机发送控制字符串控制或者串口助手向单片机发送控制字符串控制LED1和和LED2的亮灭,如发送十六进制的两个数字的亮灭,如发送十六进制的
2、两个数字01 01 时时LED1亮,发送十六进制的两个数字亮,发送十六进制的两个数字01 00 时时LED1灭,单片机定时的通过串口向电脑报告灭,单片机定时的通过串口向电脑报告LED的状态,电脑根据功能板上的状态,电脑根据功能板上LED的状态更新专用软的状态更新专用软件的件的LED状态。另外,状态。另外,LED1和和LED2的亮灭还可以的亮灭还可以通过按键通过按键S5和和S6分别控制。分别控制。13.3 任务分析任务分析单片机和电脑之间的通信主要有两种方式异步串单片机和电脑之间的通信主要有两种方式异步串行和行和TCP/IP,而最常用的是异步串行通信,本而最常用的是异步串行通信,本任务中,单片机
3、正是利用异步串行通信这种方法任务中,单片机正是利用异步串行通信这种方法和电脑进行通信。为了完成本任务,必须简单了和电脑进行通信。为了完成本任务,必须简单了解解串行通信协议串行通信协议,明白,明白波特率波特率、数据位数据位、检验位检验位等概念。等概念。12.4 实操训练:电脑控制灯光体验实操训练:电脑控制灯光体验 CodeWarrior软件软件 MC9S08AC16 通用功能板,通用功能板,1块块/人人 BDM工具,工具,1个个/人人 串口调试软件串口调试软件 串口线,串口线,1条条/人人12.4.1 任务所需工具任务所需工具12.4.2 实验步骤实验步骤步步骤骤1:用用串串口口线线把把MC9S
4、08AC16通通用用功功能能板板上上的串口和电脑的串口连接起来。的串口和电脑的串口连接起来。步步骤骤2:下下载载控控制制程程序序Sci_1.mcp(该该程程序序可可以以在在随随书书光光盘盘的的目目录录“单单片片机机技技术术初初步步实实践践例例子子程程序序MC9S08AC16通通用用功功能能板板例例子子程程序序第第12章章”中中找找到到),并并用用串串口口调调试试程程序序控控制制LED1的的亮亮灭灭(发发送送十十六六进进制制的的01 01时时LED1灭灭,发发送送十十六六进进制制的的01 00时时LED1亮)。亮)。12.5 知识链接知识链接1:RS-232RS-232标准标准12.5.1 RS
5、232接口及引脚定义接口及引脚定义 12.5.2 RS232RS232引脚定义引脚定义信号信号9针针(公)(公)9针针(母)(母)25针针(公)(公)25针针(母)(母)功能功能PG11保护地保护地TxD3223发送数据发送数据RxD2332接收数据接收数据RTS7845请求传送请求传送CTS8754清除请求清除请求DSR64620数据装置就绪数据装置就绪GND5577信号地信号地DCD1188接收线信号检测接收线信号检测DTR46206数据终端准备好数据终端准备好RI992222振铃指示振铃指示12.5.3 RS232的电平的电平RS-232早期是用于调制解调器等设备的一种串行通信标准,推荐
6、的最大电缆长度为50英尺,即传输距离一般不超过15m。它的逻辑电平以公共地为对称,其逻辑“0”电平规定在+3V+25V之间,逻辑“1”电平则在-25V-3V之间,因而它不仅要使用正负极性的双电源,而且与传统的TTL等数字电路的逻辑电平不兼容,两者之间必须使用电平转换。12.5.4 RS232的电平转换的电平转换12.5.5 RS232的硬件电路的硬件电路12.5.6 RS232数据格式数据格式起始位起始位必须是逻辑必须是逻辑0,因为异步通信是靠这个起始位的下降沿,因为异步通信是靠这个起始位的下降沿来同步通信双方的。来同步通信双方的。接下来的是接下来的是数据位数据位,数据位可以是,数据位可以是5
7、位、位、6位、位、7位、位、8位或位或9位。位。发送时从低位起,逐位地发出,低位在前,高位在后。发送时从低位起,逐位地发出,低位在前,高位在后。如果校验允许,数据位最高位后面的一位是奇偶如果校验允许,数据位最高位后面的一位是奇偶校验位校验位。奇。奇偶校验位是通过设置校验位,保持发送的数据位中逻辑偶校验位是通过设置校验位,保持发送的数据位中逻辑1的数的数目为奇数个或者偶数个,分别称为目为奇数个或者偶数个,分别称为“奇校验奇校验”或或“偶校验偶校验”。停止位停止位永远为逻辑永远为逻辑1。停止位可以是。停止位可以是1个、个、1.5个或个或2个,含义是个,含义是两个被发送的数据之间至少要间隔两个被发送
8、的数据之间至少要间隔1位、位、1.5位或者位或者2位。位。12.5.7 RS232的波特率的波特率所谓所谓“异步通信异步通信”是指通信双方没有时钟信号用是指通信双方没有时钟信号用以同步,而是按照预先约定的通信速率进行发送以同步,而是按照预先约定的通信速率进行发送和接收。这一通信速率被称为和接收。这一通信速率被称为“波特率波特率”(Baud Rate),),波特率为波特率为1表示每秒传送表示每秒传送1位数据。标准位数据。标准的波特率有的波特率有50、110、300、600、1200、2400、4800、9600、19200、38400、57600和和115200等。等。12.6 知识链接知识链接
9、2:MC9S08AC16 SCIMC9S08AC16 SCI功能介绍功能介绍12.6.1 SCI的发送器和接收器的发送器和接收器在在MC9S08AC16中存在两个串行通信接口中存在两个串行通信接口SCI(Serial Communication Interface),),每个每个SCI都具有发送器和接收器,它们的功能独立,都具有发送器和接收器,它们的功能独立,但是使用相同的数据格式和波特率。但是使用相同的数据格式和波特率。发送器中存在发送数据寄存器,接收器中存在接发送器中存在发送数据寄存器,接收器中存在接收数据寄存器,它们是两个独立的存储空间,但收数据寄存器,它们是两个独立的存储空间,但是使用
10、同样一个地址,标号为是使用同样一个地址,标号为SCIxD。12.6.2 SCI的发送器的发送器SCI的发送器负责数据的发送,它由的发送器负责数据的发送,它由发送数据寄发送数据寄存器存器和和发送移位寄存器发送移位寄存器组成。组成。SCI发送数据的流程:发送数据的流程:1)要发送的数据首先写)要发送的数据首先写入发送数据寄存器,写入后由系统自动送到发送入发送数据寄存器,写入后由系统自动送到发送移位寄存器,并设置发送数据寄存器空(移位寄存器,并设置发送数据寄存器空(SCTE)标志为标志为1;2)发送移位寄存器得到完整的数据后)发送移位寄存器得到完整的数据后从从Tx引脚把数据发送出去,并设置发送完成引
11、脚把数据发送出去,并设置发送完成(TC)标志为标志为1。若发送中断允许若发送中断允许(TIE)和发送结束中断允许和发送结束中断允许(TCIE)置置1,则,则TDRE和和TC标志将分别产生中断标志将分别产生中断请求。请求。12.6.3 SCI的接收器的接收器SCI的接收器负责数据的接收,它由的接收器负责数据的接收,它由数据恢复模块数据恢复模块、接接收移位寄存器收移位寄存器和和接收数据寄存器接收数据寄存器组成。组成。SCI接收数据的流程:接收数据的流程:v1)数据恢复模块以波特率的)数据恢复模块以波特率的16倍频率对倍频率对Rx引脚的每引脚的每一位数据进行一位数据进行16次采样,并根据其中次采样,
12、并根据其中2/3以上相同的状以上相同的状态来决定该位的逻辑值。例如在态来决定该位的逻辑值。例如在16次采样中,如果有次采样中,如果有14次为高电平,次为高电平,2次为低电平,则认为该数据为次为低电平,则认为该数据为1。这。这样处理可以有效排除干扰,增强数据传输的可靠性。样处理可以有效排除干扰,增强数据传输的可靠性。数据恢复模块把每一位接收到数据送到接收移位寄存数据恢复模块把每一位接收到数据送到接收移位寄存器。器。v2)接收移位寄存器在接收到停止位后把数据送到接)接收移位寄存器在接收到停止位后把数据送到接收数据寄存器中并设置接收数据寄存器满(收数据寄存器中并设置接收数据寄存器满(RDRF)标标志
13、为志为1;12.6.3 SCI的接收器(续)的接收器(续)SCI接收数据的流程:接收数据的流程:v3)接收数据寄存器中的数据被读取后,接收数据寄)接收数据寄存器中的数据被读取后,接收数据寄存器满(存器满(RDRF)标志被清标志被清0,并设置接收允许(,并设置接收允许(RE)标志为标志为1;当数据寄存器中的数据还未被取走,移位当数据寄存器中的数据还未被取走,移位寄存器又接收到下一个数据时,就会发生溢出,此时寄存器又接收到下一个数据时,就会发生溢出,此时移位寄存器中未取走的数据将会丢失,状态寄存器中移位寄存器中未取走的数据将会丢失,状态寄存器中溢出(溢出(OR)状态标志置状态标志置1,以指出溢出错
14、误。,以指出溢出错误。v4)如果接收器发现当前数据线处于空闲状态,那么)如果接收器发现当前数据线处于空闲状态,那么其状态寄存器中的空闲标志其状态寄存器中的空闲标志IDLE将会置起将会置起1。v5)SCI接收器的上述接收器的上述3个标志位(个标志位(IDLE、RDRF和和OR)在允许后能够分别产生中断请求。设置接收中在允许后能够分别产生中断请求。设置接收中断允许(断允许(RIF)控制位就可以允许控制位就可以允许RDRF和和OR状态标状态标志产生硬件中断请求;设置空闲线中断允许(志产生硬件中断请求;设置空闲线中断允许(ILIE)控制位就可以允许控制位就可以允许IDLE状态标志产生硬件中断请求。状态
15、标志产生硬件中断请求。12.6.4 SCI的寄存器的寄存器每个每个SCI模块包括模块包括8个寄存器,它们分别是波特个寄存器,它们分别是波特率寄存器率寄存器SCIxBDH和和SCIxBDL、控制寄存器控制寄存器1 SCIxCl、控制寄存器控制寄存器2 SCIxC2、控制寄存器控制寄存器3SCIxC3、状态寄存器状态寄存器1 SCIxSl、状态寄存器状态寄存器2 SCIxS2、数据寄存器数据寄存器SCIxD。每个每个SCI模块都和模块都和2个外引脚(接收引脚个外引脚(接收引脚RxD和发送引脚和发送引脚TxD)相相关,当关,当SCI接收器发送器被允许时,接收器发送器被允许时,SCI模块模块将控制将控
16、制RxD和和TxD,否则它们只用作普通的并行否则它们只用作普通的并行IO口。详细说明请看课本口。详细说明请看课本P204209。12.6.5 SCI的软件设计的软件设计SCI的软件开发有以下的软件开发有以下2个步骤:个步骤:v第一步,第一步,SCI模块的初始化;模块的初始化;v第二步,编写发送和接收等基本功能,接收第二步,编写发送和接收等基本功能,接收和发送都可以用查询方式或者中断方式实现,和发送都可以用查询方式或者中断方式实现,一般来说发送时采用查询方法,接收时采用一般来说发送时采用查询方法,接收时采用中断方式。中断方式。下面以下面以SCI模块模块1为例作具体介绍。为例作具体介绍。12.6.
17、5.1 SCI的初始化的初始化SCI的初始化要完成如下设置:的初始化要完成如下设置:v置置SCI模块的模块的SCI功能有效。不作功能有效。不作SCI使用时,使用时,SCI引脚默认为普通引脚默认为普通IO端口的输入模式。端口的输入模式。v设置通信波特率。这是设置通信波特率。这是SCI模块的工作时钟。模块的工作时钟。v设置通信规约。如设置通信规约。如1位起始位,位起始位,8位数据位,位数据位,1个停止位,无奇偶校验位等。个停止位,无奇偶校验位等。12.6.5.2 SCI的初始化举例的初始化举例例子:例子:v假设假设MC9S08AC16单片机的总线频率为单片机的总线频率为8MHz,要求要求SCI1波
18、特率为波特率为9600,数据位为,数据位为8位,停止位为位,停止位为1位,无位,无奇偶校验位,允许接收和发送,不允许奇偶校验位,允许接收和发送,不允许SCI的所有中的所有中断。断。分析:分析:v由于波特率由于波特率=(总线频率总线频率/16)/BR,因此因此BR=(总线频率总线频率/16)/波特率波特率=(8000000/16)/9600=52,即,即SCI1BDH=0 x00,SCI1BDH=0 x34;v8位数据位位数据位SCI1C1中的中的M=0;1位停止位位停止位SCI中默中默认为认为1位,无须设置;位,无须设置;无奇偶校验位无奇偶校验位SCI1C1中的中的PE=0;SCI1C1的其他
19、各位也都为的其他各位也都为0;因此因此SCI1C2=0 x00。v允许接收和发送,不允许允许接收和发送,不允许SCI的所有中断的所有中断SCI1C2中中的的TE=1,RE=1,其他各位均为其他各位均为0,因此,因此SCI1C2=0 x0C。12.6.5.2 SCI的初始化举例(续)的初始化举例(续)本例的代码如下:本例的代码如下:vCLRAvSTASCI1BDHvLDA#$34;分频因子分频因子=52vSTASCI1BDL;FBus:8MHz,波特率为波特率为9600vCLRAvSTASCI1C1 ;8位数据位,位数据位,1位停止位,无校验位停止位,无校验vLDA#%00001100;TE,R
20、E位应置位应置1vSTASCI1C2;允许允许SCI发送接收发送接收,无中断无中断12.6.5 SCI用查询方式发送数据用查询方式发送数据SCIOutv;等待数据寄存器等待数据寄存器SCI1D为空为空,即即TDRE=1vBRCLR7,SCI1S1,*v;把累加器把累加器A中的数据写入中的数据写入SCI1DvSTASCI1Dv;等待数据发送完成等待数据发送完成,即即TC=1vBRCLR6,SCI1S1,*vRTS12.6.6 SCI用查询方式接收数据用查询方式接收数据SCI1Rxv;确保数据接收缓冲区已满确保数据接收缓冲区已满vBRCLR 5,SCI1S1,*v;判断判断SCI通讯是否存在错误通
21、讯是否存在错误vLDA SCI1S1vAND#$0Fv;串口接收存在错误串口接收存在错误vBNE SCI1Rx _Errv;获取接收缓冲区中的数据获取接收缓冲区中的数据vLDA SCI1Dv;把收到的数据保存在把收到的数据保存在RxDatavSTA RxDatavBRA SCI1Rx_Returnv;串口接收存在错误串口接收存在错误SCI1Rx _Errv;清数据接收缓冲区清数据接收缓冲区vLDA SCI1DSCI1Rx_ReturnvRTS12.6.7 SCI的中断方式的中断方式1.在用查询方式接收在用查询方式接收SCI的字符时,如果没有字符的字符时,如果没有字符输入,则输入,则CPU将无限
22、制地查询下去,此时将无限制地查询下去,此时CPU完全被查询程序占用,不能再做别的事情。完全被查询程序占用,不能再做别的事情。2.采用中断方式接收字符时,采用中断方式接收字符时,CPU可以正常处理其可以正常处理其他任务。当他任务。当SCI模块接收到字符时,通过向模块接收到字符时,通过向CPU发出一个中断信号申请一个中断服务,在中断服发出一个中断信号申请一个中断服务,在中断服务子程序中读取接收字符并作相应处理。务子程序中读取接收字符并作相应处理。3.SCIl中有中有3个中断向量:发送中断向量(个中断向量:发送中断向量($FFDA,$FFDB)、)、接收中断向量(接收中断向量($FFDC,$FFDD
23、)和和出错中断向量(出错中断向量($FFDE,$FFDF)。)。其中接收中其中接收中断向量有断向量有2个中断源:接收数据寄存器满中断和个中断源:接收数据寄存器满中断和接收线路空闲时间超过接收接收线路空闲时间超过接收1个字符的时间中断。个字符的时间中断。12.6.8 SCI的用中断方式接收数据的用中断方式接收数据1.SCI通讯中采用中断方式接收数据一般分为通讯中采用中断方式接收数据一般分为3个步骤:个步骤:2.1)允许)允许SCI接收器中断,令接收器中断,令SCI1C2中的中的RIE=1;3.2)编写接收中断处理函数编写接收中断处理函数SCIRxIsrBRCLR 5,SCI1S1,*;确保数据接
24、收缓冲区已满确保数据接收缓冲区已满;判断判断SCI通讯是否存在错误通讯是否存在错误LDA SCI1S1AND#$0FBNE SCIRxIsr_Err;串口接收存在错误串口接收存在错误LDA SCI1D ;获取接收缓冲区中的数据获取接收缓冲区中的数据JSR SCIOut;把接收到的数据反送回去把接收到的数据反送回去BRA SCIRxIsr_ReturnSCIRxIsr_Err;串口接收存在错误串口接收存在错误LDA SCI1D;清数据接收缓冲区清数据接收缓冲区SCIRxIsr_ReturnRTI12.6.8 SCI的用中断方式接收数据(续)的用中断方式接收数据(续)3)将中断服务子程序的入口地址
25、装入将中断服务子程序的入口地址装入SCI1接收接收中断向量中:中断向量中:ORG$FFDCDC.W SCIRxIsr12.7 知识链接知识链接3:串口调试软件介绍串口调试软件介绍 12.7 串口调试软件介绍串口调试软件介绍 第一步:设置第一步:设置串口参数;串口参数;第二步:打开第二步:打开串口;串口;第三步:数据第三步:数据收发。收发。其他功能:定其他功能:定时发送、文件时发送、文件发送、十六进发送、十六进制和字符格式制和字符格式互换显示。互换显示。12.8 实操训练:电脑控制灯光设计实操训练:电脑控制灯光设计 CodeWarrior软件软件 MC9S08AC16 通用功能板,通用功能板,1
26、块块/人人 BDM工具,工具,1个个/人人 串口调试软件串口调试软件 串口线,串口线,1条条/人人12.8.1 任务所需工具任务所需工具12.8.2 实验步骤实验步骤步步骤骤3:学学习习控控制制程程序序Sci_1.mcp的的程程序序代代码码,并并画画出出SCI初初始始化化函函数数SCI1Init、SCI接接收收中中断断处处理理函函数数SCI1RxISR、SCI接接收收数数据据处处理理函函数数DealSciRxData的的流程图。流程图。步步骤骤4:在在程程序序Sci_1.mcp中中修修改改SCI的的波波特特率率,如如改为改为19200,重新和电脑通讯并控制,重新和电脑通讯并控制LED1。步步骤骤5:修修改改SCI接接收收数数据据处处理理函函数数DealSciRxData,使电脑能够分别控制使电脑能够分别控制LED1和和LED2。步步骤骤6:在在程程序序中中增增加加SCI发发送送1个个字字符符子子函函数数SCITransmitChar和和其其他他的的代代码码,使使单单片片机机每每隔隔5秒秒钟钟告告诉诉电电脑脑LED1的的状状态态,每每隔隔6秒秒钟钟告告诉诉电电脑脑LED2的状态。的状态。