求关于msp430 对温湿度sht10采样,1602液晶显示的程序!!!!重金!!要正确的哦

兴山鹏派 2024-11-16 00:06:36
最佳回答
#define _sht10_c_#include "main.h"/****************************************************************function : shtinit**description : 温湿度传感器i/o 初始化**input : none**return : none**remark : none***************************************************************/void shtinit(void){ p8sel &= ~(bit4 + bit5); // set p8.4,5 general i/o p8dir |= (bit4 + bit5); // sda scl output sht_sck_high(); sht_data_high(); shtconnectionrst(); // sht10 communication reset shtwritereg(sht_8bit_cmd);}/****************************************************************function : shtstart**description : sht 启动传输**input : none**return : none**remark : none***************************************************************/void shtstart(void){ sht_data_high(); sht_sck_low(); _nop(); _nop(); sht_sck_high(); _nop(); _nop(); sht_data_low(); _nop(); _nop(); sht_sck_low(); _nop(); _nop(); _nop(); _nop(); sht_sck_high(); _nop(); _nop(); sht_data_high(); _nop(); _nop(); sht_sck_low();}/****************************************************************function : shtconnectionrst**description : sht 通讯复位时序**input : none**return : none**remark : none***************************************************************/void shtconnectionrst(void){ u8 i; sht_data_output(); sht_data_high(); sht_sck_low(); for(i = 0; i < 9; i++) // 9 sck cycles { sht_sck_high(); _nop(); _nop(); sht_sck_low(); _nop(); _nop(); } shtstart();}/****************************************************************function : shtsend8bit**description : sht 发送一个字节**input : byte→发送的数据**return : err_code →0:正常,!0:出错**remark : none***************************************************************/u8 shtsend8bit(u8 byte){ u8 i; u8 err_code = 0; for (i = 0; i < 8; i++) { if ((byte & 0x80) == 0) { sht_data_low(); } else { sht_data_high(); } sht_sck_high(); _nop(); _nop(); byte = byte << 1; sht_sck_low(); } sht_data_high( ); // release data-line _nop(); _nop(); sht_data_input(); _nop(); _nop(); sht_sck_high(); _nop(); _nop(); err_code = sht_read_data(); sht_sck_low(); sht_data_output(); return err_code;}/****************************************************************function : shtreceive8bit**description : sht 接收一个字节**input : ack →ack**return : byte →接收的数据** err_code →0:正常,!0:出错**remark : none***************************************************************/u8 shtreceive8bit(u8 ack){ u8 i; u8 byte = 0; sht_data_output(); sht_data_high(); // release data-line _nop(); _nop(); sht_data_input(); _nop(); _nop(); for (i = 0; i < 8; i++) { byte = byte << 1; sht_sck_high(); _nop(); _nop(); if (sht_read_data() == 1) { byte = byte | 0x01; } else { byte = byte & 0xfe; } sht_sck_low(); _nop(); _nop(); } sht_data_output(); if (ack == 0) { sht_data_high(); } else { sht_data_low(); } sht_sck_high(); _nop(); _nop(); _nop(); _nop(); sht_sck_low(); sht_data_high(); return byte;}/****************************************************************function : shtsoftwarerst**description : sht 软件复位**input : none**return : err_code →0:正常,!0:出错**remark : none***************************************************************/u8 shtsoftwarerst(void){ u8 err_code = 0; shtconnectionrst(); err_code = shtsend8bit(reset_sht); return err_code;}/****************************************************************function : shtwritereg**description : sht 写状态寄存器**input : value →写入的寄存器内容**return : err_code →0:正常,!0:出错**remark : none***************************************************************/u8 shtwritereg(u8 value){ u8 err_code = 0; shtstart(); err_code += shtsend8bit(w_state_reg); err_code += shtsend8bit(value); return err_code;}/****************************************************************function : shtreadreg**description : sht 读状态寄存器**input : *dst →数据源指针** *crc →crc校验值**return : err_code →0:正常,!0:出错**remark : none***************************************************************/u8 shtreadreg(u8 *dst, u8 *crc){ u8 err_code = 0; shtstart(); err_code += shtsend8bit(r_state_reg); *dst = shtreceive8bit(ack); *crc = shtreceive8bit(noack); return err_code;}/****************************************************************function : shtcalcvalue**description : sht 温湿度的计算与修正**input : *humidity →湿度数据源指针** *temperature →温度数据源指针**return : none**remark : a3 = 温度;a4 = 湿度***************************************************************/void s_calculate(u16 *humidity, u16 *temperature){ const float c1 = -4.0; // for 8 bit const float c2 = +0.648; // for 8 bit const float c3 = -0.0000072; // for 8 bit const float d1 = -39.63; // for 12 bit @ 3v const float d2 = +0.04; // for 12 bit @ 3v const float t1 = 0.01; // for 8 bit const float t2 = 0.00128; // for 8 bit float rh = *humidity; // rh: humidity [ticks] 12 bit float t = *temperature; // t: temperature [ticks] 14 bit float rh_lin = 0; // rh_lin: humidity linear float rh_true = 0; // rh_true: temperature compensated humidity float t_c = 0; // t_c : temperature [癈] t_c = t*d2 + d1; //calc. temperature from ticks to [癈] rh_lin = c3*rh * rh + c2 * rh + c1; //calc. humidity from ticks to [%rh] rh_true=(t_c-25)*(t1+t2*rh)+rh_lin; //calc. temperature compensated humidity [%rh] if (rh_true > 100) //cut if the value ** outside of { rh_true = 100; } if (rh_true < 0.1) //the physical possible range { rh_true = 0.1; } adcvalue[2] = t_c + 40; // a3 温度提高40℃ adcvalue[3] = rh_true; // a4 湿度}/****************************************************************function : shtsample**description : sht 采样**input : *dst →数据源指针** *crc →crc校验值** mode →采集模式**return : err_code →0:正常,!0:出错**remark : none***************************************************************/u8 shtsample(u8 *dst, u8 *crc, u8 mode){ u8 err_code = 0; u16 timecnt = 2000; shtstart(); switch (mode) { case measure_temp: err_code += shtsend8bit(measure_temp); break; case measure_humi: err_code += shtsend8bit(measure_humi); break; default: break; } sht_data_input(); do { delayms(1); }while ((sht_read_data()) && (--timecnt)); if (!timecnt) { err_code++; } else { *dst = shtreceive8bit(ack); *(dst + 1) = shtreceive8bit(ack); *crc = shtreceive8bit(noack); } return err_code;}/****************************************************************function : shtconversion**description : sht 温湿度转换**input : none**return : none**remark : a3 = 温度;a4 = 湿度***************************************************************/void shtconversion(void){ u8 checksum = 0, err_code = 0; u8 temp_array[2], humi_array[2]; u16 temp = 0, humi = 0; err_code += shtsample(temp_array, &checksum, measure_temp); err_code += shtsample(humi_array, &checksum, measure_humi); if (err_code) // in case of an error: connection reset { shtconnectionrst(); adcvalue[2] = 0; // a3 温度提高40℃ adcvalue[3] = 0; // a4 湿度 } else { temp = (temp_array[0] << 8) + temp_array[1]; humi = (u16)humi_array[1]; s_calculate(&humi, &temp); }}#ifndef _sht10_h_#define _sht10_h_#ifndef _sht10_c_#define sht10_ext extern#else#define sht10_ext#endif#define ack 1#define noack 0#define sht_sck_high() p8out |= bit4 // sck 高电平#define sht_sck_low() p8out &= ~bit4 // sck 低电平#define sht_data_high() p8out |= bit5 // data 高电平#define sht_data_low() p8out &= ~bit5 // data 低电平#define sht_read_data() (p8in & 0x20) >> 5 // 读取data 状态#define sht_data_input() p8dir &= ~bit5 // 设置data 为输入#define sht_data_output() p8dir |= bit5 // 设置data 为输出#define measure_temp 0x03 // 测量温度#define measure_humi 0x05 // 测量湿度#define w_state_reg 0x06 // 写状态寄存器#define r_state_reg 0x07 // 读状态寄存器#define sht_8bit_cmd 0x01 // 设置湿度值为8bit 命令#define reset_sht 0x1e // 复位, 清空状态寄存器sht10_ext void shtinit(void);sht10_ext void shtconnectionrst(void);sht10_ext u8 shtwritereg(u8 value);sht10_ext u8 shtreadreg(u8 *dst, u8 *crc);sht10_ext u8 shtsample(u8 *dst, u8 *crc, u8 mode);sht10_ext void shtconversion(void);#endif每月1k的出货量,未出过问题的驱动程序 20210311
汇率兑换计算器

类似问答
  • 推荐一款2000内17液晶 显示效果要好
    • 2024-11-16 05:48:30
    • 提问者: 未知
    三星710nz12,or 711
  • 新液晶显示器排名
    • 2024-11-16 15:19:47
    • 提问者: 未知
    你好 液晶显示器比较好的就是三星 清晰度很高 希望可以帮到你
  • 液晶显示器真的护眼吗???
    • 2024-11-16 08:14:54
    • 提问者: 未知
    至于大家关注的辐射,首先现在电脑都是低辐射的,安全的,上市的电脑都做过辐射安全检测,不会危害人体健康。另外,辐射与视觉疲劳没有直接联系,辐射不是造成视觉疲劳的...
  • gsp新规对温湿度监控有什么要求?
    • 2024-11-16 14:49:58
    • 提问者: 未知
    新修订药品gsp全面推行计算机信息化管理,着重规定计算机管理的设施、环境、数据库及应用软件功能要求;明确规定企业应当对药品仓库采用温湿度自动监测系统,对仓储环境实施持续、有效的实时监测;对储存、运输冷藏、冷冻药品要求配备特定的设施设备。药品gsp提高了对冷藏、冷冻药品储存、运输设施设备的要求,特别规定了此类药品运输、收货等环节的交接程序和温度监测、跟踪、查验等要求,强化了高风险品种的质量保障能力。...
  • 液晶电视和液晶显示器有什么区别
    • 2024-11-16 13:28:39
    • 提问者: 未知
    液晶电视与液晶显示器虽然同为输出显示设备,核心部件同样均为液晶面板,接口配置、外观设计上也颇有相通之处,但在市场上这两类产品却绝对是径渭分明,互不相干。 首先,在渠道上,液晶电视大都在家电卖场,超市之类的店面出售,而显示器却在it卖场,比如说中关村海龙、鼎好之类的电子商城出售;其次,消费者在使用上,也是绝不混淆,很少有人说买个显示器回家专门当电视用,或者说买个电视回家接电脑上当显示器上网聊天...
  • 温湿度传感器sht10和sht11的区别?
    • 2024-11-16 04:30:23
    • 提问者: 未知
    由图3可看出,sht11的输出特性呈一定的非线性,为了补偿湿度传感器的非线性,可按如下公式修正湿度值:rhlinear=c1+c2sorh+c3sorh2式中,sorh为传感器相对湿度测量值,...
  • 检验科生化室的温度湿度的要求范围是多少
    • 2024-11-16 08:08:27
    • 提问者: 未知
    实验室的标准温度为20℃,一般检测间及试验间的温度应在20±5℃, 线值计量标准间为20±2℃,电工与无线电专业的标准间和线值计量的计量检测仪器间为20±3℃。实验室内的相对湿度一般应保持在50-70%。
  • 关于汽车显示速度和路程的表盘
    • 2024-11-16 02:45:43
    • 提问者: 未知
    12561、12601是指这辆车从生产线下来后总共走过的路程(公里)。0236,0276是指计程表从上次清零后到现在所走的路程(公里)。现在的汽车都有两个里程表,一个可以清零、一个不可以。...
  • 清华紫光的液晶显示器质量如何?
    • 2024-11-16 16:17:15
    • 提问者: 未知
    清华紫光显示器上市也就不过2年的时间,市面上销售的清华紫光显示器尽管价格显得比较公道,但是大多是没有保障的,因为假货实在是太多了,就连经销商都不知道自己卖的是不是真正的清华紫光显示...
  • 中电熊猫液晶显示怎么样
    • 2024-11-16 12:53:12
    • 提问者: 未知
    楼上一看就不问题问的是什么……显不是电视,液晶显示领域主要是生产液板,而液晶电视需要液晶面板+背光源+机芯板+电源板+外壳前框。言归正传。中电熊猫同京东方、华星光电、天马光电一样,是****的液晶面板企业,坦白来说,目前**最大的液晶面板企业是京东方,其他光电企业都相对较小。而液晶面板行业就是这样:做得越大,边际效益越大,提升速度和空间也就越大。京东方和华星光电是**做得最好的,基本上可以比肩**...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。