嵌入式cc2530单片机ZigBee-流水灯的实验
嵌入式cc2530单片机ZigBee
单片机是一种集成电路芯片,包含中央处理器CPU、随机存储器RAM、只读存储器ROM、输入输出I/O接口、中断控制系统、定时/计数器和通信等多种功能部件
其针脚定义如下:
1.0 --P0、P1各8个针脚(1字节=8位,针脚/位。一般16进制定义,可以自己换算二进制并结合参数表去理解每个设定功能),P2有5个针脚。
1.1–CC2530单片机采用QFN40封装,外观上是一个边长为6mm的正方形芯片,每个边上有10个引脚,总共40个引脚。CC2530的引脚布局如图所示。
【软件】
1、IAR Embedded Workbench for 8051,IAR是著名的C编译器,CC2530使用的是8051内核。
2、SmartRF Flash Programmer,将IAR生成的hex文件烧写进cc2530芯片中。
3、sscom3.2 串口调试助手。
一、任务要求
编写程序控制实验板上的LED1和LED2的亮、灭状态,使它们以流水灯方式进行工作,即实验板通电后两个发光二极管以下述方式工作:
①电后LED1和LED2都熄灭。
②延时一段时间后LED1点亮。
③延时一段时间后LED2点亮,此时LED1和LED2都处在点亮状态。
④延时一段时间后LED1熄灭。
⑤延时一段时间后LED2熄灭,此时LED1和LED2都处在熄灭状态。
⑥返回步骤②循环执行。
二、2、CC2530的I/O引脚
1)CC2530总共具有21个数字I/O引脚,这些引脚可以组成3个8位端口,分别为端口0、端口1和端口2,通常表示为P0、P1和P2。其中,P0和P1是完全的8位端口,而P2仅有5位可以使用。21个I/O引脚具有以下特性,可以通过编程进行配置。
2)1.0–可配置为通用I/O端口
通用I/O端口是指可以对外输出逻辑值0(低电平)或1(高电平),也可读取从I/O引脚输入的逻辑值(低电平为0,高电平为1)。可以通过编程来将I/O端口设置成输出方式或输入方式。
3)1.1–可配置为外部设备I/O端口
CC2530内部除了含有8051CPU核心外,还具有其他功能模块,如ADC、定时器和串行通信模块,我们也称这些功能模块为外设。可通过编程将I/O口与这些外设建立起连接关系,以便这些外设与CC2530芯片外界电路进行信息交换。需要注意的是,不能随意指定某个I/O口连接到某个外设
4)1.2–输入口具备3种输入模式
当CC2530的I/O口被配置成通用输入端口时,端口的输入模式有上拉、下拉和三态三种选择,可通过编程进行选择,能够适应多种不同的输入应用。
5)1.3 --具有外部中断能力
当使用外部中断时,I/O口引脚可以作为外部中断源的输入口,这使得电路设计变得更加灵活。
6)I/O端口的相关寄存器
在单片机内部,有一些具有特殊功能的存储单元,这些存储单元用来存放控制单片机内部器件的命令、数据或是运行过程中的一些状态信息。这些寄存器统称“特殊功能寄存器(SFR)”,操作单片机本质上就是对这些特殊功能寄存器进行读写操作,并且某些特殊功能寄存器可以位寻址。例如通过已配置好的P1_1口向外输出高电平可用以下代码实现:
P1 = 0x02; 或者 P1_1 = 1;
7)P1是特殊功能寄存器的名字,P1_1是P1中一个位的名字,为了便于使用,每个特殊功能寄存器都会起一个名字,其中x取值为0~2,分别对应P0、P1和P2口。
三、电路分析
要使用单片机控制外界器件,就要清楚器件与单片机的连接关系和工作原理,这样才能在编写程序代码时知道该操作哪些I/O端口或功能模块,以及应该输入或输出什么样的控制信号。
(1)LED的连接和工作原理
实验板上LED1和LED2与CC2530的连接如图2-2所示,LED1和LED2的负极端分别通过一个限流电阻连接到地(低电平),它们的正极端分别连接到CC2530的P1_0端口和P1_1端口。
为控制两个LED,连接LED的P1_0端口和P1_1端口应被配置成通用输出端口。当端口输出低电平(逻辑值0)时,LED正极端和负极端都为低电平,LED两端没有电压差,也就不会有电流流过LED,此时LED熄灭。当端口输出高电平时,LED正极端电平高于负极端电平,LED两端存在电压差,会有电流从端口流出并通过LED的正极端流向负极端,此时LED点亮
四、寄存器配置分析:
这里我们只用到了灯,所以我们只配置灯的一系列寄存器。
第一个是我们端口功能选择寄存器,我们用的是P1端口所以我们只对P1端口进行配置。
对端口输入和输出进行定义:
通过对i/o的计算
https://img-blog.csdnimg.cn/2020120120230525.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMDMzOTAz,size_16,color_FFFFFF,t_70
五、流程分析
根据任务要求,可将LED的控制流程用流程图进行表示,如下图所示。
六、代码如下:
#include "ioCC2530.h"//引用CC2530头文件/**************************************************************函数名称:delay功 能:软件延时入口参数:time--延时循环执行次数出口参数:无返 回 值:无**************************************************************/void delay(unsigned int time){unsigned int i;unsigned char j;for(i = 0;i < time;i++){ for(j = 0;j < 240;j++)}}/**************************************************************函数名称:main功 能:程序主函数入口参数:无出口参数:无返 回 值:无**************************************************************/void main(void){P1SEL &= ~0xff;//设置P1口所有位为普通IO口P1DIR |= 0xff;//设置P1口所有位为输出口while(1)//程序主循环{P1 = ~P1;//P1口输出状态反转delay(1000);//延时}}
或者代码为:
#include "iocc2530.h"//头文件#define LED1 P1_0//宏定义p1_0#define LED2 P1_1//宏定义p1_1void delay(unsigned int time){ //延时函数unsigned int i,j;for(i=0;i<time;i++){for(j=0;j<200;j++);}}void main(void){ //主函数P1SEL &=~0X03; //定义通用I/O口P1DIR |=0X03; //定义输出接口LED1=0; //将led1置于低电平LED2=0; //将led2置于低电平while(1){delay(100);LED1=1;delay(100);LED2=1;delay(100);LED1=0;delay(100);LED2=0;delay(100);}//利用while循环使灯依此循环亮循环灭}
嵌入式cc2530单片机ZigBee-流水灯的实验相关推荐
- 单片机炫彩灯实训报告_单片机跑马灯(流水灯)控制实验报告
单片机跑马灯(流水灯)控制实验报告 1单片机实验报告单片机实验报告姓名 学号一.一. 实验实现功能实验实现功能1计数器功能 2流水灯二.具体操作具体操作1计数器功能计数器功能数码管的动态显示.每按一次 ...
- 单片机c语言 流水灯 教案,单片机控制流水灯讲课教案.doc
单片机控制流水灯 前言 随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁.LED灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市 ...
- 51单片机:流水灯蜂鸣器控制
//51单片机:流水灯&蜂鸣器控制 //bglei@nuaa.edu.cn 2022/8/28<流水灯&蜂鸣器控制> #include<reg52.h> #in ...
- pic单片机流水灯循环右移c语言,PIC单片机LED流水灯程序
PIC 单片机 LED流水灯程序 ;************************************************************* include ;*********** ...
- Proteus:单片机 LED流水灯模拟
题目概述: 单片机LED流水灯. 编程: #include <reg51.h> #include <intrins.h> #define uint unsigned int # ...
- 实现单片机控制流水灯代码
可以使用C语言编写单片机控制流水灯代码,步骤如下:1. 控制单片机的IO口,把IO口设置为输出模式:2. 写一个循环,依次控制IO口输出高低电平:3. 将IO口的高低电平与流水灯相连,实现控制流水灯的 ...
- 51单片机循环流水灯源码
51单片机循环流水灯源码 #include <reg52.h> #include <intrins.h> void delay(unsigned char a) {unsign ...
- 51单片机-------流水灯(实验报告)
实验二:LED流水灯 一.实验目的 掌握51单片机开发板的使用步骤: 掌握51单片机开发板所需软件的安装过程: 以LED流水灯实验为例子,掌握软件KEIL4的使用方法. 二.实验设备 实验仪器设备: ...
- 单片机led流水灯实验c语言程序,单片机LED流水灯实验及流程图源代码详解
利用实验室提供的单片机实验开发板的最小系统电路模块.流水灯电路模块,以及Protues仿真软件搭建电路,实现I/O口循环流水灯演示效果. LED流水灯控制电路如图2-1所示,八个LED灯D0-D7(可 ...
- 设计分享|单片机花样流水灯
目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 单片机控制两列16个LED实现彩灯展示.P0口控制的8个LED彩灯实 ...
最新文章
- 让VBCommenter支持自定义用户名
- MySQL多表查询实例
- boost::geometry:::detail::overlay::get_clusters用法的测试程序
- 牛客 - maki和tree(dfs)
- python视频人脸检测_Python学习案例之视频人脸检测识别
- 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
- python编程特点_Python基础(1)--Python编程习惯与特点
- in_array函数缺陷(原理+实战)
- MySQL基本操作四:数据的查询
- Bootstrap 警告框组件 + 退出按钮样式 实现一个可退出的警告框
- 揭秘刘德华感恩立志的少年时光
- Java核心常用API +JSD2103_SE 项目 + WebServer项目
- Spring Boot -- JPA
- 【论文翻译】Toward Learning Trustworthily from Data Combining Privacy, Fairness, and Explainability_【4】
- 微信开发(六)--模板消息接口
- 数据库连接泄露的问题
- 解决 uni-app 使用 Painter 生成商品海报真机模糊问题
- 阿里云服务器4核8G配置CPU性能报价表
- 将Cocos Creator项目运行到微信小程序
- GetFileInfo
热门文章
- MAC电脑配置环境变量
- testbed代码审查信息提取
- CCF SCI JCR 中科院分区 会议期刊等级总结
- 微信支付商户平台可以绑定多个不同主体的小程序或微信公众号
- 微信公众号爬虫开发-常见问题汇总
- 怎样恢复手机oracle默认窗口,通达信恢复默认版面,Effects界面如何恢复初始默认设置...
- Spring入门到精通:第二章 IOC容器(XML方式):7.IOC容器Bean管理XML方式-bean作用域
- 【Tensorflow】基于卷积神经网络实现车牌的识别
- matlab获取全局变量的值_全局变量在几个函数及Matlab函数中都能使用的变量.PPT...
- QQ钱包的接入及其设计分析