1. 環境實驗設備溫濕度校驗裝置 代碼是多少
計量標准代碼: 15313503
計量標准名稱: 單相電能表檢定裝置(通化)
描述: 單相電能表檢定裝置(通化),社會公用計量標准,15313503,
關鍵字: 單相電能表檢定裝置(通化),社會公用計量標准,15313503
負責單位: 吉林省質量技術監督局
最新修改日期: 2009-07-16 09:22:47.0
創建日期: 2009-07-16 09:22:47.0
計量標准類型
計量標准類型: 社會公用計量標准
測量范圍及不確定度或准確度或最大允許誤差
量值范圍 量值復現不確定度或准確度
(0.1~100)A 220V 0.1級
使用狀態類別
使用狀態類別: 在用
計量標准考核證書
證書編號: 2008吉量法證字第1131
有效期至: 2012-12-16
發證日期: 2008-12-17
發證機關: 吉林省質量技術監督局
發證單位級別: 省級
計量標准建立時間: 2008
計量標准器
名稱 型號 測量范圍 不確定度或准確度等級或最大允許誤差 製造廠及出廠編號
單相電能表檢驗裝置 BYXDB102-24 (0.1~100)A220V 0.1級 北京北研興G53308
主要配套設備
名稱 型號 測量范圍 不確定度或准確度等級或最大允許誤差 製造廠及出廠編號
技術改造
有無進行過改造: 無
改造時間: --
測量能力
開展檢定所依
據的計量檢定
規程或開展
校準依據的計量
技術規范代號
及名稱 JJG 596-1999《電子式電能表》 JJG 307-2006《機電式交流電能表》
編號1.
(1).可開展檢定及校準項目名稱:單相電子式電能表
(2).測量范圍:(0.1~100)A
(3).不確定度或准確度等級或最大允許誤差:1.0級及以下
2. 基於單片機的溫濕度採集與控製程序(C語言)
給你一個DS18B20的溫度採集程序!
//ICC-AVR application builder : 2009-10-25 10:43:39
// Target : M16
// Crystal: 16.000Mhz
#include <iom16v.h>
#include <macros.h>
#define uint unsigned int
#define uchar unsigned char
#include "xianshi.c"
#include "delay.h"
#define CLR_DIR_1WIRE DDRD&=~BIT(4) //只要修改這里的參數就可以了
#define SET_DIR_1WIRE DDRD|=BIT(4) //裡面什麼都不用該!
#define CLR_OP_1WIRE PORTD&=~BIT(4)
#define SET_OP_1WIRE PORTD|=BIT(4)
#define CHECK_IP_1WIRE (PIND&0x10) //檢測
unsigned char wmh,wml;
void init_1820()
{
SET_DIR_1WIRE; //設置PD4 為輸出
SET_OP_1WIRE;
CLR_OP_1WIRE;
delay_nus(480); //480us以上
SET_OP_1WIRE;
CLR_DIR_1WIRE;
delay_nus(20); //15~60us
while(CHECK_IP_1WIRE);
SET_DIR_1WIRE;
SET_OP_1WIRE;
delay_nus(140); //60~240us
}
void write_1820(unsigned char x)
{
unsigned char m;
for(m=0;m<8;m++)
{
CLR_OP_1WIRE;
if(x&(1<<m)) //寫數據了,先寫低位的!
SET_OP_1WIRE;
else
{CLR_OP_1WIRE;}
delay_nus(40); //15~60us
SET_OP_1WIRE;
}
SET_OP_1WIRE;
}
unsigned char read_1820()
{
unsigned char temp,k,n;
temp=0;
for(n=0;n<8;n++)
{
CLR_OP_1WIRE;
SET_OP_1WIRE;
CLR_DIR_1WIRE;
k=(CHECK_IP_1WIRE); //讀數據,從低位開始
if(k)
temp|=(1<<n);
else
temp&=~(1<<n);
delay_nus(50); //60~120us
SET_DIR_1WIRE;
}
return (temp);
}
unsigned int gettemp() //讀取溫度值
{
unsigned char temh,teml,wm0,wm1,wm2,wm3;
init_1820(); //復位18b20
write_1820(0xcc); // 發出轉換命令
write_1820(0x44);
// delay_nms(800); //不延時也好使,不知道怎麼回事!
init_1820();
write_1820(0xcc); //發出讀命令
write_1820(0xbe);
teml=read_1820(); //讀數據
temh=read_1820();
wm0=teml>>4; //只要高8位的低四位和低8位的高四位,溫度范圍0~99啦!
wm1=temh<<4;
wm2=wm1+wm0; //16進制轉10進制
return wm2;
}
void main()
{
uint tem,ad[4],i;
port_init();
while(1)
{
tem = gettemp();
for(i=0;i<4;i++)
{
ad[3-i]=tem%10;
tem=tem/10;
}
for(i=0;i<4;i++)
{
show1(ad[i],i);
delay(5);
}
}
}
顯示函數:
#include <iom16v.h>
#include <macros.h>
#define uint unsigned int
#define uchar unsigned char
#pragma data:code
const uint tab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00}; //共陽數碼管代碼表
const uint tab2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X00};//共陰數碼管代碼表
void port_init(void)
{
DDRA = 0xFF;
DDRB = 0xFF;
DDRC = 0xFF;
DDRD = 0x00;
}
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void show1(uchar j,uchar k)//顯示函數
{
PORTB = ~BIT(k);
PORTA = tab2[j];
delay(1);
}
void show(uint ada)
{
uint i,ad[4];
for(i=0;i<4;i++)
{
ad[3-i]=ada%10;
ada = ada/10;
}
while(1)
{
for(i=0;i<4;i++)
{
show1((ad[i]),i);
delay(100);
}
}
}
程序我都調試過的,都是好的,有不會再問我。可以給分了嗎?嘿嘿
3. 求單片機控制大棚溫度的具體步驟,本人在此拜謝
1、集成感測器獲得環境溫度,一個大棚需要至少1個,面積大的需要多個布置在不同位置
2、如果測得溫度低於需要的溫度,啟動加溫設備。
3、如果測得溫度大於等於需要溫度,加溫停止
4、返回第一步
4. 100分,求溫濕度感測器SHT11的源程序(51單片機語言)
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
//數碼管位定義
sbit la = P2^6;
sbit wela = P2^7;
#define OK 1
#define ERROR 0
#define NUMBER 20
#define SIZE 5
sbit dht11 = P2^0;
uchar status;
//存放五位元組數據的數組
uchar value_array[SIZE];
/*可在其他的文件引用溫濕度值,實際是溫度的整數的10 倍
如dht11 讀回的溫度是26,則temp_value = 260, 濕度同理*/
uchar flag;
//數碼管編碼
uchar code array[]= {
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f
};
int temp_value, humi_value;
void InitTime(void);
//void Delay_1ms(uint ms);
void SMG_Display(uint value);
void Delay_1ms(uint ms)
{
uint x, y;
for(x = ms; x > 0; x--)
{
for(y = 124; y > 0; y--);
}
}
void Delay_10us(void)
{
unsigned char i;
i--;
i--;
i--;
i--;
i--;
i--;
}
/*讀一個位元組的數據*/
uchar ReadValue(void)
{
uchar count, value = 0, i;
status = OK; //設定標志為正常狀態
for(i = 8; i > 0; i--)
{
//高位在先
value <<= 1;
count = 0;
//每一位數據前會有一個50us 的低電平時間.等待50us 低電平結束
while(dht11 == 0 && count++ < NUMBER);
if(count >= NUMBER)
{
status = ERROR; //設定錯誤標志
return 0; //函數執行過程發生錯誤就退出函數
}
//26-28us 的高電平表示該位是0,為70us 高電平表該位1
Delay_10us();
Delay_10us();
Delay_10us();
//延時30us 後檢測數據線是否還是高電平
if(dht11 != 0)
{
//進入這里表示該位是1
value++;
//等待剩餘(約40us)的高電平結束
while(dht11 != 0 && count++ < NUMBER)
{
dht11 = 1;
}
if(count >= NUMBER)
{
status = ERROR; //設定錯誤標志
return 0;
}
}
}
return (value);
}
//讀一次的數據,共五位元組
uchar ReadTempAndHumi(void)
{
uchar i = 0, check_value = 0,count = 0;
EA = 0;
dht11 = 0; //拉低數據線大於18ms 發送開始信號
Delay_1ms(20); //需大於18 毫秒
dht11 = 1; //釋放數據線,用於檢測低電平的應答信號
//延時20-40us,等待一段時間後檢測應答信號,應答信號是從機拉低數據線80us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
if(dht11 != 0) //檢測應答信號,應答信號是低電平
{
//沒應答信號
EA = 1;
return ERROR;
}
else
{
//有應答信號
while(dht11 == 0 && count++ < NUMBER); //等待應答信號結束
if(count >= NUMBER) //檢測計數器是否超過了設定的范圍
{
dht11 = 1;
EA = 1;
return ERROR; //讀數據出錯,退出函數
}
count = 0;
dht11 = 1;//釋放數據線
//應答信號後會有一個80us 的高電平,等待高電平結束
while(dht11 != 0 && count++ < NUMBER);
if(count >= NUMBER)
{
dht11 = 1;
EA = 1;
return ERROR; //退出函數
}
//讀出濕.溫度值
for(i = 0; i < SIZE; i++)
{
value_array[i] = ReadValue();
if(status == ERROR)//調用ReadValue()讀數據出錯會設定status 為ERROR
{
dht11 = 1;
EA = 1;
return ERROR;
}
//讀出的最後一個值是校驗值不需加上去
if(i != SIZE - 1)
{
//讀出的五位元組數據中的前四位元組數據和等於第五位元組數據表示成功
check_value += value_array[i];
}
}//end for
//在沒用發生函數調用失敗時進行校驗
if(check_value == value_array[SIZE - 1])
{
//將溫濕度擴大10 倍方便分離出每一位
humi_value = value_array[0] * 10;
temp_value = value_array[2] * 10;
dht11 = 1;
EA = 1;
return OK; //正確的讀出dht11 輸出的數據
}
else
{
//校驗數據出錯
EA = 1;
return ERROR;
}
}
}
void main(void)
{
uchar mark = 0;
//先等上電穩定
Delay_1ms(1000);
//因為讀一次數據dht11 才會觸發一次採集數據.
//即在先使用數據時採集一次數據
ReadTempAndHumi();
//因為在兩次採集數據需一定的時間間隔,這里還可減少
Delay_1ms(3000);
//設定定時器
InitTime();
while(1)
{
//三秒讀一次溫濕度
if(flag == 60)
{
flag = 0;
mark++;
/*
//讀溫濕度,可檢測函數調用是否失敗,
//函數返回OK(1)表示成功,返回ERROR(0)表示失敗
//OK和ERROR是在DHT11.H中定義的宏
*/
ReadTempAndHumi();
}
if(mark % 2 == 0)
{
//顯示溫度
SMG_Display(temp_value);
}
else
{
//顯示濕度
SMG_Display(humi_value);
}
}
}
//設定定時器
void InitTime(void)
{
TH0 = (65535 - 50000)/256;
TL0 = (65535 - 50000)%256 ;
TMOD = 0X01;
TR0 = 1;
ET0 = 1;
EA = 1;
}
//數碼管顯示函數
void SMG_Display(uint value)
{
uchar ge, , shi;
ge = value % 10;
shi = value % 100 / 10;
= value % 1000 / 100;
wela=1;
P0 = 0XFE;
wela=0;
P0 = 0XFF;
la=1;;
P0 = array[];
la=0;
Delay_1ms(2);
wela=1;
P0 = 0XFD;
wela=0;
P0 = 0XFF;
la=1;
P0 = array[shi];
P0 |= 0x80; /*顯示小數點*/
la=0;
Delay_1ms(2);
wela=1;
P0 = 0XFB;
wela=0;
P0 = 0XFF;
la=1;
P0 = array[ge];
la=0;
Delay_1ms(2);
}
//中斷函數
void timer(void) interrupt 1
{
TH0 = (65535 - 50000)/256;
TL0 = (65535 - 50000)%256;
flag++;
}
5. 嵌入式溫濕度感測器C語言代碼求幫忙注釋
#include "ioCC2430.h" //包含頭文件,相應的板子以及感測器一些信息
#include "hal.h"
#include <math.h>
//#include <intrins.h>
#include <stdio.h>
typedef union //定義聯合體,
{
unsigned int i;
float f;
} value; //定義聯合體類型名稱為value
#define noACK 0
#define ACK 1
#define STATUS_REG_W 0x06 //0x06 = 0000 0110
#define STATUS_REG_R 0x07 //0x07 = 0000 0111
#define MEASURE_TEMP 0x03 //0x03 = 0000 0011
#define MEASURE_HUMI 0x05 //0x05 = 0000 0101
#define RESET 0x1e //0x1e = 0001 1110
#define SDA P1_6 //定義SDA代表的是P1_6腳
#define SCL P1_7
#define begin P2_0
unsigned char d1,d2,d3,d4,d5,d6,d7; //定義無符號字元型變數
void Wait(unsigned int ms) //定義wait函數,主要用於軟體循環,延時作用
{
unsigned char g,k;
while(ms)
{
for(g = 0;g <= 167; g++)
{
for(k = 0;k <= 48; k++);
}
ms--;
}
}
void QWait() //1us的延時
{
asm("NOP"); //加入匯編操作語句,空操作,主要用於機器周期執行
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
}
void initUART(void) //初始化單片機的串口
{
IO_PER_LOC_USART0_AT_PORT0_PIN2345(); //具體函數的定義與用法,你得參考頭文件中的程序代碼了
IO_DIR_PORT_PIN(1, 6, IO_OUT);
IO_DIR_PORT_PIN(1, 7, IO_OUT);
//IO_IMODE_PORT_PIN(1, 6, IO_IMODE_TRI);
//IO_IMODE_PORT_PIN(1, 7, IO_IMODE_TRI);
IO_DIR_PORT_PIN(2, 0, IO_OUT);
IO_FUNC_PORT_PIN(2, 0, IO_FUNC_GIO);
//SET_MAIN_CLOCK_SOURCE(RC);
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
UART_SETUP(0, 115200, HIGH_STOP); //設置傳輸數據的波特率115200
UTX0IF = 1;
U0CSR |= 0XC7; //U0CSR = U0CSR | 0x1010 0111 (進行位或操作)
IEN0 |= 0x84;
SDA = 1;
SCL = 0;
}
int putchar (int c) //定義輸入字元函數,給的參數是一個整型的數
{
if (c == ' ') //判斷參數c的值是否和' '的值相等
{
while (!UTX0IF); //執行的時候UTX0IF的值是0,此處不是很理解?
UTX0IF = 0; //給UTX0IF賦0
U0DBUF = 0x0d; //U0DBUF賦值0x0d = 0000 1011
}
while (!UTX0IF);
UTX0IF = 0;
return (U0DBUF = c); //如果c的值不是' '也就是換行符的時候,將c的值傳遞到U0DBUF寄存器中
}
char s_write_byte(unsigned char value) //定義寫位元組函數(8位)
{
unsigned char i,error = 0;
for (i = 0x80;i > 0;i /= 2) //i 賦初始值0x80 = 128, 執行判斷是i > 0,執行語句是i = i / 2; 即i = 128,64,32,16,8,4,2,1,0.5(0),8位
{
if (i & value)
SDA = 1;
else
SDA = 0;
SCL = 1; //此時SCL埠處,也就是p1_7引腳處是高電平
QWait(); //因為寫入需要時間,所以程序之中加入下面幾條語句
QWait();
QWait();
QWait();
QWait();
SCL = 0; //使能p1_7眼角處低電平,使的數據寫入(具體需要看單片機控制晶元的手冊
asm("NOP");
asm("NOP");
}
SDA = 1;
SCL = 1;
asm("NOP");
error = SDA;
QWait();
QWait();
QWait();
SDA = 1;
SCL = 0;
return error;
}
char s_read_byte(unsigned char ack) //讀取數據,按照位元組位的順序讀取(8位)128 = 1000 0000 ,64 = 0100 0000, 32 = 0010 0000 ,16 = 0001 0000, 8 = 0000 1000, 4 = 0000 0100 , 2 = 0000 0010, 1 = 0000 0001
{
unsigned char i,val = 0;
SDA= 1;
for(i = 0x80;i > 0;i /= 2) //同上
{
SCL = 1;
if (SDA) //判斷SDA處是否有高電平
val = (val | i); //進行或操作
else
val = (val | 0x00);
SCL = 0;
QWait();
QWait();
QWait();
QWait();
QWait();
}
SDA = !ack;
SCL = 1;
QWait();
QWait();
QWait();
QWait();
QWait();
SCL = 0;
SDA = 1;
return val; //返回讀取到的數據,一個位元組,八位
}
void s_transstart(void) //傳輸使能函數,就是給控制器引腳處相應電平,使對應模塊工作
{
SDA = 1;
SCL = 0;
QWait();
QWait();
SCL = 1;
QWait();
QWait();
SDA = 0;
QWait();
QWait();
SCL = 0;
QWait();
QWait();
QWait();
QWait();
QWait();
SCL = 1;
QWait();
QWait();
SDA = 1;
QWait();
QWait();
SCL = 0;
QWait();
QWait();
}
void s_connectionreset(void) //復位操作函數
{
unsigned char i;
SDA = 1;
SCL = 0;
for(i = 0;i < 9; i++)
{
SCL = 1;
QWait();
QWait();
SCL = 0;
QWait();
QWait();
}
s_transstart(); //調用開始函數
}
char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode) //函數,主要統計傳輸的數據個數
{
unsigned er = 0;
unsigned int i,j;
s_transstart();
switch(mode)
{
case 3 :er += s_write_byte(3);
break;
case 5 :er += s_write_byte(5);
break;
default :break;
}
for(i = 0;i < 65535;i++)
{
for(j = 0;j < 65535;j++)
{if(SDA == 0)
{
break;
}
}
if(SDA == 0)
{
break;
}
}
if(SDA)
{
er += 1;
}
*(p_value) = s_read_byte(ACK);
*(p_value + 1) = s_read_byte(ACK);
*p_checksum = s_read_byte(noACK);
d6 = *(p_value);
d7=*(p_value + 1);
return er;
}
void calc_sth11(float *p_humidity ,float *p_temperature)//計算溫度值
{
const float C1 =- 4.0;
const float C2 =+ 0.0405;
const float C3 =- 0.0000028;
const float T1 =+ 0.01;
const float T2 =+ 0.00008;
float rh =* p_humidity;
float t =* p_temperature;
float rh_lin;
float rh_true;
float t_C;
t_C = t * 0.01 - 44.0 ;
rh_lin = C3 * rh * rh + C2 * rh + C1;
rh_true = (t * 0.01 - 40.0 - 25) * (T1 + T2 * rh) + rh_lin;
if(rh_true > 100)
{
rh_true = 100;
}
if(rh_true < 0.1)
{
rh_true = 0.1;
}
*p_temperature = t_C;
*p_humidity = rh_true;
}
void main() //主函數
{
value humi_val,temp_val; //聲明兩個聯合體變數
unsigned char error,checksum; //聲明兩個無符號的字元型變數
initUART(); //初始化串口
P1INP |= 0xC0; //初始化P1引腳 , 0xC0 = 1010 0000 ,使P1_7和P1_5引腳為1
begin = 0;
s_connectionreset();
while(1) //無限循環操作
{
error = 0;
error += s_measure((unsigned char*) &humi_val.i,&checksum,5); //讀入串口的數據進行溫度的計算
d1 = d6;
d2 = d7;
error += s_measure((unsigned char*) &temp_val.i,&checksum,3);
d3 = d6;
d4 = d7;
if(error != 0)
s_connectionreset();
else
{
humi_val.f = (float)humi_val.i;
temp_val.f = (float)temp_val.i;
humi_val.f = d1 * 256 + d2;
temp_val.f = d3 * 256 + d4;
calc_sth11(&humi_val.f,&temp_val.f);
printf("temp:%5.1fC humi:%5.1f%% ",temp_val.f,humi_val.f);
// printf("t1:%x h1:%x ",d1,d2);
//printf("t2:%x h2:%x ",d3,d4);
}
Wait(150);
}
}
6. 我要做基於89s52單片機下的溫室大棚監控系統,要到測光照強度、溫度、濕度的感測器,不知道用哪種
SHT11:溫度濕度感測器, SHT11是瑞士Sensirion公司推出的基於CMOSensTM技術的新型溫濕度感測器。該感測器將CMOS晶元技術與感測器技術結合起來,從而發揮出它們強大的優勢互補作用。2性能特點
SHT11溫濕度感測器的主要特性如下:
●將溫濕度感測器、信號放大調理、A/D轉換、I2C匯流排介面全部集成於一晶元(CMOSensTM技術);
●可給出全校準相對濕度及溫度值輸出;
●帶有工業標準的I2C匯流排數字輸出介面;
●具有露點值計算輸出功能;
●具有卓越的長期穩定性;
●濕度值輸出解析度為14位,溫度值輸出解析度為12位,並可編程為12位和8位;
●小體積(7.65×5.08×23.5mm),可表面貼裝;
●具有可靠的CRC數據傳輸校驗功能;
●片內裝載的校準系數可保證100%互換性;
●電源電壓范圍為2.4~5.5V;
●電流消耗,測量時為550μA,平均為28μA,休眠時為3μA。 SHT11溫濕度感測器採用SMD(LCC)表面貼片封裝形式,管腳排列如圖1所示,其引腳說明如下:
(1)GND:接地端;
(2)DATA:雙向串列數據線;
(3)SCK:串列時鍾輸入;
(4)VDD電源端:0.4~5.5V電源端;
(5~8)NC:空管腳。
TSL256x光強感測器,網上資料較多, 不做贅述,給分吧
7. java編程:求溫濕度控製程序的源代碼,類似的也可以提供,作為參考。謝謝大家
到底是真實的溫控、還是模擬的溫控 。。。。。。。。。如果是真實的溫控,這么大工作的話題,放這不太合適
8. 現在我要用AT89C51、SHT11、DS18B20和COMPIM做一個溫濕度數據採集,請問代碼怎麼怎麼做
寫程序,要是不想自己寫,可以出銀子,我給你寫。
9. 基於單片機的蔬菜大棚溫濕度智能控制系統設計
我公司是生產溫濕度變送器的
10. 求基於51或52單片機的溫濕度測量protues模擬程序、圖、完整源代碼 ,求大神幫助
需要你提供具體的要求
不能做錯了呀
我是做單片機開發的