A
amitumi1003
Guest
它的概率是alwayes显示相同的值
, 连我改变温度或休米的代码没有。
结果是alwayes 37.22 4.25 64.13 0.1。
暂帮我.........
这里是代码
代码:
#包括“18F8720.h”
#包括<math.h>
#包括<stdlib.h>typedef联盟
(
无符号整型一;
浮动f;
)价值;#字节PORT_G = 0x00FD
#字节PORT_f = 0x0000
#字节PORT_c = 0x00BF
#字节PORT_D = 0x0000
#字节PORT_E = 0x0002
#保险丝房,NOLVP,NOWDT,NOPROTECT
#使用延迟(时钟= 20000000)
#使用的RS232(波特率= 9600,垃圾车= PIN_G2,xmit = PIN_G1,流= COMM_B)枚举(温度,休米);
#定义sht11_data PIN_F2
#定义sht11_sck PIN_F3
#定义sht_noACK 0
#定义sht_ACK 1
/ /地址命令读/写
#定义sht_STATUS_REG_W 0x06 / / 000 0011 0
#定义sht_STATUS_REG_R 0x07 / / 000 0011 1
#定义sht_MEASURE_TEMP 0x03 / / 000 0001 1
#定义sht_MEASURE_HUMI 0x05 / / 000 0010 1
#定义sht_RESET 0x1e / / 000 1111 0
/************************************************* *******************************/
/************************************************* *******************************/
/ /计算数据发送到PC
/************************************************* *******************************/
/************************************************* *******************************/
无效sendDataToPC(字符*数据,廉政LEN)的
(
整合酶;
output_high(PIN_G0);
delay_ms(10); / /等待
为(1 = 0;“len;我 )
(
fprintf(COMM_B,“%C”类,*数据); / /写文件
数据 ;
)
delay_ms(10); / /等待
output_low(PIN_G0);
delay_ms(10);
)廉政checkLength(int值),
(
廉政长度= 0;
而(价值!= 0)
(
值= value/10;
len ;
)
返回len;
)无效floatToInt(double值)
(
廉政1,物,长度= 0,出借;
字符到达[5];
字符*数据,温度;
双D = 100.0;
1 =绝对值(值);
长度= checkLength(1);
借给= len;
而(1 = 0)
(
物= 1%10;
到达[len - 1] =物权48;
1 = a/10;
len - ;
)
数据=到达;
sendDataToPC(数据,出借);
温度='.';
sendDataToPC(&温度,1);
1 =绝对值(值);
值=值1;
值=值*深;
1 =绝对值(值) 1;
长度= checkLength(1);
借给= len;
而(1 = 0)
(
物= 1%10;
到达[len - 1] =物权48;
1 = a/10;
len - ;
)
数据=到达;
sendDataToPC(数据,出借);
临时='';
sendDataToPC(&温度,2);
)
/************************************************* ******************************/
/************************************************* ******************************/
/ /写了一篇关于Sensibus并检查确认字节
/************************************************* ******************************/
/************************************************* ******************************/
字符sht11_write_byte(无符号字符值)
(
无符号的字符一,错误= 0;
为(1 = 0x80;我“0; / = 2)/ /位转变为掩蔽
(
如果(I及价值)
output_high(sht11_data); / /屏蔽值与i,写信给森西总线
其他的
output_low(sht11_data);
output_high(sht11_sck)/ /为森西时钟总线
delay_us(5); / / pulswith约。5我们
output_low(sht11_sck);
)
output_high(sht11_data); / /释放数据线
output_high(sht11_sck); / /时钟#的应答9
误差=输入(sht11_data); / /检查应答(数据将受挫,SHT11下)
output_low(sht11_sck);
返回错误; / /错误= 1的情况下不承认
)/************************************************* *******************************/
/************************************************* *******************************/
/ /读取一个字节的形式Sensibus并给出了一个承认在“又来了= 1案”
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_read_byte(无符号字符应答)
(
未签名的河谷= 0字符一;
output_high(sht11_data); / /释放数据线
为(1 = 0x80;我“0; / = 2)/ /位转变为掩蔽
(
output_high(sht11_sck)/ /为森西时钟总线
如果(输入(sht11_data)== 1)
缬氨酸=(缬氨酸|一); / /读取位
output_low(sht11_sck);
)
output_bit(sht11_data,!又来了); / /拉在“又来了== 1”案中数据线
output_high(sht11_sck); / /时钟#的应答9
delay_us(5); / / pulswith约。5我们
output_low(sht11_sck);
output_high(sht11_data); / /释放数据线
返回缬氨酸;
)/************************************************* *******************************/
/************************************************* *******************************/
/ /生成一个传输开始
/ / _____ ________
/ /数据:|_______|
/ / ___ ___
/ / 1781:___ | |___| |______
/************************************************* *******************************/
/************************************************* *******************************/
无效sht11_transstart(无效)
(
output_high(sht11_data);
output_low(sht11_sck); / /初始状态
delay_us(1);
output_high(sht11_sck);
delay_us(1);
output_low(sht11_data);
delay_us(1);
output_low(sht11_sck);
delay_us(3);
output_high(sht11_sck);
delay_us(1);
output_high(sht11_data);
delay_us(1);
output_low(sht11_sck);
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /通信复位:数据线= 1,至少有9球状周期
/ /其次transstart
/ / _____________________________________________________ ________
/ /数据:|_______|
/ / _ _ _ _ _ _ _ _ _ ___ ___
/ / 1781:__ | | __ | | __ | | __ | | __ | | __ | | __ | | __ | | __ | |______| |___| |______
/************************************************* *******************************/
/************************************************* *******************************/
无效sht11_connectionreset(无效)
(
无符号的字符一;
output_high(sht11_data);
output_low(sht11_sck); / /初始状态
为(1 = 0;“9,我 )/ / 9球状周期
(
output_high(sht11_sck);
output_low(sht11_sck);
)
sht11_transstart(); / /传输开始
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /重置一软复位传感器
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_softreset(无效)
(
无符号字符错误= 0;
sht11_connectionreset(); / /复位通信
误差 = sht11_write_byte(sht_RESET); / /发送复位命令传感器
返回错误; / /错误= 1形式的任何响应传感器的外壳
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /读取和校验(8位状态寄存器)
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_read_statusreg()
(
无符号字符错误= 0;
无符号字符p_value,p_checksum;
sht11_transstart(); / /传输开始
错误= sht11_write_byte(sht_STATUS_REG_R); / /发送命令传感器
p_value = sht11_read_byte(sht_ACK); / /读取状态寄存器(8位)
p_checksum = sht11_read_byte(sht_noACK); / /读取校验(8位)
返回错误; / /错误= 1形式的任何响应传感器的外壳
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /写入与校验(8位状态寄存器)
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_write_statusreg(无符号字符* p_value)
(
无符号字符错误= 0;
sht11_transstart(); / /传输开始
误差 = sht11_write_byte(sht_STATUS_REG_W); / /发送命令传感器
误差 = sht11_write_byte(* p_value); / /发送寄存器的状态值
返回错误; / /错误“= 1的形式没有响应传感器的外壳
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /使测量(湿度/温度与校验)
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_measure(无符号字符* p_value为unsigned char * p_checksum,无符号字符模式)
(
未签名的错误= 0;
无符号整型一;
sht11_transstart(); / /传输开始
开关(模式)
(/ /发送命令传感器
案件温度:错误 = sht11_write_byte(sht_MEASURE_TEMP);中断;
案件休米:错误 = sht11_write_byte(sht_MEASURE_HUMI);中断;
默认是:打破;
)
为(1 = 0;“65535,我 )
如果(输入(sht11_data)== 0)
打破; / /等到传感器已完成了测量
如果(输入(sht11_data)== 1)
误差 = 1; / /或超时(〜2秒。)达到
*(p_value 1)= sht11_read_byte(sht_ACK); / /读取第一个字节(MSB)
*(p_value)= sht11_read_byte(sht_ACK); / /读取第二个字节(低字节)
* p_checksum = sht11_read_byte(sht_noACK); / /读取校验
返回错误;
)
字符sht11_measure_temp(无符号字符* p_value为unsigned char * p_checksum)
(
返回sht11_measure(p_value,p_checksum,温度);
)
字符sht11_measure_humi(无符号字符* p_value为unsigned char * p_checksum)
(
返回sht11_measure(p_value,p_checksum,休米);
)/************************************************* *******************************/
/************************************************* *******************************/
/ /计算温度[° C]和湿度[%相对湿度]
/ /输入:休米[蜱](12位)
/ /温度[蜱](14位)
/ /输出:休米[%相对湿度]
/ /温度[
, 连我改变温度或休米的代码没有。
结果是alwayes 37.22 4.25 64.13 0.1。
暂帮我.........
这里是代码
代码:
#包括“18F8720.h”
#包括<math.h>
#包括<stdlib.h>typedef联盟
(
无符号整型一;
浮动f;
)价值;#字节PORT_G = 0x00FD
#字节PORT_f = 0x0000
#字节PORT_c = 0x00BF
#字节PORT_D = 0x0000
#字节PORT_E = 0x0002
#保险丝房,NOLVP,NOWDT,NOPROTECT
#使用延迟(时钟= 20000000)
#使用的RS232(波特率= 9600,垃圾车= PIN_G2,xmit = PIN_G1,流= COMM_B)枚举(温度,休米);
#定义sht11_data PIN_F2
#定义sht11_sck PIN_F3
#定义sht_noACK 0
#定义sht_ACK 1
/ /地址命令读/写
#定义sht_STATUS_REG_W 0x06 / / 000 0011 0
#定义sht_STATUS_REG_R 0x07 / / 000 0011 1
#定义sht_MEASURE_TEMP 0x03 / / 000 0001 1
#定义sht_MEASURE_HUMI 0x05 / / 000 0010 1
#定义sht_RESET 0x1e / / 000 1111 0
/************************************************* *******************************/
/************************************************* *******************************/
/ /计算数据发送到PC
/************************************************* *******************************/
/************************************************* *******************************/
无效sendDataToPC(字符*数据,廉政LEN)的
(
整合酶;
output_high(PIN_G0);
delay_ms(10); / /等待
为(1 = 0;“len;我 )
(
fprintf(COMM_B,“%C”类,*数据); / /写文件
数据 ;
)
delay_ms(10); / /等待
output_low(PIN_G0);
delay_ms(10);
)廉政checkLength(int值),
(
廉政长度= 0;
而(价值!= 0)
(
值= value/10;
len ;
)
返回len;
)无效floatToInt(double值)
(
廉政1,物,长度= 0,出借;
字符到达[5];
字符*数据,温度;
双D = 100.0;
1 =绝对值(值);
长度= checkLength(1);
借给= len;
而(1 = 0)
(
物= 1%10;
到达[len - 1] =物权48;
1 = a/10;
len - ;
)
数据=到达;
sendDataToPC(数据,出借);
温度='.';
sendDataToPC(&温度,1);
1 =绝对值(值);
值=值1;
值=值*深;
1 =绝对值(值) 1;
长度= checkLength(1);
借给= len;
而(1 = 0)
(
物= 1%10;
到达[len - 1] =物权48;
1 = a/10;
len - ;
)
数据=到达;
sendDataToPC(数据,出借);
临时='';
sendDataToPC(&温度,2);
)
/************************************************* ******************************/
/************************************************* ******************************/
/ /写了一篇关于Sensibus并检查确认字节
/************************************************* ******************************/
/************************************************* ******************************/
字符sht11_write_byte(无符号字符值)
(
无符号的字符一,错误= 0;
为(1 = 0x80;我“0; / = 2)/ /位转变为掩蔽
(
如果(I及价值)
output_high(sht11_data); / /屏蔽值与i,写信给森西总线
其他的
output_low(sht11_data);
output_high(sht11_sck)/ /为森西时钟总线
delay_us(5); / / pulswith约。5我们
output_low(sht11_sck);
)
output_high(sht11_data); / /释放数据线
output_high(sht11_sck); / /时钟#的应答9
误差=输入(sht11_data); / /检查应答(数据将受挫,SHT11下)
output_low(sht11_sck);
返回错误; / /错误= 1的情况下不承认
)/************************************************* *******************************/
/************************************************* *******************************/
/ /读取一个字节的形式Sensibus并给出了一个承认在“又来了= 1案”
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_read_byte(无符号字符应答)
(
未签名的河谷= 0字符一;
output_high(sht11_data); / /释放数据线
为(1 = 0x80;我“0; / = 2)/ /位转变为掩蔽
(
output_high(sht11_sck)/ /为森西时钟总线
如果(输入(sht11_data)== 1)
缬氨酸=(缬氨酸|一); / /读取位
output_low(sht11_sck);
)
output_bit(sht11_data,!又来了); / /拉在“又来了== 1”案中数据线
output_high(sht11_sck); / /时钟#的应答9
delay_us(5); / / pulswith约。5我们
output_low(sht11_sck);
output_high(sht11_data); / /释放数据线
返回缬氨酸;
)/************************************************* *******************************/
/************************************************* *******************************/
/ /生成一个传输开始
/ / _____ ________
/ /数据:|_______|
/ / ___ ___
/ / 1781:___ | |___| |______
/************************************************* *******************************/
/************************************************* *******************************/
无效sht11_transstart(无效)
(
output_high(sht11_data);
output_low(sht11_sck); / /初始状态
delay_us(1);
output_high(sht11_sck);
delay_us(1);
output_low(sht11_data);
delay_us(1);
output_low(sht11_sck);
delay_us(3);
output_high(sht11_sck);
delay_us(1);
output_high(sht11_data);
delay_us(1);
output_low(sht11_sck);
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /通信复位:数据线= 1,至少有9球状周期
/ /其次transstart
/ / _____________________________________________________ ________
/ /数据:|_______|
/ / _ _ _ _ _ _ _ _ _ ___ ___
/ / 1781:__ | | __ | | __ | | __ | | __ | | __ | | __ | | __ | | __ | |______| |___| |______
/************************************************* *******************************/
/************************************************* *******************************/
无效sht11_connectionreset(无效)
(
无符号的字符一;
output_high(sht11_data);
output_low(sht11_sck); / /初始状态
为(1 = 0;“9,我 )/ / 9球状周期
(
output_high(sht11_sck);
output_low(sht11_sck);
)
sht11_transstart(); / /传输开始
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /重置一软复位传感器
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_softreset(无效)
(
无符号字符错误= 0;
sht11_connectionreset(); / /复位通信
误差 = sht11_write_byte(sht_RESET); / /发送复位命令传感器
返回错误; / /错误= 1形式的任何响应传感器的外壳
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /读取和校验(8位状态寄存器)
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_read_statusreg()
(
无符号字符错误= 0;
无符号字符p_value,p_checksum;
sht11_transstart(); / /传输开始
错误= sht11_write_byte(sht_STATUS_REG_R); / /发送命令传感器
p_value = sht11_read_byte(sht_ACK); / /读取状态寄存器(8位)
p_checksum = sht11_read_byte(sht_noACK); / /读取校验(8位)
返回错误; / /错误= 1形式的任何响应传感器的外壳
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /写入与校验(8位状态寄存器)
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_write_statusreg(无符号字符* p_value)
(
无符号字符错误= 0;
sht11_transstart(); / /传输开始
误差 = sht11_write_byte(sht_STATUS_REG_W); / /发送命令传感器
误差 = sht11_write_byte(* p_value); / /发送寄存器的状态值
返回错误; / /错误“= 1的形式没有响应传感器的外壳
)
/************************************************* *******************************/
/************************************************* *******************************/
/ /使测量(湿度/温度与校验)
/************************************************* *******************************/
/************************************************* *******************************/
字符sht11_measure(无符号字符* p_value为unsigned char * p_checksum,无符号字符模式)
(
未签名的错误= 0;
无符号整型一;
sht11_transstart(); / /传输开始
开关(模式)
(/ /发送命令传感器
案件温度:错误 = sht11_write_byte(sht_MEASURE_TEMP);中断;
案件休米:错误 = sht11_write_byte(sht_MEASURE_HUMI);中断;
默认是:打破;
)
为(1 = 0;“65535,我 )
如果(输入(sht11_data)== 0)
打破; / /等到传感器已完成了测量
如果(输入(sht11_data)== 1)
误差 = 1; / /或超时(〜2秒。)达到
*(p_value 1)= sht11_read_byte(sht_ACK); / /读取第一个字节(MSB)
*(p_value)= sht11_read_byte(sht_ACK); / /读取第二个字节(低字节)
* p_checksum = sht11_read_byte(sht_noACK); / /读取校验
返回错误;
)
字符sht11_measure_temp(无符号字符* p_value为unsigned char * p_checksum)
(
返回sht11_measure(p_value,p_checksum,温度);
)
字符sht11_measure_humi(无符号字符* p_value为unsigned char * p_checksum)
(
返回sht11_measure(p_value,p_checksum,休米);
)/************************************************* *******************************/
/************************************************* *******************************/
/ /计算温度[° C]和湿度[%相对湿度]
/ /输入:休米[蜱](12位)
/ /温度[蜱](14位)
/ /输出:休米[%相对湿度]
/ /温度[