编副主编参编
杨瑞李存志蔡敏邹梓秀
董昌春董晓亮陈旭
刘丰华刘新川
周海涛李文亮
机械工业出版社
本书按照企业对物联网技术应用开发者的能力要求,根据高等教育及职业教育改革精神,实施任务化教学设计。
以C语言为程序开发工具,以CC2530单片机为学习对象,按照从浅入深的学习顺序、从常用功能到专有功能的讲解,设计了12个学习单元共15个典型任务。
书中将51单片机基本知识与CC2530单片机应用知识相结合,介绍了CC2530单片机的基本知识和应用,结合物联网技术应用开发中实际案例和全国职业院校技能大赛物联网赛项题目设计了具体实施任务,是一本理实一体化教材。
本书可作为高职院校物联网应用技术、电子工程技术、应用电子技术、自动控制技术等专业的单片机应用技术课程教材,也可以作为应用型本科、职业中专、函授大学以及单片机技术培训班的教材或相关技术人员的参考用书。
图书在版编目(CIP)数据/主编.—北京:机械工业出版社,2015.7 中等职业学校以工作过程为导向课程改革实验项目.计算机网络技术专业核心课程系列教材 ISBN978-7-111-50833-
5 Ⅰ.①服…Ⅱ.①韩…②王…Ⅳ.①TP368.5 Ⅲ.①网络服务器—配置—中等专业学校—教材 中国版本图书馆CIP数据核字(2015)第154699号机械工业出版社(北京市百万庄大街22号邮政编码100037) 策划编辑:版式设计:封面设计: 责任编辑:责任校对:责任印制:印刷厂印刷 年月第版第次印刷 184mm×260mm·印张·千字 0001— 册 标准书号:ISBN978-7-111-- 定价:.元 凡购本书,如有缺页、倒页、脱页,由本社发行部调换 电话服务服务咨询热线:010-88379833 读者购书热线:010-88379649封面无防伪标均为盗版 网络服务机工官网:机工官博:/cmp1952教育服务网:金书网: 前言 PREFACE 物联网作为教育部新设立专业,教育教学资源缺乏,各开设院校普遍面临着缺教材、缺设备、缺师资现象。
传统的单片机教材,不适合物联网专业使用,为此山东交通职业学院与北京新大陆时代教育科技有限公司合作,对接物联网企业岗位需求,结合高职学生特点及相关院校物联网专业建设实际,开发了本教材。
内容选取上,是以物联网技术应用中常见的CC2530芯片作为单片机学习研究对象,兼顾通用单片机应用所需基础知识,同时结合企业物联网工程师岗位人才需求,将本书内容划分成12个学习单元共15个学习任务。
单元1讲解单片机的相关基本概念和IAR开发环境的运用方法;单元2讲解I/O端口的输出控制和输入识别;单元3讲解中断系统和外部中断输入应用;单元4讲解定时/计数器概念和运用方法;单元5讲解串口通信的实现;单元6讲解A/D转换模块运用方法;单元7讲解看门狗功能及使用;单元8讲解电源管理和低功耗实现;单元9讲解DMA传输方式;单元10讲解内部Flash存取操作;单元11讲解随机数发生器的相关概念和使用方法;单元12讲解定时计数器的PWM功能应用。
内容编排上,基于物联网硬件设计开发工作过程中的典型工作任务进行教学单元设计;每一个教学单元按照概述、目标、任务、总结这样的顺序编排;每个任务按照任务描述、任务分析、必备知识、任务实施、任务拓展这样的顺安排。
任务驱动、层次分明,非常适合教学。
可作为中高职院校、应用型本科院校、培训机构的单片机应用课程教材,也可作为相关技术人员的参考用书。
本书具有以下特点:
(1)由浅入深,分层次学习。
学习单元1到学习单元5属于基本应用能力学习,学习单元6到学习单元12属于高阶能力学习,不同层次的院校或读者可根据自身情况选择学习的内容。
(2)理论与实践相结合。
作为一本理实一体化教材,本书中每个学习任务都是以实际开发项目为载体,在讲述任务实施所必需的基本知识后,紧跟任务实施指导,并在任务完成后给出扩展运用练习。
(3)各学科知识融会贯通。
在任务实施过程中,引导读者将单片机技术与其他课程(如电子应用技术、C语言程序开发等)的知识相结合,让读者学会将各学科知识融会贯通,以解决实际问题。
(4)根据岗位实际设定学习内容。
采用C语言编程,以CC2530为主要学习对象,对接物联网工程技术人员岗位实际需求。
(5)实践操作通用性高。
本书实践部分的源代码测试,是以北京新大陆时代 —·III·— 基于CC2530的单片机技术 CC2530DANPIANJIJISHUYUYINGYONG 教育科技有限公司提供的物联网实验教学设备作为硬件平台。
但在书中对硬件设计和任务实施思路进行了详细的讲解,因此,可很方便地使用其他基于CC2530的实验设备来完成本书中实践任务。
(6)配套完整的相关学习资源。
提供了15个学习任务的全部源代码文件。
不同层次院校根据开设课程的学习深度,可参照下表安排教学学时: 学习单元学习单元1CC2530开发入门学习单元2CC2530并行I/O口应用学习单元3CC2530外部中断应用学习单元4CC2530定时/计数器应用学习单元5CC2530串口通信应用学习单元6CC2530的AD转换应用学习单元7CC2530看门狗应用学习单元8CC2530电源管理应用学习单元9CC2530的DMA应用学习单元10CC2530内部Flash读写应用学习单元11CC2530随机数生成器应用学习单元12PWM控制 分配学时886684444444 本书由杨瑞、董昌春主编,房华教授主审,参与本书编写的各位老师都在各院校从事物联网相关专业教学多年。
房华、杨瑞老师指导学生获得2015年全国职业院校物联网应用技术赛项第一名;董昌春老师指导学生获得2013年全国职业院校物联网应用技术赛项一等奖,是物联网应用技术专业国家资源库建设“物联网硬件基础1”课程资源建设主要负责人。
本书在编写过程中参考了相关的文献与资料,在此向相关作者表示感谢。
同时感谢北京新大陆时代教育科技有限公司给予的大力支持。
由于编者的水平有限,加之时间紧迫,错误不当之处难免,恳请各位读者批评指正,并将意见和建议及时反馈给我们,以便下次修订时改进。
所有意见和建议请发往:zbyr@。
编者2015年10月 —·IV·— 学习单元1CC2530开发入门 单元概述学习目标任务1为CC2530烧写程序任务2让所有发光二极管闪烁单元总结习题
(1)
(1)(1)
(2)(10)(17)(18) 目录 CONTENTS 学习单元5CC2530串口通信应用 单元概述学习目标任务7实现串口发送数据到PC任务8实现PC控制发光二极管单元总结习题 (69) (69)(69)(70)(85)(95)(96) 学习单元2CC2530并行I/O口运用 单元概述学习目标任务3实现流水灯效果 任务4按键控制LED单元总结习题 (19) (19)(19)(20)(30)(36)(37) 学习单元6CC2530的AD转换应用 单元概述学习目标任务9实现外部电压值的测量单元总结习题 (97) (97)(97)(98)(112)(112) 学习单元3CC2530外部中断应用 单元概述 (39) (39) 学习目标 (39) 任务5实现按键控制跑马灯的启停(40) 单元总结 (53) 习题 (54) 学习单元7CC2530看门狗应用 单元概述学习目标任务10实现自动复位单元总结习题 (113) (113)(113)(114)(121)(122) 学习单元4CC2530定时/计数器应用 单元概述 (55) (55) 学习目标 (55) 任务6实现发光二极管的周期性闪烁(56) 单元总结 (67) 习题 (68) 学习单元8CC2530电源管理应用 单元概述 (123) (123) 学习目标 (123) 任务11实现CC2530低功耗运行(124) 单元总结 (143) 习题 (144) —·V·— 基于CC2530的单片机技术 CC2530DANPIANJIJISHUYUYINGYONG 学习单元9CC2530的DMA应用 单元概述 (145) (145) 学习目标 (145) 任务12实现DMA方式拷贝数据(146) 单元总结 (166) 习题 (166) 学习单元10 CC2530内部Flash读写应用 (167) 单元概述 (167) 学习目标 (167) 任务13
实现内部Flash存取数据(168) 单元总结 (179) 习题 (180) 学习单元11 CC2530随机数生成器应用(181) 单元概述 (181) 学习目标任务14产生随机数单元总结习题 学习单元12PWM控制 单元概述学习目标任务15实现呼吸灯效果单元总结习题 (181)(182)(191)(192) (193) (193)(193)(194)(202)(203) 附录 附录
A 附录
B CC2530引脚描述 (205) (205) CC2530外设I/O引脚映射(207) 参考文献 (208) —·VI·— UNIT2 学习单元
2 CC2530并行I/O口运用 单元概述 本学习单元的主要内容是CC2530单片机I/O端口的使用方法,包含任务3和任务4两个任务。
任务3介绍了CC2530的引脚和I/O口相关知识,通过本任务可使学生掌握使用I/O口输出信号的方法。
任务4介绍了I/O输入模式,通过本任务可使学生掌握使用I/O口获取输入信号的方法。
学习目标 知识目标:了解CC2530的I/O口所具备的特性。
理解通用I/O和外设I/O的区别。
了解上拉、下拉和三态的含义。
掌握特殊功能寄存器的作用。
熟悉CC2530控制I/O口的相关寄存器。
理解简单宏定义的作用。
知道按键消抖的目的和方法。
技能目标:能够根据实际应用对I/O口进行配置。
能够使用I/O口输出信号。
能够从I/O口获取输入的信号。
能够使用简单宏定义来帮助编写代码。
能够使用软件方法消除按键抖动 素质目标:具备开阔、灵活的思维能力。
具备积极、主动的探索精神。
具备严谨、细致的工作态度。
基于CC2530的单片机技术 JIYUCC2530DEDANPIANJIJISHU 任务
3 实现流水灯效果 任务要求 编写程序控制实验板上的LED1和LED2的亮、灭状态,使它们以流水灯方式进行工作,即实验板通电后两个发光二极管以下述方式工作: ①通电后LED1和LED2都熄灭。
②延时一段时间后LED1点亮。
③延时一段时间后LED2点亮,此时LED1和LED2都处在点亮状态。
④延时一段时间后LED1熄灭。
⑤延时一段时间后LED2熄灭,此时LED1和LED2都处在熄灭状态。
⑥返回步骤②循环执行。
任务分析 本任务主要是实现对LED灯的控制,我们需要知道CC2530是如何向外输出控制信号的,LED是如何与CC2530进行连接和工作的,以及怎样通过程序来控制CC2530输出所需要的信号。
建议学生带着以下问题去进行本任务的学习和实践:CC2530有哪些I/O端口?CC2530的I/O端口有什么特性?要控制CC2530的I/O端口需要用到哪些寄存器?如何编写程序控制I/O口对外输出信号? 必备知识
1.CC2530的引脚CC2530单片机采用QFN40封装,外观上是一个边长为6mm的正方形芯片,每个边上有10个引脚,总共40个引脚。
CC2530的引脚布局如图3-1所示。
—·20·— 学习单元2CC2530并行I/O口运用 DCOUPLDVDD1P1_6P1_7P2_0P2_1P2_2P2_3/XOSC32K_Q2P2_4/XOSC32K_Q1AVDD6 GNDGNDGNDGNDP1_5P1_4P1_3P1_2P1_1DVDD2 4039123456789101112 383736353433323130 29 28 27 GND 26 GroundPad 25 24 23 22 211314151617181920 RBIASAVDD4AVDD1AVDD2RF_NRF_PAVDD3XOSC_Q2XOSC_Q1AVDD5 P1_0P0_7P0_6P0_5P0_4P0_3P0_2P0_1P0_0RESET_
N 图3-1CC2530引脚布局可按表3-1将CC2530的40个引脚按功能进行分类,各个引脚的详细介绍请参考附录
A。
引脚类型电源类引脚数字I/O引脚时钟引脚复位引脚 RF引脚其他引脚 表3-1引脚类型划分包含引脚 AVDD1~
6、DVDD1~
2、GND、DCOUPLP0_0~P0_
7、P1_0~P1_
7、P2_0~P2_4XOSC_Q1、XOSC_Q2RESET_NRF_
N、RF_PRBIAS 功能简介为芯片内部供电数字信号输入/输出时钟信号输入 让芯片复位外接无线收发天线 外接偏置电阻
2.CC2530的I/O引脚 CC2530总共具有21个数字I/O引脚,这些引脚可以组成3个8位端口,分别为端口
0、端口1和端口
2,通常表示为P0、P1和P2。
其中,P0和P1是完全的8位端口,而P2仅有5位可以使用。
21个I/O引脚具有以下特性,可以通过编程进行配置。
(1)可配置为通用I/O端口 通用I/O端口是指可以对外输出逻辑值0(低电平)或1(高电平),也可读取从I/O引脚输入
的逻辑值(低电平为
0,高电平为1)。
可以通过编程来将I/O端口设置成输出方式或输入方式。
(2)可配置为外部设备I/O端口 CC2530内部除了含有8051CPU核心外,还具有其他功能模块,如ADC、定时器和串
行通信模块,我们也称这些功能模块为外设。
可通过编程将I/O口与这些外设建立起连接关 —·21·— 基于CC2530的单片机技术 JIYUCC2530DEDANPIANJIJISHU 系,以便这些外设与CC2530芯片外界电路进行信息交换。
需要注意的是,不能随意指定某个I/O口连接到某个外设,它们之间有一定的对应关系,可参考附录
B,具体知识将在后续任务中学习。
(3)输入口具备3种输入模式 当CC2530的I/O口被配置成通用输入端口时,端口的输入模式有上拉、下拉和三态三种选择,可通过编程进行选择,能够适应多种不同的输入应用。
(4)具有外部中断能力 当使用外部中断时,I/O口引脚可以作为外部中断源的输入口,这使得电路设计变得更加灵活。
3.I/O端口的相关寄存器 在单片机内部,有一些具有特殊功能的存储单元,这些存储单元用来存放控制单片机内部器件的命令、数据或是运行过程中的一些状态信息。
这些寄存器统称“特殊功能寄存器(SFR)”,操作单片机本质上就是对这些特殊功能寄存器进行读写操作,并且某些特殊功能寄存器可以位寻址。
例如通过已配置好的P1_1口向外输出高电平可用以下代码实现: P1=0x02;或者P1_1=1; P1是特殊功能寄存器的名字,P1_1是P1中一个位的名字,为了便于使用,每个特殊功能寄存器都会起一个名字。
与CC2530的I/O口有关的主要特殊功能寄存器如表3-2所列,其中x取值为0~
2,分别对应P0、P1和P2口。
表3-2CC2530中I/O口相关主要特殊功能寄存器 名称PxPERCFGAPCFGPxSELPxDIRPxINPPxIFGPICTLPxIENPMUX 功能描述端口数据,用来控制端口的输出或获取端口的输入。
外设控制,用来选择外设功能在I/O口上的位置。
模拟外设I/O配置,用来配置P0都作为模拟I/O口使用。
端口功能选择,用来设置端口是通用I/O还是外设I/O。
端口方向,当端口为通用I/O时,用来设置数据传输方向。
端口输入模式,当端口为通用输入口时,用来选择输入模式。
端口中断状态标志,使用外部中断时,用来表示是否有中断。
端口中断控制,使用外部中断时,用来配置端口中断触发类型。
端口中断屏蔽,用来选择是否使用外部中断功能。
掉电信号,用来输出32KHz时钟信号或内部数字稳压状态。
可以看到I/O端口的相关寄存器有很多,在实际运用时只需根据需要使用其中的部分寄存器即可。
同时需要注意,特殊功能寄存器中的各位数据都是有操作约定的,如表3-
3。
—·22·— 学习单元2CC2530并行I/O口运用 符号R/W RR0R1WW0W1H0H1 表3-3寄存器位操作约定 访问模式可读取也可写入 只能读取读出的值始终为0读出的值始终为
1 只能写入写入任何值都变成0写入任何值都变成1硬件自动将其变成0硬件自动将其变成
1 任务实施
1.电路分析 要使用单片机控制外界器件,就要清楚器件与单片机的连接关系和工作原理,这样才能在编写程序代码时知道该操作哪些I/O端口或功能模块,以及应该输入或输出什么样的控制信号。
(1)LED的连接和工作原理 实验板上LED1和LED2与CC2530的连接如图3-2所示,LED1和LED2的负极端分别通过一个限流电阻连接到地(低电平),它们的正极端分别连接到CC2530的P1_0端口和P1_1端口。
LED-LINKLED1LED-COMMLED2 LE2DLE2D R101KR111K LED-LINKLED-COMMKEY1P1.3P1.4P1.5P1.6P1.7 119P1.08P1.17P1.26P1.35P1.438P1.537P1.6 P1.7 图3-2LED与CC2530连接电路图 为控制两个LED,连接LED的P1_0端口和P1_1端口应被配置成通用输出端口。
当端口输出低电平(逻辑值0)时,LED正极端和负极端都为低电平,LED两端没有电压差,也就不会有电流流过LED,此时LED熄灭。
当端口输出高电平时,LED正极端电平高于负极端电平,LED两端存在电压差,会有电流从端口流出并通过LED的正极端流向负极端,此时LED点亮。
—·23·— 基于CC2530的单片机技术 JIYUCC2530DEDANPIANJIJISHU
(2)驱动电流 LED工作时的电流不能过大,否则会将其烧坏,同时CC2530的I/O口输入和输出电流的能力是有限的,因此这里需要使用限流电阻R10和R11来限制流电流的大小。
红色LED和绿色LED工作时的电压压降约为1.8V,I/O端口的输出电压为3.3V,当LED点亮时其工作电流的大小也就是流过电阻的电流大小。
当前电路中电流的大小为: 电流大小=输出电压-LED压降=3.3V-1.8V=1.5mA 限流电阻阻值 1KΩ CC2530的I/O端口除P1_0和P1_1端口有20mA的驱动能力外,其他I/O端口只有4mA的驱动能力,在应用中从I/O口流入或流出的电流不能超过这些限定值。
2.代码设计
(1)建立工程 参照任务2建立任务3的工程项目,在项目添加名为“code.c”的代码文件。
(2)编写代码 根据任务要求,可将LED的控制流程用流程图进行表示,如图3-3所示。
通电 熄灭LED1
和LED2 延时 延时 点亮LED1 熄灭LED1 延时 延时 点亮LED2 熄灭LED2 1)引用CC2530头文件 图3-3LED控制流程 在code.c文件中引用“ioCC2530.h”文件: #include"ioCC2530.h"//引用CC2530头文件 该文件是为CC2530编程所需的头文件,它包含了CC2530中各个特殊功能寄存器的定义。
只有在引用该头文件后,我们才能在程序代码中直接使用特殊功能寄存器的名称,如P1、P1DIR等。
—·24·— 学习单元2CC2530并行I/O口运用 2)设计延时函数 LED控制流程中需要用到延时,我们在code.c中单独编写一个名为“delay”的延时函数,在需要延时的地方调用该函数即可。
delay函数定义如下: /**************************************************************
函数名称:delay功能:软件延时入口参数:time--延时循环执行次数出口参数:无返回值:无**************************************************************/voiddelay(unsignedinttime){unsignedinti;unsignedcharj;for(i=0;i
以C语言为程序开发工具,以CC2530单片机为学习对象,按照从浅入深的学习顺序、从常用功能到专有功能的讲解,设计了12个学习单元共15个典型任务。
书中将51单片机基本知识与CC2530单片机应用知识相结合,介绍了CC2530单片机的基本知识和应用,结合物联网技术应用开发中实际案例和全国职业院校技能大赛物联网赛项题目设计了具体实施任务,是一本理实一体化教材。
本书可作为高职院校物联网应用技术、电子工程技术、应用电子技术、自动控制技术等专业的单片机应用技术课程教材,也可以作为应用型本科、职业中专、函授大学以及单片机技术培训班的教材或相关技术人员的参考用书。
图书在版编目(CIP)数据/主编.—北京:机械工业出版社,2015.7 中等职业学校以工作过程为导向课程改革实验项目.计算机网络技术专业核心课程系列教材 ISBN978-7-111-50833-
5 Ⅰ.①服…Ⅱ.①韩…②王…Ⅳ.①TP368.5 Ⅲ.①网络服务器—配置—中等专业学校—教材 中国版本图书馆CIP数据核字(2015)第154699号机械工业出版社(北京市百万庄大街22号邮政编码100037) 策划编辑:版式设计:封面设计: 责任编辑:责任校对:责任印制:印刷厂印刷 年月第版第次印刷 184mm×260mm·印张·千字 0001— 册 标准书号:ISBN978-7-111-- 定价:.元 凡购本书,如有缺页、倒页、脱页,由本社发行部调换 电话服务服务咨询热线:010-88379833 读者购书热线:010-88379649封面无防伪标均为盗版 网络服务机工官网:机工官博:/cmp1952教育服务网:金书网: 前言 PREFACE 物联网作为教育部新设立专业,教育教学资源缺乏,各开设院校普遍面临着缺教材、缺设备、缺师资现象。
传统的单片机教材,不适合物联网专业使用,为此山东交通职业学院与北京新大陆时代教育科技有限公司合作,对接物联网企业岗位需求,结合高职学生特点及相关院校物联网专业建设实际,开发了本教材。
内容选取上,是以物联网技术应用中常见的CC2530芯片作为单片机学习研究对象,兼顾通用单片机应用所需基础知识,同时结合企业物联网工程师岗位人才需求,将本书内容划分成12个学习单元共15个学习任务。
单元1讲解单片机的相关基本概念和IAR开发环境的运用方法;单元2讲解I/O端口的输出控制和输入识别;单元3讲解中断系统和外部中断输入应用;单元4讲解定时/计数器概念和运用方法;单元5讲解串口通信的实现;单元6讲解A/D转换模块运用方法;单元7讲解看门狗功能及使用;单元8讲解电源管理和低功耗实现;单元9讲解DMA传输方式;单元10讲解内部Flash存取操作;单元11讲解随机数发生器的相关概念和使用方法;单元12讲解定时计数器的PWM功能应用。
内容编排上,基于物联网硬件设计开发工作过程中的典型工作任务进行教学单元设计;每一个教学单元按照概述、目标、任务、总结这样的顺序编排;每个任务按照任务描述、任务分析、必备知识、任务实施、任务拓展这样的顺安排。
任务驱动、层次分明,非常适合教学。
可作为中高职院校、应用型本科院校、培训机构的单片机应用课程教材,也可作为相关技术人员的参考用书。
本书具有以下特点:
(1)由浅入深,分层次学习。
学习单元1到学习单元5属于基本应用能力学习,学习单元6到学习单元12属于高阶能力学习,不同层次的院校或读者可根据自身情况选择学习的内容。
(2)理论与实践相结合。
作为一本理实一体化教材,本书中每个学习任务都是以实际开发项目为载体,在讲述任务实施所必需的基本知识后,紧跟任务实施指导,并在任务完成后给出扩展运用练习。
(3)各学科知识融会贯通。
在任务实施过程中,引导读者将单片机技术与其他课程(如电子应用技术、C语言程序开发等)的知识相结合,让读者学会将各学科知识融会贯通,以解决实际问题。
(4)根据岗位实际设定学习内容。
采用C语言编程,以CC2530为主要学习对象,对接物联网工程技术人员岗位实际需求。
(5)实践操作通用性高。
本书实践部分的源代码测试,是以北京新大陆时代 —·III·— 基于CC2530的单片机技术 CC2530DANPIANJIJISHUYUYINGYONG 教育科技有限公司提供的物联网实验教学设备作为硬件平台。
但在书中对硬件设计和任务实施思路进行了详细的讲解,因此,可很方便地使用其他基于CC2530的实验设备来完成本书中实践任务。
(6)配套完整的相关学习资源。
提供了15个学习任务的全部源代码文件。
不同层次院校根据开设课程的学习深度,可参照下表安排教学学时: 学习单元学习单元1CC2530开发入门学习单元2CC2530并行I/O口应用学习单元3CC2530外部中断应用学习单元4CC2530定时/计数器应用学习单元5CC2530串口通信应用学习单元6CC2530的AD转换应用学习单元7CC2530看门狗应用学习单元8CC2530电源管理应用学习单元9CC2530的DMA应用学习单元10CC2530内部Flash读写应用学习单元11CC2530随机数生成器应用学习单元12PWM控制 分配学时886684444444 本书由杨瑞、董昌春主编,房华教授主审,参与本书编写的各位老师都在各院校从事物联网相关专业教学多年。
房华、杨瑞老师指导学生获得2015年全国职业院校物联网应用技术赛项第一名;董昌春老师指导学生获得2013年全国职业院校物联网应用技术赛项一等奖,是物联网应用技术专业国家资源库建设“物联网硬件基础1”课程资源建设主要负责人。
本书在编写过程中参考了相关的文献与资料,在此向相关作者表示感谢。
同时感谢北京新大陆时代教育科技有限公司给予的大力支持。
由于编者的水平有限,加之时间紧迫,错误不当之处难免,恳请各位读者批评指正,并将意见和建议及时反馈给我们,以便下次修订时改进。
所有意见和建议请发往:zbyr@。
编者2015年10月 —·IV·— 学习单元1CC2530开发入门 单元概述学习目标任务1为CC2530烧写程序任务2让所有发光二极管闪烁单元总结习题
(1)
(1)(1)
(2)(10)(17)(18) 目录 CONTENTS 学习单元5CC2530串口通信应用 单元概述学习目标任务7实现串口发送数据到PC任务8实现PC控制发光二极管单元总结习题 (69) (69)(69)(70)(85)(95)(96) 学习单元2CC2530并行I/O口运用 单元概述学习目标任务3实现流水灯效果 任务4按键控制LED单元总结习题 (19) (19)(19)(20)(30)(36)(37) 学习单元6CC2530的AD转换应用 单元概述学习目标任务9实现外部电压值的测量单元总结习题 (97) (97)(97)(98)(112)(112) 学习单元3CC2530外部中断应用 单元概述 (39) (39) 学习目标 (39) 任务5实现按键控制跑马灯的启停(40) 单元总结 (53) 习题 (54) 学习单元7CC2530看门狗应用 单元概述学习目标任务10实现自动复位单元总结习题 (113) (113)(113)(114)(121)(122) 学习单元4CC2530定时/计数器应用 单元概述 (55) (55) 学习目标 (55) 任务6实现发光二极管的周期性闪烁(56) 单元总结 (67) 习题 (68) 学习单元8CC2530电源管理应用 单元概述 (123) (123) 学习目标 (123) 任务11实现CC2530低功耗运行(124) 单元总结 (143) 习题 (144) —·V·— 基于CC2530的单片机技术 CC2530DANPIANJIJISHUYUYINGYONG 学习单元9CC2530的DMA应用 单元概述 (145) (145) 学习目标 (145) 任务12实现DMA方式拷贝数据(146) 单元总结 (166) 习题 (166) 学习单元10 CC2530内部Flash读写应用 (167) 单元概述 (167) 学习目标 (167) 任务13
实现内部Flash存取数据(168) 单元总结 (179) 习题 (180) 学习单元11 CC2530随机数生成器应用(181) 单元概述 (181) 学习目标任务14产生随机数单元总结习题 学习单元12PWM控制 单元概述学习目标任务15实现呼吸灯效果单元总结习题 (181)(182)(191)(192) (193) (193)(193)(194)(202)(203) 附录 附录
A 附录
B CC2530引脚描述 (205) (205) CC2530外设I/O引脚映射(207) 参考文献 (208) —·VI·— UNIT2 学习单元
2 CC2530并行I/O口运用 单元概述 本学习单元的主要内容是CC2530单片机I/O端口的使用方法,包含任务3和任务4两个任务。
任务3介绍了CC2530的引脚和I/O口相关知识,通过本任务可使学生掌握使用I/O口输出信号的方法。
任务4介绍了I/O输入模式,通过本任务可使学生掌握使用I/O口获取输入信号的方法。
学习目标 知识目标:了解CC2530的I/O口所具备的特性。
理解通用I/O和外设I/O的区别。
了解上拉、下拉和三态的含义。
掌握特殊功能寄存器的作用。
熟悉CC2530控制I/O口的相关寄存器。
理解简单宏定义的作用。
知道按键消抖的目的和方法。
技能目标:能够根据实际应用对I/O口进行配置。
能够使用I/O口输出信号。
能够从I/O口获取输入的信号。
能够使用简单宏定义来帮助编写代码。
能够使用软件方法消除按键抖动 素质目标:具备开阔、灵活的思维能力。
具备积极、主动的探索精神。
具备严谨、细致的工作态度。
基于CC2530的单片机技术 JIYUCC2530DEDANPIANJIJISHU 任务
3 实现流水灯效果 任务要求 编写程序控制实验板上的LED1和LED2的亮、灭状态,使它们以流水灯方式进行工作,即实验板通电后两个发光二极管以下述方式工作: ①通电后LED1和LED2都熄灭。
②延时一段时间后LED1点亮。
③延时一段时间后LED2点亮,此时LED1和LED2都处在点亮状态。
④延时一段时间后LED1熄灭。
⑤延时一段时间后LED2熄灭,此时LED1和LED2都处在熄灭状态。
⑥返回步骤②循环执行。
任务分析 本任务主要是实现对LED灯的控制,我们需要知道CC2530是如何向外输出控制信号的,LED是如何与CC2530进行连接和工作的,以及怎样通过程序来控制CC2530输出所需要的信号。
建议学生带着以下问题去进行本任务的学习和实践:CC2530有哪些I/O端口?CC2530的I/O端口有什么特性?要控制CC2530的I/O端口需要用到哪些寄存器?如何编写程序控制I/O口对外输出信号? 必备知识
1.CC2530的引脚CC2530单片机采用QFN40封装,外观上是一个边长为6mm的正方形芯片,每个边上有10个引脚,总共40个引脚。
CC2530的引脚布局如图3-1所示。
—·20·— 学习单元2CC2530并行I/O口运用 DCOUPLDVDD1P1_6P1_7P2_0P2_1P2_2P2_3/XOSC32K_Q2P2_4/XOSC32K_Q1AVDD6 GNDGNDGNDGNDP1_5P1_4P1_3P1_2P1_1DVDD2 4039123456789101112 383736353433323130 29 28 27 GND 26 GroundPad 25 24 23 22 211314151617181920 RBIASAVDD4AVDD1AVDD2RF_NRF_PAVDD3XOSC_Q2XOSC_Q1AVDD5 P1_0P0_7P0_6P0_5P0_4P0_3P0_2P0_1P0_0RESET_
N 图3-1CC2530引脚布局可按表3-1将CC2530的40个引脚按功能进行分类,各个引脚的详细介绍请参考附录
A。
引脚类型电源类引脚数字I/O引脚时钟引脚复位引脚 RF引脚其他引脚 表3-1引脚类型划分包含引脚 AVDD1~
6、DVDD1~
2、GND、DCOUPLP0_0~P0_
7、P1_0~P1_
7、P2_0~P2_4XOSC_Q1、XOSC_Q2RESET_NRF_
N、RF_PRBIAS 功能简介为芯片内部供电数字信号输入/输出时钟信号输入 让芯片复位外接无线收发天线 外接偏置电阻
2.CC2530的I/O引脚 CC2530总共具有21个数字I/O引脚,这些引脚可以组成3个8位端口,分别为端口
0、端口1和端口
2,通常表示为P0、P1和P2。
其中,P0和P1是完全的8位端口,而P2仅有5位可以使用。
21个I/O引脚具有以下特性,可以通过编程进行配置。
(1)可配置为通用I/O端口 通用I/O端口是指可以对外输出逻辑值0(低电平)或1(高电平),也可读取从I/O引脚输入
的逻辑值(低电平为
0,高电平为1)。
可以通过编程来将I/O端口设置成输出方式或输入方式。
(2)可配置为外部设备I/O端口 CC2530内部除了含有8051CPU核心外,还具有其他功能模块,如ADC、定时器和串
行通信模块,我们也称这些功能模块为外设。
可通过编程将I/O口与这些外设建立起连接关 —·21·— 基于CC2530的单片机技术 JIYUCC2530DEDANPIANJIJISHU 系,以便这些外设与CC2530芯片外界电路进行信息交换。
需要注意的是,不能随意指定某个I/O口连接到某个外设,它们之间有一定的对应关系,可参考附录
B,具体知识将在后续任务中学习。
(3)输入口具备3种输入模式 当CC2530的I/O口被配置成通用输入端口时,端口的输入模式有上拉、下拉和三态三种选择,可通过编程进行选择,能够适应多种不同的输入应用。
(4)具有外部中断能力 当使用外部中断时,I/O口引脚可以作为外部中断源的输入口,这使得电路设计变得更加灵活。
3.I/O端口的相关寄存器 在单片机内部,有一些具有特殊功能的存储单元,这些存储单元用来存放控制单片机内部器件的命令、数据或是运行过程中的一些状态信息。
这些寄存器统称“特殊功能寄存器(SFR)”,操作单片机本质上就是对这些特殊功能寄存器进行读写操作,并且某些特殊功能寄存器可以位寻址。
例如通过已配置好的P1_1口向外输出高电平可用以下代码实现: P1=0x02;或者P1_1=1; P1是特殊功能寄存器的名字,P1_1是P1中一个位的名字,为了便于使用,每个特殊功能寄存器都会起一个名字。
与CC2530的I/O口有关的主要特殊功能寄存器如表3-2所列,其中x取值为0~
2,分别对应P0、P1和P2口。
表3-2CC2530中I/O口相关主要特殊功能寄存器 名称PxPERCFGAPCFGPxSELPxDIRPxINPPxIFGPICTLPxIENPMUX 功能描述端口数据,用来控制端口的输出或获取端口的输入。
外设控制,用来选择外设功能在I/O口上的位置。
模拟外设I/O配置,用来配置P0都作为模拟I/O口使用。
端口功能选择,用来设置端口是通用I/O还是外设I/O。
端口方向,当端口为通用I/O时,用来设置数据传输方向。
端口输入模式,当端口为通用输入口时,用来选择输入模式。
端口中断状态标志,使用外部中断时,用来表示是否有中断。
端口中断控制,使用外部中断时,用来配置端口中断触发类型。
端口中断屏蔽,用来选择是否使用外部中断功能。
掉电信号,用来输出32KHz时钟信号或内部数字稳压状态。
可以看到I/O端口的相关寄存器有很多,在实际运用时只需根据需要使用其中的部分寄存器即可。
同时需要注意,特殊功能寄存器中的各位数据都是有操作约定的,如表3-
3。
—·22·— 学习单元2CC2530并行I/O口运用 符号R/W RR0R1WW0W1H0H1 表3-3寄存器位操作约定 访问模式可读取也可写入 只能读取读出的值始终为0读出的值始终为
1 只能写入写入任何值都变成0写入任何值都变成1硬件自动将其变成0硬件自动将其变成
1 任务实施
1.电路分析 要使用单片机控制外界器件,就要清楚器件与单片机的连接关系和工作原理,这样才能在编写程序代码时知道该操作哪些I/O端口或功能模块,以及应该输入或输出什么样的控制信号。
(1)LED的连接和工作原理 实验板上LED1和LED2与CC2530的连接如图3-2所示,LED1和LED2的负极端分别通过一个限流电阻连接到地(低电平),它们的正极端分别连接到CC2530的P1_0端口和P1_1端口。
LED-LINKLED1LED-COMMLED2 LE2DLE2D R101KR111K LED-LINKLED-COMMKEY1P1.3P1.4P1.5P1.6P1.7 119P1.08P1.17P1.26P1.35P1.438P1.537P1.6 P1.7 图3-2LED与CC2530连接电路图 为控制两个LED,连接LED的P1_0端口和P1_1端口应被配置成通用输出端口。
当端口输出低电平(逻辑值0)时,LED正极端和负极端都为低电平,LED两端没有电压差,也就不会有电流流过LED,此时LED熄灭。
当端口输出高电平时,LED正极端电平高于负极端电平,LED两端存在电压差,会有电流从端口流出并通过LED的正极端流向负极端,此时LED点亮。
—·23·— 基于CC2530的单片机技术 JIYUCC2530DEDANPIANJIJISHU
(2)驱动电流 LED工作时的电流不能过大,否则会将其烧坏,同时CC2530的I/O口输入和输出电流的能力是有限的,因此这里需要使用限流电阻R10和R11来限制流电流的大小。
红色LED和绿色LED工作时的电压压降约为1.8V,I/O端口的输出电压为3.3V,当LED点亮时其工作电流的大小也就是流过电阻的电流大小。
当前电路中电流的大小为: 电流大小=输出电压-LED压降=3.3V-1.8V=1.5mA 限流电阻阻值 1KΩ CC2530的I/O端口除P1_0和P1_1端口有20mA的驱动能力外,其他I/O端口只有4mA的驱动能力,在应用中从I/O口流入或流出的电流不能超过这些限定值。
2.代码设计
(1)建立工程 参照任务2建立任务3的工程项目,在项目添加名为“code.c”的代码文件。
(2)编写代码 根据任务要求,可将LED的控制流程用流程图进行表示,如图3-3所示。
通电 熄灭LED1
和LED2 延时 延时 点亮LED1 熄灭LED1 延时 延时 点亮LED2 熄灭LED2 1)引用CC2530头文件 图3-3LED控制流程 在code.c文件中引用“ioCC2530.h”文件: #include"ioCC2530.h"//引用CC2530头文件 该文件是为CC2530编程所需的头文件,它包含了CC2530中各个特殊功能寄存器的定义。
只有在引用该头文件后,我们才能在程序代码中直接使用特殊功能寄存器的名称,如P1、P1DIR等。
—·24·— 学习单元2CC2530并行I/O口运用 2)设计延时函数 LED控制流程中需要用到延时,我们在code.c中单独编写一个名为“delay”的延时函数,在需要延时的地方调用该函数即可。
delay函数定义如下: /**************************************************************
函数名称:delay功能:软件延时入口参数:time--延时循环执行次数出口参数:无返回值:无**************************************************************/voiddelay(unsignedinttime){unsignedinti;unsignedcharj;for(i=0;i
声明:
该资讯来自于互联网网友发布,如有侵犯您的权益请联系我们。