版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元二
输入/输出应用22四月2026知识目标理解通用输入/输出与外设输入/输出的区别。了解上拉、下拉和三态的含义。掌握特殊功能寄存器的作用。
理解简单宏定义的作用。了解按键消抖的目的和方法能力目标理解通用输入/输出与外设输入/输出的区别。了解上拉、下拉和三态的含义。掌握特殊功能寄存器的作用。理解简单宏定义的作用。了解按键消抖的目的和方法。素养目标加深学生对中华优秀传统文化的了解,坚定文化自信,培养学生对科研的探索精神,激发学生投身到科技报国事业的热情学习目标单元二
输入/输出应用2实现按键控制LED灯开关目录1CC2530实现LED跑马灯
任务一CC2530实现LED跑马灯一、任务描述编写程序控制CC2530板上的LED1、LED2、LED3和LED4的亮/灭状态,使它们以跑马灯方式工作,即:①通电后LED1、LED2、LED3和LED4都熄灭。②延时一段时间后LED1点亮,此时LED2、LED3和LED4都处在熄灭状态。③延时一段时间后LED2点亮,此时LED1、LED3和LED4都处在熄灭状态。④延时一段时间后LED3点亮,此时LED1、LED2和LED4都处在熄灭状态。⑤延时一段时间后LED4点亮,此时LED1、LED2和LED3都处在熄灭状态。⑥返回步骤②循环执行。任务一CC2530实现LED跑马灯二、任务目标1.训练目标①检验学生掌握CC2530单片机I/O端口的使用技能。②检验学生掌握CC2530单片机I/O输入模式和获取信号的技能。任务一CC2530实现LED跑马灯二、任务目标2.素养目标①培养学生在工作现场的6S意识和用电安全意识。②爱惜工具,注重场地整洁。③具备积极、主动的探索精神。任务一CC2530实现LED跑马灯三、相关知识用作通用I/O时,引脚可以组成3个8位端口,端口0、端口1和端口2,表示为P0、P1和P2。其中,P0和P1是完全的8位端口,而P2仅有5位可用。任务一CC2530实现LED跑马灯三、相关知识1.CC2530引脚 CC2530单片机采用QFN40封装,外观上是一个边长为6mm的正方形芯片,每个边上有10个引脚,总共40个引脚。任务一CC2530实现LED跑马灯三、相关知识1.CC2530引脚引脚类型包含引脚功能简介电源类引脚AVDD1~6、DVDD1~2、GND、DCOUPL为芯片供电数字I/O引脚P0_0~P0_7、P1_0~P1_7、P2_0~P2_4数字信号输入/输出时钟引脚XOSC_Q1、XOSC_Q2时钟信号输入复位引脚RESET_N让芯片复位RF引脚RF_N、RF_P外接无线收发天线其他引脚RBIAS外接偏置电阻表2.1引脚类型分类任务一CC2530实现LED跑马灯三、相关知识2.CC2530的I/O引脚CC2530总共有21个数字I/O引脚,这些引脚可以组成3个8位端口,分别为端口0、端口1和端口2,通常表示为P0、P1和P2。任务一CC2530实现LED跑马灯三、相关知识2.CC2530的I/O引脚(1)可配置为通用I/O端口通用I/O端口是指可以对外输出逻辑0(低电平)或1(高电平),也可读取从I/O引脚输入的逻辑值(低电平为0,高电平为1)。用户可以通过编程将I/O端口设置成输入方式或输出方式。任务一CC2530实现LED跑马灯三、相关知识2.CC2530的I/O引脚(2)可配置为外部设备的I/O端口CC2530内部除了含有8051CPU核心外,还具有其他功能模块,如ADC、定时器和串行通信模块,这些功能模块为外设。需要注意的是,不能随意指定某个I/O口连接到某个外设,因为它们之间有一定的对应关系。任务一CC2530实现LED跑马灯三、相关知识2.CC2530的I/O引脚(3)输入口具有3种输入模式当CC2530的I/O口被配置成通用输入端口时,端口的输入模式有上拉、下拉和三态3种选择,可通过编程选择,能够适应多种不同的输入应用。任务一CC2530实现LED跑马灯三、相关知识2.CC2530的I/O引脚(4)具有外部中断能力当使用外部中断时,I/O口引脚可以作为外部中断源的输入口,这使电路设计变得更加灵活。任务一CC2530实现LED跑马灯三、相关知识3.I/O端口的相关寄存器例如,通过已配置好的P1_1口向外输出高电平可用以下代码实现。P1=0x02;或者P1_1=1;任务一CC2530实现LED跑马灯三、相关知识3.I/O端口的相关寄存器特殊功能寄存器存放控制单片机内部器件的命令、数据或运行过程中的一些信息。任务一CC2530实现LED跑马灯三、相关知识3.I/O端口的相关寄存器名称功能描述Px端口数据,用来控制端口的输出或获取端口的输入PERCFG外设控制,用来选择外设功能在I/O口上的设置APCFG模拟外设I/O设置,用来配置P0都作为模拟I/O口使用PxSEL端口功能选择,用来设置端口是通用I/O还是外设I/OPxDIR端口方向,当端口为通用I/O时,用来设置数据传输方向PxINP端口输入模式,当端口为通用I/O时,用来选择输入模式PxIFG端口中断状态标志,使用外部中断时,用来表示是否有中断PICTL端口中断控制,使用外部中断时,用来配置端口中断触发类型PxIEN端口中断屏蔽,用来选择是否使用外部中断功能PMUX掉电信号,用来输出32kHz时钟信号或内部数字稳压状态表2.2与CC2530的I/O口有关的主要特殊寄存器任务一CC2530实现LED跑马灯三、相关知识3.I/O端口的相关寄存器符号访问模式R/W可读取也可写入R只能读取R0读出的值始终为0R1读出的值始终为1W只能写入W0写入的值始终为0W1写入的值始终为1H0硬件自动将其变成0H1硬件自动将其变成1表2.3寄存器位操作约定任务一CC2530实现LED跑马灯四、任务实施1.电路分析(1)LED的连接和工作原理LED1、LED2、LED3和LED4与CC2530的连接如图2.2所示。LED1、LED2、LED3和LED4的负极端分别通过一个限流电阻连接到地(低电平),它们的正极端分别连接到CC2530的P1_0、P1_1、P1_3和P1_4。任务一CC2530实现LED跑马灯四、任务实施1.电路分析(1)LED的连接和工作原理图2.2LED与CC2530连接电路示意任务一CC2530实现LED跑马灯四、任务实施1.电路分析(2)驱动电流CC2530的I/O端口除了P1_0端口和P1_1端口有20mA的驱动能力外,其他I/O端口只有4mA的驱动能力,在应用中从I/O口流入或流出的电流不能超过这些限定值。任务一CC2530实现LED跑马灯四、任务实施2.代码设计(1)建立工程新建工程项目,在项目中添加名为“code.c”的代码文件。任务一CC2530实现LED跑马灯四、任务实施2.代码设计(2)编写代码根据任务要求,可用流程图表示。开始全部熄灭点亮LED1延时点亮LED2延时点亮LED3延时点亮LED4延时图2.3LED控制流程示意任务一CC2530实现LED跑马灯四、任务实施1)引用CC2530头文件在code.c文件中引用“ioCC2530.h”头文件,指令如下。#include"ioCC2530.h"//引用CC2530头文件任务一CC2530实现LED跑马灯四、任务实施2)设计延时函数LED控制流程中需要用到延时,因此在code.c中单独编写一个名为“delay”的延时函数,这样在需要延时的地方调用该函数即可。任务一CC2530实现LED跑马灯四、任务实施2)设计延时函数voiddelay(unsignedinttime){unsignedinti;unsignedcharj;for(i=0;i<time;i++){for(j=0;j<240;j++){asm("NOP");
asm("NOP");asm("NOP");}}}任务一CC2530实现LED跑马灯四、任务实施2)设计延时函数延时函数使用两个for循环嵌套来让CPU执行,以达到消耗时间的目的。该函数带有一个整型参数time,在调用函数时,所填入time值的大小决定了延时时间的长短。任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口LED1、LED2、LED3和LED4分别连接到P1_0、P1_1、P1_3和P1_4,需要将这4个I/O口配置成通用I/O功能,将端口的数据传输方向配置成输出。任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口位位名称复位值操作描述7:0SELPx_[7:0]000R/W0:对应端口为通用I/O功能。1:对应端口为外设I/O功能。表2.4PxSEL特殊功能寄存器任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口1)将P1_0、P1_1、P1_3和P1_4设置成通用I/OP1SEL&=~0x1B;//00011101任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口十六进制0x03转换成二进制后是00011011B,前面加取反符号“~”后数据变成11100100B。“a&=b”是将a与b进行按位“与”运算,运算结果赋值给a。由于0与任何数进行“与”操作,操作结果都是0,1与任何数的“与”运算结果都是另一个数本身,所以这种操作方式能在实现将指定位复位(设置成0)的同时不影响其他位的值。此时,P1SEL中的第0位、第1位、第3位和第4位设置成0,其他位不变。任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口注意:由于P2口只有5个端口,真正使用的一般只有3个,因此P2SEL寄存器的位定义和功能与P0SEL和P1SEL不同,详情参考CC2530编程手册。任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口2)将P1_0、P1_1、P1_3和P1_4设置成输出口4个端口被配置成通用I/O后,还要设置其传输数据的方向。使用这4个端口对LED进行控制,实际是在对外输出信号,因此要将P1_0、P1_1、P1_3和P1_4的传输方向设置成输出。任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口2)将P1_0、P1_1、P1_3和P1_4设置成输出口位位名称复位值操作描述7:0DIRPx_[7:0]000R/W设置Px_7到Px_0端口的传输方向。0:输入。1:输出。表2.5Px_DIR寄存器任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口2)将P1_0、P1_1、P1_3和P1_4设置成输出口P1DIR|=0x1B;//00011101此处使用“|=”运算对P1DIR进行设置,可以将其对应位置位(设置成1),且不影响其他位。任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口3)熄灭LED根据电路连接可知,要熄灭LED,只需要让对应的I/O口输出0。将对应端口设成通用输出口后,可以采用以下代码来实现。P1_0=0;//熄灭LED1任务一CC2530实现LED跑马灯四、任务实施(3)初始化I/O口4)LED初始化程序代码voidInitLED(void){P1SEL&=~0x1B;//设置P1_0、P1_1、P1_3和P1_4为通用I/OP1DIR|=0x1B;//设置P1_0、P1_1、P1_3和P1_4口为输出口P1_0=0;//熄灭LED1P1_1=0;//熄灭LED2P1_3=0;//熄灭LED3P1_4=0;//熄灭LED4}任务一CC2530实现LED跑马灯四、任务实施(4)设计主函数代码voidLSD(void){P1_0=1;//点亮LED1P1_1=P1_3=P1_4=0;//熄灭LED2、LED3和LED4delay(1200);//延时P1_1=1;//点亮LED2P1_0=P1_3=P1_4=0;//熄灭LED1、LED3和LED4delay(1200);//延时P1_3=1;//点亮LED3P1_0=P1_0=P1_4=0;//熄灭LED1、LED2和LED4delay(1200);//延时P1_4=1;//点亮LED4P1_0=P1_1=P1_3=0;//熄灭LED1、LED2和LED3}任务一CC2530实现LED跑马灯五、任务小结CC2530的21个可编程的I/O引脚特性一致,可设置为通用的I/O口,也可设置为外设的I/O口,在输入时可设置上拉或下拉模式,并且也都具有相应外部中断的能力。注意:P1_0和P1_1不支持上拉、下拉模式。任务一CC2530实现LED跑马灯五、任务小结在实际应用开发中,可采用如下步骤配置数字I/O端口。①通过PxSEL寄存器,设置Px为通用I/O,默认状态为通用I/O,可以不写。②通过PxDIR寄存器,设置Px通用I/O的方向。③如果通用I/O的方向被配置为输出,则可设置其输出高/低电平。不同生产厂家的CC2530实验板的I/O端口定义不同,一般用PxSEL来定义通用I/O(这条语句不是必需的);用PxDIR来定义输入和输出。任务一CC2530实现LED跑马灯六、启发与思考#defineLED1(P1_0)//LED1端口宏定义#defineLED2(P1_0)//LED2端口宏定义“#define”表示宏定义,如“#definea(b)”。在程序进行编译时,编译器会将代码中所有出现的a用b替换掉。括号不是必需的,但加括号可以避免出现某些运算方面的错误。将以上内容添加到引用头文件的代码行后,可将程序中所有的P1_0和P1_1分别用LED1和LED2取代。
任务二实现按键控制LED灯开关一、任务描述本任务使用SW1按键对LED1进行控制。①通电后LED1、LED2、LED3和LED4都熄灭。②如果SW1按键按下一次,LED1切换一次亮/灭状态。③每按下一次按键,LED就切换一次亮/灭状态。任务二实现按键控制LED灯开关二、任务目标1.训练目标①检验学生掌握CC2530单片机I/O端口的使用技能。②学生掌握CC2530单片机寄存器的使用技能。③学生掌握CC2530单片机按键控制LED等的技能。任务二实现按键控制LED灯开关二、任务目标2.素养目标①培养学生在工作现场的6S意识和用电安全意识。②爱惜工具,注重场地整洁。③具备积极、主动的探索精神。任务二实现按键控制LED灯开关三、相关知识通用输入/输出接口通过配置适当的寄存器可以给它们分配不同的功能。每个GPIO都可以配置为上拉/下拉,或者被设置为三态。当被配置为输入时,可通过读取寄存器获取输入值;输入也可以被设置为边缘触发或电平触发来产生CPU中断。简而言之,IO引脚是双向、非反相和三态的,带有三态控制的输入和输出缓冲器。这些引脚可以与其他功能复用,如I2C、I2S、UART、PWM、IR遥控等。任务二实现按键控制LED灯开关三、相关知识1.上拉和下拉上拉是指单片机的引脚通过一个电阻连接到电源(高电平),当外界没有信号输入到引脚时,引脚被上拉电阻固定在高电平(逻辑值1)。下拉是指单片机的引脚通过一个电阻连接到地(低电平),当外界没有信号输入到引脚时,引脚被下拉电阻固定在低电平(逻辑值0)。任务二实现按键控制LED灯开关三、相关知识2.三态三态也称高阻,即I/O引脚既没有上拉到电源,也没有下拉到地,呈现高阻值状态。三态模式一般用于引脚的输出功能,特别当单片机的引脚接在多个设备公用的通信总线上时。当单片机不发送信号时,采用三态工作模式可以保证不干扰其他设备之间的通信。三态模式用于输入引脚时,引脚必须外接其他器件,此时不存在上拉或下拉电阻,还能降低单片机的功耗。任务二实现按键控制LED灯开关三、相关知识3.CC2530的I/O端口输入模式CC2530的I/O端口作为通用I/O使用时,可以配置成输出方式或输入方式。输入方式用来从外界器件获取输入的电信号,当CC2530的I/O端口被配置成通用输入端口时,这些端口能够提供“上拉”、“下拉”和“三态”3种输入模式,可通过编程进行设置,以满足外接电路设计的要求。任务二实现按键控制LED灯开关四、任务实施1.电路分析图2.4SW1与CC2530连接电路图任务二实现按键控制LED灯开关四、任务实施2.按键消抖通常按键所用的都是机械弹性开关,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下就断开,而是在闭合或断开的瞬间均伴随一连串的抖动。任务二实现按键控制LED灯开关四、任务实施2.按键消抖抖动时间的长短由按键的机械特性决定,一般为5~10ms,一个按键的时间一般为几百毫秒至数秒。由于单片机的运行速度快,按键的抖动会导致在一次按下过程中,单片机识别出多次按下和抬起。为了避免这种情况,需要想办法消除抖动带来的影响。任务二实现按键控制LED灯开关四、任务实施2.按键消抖图2.5机械按键的抖动任务二实现按键控制LED灯开关四、任务实施2.按键消抖按键消抖的方法有两种:硬件消抖和软件消抖。硬件消抖是通过电路硬件设计的方法来过滤按键输出信号,将抖动信号过滤成理想信号后再输出给单片机。软件消抖是通过程序过滤的方法,在程序中检测到按键动作后,延时一会儿后再次检测按键状态,如果延时前后按键的状态一致,则说明按键是正常执行动作,否则认为是按键抖动。任务二实现按键控制LED灯开关四、任务实施3.代码设计(1)建立工程新建工程项目,在项目中添加名为“code.c”的代码文件。任务二实现按键控制LED灯开关四、任务实施3.代码设计(2)编写代码开始配置P1_0为输出口配置P1_2为输入口熄灭LED1SW1是否按下?延时消抖切换LED1状态SW1是否抬起?否是是图2.6按键控制LED流程任务二实现按键控制LED灯开关四、任务实施3.代码设计(2)编写代码①在代码中引用“ioCC2530.h”头文件。#include"ioCC2530.h"//引用CC2530头文件②LED1和SW1使用I/O端口进行宏定义。#defineLED1P1_0//LED1宏定义#defineSW1P1_2//SW1宏定义③因为按键软件消抖需要进行延时,可直接使用之前的延时函数delay。任务二实现按键控制LED灯开关四、任务实施3.代码设计(2)编写代码2)编写初始化代码①将P1_0和P1_2设置成通用I/O端口。P1SEL=~0x05;//设置P1_0和P1_1为通用I/O口②将P1_0设置成输出口,P1_2设置成输入口。P1DIR|=0x01;//设置P1_0为输出口P1SEL&=~0x04;//设置P1_2为输入口任务二实现按键控制LED灯开关四、任务实施3.代码设计(2)编写代码2)编写初始化代码③设置P1_2的输入模式。设置I/O端口的输入模式,需要使用PxINP寄存器。其中P0INP寄存器和P1INP寄存器的定义一样,如表2.7所示;P2INP寄存器的定义是另外一种,如表2.8所示。任务二实现按键控制LED灯开关四、任务实施3.代码设计(2)编写代码2)编写初始化代码③设置P1_2的输入模式。位位名称复位值操作描述7:0MDPx_[7:0]0x00R/W设置Px_7到Px_0端口的I/O输入模式。0:上拉或下拉。1:三态。表2.7P0INP和P1INP寄存器的输入模式定义任务二实现按键控制LED灯开关四、任务实施3.代码设计表2.8P2INP寄存器的输入模式定义位位名称复位值操作描述7MDP20R/W
为端口2的所有引脚选择上拉或下。0:上拉。1:下拉。6MDP10R/W为端口1的所有引脚选择上拉或下。0:上拉。1:下拉。5MDP00R/W为端口0的所有引脚选择上拉或下。0:上拉。1:下拉。4:0MDP2_[4:0]0R/W设置P2_4到P2_0端口的I/O输入模式。0:上拉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天桥绿化基础施工方案(3篇)
- 宴会营销方案范文(3篇)
- 影楼粉营销方案(3篇)
- 拱桥施工方案80米(3篇)
- 无人值守地磅施工方案(3篇)
- 极限综合模拟考核专项卷
- 洗涤粉营销方案(3篇)
- 湖州弱电管网施工方案(3篇)
- 瑜伽房营销方案(3篇)
- 码头港池施工方案(3篇)
- 艾媒咨询2025年中国新式茶饮大数据研究及消费行为调查数据
- 2024年伊犁州直法院机关招聘聘用制书记员考试真题
- 2025年离婚抖音作品离婚协议书
- 2025年综合类-病案信息技术(士)-病案信息技术相关专业知识历年真题摘选带答案(5卷单选题100道)
- 七年级数学专项训练:尺规作图+解析
- 2026年高考历史一轮复习:必修《中外历史纲要(上)》知识点考点提纲
- 燃气具安装维修工培训
- 心理健康与职业生涯+期中模拟练习-2024-2025学年中职高教版(2023版)
- 干混悬剂临床应用研究-全面剖析
- 加气站气瓶充装质量保证体系手册2024版
- 2023年瑞丰银行招聘考试真题
评论
0/150
提交评论