智能家居实验说明Word格式文档下载.docx
《智能家居实验说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能家居实验说明Word格式文档下载.docx(54页珍藏版)》请在冰豆网上搜索。
程序编写完之后,Project–Make编译显示0错误0警告,将仿真器与开发板连接好,然后点击Project-DownloadandDebug(下载与仿真)。
如下图所示。
下载完成后,进入仿真调试界面,常用按钮如下图所示。
仿真器驱动SmartRF04EB的安装
1.安装完IAR8.10后,插上仿真器,计算机会自动安装驱动程序但是会提示无法安装。
2.右击计算机,选择设备管理器,找到SmartRF04EB,如下图所示
3.右击SmartRF04EB,选择更新驱动程序,弹出下面的界面
4.然后点击更新驱动程序,选择浏览计算机以查找驱动程序软件,在IAR的安装目录下,根据操作系统的位的不同选择适合自己操作系统的驱动,选择C:
\ProgramFiles\IARSystems\EmbeddedWorkbench6.0\8051\drivers\TexasInstruments\win_32bit_x86,然后点击确定,直到安装完成。
如下图所示
USB转串口驱动安装
CC2530开发板本身已经集成USB转串口模块PL2303,只要在电脑端安装PL2303驱动,既可以实现CC2530开发板与PC进行串口通信。
点击PL2303_driver.exe,然后点确定,等到安装完成就可以了。
安装完成后可以在设备管理器中查看新增加的串口(Comport)。
可以使用串口助手观察电脑串口的数据,串口助手的界面如下图所示
二.源码
图1.芯片介绍
图2实验一连接图
硬件连线:
继电器的电源连接CC2530芯片的VCC,GND,继电器的输入IN接IO引脚P1_2,LED灯与继电器加电源构成一个回路。
通过按键P11可以控制继电器实现LED灯的亮灭。
如图2.
参考源代码:
1.按键控制LED灯
/******************************************************/
//-------------------LEDcontrol----------------------//
/******************************************************
实验内容:
通过按键控制LED灯的亮灭
******************************************************/
#include<
#defineuintunsignedint
#defineucharunsignedchar
#defineLEDP1_2//P12连接LED灯
#defineKEYP1_1//P11为按键
#defineBellP2_0//P20连接蜂鸣器
//函数声明
voidDelayms(uint);
//延时函数
voidKeyInit();
//按键初始化
ucharKey_detect=0;
/************************************************/
/*函数名称:
Delayms*/
/*函数功能:
延时*/
/*输入参数:
uint*/
/*输出参数:
void*/
/*返回值:
/*说明修改人修改时间*/
/*孙晓强2013.5.1*/
/*其他说明:
延时i毫秒*/
/*************************************************/
voidDelayms(uintxms)//i=xms即延时i毫秒
{
uinti,j;
for(i=xms;
i>
0;
i--)
for(j=587;
j>
j--);
}
IO_Init*/
初始化IO接口*/
初始化IO引脚定义输入输出*/
voidIO_Init(void)
P0DIR|=0xfd;
//P0_1定义为输入
P1DIR|=0xff;
//P1定义为输出
P2DIR|=0x01;
//P2_0定义为输出
KeyScan*/
按键检测*/
void*/
Key_detect*/
/*说明修改人修改时间*/
检测按键是否按下*/
voidKeyScan(void)
if(KEY==0)
{
Key_detect=1;
Delayms(300);
//按键去抖
}
main*/
主函数*/
while循环检测按键是否被按下,若检测*/
/*到按键按下,让蜂鸣器鸣叫,并使LED取反*/
/*来改变灯的状态*/
voidmain(void)
{
IO_Init();
//调用初始e化程序
Bell=0;
//蜂鸣器禁止
P1=0xff;
//P1口输出为低
LED=1;
while
(1)
{
KeyScan();
if(Key_detect)//按键改变LED状态
Bell=1;
if(Key_detect==1)LED=!
LED;
Delayms(50);
Key_detect=0;
}
2.按键和光敏传感器同时控制LED灯
硬件连接:
光敏传感器的DO输出接IO引脚的P0_0,继电器的输入接IO引脚的P1_2。
如图3.
图3.光敏传感器控制
实验内容:
通过按键和光敏传感器DO输出控制LED灯的亮灭
#defineLEDP1_2
#defineKEYP1_1
uint*/
/*孙晓强2013.5.2*/
延时i毫秒*/
/*孙晓强2013.5.2*/
/*到按键按下,让蜂鸣器鸣叫,并使LED取反*/
/*来改变灯的亮灭。
还有根据光敏传感器DO*/
/*输出来控制LED灯的亮灭*/
if(P0_1==0)//光敏传感器DO输出为低电平
else
LED=0;
3.光敏传感器模拟输出控制LED灯
光敏传感器的AO输出接IO引脚P0_0。
继电器的输入IN接IO引脚的P1_2。
如图4.
图4.光敏传感器AO输出
//------------------------------光强采样并通过串口显示------------------------------------//
/********************************************************************
1.设定P00为AD输入口,采样光敏传感器的光强,单次转换,参考电压为内部基准电压,
基准电压为1.15V,14位分辨率;
2.采样到数据后,通过计算换算成电压值并通过串口输出,并显示采样的AD值,代表其
采样的光强强度;
注意:
1.光敏传感器的VCC连接CC2530板子的VCC,GND连接CC2530板子的GND,A0连接CC2530
板子的P00引脚。
2.可以调节光敏传感器模块上的可调电阻改变不同光强代表的输入电压。
********************************************************************/
#include"
hal_adc.h"
#defineBellP2_0
uintAD_data=0;
uintnum=0;
ucharxData[6];
初始化IO接口*/
/*孙晓强2013.5.3*/
voidInitial_IO(void)
P0DIR|=0xfe;
//P0定义为输出
//P1_7定义为输出
}
InitUart*/
初始化Uart*/
初始化UART串口输出*/
voidInitUart()
CLKCONCMD&
=~0x40;
//设置系统时钟源为32MHZ晶振
while(CLKCONSTA&
0x40);
//等待晶振稳定
=~0x47;
//设置系统主时钟频率为32MHZ
PERCFG=0x00;
//位置1P0口
P0SEL=0x3c;
//P0_2,P0_3用作串口,第二功能
P2DIR&
=~0XC0;
//P0优先作为UART0,优先级
U0CSR|=0x80;
//UART方式
U0GCR|=11;
//U0GCR与U0BAUD配合
U0BAUD|=216;
//波特率设为115200
UTX0IF=0;
//UART0TX中断标志初始置位1(收发时候)
/****************************************************************
串口发送字符串函数
****************************************************************/
Uart_Send_String*/
串口发送*/
uchar*Data,intlen*/
串口发送字符串函数*/
voidUart_Send_String(uchar*Data,intlen)
intj;
for(j=0;
j<
len;
j++)
U0DBUF=*Data++;
while(UTX0IF==0);
//发送完成标志位
int_to_char*/
int转ASCII*/
uintn*/
xData[]*/
/*说明修改人修改时间*/
将int型数据转换为ASCII码*/
/**************************************************/
voidint_to_char(uintn)
ucharyData[6];
memset(yData,32,sizeof(yData));
intquo=1,mod=1,i=0,x;
for(i=0;
0!
=quo;
++i)
mod=n%10;
quo=n/10;
n/=10;
yData[i]=mod+48;
//xData[0]=35;
for(x=0;
x<
6;
x++)
xData[x]=yData[5-x];
Delay*/
延时一段时间*/
voidDelay(uintn)
uinti;
i<
n;
i++);
/***************************************************/
main*/
主函数*/
通过P01采集光敏传感器AO输出的模拟信*/
/*号,经过AD转换通过串口输出到PC断*/
/*根据光敏传感器AO模拟输出的值,判断光*/
/*照强度,根据光的强弱来决定继电器的输入状态*/
/****************************************************/
voidmain(void)
Initial_IO();
//调用初始化函数
InitUart();
//调用初始化函数
Hal