读取DS18B20温度 显示到LCD1602显示屏上 温度超过27.0设置度 低电平触发的有缘蜂鸣器报警
//1 LCD1602:
//vss vdd v0 rs rw en D0 D1 D2 D3 D4 D5 D5 D6 A K (模块)
//GND VCC(5V) 滑动变阻器输出电压 P20 P21 P22 P10 P11 P12 P13 P14 P15 P16 P17 VCC(3.3V) GND (单片机板子)
//如果没有滑动变阻器 就把V0接到GND 斜视着看显示
//2 DS18B20:
// VCC DS GND (模块)
// VCC P25 GND (单片机板子)
//3 蜂鸣器:
// VCC D GND (模块)
// VCC P24 GND (单片机板子)
cppint main(void)
{
unsigned char dis[10];
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
//设置单片机工作时钟 设置为8MHZ
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 * / */
Port_init(); /* 显示器引脚初始化 */
LCD_init(); /* 显示器初始化 */
P2DIR |= BIT4; //P2.4引脚设置为输出
P2OUT |= BIT4; //P2.4引脚输出高电平 高电平蜂鸣器不响
while (1)
{
temp_value = get_one_temperature(); //获取温度
dis[0] = temp_value % 1000 / 100 + '0';
dis[1] = temp_value % 100 / 10 + '0';
dis[2] = '.';
dis[3] = temp_value % 10 + '0';
dis[4] = 'C';
dis[5] = 0;
LCD_write_str(0, 0, dis); //显示在第0排 第0个位置
if (temp_value > 270) //大于27.0摄氏度
{
P2OUT &= ~BIT4; //P2.4引脚输出低电平 低电平蜂鸣器响
}
else
{
P2OUT |= BIT4; //P2.4引脚输出高电平 高电平蜂鸣器不响
}
}
}
cpphttps://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!