基于STC15单片机-LM35-DS8B20温度测量-DS1302计时-proteus仿真-源程序

一、系统方案
本设计采用STC15单片机作为主控器。
DS18B20采集温度值送到液晶1602显示。
DS1302计时,日期送到液晶1602显示。
LM35采集另一路温度值送到数码管显示。
在这里插入图片描述

二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化

/IO初始化为准双向/
void IO_Init()
{
P0M0 = 0x00;P0M1 = 0x00;
P1M0 = 0x00;P1M1 = 0x00;
P2M0 = 0x00;P2M1 = 0x00;
P3M0 = 0x00;P3M1 = 0x00;
P4M0 = 0xFF;P4M1 = 0x00;
P5M0 = 0x00;P5M1 = 0x00;
P6M0 = 0x00;P6M1 = 0x00;
P7M0 = 0x00;P7M1 = 0x00;
P0 = 0x00;P1 = 0x00;P2 = 0x00;P3 = 0x00;
P4 = 0x00;P5 = 0x00;P6 = 0x00;P7 = 0x00;
}

2、液晶显示程序

//==写指令函数=
void LCD_write_command(uchar command)
{
LCD_DB=command;
LCD_RS=0;//指令
LCD_RW=0;//写入
LCD_E=1;
LCD_E=0;
delay_ms(2);//等待执行完毕 。。。
}
//=写数据函数=
void LCD_write_data(uchar dat)
{ LCD_DB=dat;
LCD_RS=1;//数据寄存器
LCD_RW=0;//写入数据
LCD_E=1;
LCD_E=0;
delay_ms(2);//等待程序执行完毕 。。。
}
//=初始化函数
=
void LCD_init(void)
{
LCD_write_command(0x38);//设置8位格式,2行,57
LCD_write_command(0x38);//设置8位格式,2行,5
7
LCD_write_command(0x0c);//整体显示,关光标,不闪烁
LCD_write_command(0x06);//设定输入方式,增量不移位
LCD_write_command(0x01);//清屏显示
LCD_write_command(0x80);
delay_ms(2);
}
3、DS1302检测程序
/*******************************************************************************

  • 函 数 名 : Ds1302Write
  • 函数功能 : 向DS1302命令(地址+数据)
  • 输 入 : addr,dat
  • 输 出 : 无
    *******************************************************************************/

void Ds1302Write(uchar addr, uchar dat)
{
uchar n;
RST = 0;
nop();

SCLK = 0;//先将SCLK置低电平。
_nop_();
RST = 1; //然后将RST(CE)置高电平。
_nop_();for (n=0; n<8; n++)//开始传送八位地址命令
{DSIO = addr & 0x01;//数据从低位开始传送addr >>= 1;SCLK = 1;//数据在上升沿时,DS1302读取数据_nop_();SCLK = 0;_nop_();
}
for (n=0; n<8; n++)//写入8位数据
{DSIO = dat & 0x01;dat >>= 1;SCLK = 1;//数据在上升沿时,DS1302读取数据_nop_();SCLK = 0;_nop_();	
}	RST = 0;//传送数据结束
_nop_();

}

/*******************************************************************************

  • 函 数 名 : Ds1302Read
  • 函数功能 : 读取一个地址的数据
  • 输 入 : addr
  • 输 出 : dat
    *******************************************************************************/

uchar Ds1302Read(uchar addr)
{
uchar n,dat,dat1;
RST = 0;
nop();

SCLK = 0;//先将SCLK置低电平。
_nop_();
RST = 1;//然后将RST(CE)置高电平。
_nop_();for(n=0; n<8; n++)//开始传送八位地址命令
{DSIO = addr & 0x01;//数据从低位开始传送addr >>= 1;SCLK = 1;//数据在上升沿时,DS1302读取数据_nop_();SCLK = 0;//DS1302下降沿时,放置数据_nop_();
}
_nop_();
for(n=0; n<8; n++)//读取8位数据
{dat1 = DSIO;//从最低位开始接收dat = (dat>>1) | (dat1<<7);SCLK = 1;_nop_();SCLK = 0;//DS1302下降沿时,放置数据_nop_();
}RST = 0;_nop_();	//以下为DS1302复位的稳定时间,必须的。	
SCLK = 1;_nop_();	
DSIO = 0;_nop_();
DSIO = 1;_nop_();return dat;	

}

/*******************************************************************************

  • 函 数 名 : Ds1302Init
  • 函数功能 : 初始化DS1302.
  • 输 入 : 无
  • 输 出 : 无
    *******************************************************************************/

void Ds1302Init()
{
uchar n;
Ds1302Write(0x8E,0X00); //禁止写保护,就是关闭写保护功能
for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
{
Ds1302Write(WRITE_RTC_ADDR[n],time[n]);
}
Ds1302Write(0x8E,0x80); //打开写保护功能
}

/*******************************************************************************

  • 函 数 名 : Ds1302ReadTime
  • 函数功能 : 读取时钟信息
  • 输 入 : 无
  • 输 出 : 无
    *******************************************************************************/

void Ds1302ReadTime()
{
uchar n;
for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
{
time[n] = Ds1302Read(READ_RTC_ADDR[n]);
}

}

4、核心算法程序

/温度转换显示函数/
void Disp_Temperature(uint temp) //显示温度
{
uchar WenduData[8]; //实时温度
float tp=0.0;
tp=temp;
temp=tp0.0625100+0.5;
sprintf(WenduData,“%d.%d”,temp/100,temp%100);
gotoxy(0,2);
LCD_display(WenduData);
LCD_write_data(0xdf);LCD_write_data(‘C’);//LCD显示温度数据
}
四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/101636.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 6 章 递归(3)(八皇后问题)

6.7递归-八皇后问题(回溯算法) 6.7.1八皇后问题介绍 八皇后问题&#xff0c;是一个古老而著名的问题&#xff0c;是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出&#xff1a;在88格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c…

升级还是不升级?iPhone 15和iPhone 14 Plus性能比较

预览iPhone 15 Pro Max与三星Galaxy S23 Ultra之战是有正当理由的。显然,三星的旗舰智能手机为2023年的所有其他旗舰产品定下了基调——由于其超长的电池寿命和一流的摄像头,证明了它是最受欢迎的产品。 毫不奇怪,Galaxy S23 Ultra不仅是最好的照相手机之一,也是花钱能买到…

LlamaGPT -基于Llama 2的自托管类chatgpt聊天机器人

LlamaGPT一个自托管、离线、类似 ChatGPT 的聊天机器人&#xff0c;由 Llama 2 提供支持。100% 私密&#xff0c;不会有任何数据离开你的设备。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、如何安装LlamaGPT LlamaGPT可以安装在任何x86或arm64系统上。 首先确保…

商城-学习整理-高级-消息队列(十七)

目录 一、RabbitMQ简介(消息中间件)1、RabbitMQ简介&#xff1a;2、核心概念1、Message2、Publisher3、Exchange4、Queue5、Binding6、Connection7、Channel8、Consumer9、Virtual Host10、Broker 二、一些概念1、异步处理2、应用解耦3、流量控制5、概述 三、Docker安装RabbitM…

Stable Diffusion 系列教程 | 打破模型壁垒

目录 1.模型基本分类 1.1 CheckPoint 大模型/底模型/主模型 1.2 VAE美化模型/变分自编码器 1.3 HyperNetwork 超网络 1.4 embeddings&#xff08;/Textual Inversion&#xff09; 嵌入式向量 1.5 loRa 低秩适应模型 2. 下载途径和渠道 2.1 C站 2.1.1 如何筛选到自己需…

【面试高频题】难度 3/5,字典树热门运用题

题目描述 这是 LeetCode 上的 「745. 前缀和后缀搜索」 &#xff0c;难度为 「困难」。 Tag : 「字典树」 设计一个包含一些单词的特殊词典&#xff0c;并能够通过前缀和后缀来检索单词。 实现 WordFilter 类&#xff1a; WordFilter(string[] words) 使用词典中的单词 words 初…

AutoDev 1.1.3 登场,个性化 AI 辅助:私有化大模型、自主设计 prompt、定义独特规则...

在过去的半个月里&#xff0c;我们为开源辅助编程工具 AutoDev 添加了更强大的自定义能力&#xff0c;现在你可以&#xff1a; 使用自己部署的开源大模型自己配置 Intellij IDEA 中的行为自定义开发过程中的规范 当然了&#xff0c;如果您自身拥有开发能力的话&#xff0c;建议…

StreamingWarehouse的一些思考和未来趋势

300万字&#xff01;全网最全大数据学习面试社区等你来&#xff01; 一篇笔记。 以Hudi、Iceberg、Paimon这几个框架为例&#xff0c;它们支持高效的数据流/批读写、数据回溯以及数据更新。具备一些传统的实时和离线数仓不具备的特性&#xff0c;主要有几个方面&#xff1a; 这…

docker 部署服务

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 [rootbogon ~]# docker pull mysql:5.6 [rootbogon ~]# docker pull owncloud [rootbogon ~]# docker run -itd --name mysql --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 [rootbogon ~]# docker run -itd -…

一文速学-LightGBM模型算法原理以及实现+Python项目实战

LighGBM 前言 LighGBM作为GBDT算法的衍生模型&#xff0c;在其他论文研究以及数学建模比赛中十分常见。如果不熟悉GBDT算法的可以去看看我的上一篇文章&#xff0c;过多关于GBDT的细节不再过多描述。主要将讲述一下LighGBM较于GBDT算法的改进以及独特算法细节优化&#xff0c…

批量爬虫采集完成任务

批量爬虫采集是现代数据获取的重要手段&#xff0c;然而如何高效完成这项任务却是让许多程序员头疼的问题。本文将分享一些实际操作价值高的方法&#xff0c;帮助你提高批量爬虫采集的效率和专业度。 目标明确&#xff0c;任务合理划分&#xff1a; 在开始批量爬虫采集前&…

Python爬虫(十四)_BeautifulSoup4 解析器

CSS选择器&#xff1a;BeautifulSoup4 和lxml一样&#xff0c;Beautiful Soup也是一个HTML/XML的解析器&#xff0c;主要的功能也是如何解析和提取HTML/XML数据。 lxml只会局部遍历&#xff0c;而Beautiful Soup是基于HTML DOM的&#xff0c;会载入整个文档&#xff0c;解析整…

详细介绍如何基于ESP32实现气象站数据显示--附源码

功能介绍&#xff1a; 驱动ili9341 从京东获取天气数据 开始使用 拿到钥匙 1.从京东注册账号 2.从网站获取密钥 安装ESP32 SDK ESP-IDF Programming Guide - ESP32 - — ESP-IDF Programming Guide latest documentation 笔记&#xff1a; 该项目兼容 ESP-IDF 3.X 分支和 4…

【Linux驱动】NVIDIA Jetson Orin NX有时开机启动慢(5~10分钟)

1、问题描述 新到手的 Orin NX 有时开机启动慢,多次测试,总结出规律:在连接网线的情况,启动很慢(5~10分钟);不连接网线的情况下是正常启动速度。 2、原因分析 在连接网线的情况下启动,卡在如下界面很长时间: 可见打印信息: Start HTTP Boot over IPv6. Error: Co…

『论文精读』FastViT(ICCV 2023,Apple开源)论文解读

『论文精读』FastViT(ICCV 2023&#xff0c;Apple开源)论文解读 文章目录 一. FastViT简介二. 模型架构2.1. Stage 的内部架构2.2. Stem 的结构2.3. Patch Embedding 的架构2.4. 位置编码 三. 参考文献 论文下载链接&#xff1a;https://arxiv.org/pdf/2303.14189.pdf论文代码…

BLFS学习系列 第25章. 图形环境库 —— libdrm

一、简介 libdrm提供了一个用户空间库&#xff0c;用于在支持ioctl接口的操作系统上访问直接渲染管理器&#xff08;DRM&#xff09;。libdrm是一个低级别库&#xff0c;通常由图形驱动&#xff08;程序&#xff09;使用&#xff0c;如Mesa DRI驱动&#xff08;程序&#xff0…

基于java+swing俄罗斯方块

基于javaswing俄罗斯方块 一、系统介绍二、功能展示三、其他系统实现五、获取源码 一、系统介绍 项目类型&#xff1a;Java SE项目&#xff08;awtswing&#xff09;非开源 项目名称&#xff1a;俄罗斯方块&#xff08;Tertis) 主要技术&#xff1a;java、awt、swing等技术 …

【玩转Linux操作】crond的基本操作

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;概述&#x1f354;命令⭐常用选项 &#x1f354;练…

图解算法--排序算法

目录 1.冒泡排序算法 2.选择排序算法 3.插入排序算法 4.希尔排序算法 5.归并排序算法 6.快速排序算法 1.冒泡排序算法 原理讲解&#xff1a; 从待排序的数组中的第一个元素开始&#xff0c;依次比较当前元素和它相邻的下一个元素的大小。如果当前元素大于相邻元素&#x…

剪枝基础与实战(1): 概述

本文介绍基于L1正则化的剪枝原理,并以VGG网络进行实战说明。将从零详细介绍模型训练、稀疏化、剪枝、finetune的全过程,提供详细的源码及说明,有助于对剪枝的熟练掌握,后续也会对yolov8进行剪枝的介绍。 论文: Learning Efficient Convolutional Networks through Network …