目录
1、前言
该设计是一种基于STM32单片机的温度检测报警器。在硬件方面主要采用STM32F103C8T6作为主控核心,结合数字温度传感器DS18B20,此传感器读取被测量温度值并进行转换,将转换后的数据送到单片机处理,再通过LCD1602显示出来。同时,手动设置温度的上下限值,当实时温度超出时,对应的工作指示灯亮,蜂鸣器报警。
2、主要功能
a.通过LCD1602显示当前温度值,温度测量范围:0-99摄氏度。
b.通过独立按键设置温度上下限值,第一次按下设置键设置温度下限值,第二次按下设置键设置温度上限值,再按加减键就可以修改温度值。
c.当温度低于下限或高于上限温度时,蜂鸣器和LED灯同时报警。
3、源程序
Keil5 MDK是ARM旗下面向Cortex-M系列单片机的嵌入式集成开发环境,也是STM32、GD32等单片机开发中最常用的软件工具。该软件集成UVision5编辑器、ARM C/C++编译器、调试组件,支持C语言与汇编语言程序开发,可完成代码编写、工程管理、编译链接、在线仿真与程序烧录等全套开发工作。MDK5采用软件包管理机制,主程序独立于芯片支持包,用户可按需安装对应器件支持库,适配不同型号单片机。软件兼容ST-LINK、J-LINK等调试器,具备断点调试、寄存器查看、内存观测等调试功能,同时内置CMSIS标准库、RTX实时操作系统及各类中间件。MDK5拥有免费Lite版本,适合课程实验与毕业设计,是嵌入式学习、电子竞赛和小型单片机项目开发的主流平台。
本设计采用keil5 MDK软件(内附安装包)实现程序设计,主程序如下所示。
cs
int main(void)
{
short temp_raw;
int temp_x10; //真实温度 ×10,整数,用于带小数比较
int temp_int;
uchar temp_dec;
delay_init();
GPIO_ALL_Init();
delay_ms(30); //上电等待LCD供电稳定
lcd1602_init();
while(1)
{
KEY_Scan();
tick_blink++;
if(Mode != 0)
{
if(tick_blink >= 2) //设置模式闪烁速度,可修改数字
{
tick_blink = 0;
blink_en = !blink_en;
}
}
else
{
if(tick_blink >= 8)
{
tick_blink = 0;
blink_en = !blink_en;
}
}
temp_raw=DS18B20_Get_Temp();
if(temp_raw == -999)
{
lcd_setpos(0,0);
write_1602dat('T');
write_1602dat('e');
write_1602dat('m');
write_1602dat('p');
write_1602dat(':');
write_1602dat('E');
write_1602dat('r');
write_1602dat('r');
write_1602dat('o');
write_1602dat('r');
GPIO_ResetBits(BEEP_PORT,BEEP_PIN);
GPIO_ResetBits(LED_RED_PORT,LED_RED_PIN);
GPIO_ResetBits(LED_GREEN_PORT,LED_GREEN_PIN);
tick_beep = 0;
beep_state = 0;
}
else
{
// DS18B20分辨率0.0625℃,×10 放大
temp_x10 = (temp_raw * 10)/16;
temp_int = temp_x10 / 10;
temp_dec = temp_x10 % 10;
if(temp_dec<0) temp_dec = (uchar)(-temp_dec);
//第一行显示 Temp:xx.x°C
lcd_setpos(0,0); write_1602dat('T');
lcd_setpos(1,0); write_1602dat('e');
lcd_setpos(2,0); write_1602dat('m');
lcd_setpos(3,0); write_1602dat('p');
lcd_setpos(4,0); write_1602dat(':');
if(temp_int < 0)
{
lcd_setpos(5,0); write_1602dat('-');
lcd_shownum(6,0,(uint)(-temp_int),2);
}
else
{
lcd_setpos(5,0); write_1602dat(' ');
lcd_shownum(6,0,(uint)temp_int,2);
}
lcd_setpos(8,0); write_1602dat('.');
lcd_shownum(9,0,temp_dec,1);
lcd_setpos(10,0); write_1602dat(0xDF);
lcd_setpos(11,0); write_1602dat('C');
//========带小数完整比较 temp_x10 和 TH_x10、TL_x10========
if(temp_x10 > TH_x10)
{
//高于上限(包含小数)红灯+滴滴
GPIO_SetBits(LED_RED_PORT,LED_RED_PIN);
GPIO_ResetBits(LED_GREEN_PORT,LED_GREEN_PIN);
if(key_tone_en == 0)
{
tick_beep++;
if(beep_state == 0)
{
GPIO_SetBits(BEEP_PORT,BEEP_PIN);
if(tick_beep >= BEEP_ON_CNT){tick_beep=0;beep_state=1;}
}
else
{
GPIO_ResetBits(BEEP_PORT,BEEP_PIN);
if(tick_beep >= BEEP_OFF_CNT){tick_beep=0;beep_state=0;}
}
}
}
else if(temp_x10 < TL_x10)
{
//低于下限(包含小数)绿灯+滴滴
GPIO_ResetBits(LED_RED_PORT,LED_RED_PIN);
GPIO_SetBits(LED_GREEN_PORT,LED_GREEN_PIN);
if(key_tone_en == 0)
{
tick_beep++;
if(beep_state == 0)
{
GPIO_SetBits(BEEP_PORT,BEEP_PIN);
if(tick_beep >= BEEP_ON_CNT){tick_beep=0;beep_state=1;}
}
else
{
GPIO_ResetBits(BEEP_PORT,BEEP_PIN);
if(tick_beep >= BEEP_OFF_CNT){tick_beep=0;beep_state=0;}
}
}
}
else
{
//温度正常区间
if(key_tone_en == 0)
{
GPIO_ResetBits(BEEP_PORT,BEEP_PIN);
}
GPIO_ResetBits(LED_RED_PORT,LED_RED_PIN);
GPIO_ResetBits(LED_GREEN_PORT,LED_GREEN_PIN);
tick_beep = 0;
beep_state = 0;
}
}
//第二行:TL、TH只显示整数部分(按键是±1℃)
{
int TL_show = TL_x10 /10;
int TH_show = TH_x10 /10;
lcd_setpos(0,1); write_1602dat('T');
lcd_setpos(1,1); write_1602dat('L');
lcd_setpos(2,1); write_1602dat(':');
if(Mode == 1)
lcd_shownum_blink(3,1,TL_show,2,blink_en);
else
lcd_shownum(3,1,(uint)TL_show,2);
lcd_setpos(5,1); write_1602dat(0xDF);
lcd_setpos(6,1); write_1602dat('C');
lcd_setpos(7,1); write_1602dat(' ');
lcd_setpos(8,1); write_1602dat('T');
lcd_setpos(9,1); write_1602dat('H');
lcd_setpos(10,1); write_1602dat(':');
if(Mode == 2)
lcd_shownum_blink(11,1,TH_show,2,blink_en);
else
lcd_shownum(11,1,(uint)TH_show,2);
lcd_setpos(13,1); write_1602dat(0xDF);
lcd_setpos(14,1); write_1602dat('C');
}
delay_ms(120);
}
}
4、原理图和PCB图
Altium Designer 是一款功能强大的电子设计自动化软件,由Altium公司开发,广泛应用于印刷电路板PCB设计、硬件系统开发及嵌入式系统集成领域。作为业界领先的一体化设计平台,它集成了原理图设计、PCB布局、3D建模、信号完整性分析、仿真验证等核心功能,为工程师提供从概念设计到产品落地的全流程解决方案。其直观的用户界面和智能化工具链,显著提升了复杂电子系统设计的效率与可靠性。
Altium Designer 支持多层原理图设计,可通过动态交叉探测功能实现原理图与PCB布局的实时联动,确保设计一致性。其PCB编辑器内置实时设计规则检查DRC,能自动检测布线冲突、间距违规等问题,大幅减少人工校核时间。3D可视化功能允许工程师在虚拟环境中预览PCB与机械外壳的装配关系,避免物理原型阶段的兼容性问题。此外,软件提供丰富的元器件库管理工具,支持与主流供应链平台的数据同步,简化物料采购流程。
该设计原理图和PCB是通过Altium Designer软件设计的,仅提供PDF原理图和PCB顶层/底层图片!!!
PDF原理图

PCB顶层和底层图


5、实物图

6、设计报告
设计报告主要包括硬件电路设计、软件设计等等,仅供参考

7、资料清单
设计资料主要包括源程序+PDF原理图+PCB图+设计报告+使用说明+元件清单+实物演示视频+软件安装包
