嵌入式-CC2530-SHT1X温湿度报警器的设计

问题描述

CC2530-SHT1X温湿度报警器的设计

#include
#include "ugOled9616.h"
#include "LcdDisp.h"
#include

#define uint unsigned int
#define uchar unsigned char

#define SHT1X_DAT P1_4 //定义数据线
#define SHT1X_DAT_DIR P1DIR //定义数据线输出寄存器
#define SHT1X_DAT_BV BV(4) //数据线位定义
#define SHT1X_SCK P1_5 //定义时钟线
#define SHT1X_SCK_DIR P1DIR //定义时钟线输出寄存器
#define SHT1X_SCK_BV BV(5) //时钟线位定义

//定义数据线输入/输出
#define SHT1X_DATA_IN st(SHT1X_DAT_DIR &= ~(SHT1X_DAT_BV);)
#define SHT1X_DATA_OUT st(SHT1X_DAT_DIR |= SHT1X_DAT_BV;)

//定义控制灯的端口
#define RLED P1_0 //定义LED1为P10口控制
#define YLED P1_1 //定义LED2为P11口控制
#define K1 P0_6 //P0_6

#define ON 0
#define OFF 1

uint16 sht;//读取的温湿度,浮点值
float tempsht;//转换的温度,浮点值
float humsht;//转换的湿度,浮点值

extern void SHT1X_PORT_INT(void); //SHT10 引脚初始化
extern uint8 WaitForSHT1XAck(void); //等待SHT10 确认函数
extern void SHT1X_REST(void); //SHT10 复位函数
extern void SHT1X_STAT(void); //SHT10 启动函数
extern uint8 SendToSHT1X(uint8 data); //发送数据到SHT10 函数
extern void WaitForAminit(uint16 delay); //等待转换函数
extern void SHT1X_INT(void); //SHT10 初始化函数
extern uint16 Read_SHT1X(uint8 option); //读SHT10 传感器函数

void delay(uint n);
void InitKey(void);//按键初始化程序
uchar KeyScan(void);
void Initial(void);//Led程序初始化
void Lcddisplay(void);

void Lcddisplay(void)
{
char tempBuf[4];
sht = Read_SHT1X(3);
sht&=0x3fff;
tempsht = (float)(sht*0.01) - 39.60;
sprintf( (void )tempBuf,"%f",tempsht);
LcdPutString16_8( 8,0,(uint8
)tempBuf,4,1);
delay(10);
char humBuf[6];
sht = Read_SHT1X(5);
sht&=0x0fff;
humsht = (float)(sht*0.0405) - 4 - (sht * sht * 0.000028);
sprintf( (void )humBuf,"%f",humsht);
humBuf[5] = 37;//%
LcdPutString16_8( 48,0,(uint8
)humBuf,6,1);
delay(10);
}

/****************************
//按键初始化程序
*****************************/
void InitKey(void)
{
P0SEL &= ~0X40;
P0INP |= 0x40; //上拉
P0DIR &= ~(0x01<<(6)); //按键在P06 ADC采集
}

/*****************************************
//读键值
*****************************************/
uchar KeyScan(void)
{
if(K1 == 0) //低电平有效
{
delay(100); //检测到按键
if(K1 == 0)
{
while(!K1); //直到松开按键
return(1);
}
}
}

/*****************************************
//led程序初始化
*****************************************/
void Initial(void)
{
P1DIR |= 0x03; //P10、P11定义为输出
RLED = 1;
YLED = 1; //LED
}

//*************************************************************************
//函数原型:void Delay(uint n)
//功 能:延时
//输 入:uint n
//输 出:NULL
//*************************************************************************
void delay(uint n)
{
uint tt;
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
}

//*************************************************************************
//函数原型:uint16 Read_SHT1X(uint8 option)
//功 能:读取温湿度
//输 入:3-温度 5-湿度
//输 出:读取的温湿度,浮点值
//*************************************************************************
uint16 Read_SHT1X(uint8 option)
{
uint16 temp = 0;
uint8 i;
SHT1X_STAT();//启动传感器
if(SendToSHT1X(option&0x1f) == 0)
return 1;//芯片没有应答
SHT1X_DATA_IN;
for(i = 0;i<10;i++)//等转换完成
WaitForAminit(30000);
SHT1X_SCK = 0;
NOP();
SHT1X_SCK = 1;
NOP();
if(SHT1X_DAT != 0)
{
return 2;//芯片没有响应 转换完成
}
SHT1X_SCK = 0;
NOP();
for(i = 0;i<7;i++)
{
SHT1X_SCK = 1;
NOP();
temp <<= 1;
if(SHT1X_DAT)
{
temp |= 1;
}
SHT1X_SCK = 0;
NOP();
}
SHT1X_DATA_OUT;
NOP();
SHT1X_DAT = 0;
NOP();
SHT1X_SCK = 1;
NOP();NOP();
SHT1X_SCK = 0;
NOP();
NOP();
SHT1X_DATA_IN;
for(i = 0;i<8;i++)
{
SHT1X_SCK = 1;
NOP();
temp <<= 1;
if(SHT1X_DAT)
{
temp |= 1;
}
SHT1X_SCK = 0;
NOP();
}
SHT1X_DATA_OUT;
NOP();
SHT1X_DAT = 1;
SHT1X_SCK = 1;
NOP();
SHT1X_SCK = 0;
return temp;
}

void main(void)
{
char Status = 1;//报警器状态,1为开启
RLED = OFF; //关灯
uchar Keyvalue = 0 ;
Initial();
//intClock(); ??函数干嘛用的
P2DIR |= 0x01; //打开电源
P2 &=~ 0x01;
SHT1X_INT();
ugOled9616int(); //初始化OLed 配置
delay(10);
while(1)
{

Lcddisplay();//显示温湿度传感器信号
Keyvalue = KeyScan(); //扫键
while(Status == 1)
{
if(tempsht>=28.00&&Keyvalue==0)
{
RLED = !RLED;
delay(500);
}
if(tempsht>=28.00&&Keyvalue==1)
{
RLED = OFF; //关灯

Status = 0 ;
}
}
}
}


编译的时候老是在SHT1X_DATA_IN;SHT1X_DATA_OUT出错,求大神解答

时间: 2024-10-18 14:27:33

嵌入式-CC2530-SHT1X温湿度报警器的设计的相关文章

嵌入式设计复习题

  一 判断题  1. 在ARM处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ).  (√)  2. ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失.    (×)  3. VHDL的基本单元描述不包括库. (×)  4. 嵌入式ARM架构的嵌入式处理器同时支持大端.小端(Big/Little-Endian)数据类型.(×)  5. ARM9TDMI中的T代表增强型乘法器.(×)  6. ARM-CPU由多家不同制造商生产,芯片外部提供的总线是不一致的.(√)  7. L

嵌入式无线局域网设备的设计与实现

1 嵌入式系统简介 嵌入式系统是指以计算机技术为基础.以应用为中心.软件硬件可裁剪,功能.可靠性.功耗.体积.成本有着严格要求的专用计算机系统.追求"短.小.轻.薄,省电.快.成本低"的目标.嵌入式系统设备已广泛应用于制造工业.过程控制.仪器仪表.军事装备.消费类产品等领域.嵌入式系统由软硬件组成,一般分为五个部分:处理器.存储器.输入输出.操作系统和应用软件.如图1所示: 嵌入式系统最初的应用是基于单片机的,它只是使用8位的芯片执行一些简单的单进程的程序,没有多进程的任务调度,还谈不

图解:嵌入式无线局域网设备的设计与实现

1 嵌入式系统简介 嵌入式系统是指以计算机技术为基础.以应用为中心.软件硬件可裁剪,功能.可靠性.功耗.体积.成本有着严格要求的专用计算机系统.追求"短.小.轻.薄,省电.快.成本低"的目标.嵌入式系统设备已广泛应用于制造工业.过程控制.仪器仪表.军事装备.消费类产品等领域.嵌入式系统由软硬件组成,一般分为 五个部分:处理器.存储器.输入输出.操作系统和应用软件.如图1所示:嵌入式系统最初的应用是基于单片机的,它只是使用8位的芯片执行一些简单的单进程的程序,没有多进程的任务调度,还谈不

ARM免预付授权费用计划增加Cortex-M3架构设计 加速物联网发展

根据ARM宣布消息,未来将在既有Cortex-M0架构配合免预付授权费用计划推行之余,额外加入Cortex-M3架构设计,让更多针对物联网应用处理器可在完成设计且进行出货才进行授权收费,并且吸引更多嵌入式开发者加入此类处理器产品设计,进而加速采ARM架构处理器供货数量往1兆规模迈进. ARM嵌入式.jpg 此次宣布将Cortex-M3架构设计纳入DesignStart计划,预期同样借助免预付授权费用模式吸引更多处理器设计厂商.应用设备开发者等加入,借此推动更庞大的ARM架构处理器设计问世. 目前

arm-基于ARM7的数字滤波器的设计

问题描述 基于ARM7的数字滤波器的设计 芯片选择(LPC2138) ADC08061,DAC0801 接按键选择低通,带通,高通滤波. 解决方案 ARM7嵌入式系统中Bootloader分析与设计 解决方案二: http://wenku.baidu.com/view/6211a8f8f90f76c661371aca.html 你觉得这篇文档是否有帮助呢? 我们做滤波器仿真的时候主要用的是matlab和simulink的说.

Java学习杂谈(二)

鉴于上回写的一点感想大家不嫌弃,都鼓励小弟继续写下去,好不容易等到国庆黄金周,实习总算有一个休息的阶段,于是这就开始写第二篇了.希望这次写的仍然对志同道合的朋友们有所帮助.上回讲了Java动态加载机制.classLoader原理和关于jdk和jre三个问题.这次延续着讲一些具体的类库?? 1.关于集合框架类 相信学过Java的各位对这个名词并不陌生,对 java.util.*这个package肯定也不陌生.不知道大家查询API的时候怎么去审视或者分析其中的一个package,每个包最重要的两个部

【Alljoyn】 Alljoyn学习笔记七 Alljoyn瘦客户端库介绍

Alljoyn瘦客户端库介绍(上)   1.简介 本文档对AllJoynTM瘦客户端的核心库文件(AJTCL)进行了详尽的介绍.本文档介绍了系统整体架构,AllJoyn框架结构,并着重于介绍如何将嵌入式设备加入AllJoyn系统整体架构中.1.1目的 本文档介绍了如何使一个受限于功耗.计算能力和内存的设备(嵌入式设备)加入AllJoyn分布式系统.具体而言,本文档包括了对AllJoyn面向嵌入式系统的方面的介绍,并着重描述了基于AllJoyn的系统的各个组件是如何与嵌入式设备协作以构建一个基于接

《逻辑与计算机设计基础(原书第5版)》——1.1 信息表示

1.1 信息表示 数字系统存储.转移.处理的对象是信息.信息是对物质世界与人类社会中存在的各种各样现象的表示.物质世界的属性可以用某些参数来表示,如重量.温度.压力.速度.流量以及声音的强度与频率等.绝大多数的物理参数是连续的(continuous),在给定的范围内可以连续取值.相反,在人类社会中,参数本身是离散的,比如商业记录中所采用的单词.数量以及金额,它们分别是字母表中的某些值.某些整数或现金单位.通常,信息系统必须能够表示连续的和离散的信息.温度值是一个连续的量,假设传感器检测温度并将采

protel 11-在protel中怎么找DHT11这个元件

问题描述 在protel中怎么找DHT11这个元件 就是在protel99se的ScH后缀的文件中找DHT11,我做的是基于单片机的大棚温湿度控制系统的设计 解决方案 应该没有吧,自己画吧