2024-09-01
售卖作品
00

目录

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

功能

读取dht11温湿度显示到oled

读取ds18b20温度显示到oled

按键修改温度上限

温度超出温度上限就蜂鸣器报警

硬件接法

oled接法 0.96 寸 7针 oled

// GND 电源地

// VCC 3.3v电源

// D0 P23(时钟)

// D1 P24(数据)

// RES 接P21

// DC 接P22

// CS 接P20

ds18b20

// GND 电源地

// VCC 3.3v电源

// DATA P1.5

DHT11

// GND 电源地

// VCC 3.3v电源

// DATA P1.4

按键1 P1.6

按键2 P1.7

有源蜂鸣器低电平触发 接P1.3

部分代码

cpp
int main(void) { uchar o; uchar count = 0; uint warn_temp = 270; //报警温度 WDTCTL = WDTPW + WDTHOLD; // Stop WDT if (CALBC1_8MHZ == 0xFF) // If calibration constant erased { while (1) ; // do not load, trap CPU!! } DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_8MHZ; // Set range DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation */ P1DIR |= BIT3; //BEEP P1OUT |= BIT3; //CLOSE P1DIR &= ~(BIT6 + BIT7); //KEY1 KEY2 P1REN |= BIT6 + BIT7; P1OUT |= BIT6 + BIT7; OLED_Init(); //初始化OLED OLED_Clear(); OLED_ShowString(40, 0, "SYSTEM"); DS18b20_Init(); //初始化显示报警温度 memset(dis_str, 0, 15); count = 0; dis_str[count++] = warn_temp % 1000 / 100 + '0'; dis_str[count++] = warn_temp % 100 / 10 + '0'; dis_str[count++] = '.'; dis_str[count++] = warn_temp % 10 + '0'; dis_str[count++] = 'C'; dis_str[count++] = 0; OLED_ShowString(0, 4, dis_str); while (1) { temp_value = get_one_temperature(); o = start_DHT11(); if (o) { memset(dis_str, 0, 15); count = 0; dis_str[count++] = temp_value % 1000 / 100 + '0'; dis_str[count++] = temp_value % 100 / 10 + '0'; dis_str[count++] = '.'; dis_str[count++] = temp_value % 10 + '0'; dis_str[count++] = 'C'; dis_str[count++] = ' '; dis_str[count++] = ' '; dis_str[count++] = DHT11RH_Data_H % 100 / 10 + '0'; dis_str[count++] = DHT11RH_Data_H % 10 + '0'; dis_str[count++] = '%'; dis_str[count++] = 'R'; dis_str[count++] = 'H'; dis_str[count++] = 0; OLED_ShowString(0, 2, dis_str); } if ((P1IN & BIT6) == 0) { delay_ms(3); if ((P1IN & BIT6) == 0) { // while ((P1IN & BIT6) == 0) // ; warn_temp++; //初始化显示报警温度 memset(dis_str, 0, 15); count = 0; dis_str[count++] = warn_temp % 1000 / 100 + '0'; dis_str[count++] = warn_temp % 100 / 10 + '0'; dis_str[count++] = '.'; dis_str[count++] = warn_temp % 10 + '0'; dis_str[count++] = 'C'; dis_str[count++] = 0; OLED_ShowString(0, 4, dis_str); } } if ((P1IN & BIT7) == 0) { delay_ms(3); if ((P1IN & BIT7) == 0) { // while ((P1IN & BIT7) == 0) // ; warn_temp--; //初始化显示报警温度 memset(dis_str, 0, 15); count = 0; dis_str[count++] = warn_temp % 1000 / 100 + '0'; dis_str[count++] = warn_temp % 100 / 10 + '0'; dis_str[count++] = '.'; dis_str[count++] = warn_temp % 10 + '0'; dis_str[count++] = 'C'; dis_str[count++] = 0; OLED_ShowString(0, 4, dis_str); } } if (temp_value > warn_temp) { P1OUT &= ~BIT3; } else { P1OUT |= BIT3; //CLOSE } delay_ms(10); } }

全部代码

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

本文作者:Dong

本文链接:

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