4.3 CC2530单片机串口命令控制交通信号灯 课件(共52张PPT)-《单片机技术与C语言基础 》同步教学(电子工业版)

资源下载
  1. 二一教育资源

4.3 CC2530单片机串口命令控制交通信号灯 课件(共52张PPT)-《单片机技术与C语言基础 》同步教学(电子工业版)

资源简介

(共52张PPT)
单片机与C语言技术应用
第四单元 任务3
4.3 CC2530单片机串口命令控制交通信号灯
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸阅读
08
学习目标
01
掌握串口UART通信的物理层连接方式;
掌握串口UART通信的数据帧格式及波特率计算;
掌握扫描方式判断串口发送数据是否完成;
掌握串口发送数据触发中断;
掌握扫描方式判断串口接收数据;
掌握串口接收数据触发中断;
掌握串口命令控制交通信号灯系统。
学习目标
01
能对与串口通信数据帧格式以及波特率相关的寄存器进行设置;
能对扫描方式和中断方式完成串口发送数据的相关寄存器进行配置;
能对扫描方式和中断方式完成串口接收数据的相关寄存器进行配置;
能使用串口命令控制交通信号灯的开关。
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸阅读
08
4.3 CC2530单片机串口命令控制交通信号灯
任务要求与任务分析
02
● 任务要求:
①黑板通电后,D6红色LED熄灭(红灯灭),串口接收数据等待中;
②PC机发送数据0xCF;
③串口接收数据0xCF,D6红色LED点亮(红灯亮);
④串口发送应答数据0xCF,PC机接收到应答数据0xCF;
⑤串口收发控制效果仅上电一次,不可循环。
任务要求与任务分析
02
● 任务分析:
中断方式串口接收数据;扫描方式串口发送应答数据。
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸阅读
08
4.3 CC2530单片机串口命令控制交通信号灯
串口0接收触发中断条件
1
知识储备
03
串口0接收中断服务函数
2
3
扫描方式判断串口0发送状态
03
知识储备
(1)串口0接收中断标志位URX0IF为1,表示串口0接收到一个字节数据。
(2)串口0接收中断使能(即URX0IE=1)。
(3)总中断使能(即EA=1)。
03
知识储备
以上三个条件都满足的条件下,CPU将会触发串口0接收中断。
当串口0接收到完整的一个字节数据,串口0接收中断标志位URX0IF被硬件自动置“1”。
在串口0接收中断和总中断都使能的情况下,单片机执行串口0接收中断服务函数且硬件自动将串口0接收中断标志位URX0IF置“0”。
03
知识储备
1.URX0IE = 1; //串口0接收中断使能
2.EA=1; //总中断使能
采用中断方式接收串口0数据的中断使能配置代码如下:
串口0接收触发中断条件
1
知识储备
03
串口0接收中断服务函数
2
3
扫描方式判断串口0发送状态
03
知识储备
在串口0接收中断服务函数之前,通过宏指令“#pragma vector = 0x13”或“#pragma vector = URX0_VECTOR”将该中断函数指向串口0接收中断向量。因此,当串口0接收中断时,将会执行该中断服务函数。
03
知识储备
通过“__interrupt”关键字声明串口0接收中断服务函数,如“__interrupt void Uart0_Receive_Isr(void)”。
进入串口0中断服务函数后,硬件会自动将串口0接收中断标志位URX0IF置“0”,同时软件上必须尽快将U0DBUF寄存器的数据读出并保存在接收缓冲区中,空出的U0DBUF寄存器开始准备接收下一字节的数据。
03
知识储备
本任务声明Rec_Data为字节型全局变量并初始化为0x00,用于存放U0DBUF寄存器的数据,具体参考代码如下:
1.#pragma vector = URX0_VECTOR
2.__interrupt void UART0_Receive_ISR(void)
3.{
4. Rec_Data=U0DBUF; //将接收到的数据存放到接收缓冲区Rec_Data中
5.}
串口0接收触发中断条件
1
知识储备
03
串口0接收中断服务函数
2
3
扫描方式判断串口0发送状态
03
知识储备
当串口0发送完成一个字节数据后,串口0发送中断标志位UTX0IF会被硬件置1,这时候可以通过软件不断循环检测串口0发送中断标志位UTX0IF的状态变化,从而判断串口0是否完成一个字节的数据发送。
采用扫描方式判断串口0是否完成,硬件不会自动将串口0发送中断标志位UTX0IF置0。
因此,当检测到串口0发送中断标志位为1时,需要通过软件操作将该标志位置0,才能保证下一字节数据正常发送。
03
知识储备
本任务在串口0数据发送过程中,先将串口0发送中断标志位UTX0IF置0,将需要发送的数据写入U0DBUF寄存器;
然后不断循环检测串口0发送中断标志位UTX0IF的状态变化,当检测到该标志位为1时,表示发送完成,软件将该标志位置0并执行发送完成的逻辑处理。
整个串口0数据发送过程的具体配置代码如下:
03
知识储备
1.……
2.UTX0IF = 0; //发送之前,将串口发送中断标志位置0
3.U0DBUF = 0xAF; //将16进制数 0xAF写入U0DBUF寄存器
4.while( UTX0IF==0 ); //判断数据是否发送完成,未完成继续等待
5.UTX0IF=0; //UTX0IF置0,为下次发送做准备
6.…… //串口0发送完成逻辑处理
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸阅读
08
4.3 CC2530单片机串口命令控制交通信号灯
任务实施
04
● 任务实施前必须先准备好以下设备和资源:
序号 设备/资源名称 数量 是否准备到位(√)
1 计算机(已安装好IAR软件) 1台
2 NEWLab实训平台 1套
3 CC-Debugger 仿真器 1套
4 黑板 1块
1
2
任务实施
04
打开工程
编写代码
3
编译工程
4
仿真调试
●打开本书配套源代码文件夹中的“串口命令控制交通信号灯.ewp”工程。
04
任务实施
1
2
任务实施
04
打开工程
编写代码
3
编译工程
4
仿真调试
● 步骤1:头文件包含
04
任务实施
#include
● 步骤2:I/O引脚宏定义
04
任务实施
1.#define YELLOW_LED1 P1_0 //将P1_0引脚宏定义为D3绿色LED控制引脚
2.#define YELLOW_LED2 P1_1 //将P1_1引脚宏定义为D4绿色LED控制引脚
步骤3:全局变量定义
unsigned char Rec_Data = 0x00; //定义串口接收缓冲区并初始化为0x00
04
任务实施
步骤4:编写串口初始化函数
04
任务实施
1.void InitUART(void)
2.{
3. PERCFG = 0x00; //串口0通信引脚选择备用位置1
4. P0SEL |= 0x0C; //P0_2和P0_3引脚用作外设功能
5. P2DIR &= ~0xC0; //外设多功能复用引脚串口0优先级最高
6. U0CSR |= 0x80; //选择串口UART异步通信模式
7. U0GCR |= 9; //设置通信波特率为9600
04
任务实施
8. U0BAUD |= 59; //设置通信波特率为9600
9. U0UCR |= 0x02; //配置起始位低电平、停止位高电平、8位数据通信、无奇偶校验
10. URX0IF=0; //接收中断标志位URX0IF清零
11. U0CSR |= 0x40; //允许串口0接收
12. URX0IE =1; //使能串口0中断
13. EA =1; //使能总中断
14.}
04
任务实施
串口0初始化函数主要完成以下几项任务:
(1) 设置PERCFG寄存器进行备用位置选择。
(2) 设置P0SEL寄存器,将P0_2和P0_3两个I/O口配置作为外设功能。
(3) 设置P0SEL寄存器进行多功能复用引脚优先级配置,串口0的优先级设置为最高。
(4) 设置U0CSR寄存器,选择UART异步通信模式。
(5) 设置U0GCR寄存器和U0BAUD寄存器选择通信波特率9600bps。
(6) 设置U0UCR寄存器进行数据帧格式配置。
(7) 将串口0接收中断标志位URX0IF清0。
(8) 在U0CSR寄存器原来的基础上将RE位置1,使能串口0接收。
(9) 使能串口0接收中断,即将串口0使能开关URX0IE置1。
(10) 使能总中断,即将总中断开关EA置1.
步骤5:编写串口0接收中断服务函数
04
任务实施
1.#pragma vector = URX0_VECTOR
2.__interrupt void UART0_ISR(void)
3.{
4. //执行串口0接收中断服务函数,硬件自动将串口0接收中断标志位URX0IF清0
5. Rec_Data=U0DBUF; //接收到的数据放入Rec_Data接收数据缓冲区中
6.}
04
任务实施
当串口0接收到一个字节数据时,串口0接收中断标志位URX0IF被硬件自动置1,在串口0接收中断和总中断都使能的情况下,CPU将会执行串口0接收中断服务函数,同时硬件自动将串口0接收中断标志位清0。
在串口0接收中断服务函数中,将串口0接收寄存器U0DBUF的数据放入接收数据缓冲区Rec_Data中,然后继续下一次接收。
步骤6:编写main主函数
1.void main(void)
2.{
3. InitIO();
4. InitUart(); //初始化串口
5. while(1) //无限循环
6. {
7. if(Rec_Data == 0xAF) //判断串口接收到的数据是否为0xAF
8. {
9. Rec_Data = 0x00; //数据清0,串口0接收到数据才会改变此缓冲区的值
04
任务实施
10. UTX0IF = 0; //串口0发送中断标志清0
11. U0DBUF= 0xBF; //将0xBF写入发送寄存器中
12. while( UTX0IF==0 ); //等待串口0数据发送完成,硬件自动将串口0发送
13. //中断标志置1
14. UTX0IF=0; //发送完成,软件将串口0发送中断标志清0
15. YELLOW1_LED =! YELLOW1_LED; //D3绿色LED灯状态翻转
16. YELLOW2_LED =! YELLOW2_LED; //D4红色LED灯状态翻转
17. }
18. }
19.}
04
任务实施
04
任务实施
在一个需要利用串口进行收发数据的任务中,通常采用扫描方式判断串口数据是否发送完成,而采用中断方式判断是否接收到数据。
04
任务实施
本任务采用中断方式判断串口0是否接收到十六进制数据0xBF,当接收到数据0xBF时,将应答数据0xAF发送给PC机,并通过扫描方式不断循环检测判断是否发送成功。
当应答数据发送成功之后,将黄色交通信号灯的状态翻转,即黑板上D3绿色LED和D4绿色LED状态翻转,然后进入下一次的串口0数据接收。
04
任务实施
1
2
任务实施
04
打开工程
编写代码
3
编译工程
4
仿真调试
对工程进行编译,观察是否提示编译成功。如果出现错误或警告,需要认真检查修改,重新编译链接,直到没有错误和警告为止。
04
任务实施
1
2
任务实施
04
打开工程
编写代码
3
编译工程
4
下载代码
(1)用CC-Debugger仿真器的下载线连接黑板;
(2)完成代码下载;
(3)黑板上电,PC机上利用串口调试助手发送0xBF数据,观察PC机是否接收到0x AF应答数据以及黑板上D3绿色LED和D4红色LED状态是否翻转。
04
任务实施
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸阅读
08
4.3 CC2530单片机串口命令控制交通信号灯
05
任务工单
1.当串口0接收到完整的一个字节数据,串口0接收中断标志位( )被硬件( )置( ),在串口0( )和( )都使能的情况下,单片机执行( )且硬件( )将串口0接收中断标志位URX0IF置( )。
2.在串口0接收中断服务函数之前,通过宏指令“( ) ”或“( )”将该中断函数指向( ),当串口0接收中断时,将会执行该中断服务函数。
3.当串口0发送完成一个字节数据后,串口0发送中断标志位UTX0IF会被硬件置( ),这时候可以通过软件( )检测串口0发送中断标志位( )的状态变化,从而判断串口0是否完成一个字节的数据发送。
4.采用( )判断串口0发送是否完成,硬件不会( )将串口0发送中断标志位UTX0IF置( )。因此,当检测到串口0发送中断标志位为( )时,需要通过软件操作将该标志位置( ),才能保证下一字节数据正常发送。
本次任务关键知识引导
任务工单
05
各组选派代表分析本组任务实施经验;
01
添加标题
请参照评价标准完成自评;
02
完成对其他小组的评价。
03
互评
经验分享
自评
评价方式 可采用自评、互评、老师评价等方式 说明 主要评价学生在项目学习过程中的操作技能、理论知识、学习态度、课堂表现、学习能力等。 序号 评价内容 评价标准 分值 得分
1 知识运用(20%) 掌握相关理论知识,完成本次任务关键知识的作答准确率(20分) 20分
2 专业技能(40%) 工程编译通过,单片机接收控制命令,应答及执行正常。(40分) 40分
工程编译通过,单片机接收控制命令,应答及执行异常。(30分)
完成代码的输入,工程没有编译通过。(15分)
建立工程错误,或者部分输入代码。(5分)
3 核心素养(20%) 具有良好的自主学习、分析解决问题、帮助他人的能力、整个任务过程中有指导他人并解决他人问题(20分) 20分
具有较好的学习能力和分析解决问题的能力,任务过程中无指导他人(15分)
具有主动学习并收集信息的能力,遇到问题有请教他人并得以解决(10分)
不主动学习(0分)
4 职业素养(20%) 实验完成后,设备无损坏、设备摆放整齐、工位区域内保持整洁、无干扰课堂秩序(20分) 20分
实验完成后,设备无损坏、无干扰课堂秩序(15分)
无干扰课堂秩序(10分)
干扰课堂秩序(0分)
总得分
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸阅读
08
4.3 CC2530单片机串口命令控制交通信号灯
任务小结
06
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸练习
08
4.3 CC2530单片机串口命令控制交通信号灯
任务拓展
07
动动脑
(1)请思考中断方式串口接收数据与扫描方式串口接收数据的优缺点;
(2)请思考中断方式串口发送数据与扫描方式串口发送数据的优缺点。
任务拓展
07
动动手
请在本任务的基础上进行修改,将应答数据改为”0xAA”。
学习目标
01
知识储备
03
任务工单
05
任务要求与任务分析
02
任务实施
04
任务小结
06
知识与技能提升
07
延伸练习
08
4.3 CC2530单片机串口命令控制交通信号灯
延伸练习
08
请在本任务代码基础上进行修改,实现如下功能:
(1)当CC2530单片机接收到的数据为0x01时,打开D6红色LED;接收到的数据为0x02时,关闭D6红色LED。
(2)当CC2530单片机接收到的数据为0x03时,打开D5绿色LED;接收到的数据为0x04时,关闭D5绿色LED。
(3)当CC2530单片机接收到的数据为0x05时,打开D3绿色LED和D4红色LED;接收到的数据为0x06时,关闭D3绿色LED和D4红色LED。

展开更多......

收起↑

资源预览