文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
系统运行后,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设计,视频分享,技术交流。