当前位置: 首页 > news >正文

基于单片机的万年历温度无线传输控制系统系统

一、系统方案
本设计采用DS1302采集年月日时分秒,DS18B20采集温度值,按键设置温度报警上下限,实际测量温度低于下限或高于上限,蜂鸣器报警,同时将测量温度上传到蓝牙助手。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1
init_time0(); //初始化定时器
init_1602(); //lcd1602初始化
init_1602_dis_csf(); //lcd1602初始化显示

temperature = read_temp();	//先读出温度的值
delay_1ms(650);

Uart_init();
2、液晶显示程序
/lcd1602写命令函数*/
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/lcd1602写数据函数*/
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
3、按键程序
/***独立按键程序/
uchar key_can; //按键值

void key() //独立按键程序
{
static uchar key_new;
key_can = 20; //按键值还原
P3 |= 0x78; //对应的按键IO口输出为1
if((P3 & 0x78) != 0x78) //按键按下
{
delay_1ms(1); //按键消抖动
if(((P3 & 0x78) != 0x78) && (key_new == 1))
{ //确认是按键按下
key_new = 0;
switch(P3 & 0x78)
{
case 0x70: key_can = 4; break; //得到按键值
case 0x68: key_can = 3; break; //得到按键值
case 0x58: key_can = 2; break; //得到按键值
case 0x38: key_can = 1; break; //得到按键值
}
// write_sfm2(1,0,key_can); //显示按键值
}
}
else
key_new = 1;
}
4、核心算法程序
/主函数***/
void main()
{
P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1
init_time0(); //初始化定时器
init_1602(); //lcd1602初始化
init_1602_dis_csf(); //lcd1602初始化显示

temperature = read_temp();	//先读出温度的值
delay_1ms(650);

Uart_init();

while(1)
{if(temperature>ah*10){led1=0;}else{led1=1; }if(temperature<al*10){led2=0;}else{led2=1; }if((temperature>ah*10)||(temperature<al*10)){beep=0;}else{beep=1; }mcu_pc('W');mcu_pc('e');mcu_pc('e');mcu_pc('d');mcu_pc('u');mcu_pc(':');mcu_pc(' ');mcu_pc(temperature/100+0x30);mcu_pc(temperature%100/10+0x30);mcu_pc('.');mcu_pc(temperature%10+0x30);mcu_pc('C');mcu_pc(0X0D);mcu_pc(0X0A);key();			 //按键程序if(key_can < 10){key_with();	read_time();	}if(flag_200ms == 1){	flag_200ms = 0;if(menu_1 == 0){read_time();		  //读时间EA=0;temperature = read_temp();	//先读出温度的值EA=1;init_1602_ds1302();   //显示时钟}}delay_1ms(1);
}

}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

http://www.lryc.cn/news/155965.html

相关文章:

  • ElementUI浅尝辄止19:Badge 标记
  • nginx两台负载均衡服务器之间使用keepalived实现高可用
  • 如何将Express项目部署到Vercel
  • Java作业3
  • ARM编程模型-寄存器组
  • C++ string
  • 百亿级访问量,如何做缓存架构设计
  • (数字图像处理MATLAB+Python)第十一章图像描述与分析-第三、四节:几何表述和形状描述
  • 20230901工作心得:IDEA列操作lambda表达式加强版用法
  • macOS Sonoma 14beta 7(23A5337a)更新发布,附黑/白苹果系统镜像
  • QT基础教程之九Qt文件系统
  • OpenCV(十八):图像直方图
  • mac pro 查看隐藏文件夹
  • 软件测试/测试开发丨Selenium 高级定位 Xpath
  • 各类注意力机制Attention——可变形注意力
  • 桥接模式:连接抽象与实现
  • 同步推送?苹果计划本月推出 iOS17和iPadOS17,你的手机支持吗?
  • 方案展示 | RK3588开发板Linux双摄同显方案
  • 数据库-多表设计
  • 一个简单的文件系统(MinixFS)实现解析
  • 地图投影-2亚当斯方形
  • atcoder库中类欧(类欧几里得算法)floor_sum用法
  • 后端面试话术集锦第 十一 篇:mybatis面试话术
  • SpringBoot运维实用篇、打包、运行、高级配置、多环境开发、日志
  • springdoc-openapi-ui 整合 knife,多模块分组,脚手架
  • 04-MySQL02
  • 实现跨境电商测评和采退、LU卡、LU货最安全的系统方案
  • 软件生命周期及流程
  • nginx使用详解
  • YOLOV7 添加 CBAM 注意力机制