2024-09-01
售卖作品
00

目录

功能
硬件
部分代码
全部代码

功能

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

部分代码

cpp
int 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); } }

全部代码

cpp
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!