msp430g2553,读取SHT31,读取gy-30,显示到lcd12864
/*
12864液晶串行显示测试程序
P1.4模拟SID(接第5脚),
P1.5模拟SCLK(接第6脚)
4脚(CS信号)接高电平选通, 接P2.0 !!!!!!
15脚(PSB信号)接地选择串行方式
17脚(RST信号)根据注释提示悬空
以上四根线
另外还需要接四根线VCC GND BLA BLK
边上的是GND或者BLK 都接GND
第二个就是VCC或者BLA 都接5V
MSP430是3.3的单片机 但是不会烧
并不是所有的12864都支持串口,程序不行就考虑是不是买到次品了
*/
//SHT31
//SCL--P1.2
//SDA--P1.1
//VCC--3.3V
//GND--GND
//ADDR--GND
//gy-30
//SCL--P2.1
//SDA--P2.2
//VCC--3.3V
//GND--GND
//ADDR--GND
cppint lx_int;
float lx;
int main(void)
{
u8 BUFt[6] = { 0 };
u16 temp = 0, humi = 0;
unsigned char dis[10];
WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */
if (CALBC1_1MHZ == 0xFF) // If calibration constant erased
{
while (1)
; // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */
lcdinit(); /* LCD初始化 */
P2DIR = 0XFF;
P2OUT = 0XFF;
Lcd_WriteStr(0, 0, "温度");
Lcd_WriteStr(0, 1, "湿度");
Lcd_WriteStr(0, 2, "光强");
IIC_Init();
while (1)
{
IIC_Start();
IIC_Send_Byte(SHT30W); //发送设备地址+写信号
while (IIC_Wait_Ack())
; //从机应答
IIC_Send_Byte(0x2C); //命令高8位,0x2220,周期测量
while (IIC_Wait_Ack())
;
IIC_Send_Byte(0x06); //命令高8位,0x2220,周期测量
while (IIC_Wait_Ack())
;
delay_ms(2);
IIC_Start();
IIC_Send_Byte(SHT30R); //发送设备地址+写信号
while (IIC_Wait_Ack())
; //从机应答
BUFt[0] = IIC_Read_Byte(1); //温度高
BUFt[1] = IIC_Read_Byte(1); //温度低
BUFt[2] = IIC_Read_Byte(1); //温度crc
BUFt[3] = IIC_Read_Byte(1); //湿度高
BUFt[4] = IIC_Read_Byte(1); //湿度低
BUFt[5] = IIC_Read_Byte(0); //湿度crc
IIC_Stop();
temp = (BUFt[0] << 8) | BUFt[1];
humi = (BUFt[3] << 8) | BUFt[4];
temp = (u16) (175 * (float) temp / 65535 - 45);
humi = (u16) (100 * (float) humi / 65535);
delay_ms(10);
dis[0] = temp % 100 / 10 + '0';
dis[1] = temp % 10 + '0';
dis[2] = 'C';
dis[3] = 0;
Lcd_WriteStr(2, 0, dis);
dis[0] = humi % 100 / 10 + '0';
dis[1] = humi % 10 + '0';
dis[2] = 'R';
dis[3] = 0;
Lcd_WriteStr(2, 1, dis);
lx_int = (int) get_lightpower();
dis[0] = lx_int / 10000 + '0';
dis[1] = lx_int % 10000 / 1000 + '0';
dis[2] = lx_int % 1000 / 100 + '0';
dis[3] = lx_int % 100 / 10 + '0';
dis[4] = lx_int % 10 + '0';
dis[5] = 0;
Lcd_WriteStr(2, 2, dis);
delay_ms(200);
}
}
cpphttps://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!