系统运行后,LCD1604液晶显示心率、血氧和温度、时间日期;
如果心率、血氧超限则报警;蓝牙实时传输数据;
/*
作者:嗨小易(QQ:3443792007)
*/
//系统数据显示
void sys_data_show(void)
{
u8 buf[5];
static u8 cnt=0;
while(1)
{
//日期时间显示
buf[0]=gDS1302_TIME[6]/16+0x30;//年
buf[1]=gDS1302_TIME[6]%16+0x30;
buf[2]='\0';
lcd1604_show_string(2,0,buf);
buf[0]=gDS1302_TIME[4]/16+0x30;//月
buf[1]=gDS1302_TIME[4]%16+0x30;
buf[2]='\0';
lcd1604_show_string(5,0,buf);
buf[0]=gDS1302_TIME[3]/16+0x30;//日
buf[1]=gDS1302_TIME[3]%16+0x30;
buf[2]='\0';
lcd1604_show_string(8,0,buf);
buf[0]=gDS1302_TIME[5]%16+0x30-1;//星期
buf[1]='\0';
lcd1604_show_string(15,0,buf);
buf[0]=gDS1302_TIME[2]/16+0x30;//时
buf[1]=gDS1302_TIME[2]%16+0x30;
buf[2]='\0';
lcd1604_show_string(0,1,buf);
buf[0]=gDS1302_TIME[1]/16+0x30;//分
buf[1]=gDS1302_TIME[1]%16+0x30;
buf[2]='\0';
lcd1604_show_string(3,1,buf);
buf[0]=gDS1302_TIME[0]/16+0x30;//秒
buf[1]=gDS1302_TIME[0]%16+0x30;
buf[2]='\0';
lcd1604_show_string(6,1,buf);
//温度显示
buf[0]=sys_ctrl.temp/100+0x30;
buf[1]=sys_ctrl.temp%100/10+0x30;
buf[2]='.';
buf[3]=sys_ctrl.temp%100%10+0x30;
buf[4]='\0';
lcd1604_show_string(11,1,buf);
//心率显示
lcd1604_show_nums(6,2,sys_ctrl.heart,3,0);
//血氧显示
lcd1604_show_nums(4,3,sys_ctrl.oxy,3,0);
//蓝牙传输数据
cnt++;
if(cnt%10==0)
{
UART_SendString("\r\n日期:");
buf[0]=gDS1302_TIME[6]/16+0x30;//年
buf[1]=gDS1302_TIME[6]%16+0x30;
buf[2]='\0';
UART_SendString(buf);
UART_SendString("年");
buf[0]=gDS1302_TIME[4]/16+0x30;//月
buf[1]=gDS1302_TIME[4]%16+0x30;
buf[2]='\0';
UART_SendString(buf);
UART_SendString("月");
buf[0]=gDS1302_TIME[3]/16+0x30;//日
buf[1]=gDS1302_TIME[3]%16+0x30;
buf[2]='\0';
UART_SendString(buf);
UART_SendString("日 ");
UART_SendString("星期");
buf[0]=gDS1302_TIME[5]%16+0x30-1;//星期
buf[1]='\0';
UART_SendString(buf);
UART_SendString("\r\n时间:");
buf[0]=gDS1302_TIME[2]/16+0x30;//时
buf[1]=gDS1302_TIME[2]%16+0x30;
buf[2]='\0';
UART_SendString(buf);
UART_SendString(":");
buf[0]=gDS1302_TIME[1]/16+0x30;//分
buf[1]=gDS1302_TIME[1]%16+0x30;
buf[2]='\0';
UART_SendString(buf);
UART_SendString(":");
buf[0]=gDS1302_TIME[0]/16+0x30;//秒
buf[1]=gDS1302_TIME[0]%16+0x30;
buf[2]='\0';
UART_SendString(buf);
UART_SendString("\r\n");
//温度
UART_SendString("温度:");
buf[0]=sys_ctrl.temp/100+0x30;
buf[1]=sys_ctrl.temp%100/10+0x30;
buf[2]='.';
buf[3]=sys_ctrl.temp%100%10+0x30;
buf[4]='\0';
UART_SendString(buf);
UART_SendString("°C");
//心率
UART_SendString("\r\n心率:");
buf[0]=sys_ctrl.heart/100+0x30;
buf[1]=sys_ctrl.heart%100/10+0x30;
buf[2]=sys_ctrl.heart%100%10+0x30;
buf[3]='\0';
UART_SendString(buf);
//血氧
UART_SendString("\r\n血氧:");
buf[0]=sys_ctrl.oxy/100+0x30;
buf[1]=sys_ctrl.oxy%100/10+0x30;
buf[2]=sys_ctrl.oxy%100%10+0x30;
buf[3]='\0';
UART_SendString(buf);
UART_SendString("\r\n");
}
break;
}
}
//应用控制系统
void appdemo_show(void)
{
u8 i=10;
sys_parm_init();//系统参数初始化
BEEP_Init();
pcf8591_init();
DS1302_GPIO_Init();
// DS1302_Init();
lcd1604_init();//LCD1602初始化
//读取温度数据,等待稳定
while(i--)
{
//温度获取
sys_ctrl.temp=DS18B20_GetTemperture()*10;
delay_ms(100);
}
USART1_Init(9600);
sys_open_show();//系统初始界面显示
while(1)
{
sys_data_set();//系统数据设置
sys_data_get();//系统数据获取
sys_data_show();//系统数据显示
sys_fun_ctrl();//系统功能控制
}
}
B站演示视频:https://space.bilibili.com/444388619
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。