智能温控风扇设计(采用74ls164移位寄存器)

2023-10-29

温度传感器DS18B20采集环境模拟信号,其输出送入AT89C51,单片机在程序的控制下,将处理过的数据送到移位寄存器74LS164,经74LS164输出后驱动三位数码管显示。当被测温度高于18℃时,单片机发出控制信号使降温电扇以自然风的形式旋转,温度越高转速越快,温度36℃以上时风扇全速工作,点亮此功能指示灯。

基本要求

(1)设计测量温度范围-55℃+125℃的智能测温系统,要求数码管实时显示测量温度,单片机根据温度高低确定风扇转速 

(2)画出程序框图 

(3)整机电路图(proteus绘制)

系统组成

智能温度测量系统主要由数字温度计、单片机控制电路、数字式温度显示电路、风扇降温电路、键盘电路、串口通信电路等六部分组成。系统原理框图如下:

cc7179e45ad843e98df5ea47170c5ba1.jpg

设计思路

智能温度测量系统的设计思路:用数字温度传感器DS18B20采集环境模拟信号,并在其内部进行A/D转换,将转换后的数字信号送AT89C51单片机,AT89C51单片机在程序的控制下,将处理过的数据送到八位串入/并出移位寄存器74LS164,经74LS164输出后驱动三位数码管显示出环境温度。当被测温度高于18℃时,单片机P2.3脚发出信号使降温电扇以自然风的形式旋转,温度越高转速越快,温度36℃以上时风扇全速工作,点亮此功能指示灯。

电路组成及工作原理

温度传感器功能模块

美国DALLAS公司生产的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。DS1820可把温度信号直接转换成串行数字信号供单片机处理,测量结果以9~12位数字量方式串行传送。从DS1820读出的信息或写入DS1820的信息,仅需要一根传输线(单总线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的DS1820供电,而无需额外电源。DS1820提供九位温度读数,构成多点温度检测系统而无需任何外围硬件。

723620512b8d41b485dcb816d9c0951c.jpg

DS18B20控制方法:在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。

AT89C51单片机

AT89C51是一种4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。

2.管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

P1口: P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

    P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。

    P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

  XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

8e16f7359533439ea9de261f1566db04.jpg

74LS164移位寄存器

在单片机系统中, 如果并行口的IO资源不够,而串行口又没有其他的作用, 那么我们可以用74LS164来扩展并行IO口,节约单片机资源。74LS164是一个串行输入并行输出的移位寄存器。并带有清除端。 

其中; Q0—Q7 并行输出端 。 A,B串行输入端。 MR 清除端, 为0时,输出清零。 CP 时钟输入端。 

74LS164 引脚定义

74LS164逻辑表

a7f6fa9af6704a09a4d23803daf91801.jpg

晶振电路

AT89C51单片机芯片内部设有一个反向放大器所构成的振荡器,X1和X2分别为振荡电路的输入端和输出端,时钟信号由外部或内部产生,在X1和X2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体和电容组成的并联谐振回路。晶体振荡频率为12MHz,C1、C2的值为33pF电容的大小可起频率微调的作用。

b6e8bf0605764877afd2510cdf4acd3d.jpg

复位电路

单片机具有多种复位电路,本系统采用电平式开关复位与上电复位方式,具体电路如图8所示。当上电时,C3相当于短路,给RST端输入大于24个振荡周期以上的高电平脉冲,使单片机复位,在正常工作时,按下开关使单片机复位。

8634e01942ed4724890cbcb702c47bdf.jpg

显示电路

6b45f6ab198e48d5929b1c36fa2545df.jpg

部分代码:

/***********************数码显示函数*****************************/

void display(void)

{

static uchar i;   

 unsigned char j=0;

 i++;

 if(i >= smg_i)

  i = 0; 

 P0 = 0x00; //消隐

 j=P2&0x0f;

 P2 = smg_we[i]|j; //位选

 P0 = Display_Data[i]; //段选         

}

 风扇控制电路

ccfaab3f4fd64495a64f20cb2920c1e8.jpg

 部分代码:

/****************风扇控制函数***************/

void fengshan_kz(void)

{

 if((Temperature <= t_low)||(tflag==1)) //关闭风扇

 {

  TR1 = 0;

  pwm = 1;

 }   

 else if((Temperature > t_low)&&(Temperature < (t_low+20)))

 { 

  f_pwm_l = 80;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+20))&&(Temperature < (t_low+40)))

 { 

  f_pwm_l = 70;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+40))&&(Temperature < (t_low+60)))

 { 

  f_pwm_l = 60;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+60))&&(Temperature < (t_low+80)))

 { 

  f_pwm_l = 50;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+80))&&(Temperature < (t_low+120)))

 { 

  f_pwm_l = 40;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+120))&&(Temperature < (t_low+140)))

 { 

  f_pwm_l = 30;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+140))&&(Temperature < (t_low+160)))

 { 

  f_pwm_l = 20;  

  TR1 = 1;

 }

 else if((Temperature >= (t_low+16))&&(Temperature <t_high))

 { 

  f_pwm_l = 10;  

  TR1 = 1;

 }

 else if(Temperature >= t_high) //风扇全开

 { 

  TR1 = 0;

  pwm = 0;

 }  

}

void Dis_one(unsigned char display_data)

{

 unsigned char i, j;

 j=display_data;

 for(i=0;i<8;i++)

 {

  if((j&0x80)!=0) DAT164=1;

      else DAT164=0;

      CLK164=0;

      j=j<<1;

      CLK164=1;

   }

 CLK164=0;

}

主函数程序:

void main(void)

{

 time_init(); //初始化定时器 

 Temperature = read_temp(); //先读出温度的值  

 delay_ms(1000);    

 Temperature = read_temp(); //先读出温度的值

 Display_Temp();

 f_pwm_l = 50;

 while(1)

 { 

  delay_ms(500);  

  Temperature = read_temp(); //先读出温度的值

  if(Temperature!=oldt)

  {

   oldt=Temperature;

   if(Temperature>=t_high) LED=0;

   else LED=1;

   Display_Temp();

  }

  fengshan_kz(); //风扇控制函数

 }

}

我把protues仿真和源程序代码放在下面链接里,

感兴趣的同学,可以尝试在电脑上运行

百度网盘链接:https://pan.baidu.com/s/1cVeLZB7MB0wUksct_1WAYQ?pwd=f3c2 

提取码:f3c2

复制这段内容打开「百度网盘APP 即可获取」

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能温控风扇设计(采用74ls164移位寄存器) 的相关文章

  • [1024]python sqlalchemy中create_engine用法

    用法 engine create engine dialect driver username password host port database dialect 数据库类型 driver 数据库驱动选择 username 数据库用户名
  • 论文笔记-深度估计(7)-CNN-SLAM Real-time dense monocular SLAM with learned depth prediction

    CVPR2017 CNN SLAM Real time dense monocular SLAM with learned depth prediction 关键词 基于CNN的单张图深度估计 语义SLAM 半稠密的直接法SLAM 作者提出
  • Unity 3D游戏十一:坦克大战

    前言 中山大学数据科学与计算机学院3D游戏课程学习记录博客 游戏代码 gitee 参考师兄的博客 师兄博客 游戏视频 bilibili 游戏要求 从商店下载游戏 Kawaii Tank 或 其他坦克模型 构建 AI 对战坦克 具体要求如下
  • vue替换url中的#为指定字符串

    url符号 处理 替换 号为asqm function replaceUrlJINtoAAB console log 123366 测试全局方法 添加时间 2022 7 21 15 05 43 url符号 处理 替换 号为asqm cons
  • HTML 快速入门

    目录 概念 快速入门 语法 基本标签 1 文件标签 2 文本标签 3 图片标签 4 列表标签 5 链接标签 6 div和span 7 语义化标签 8 表格标签 案例 旅游网站首页 表单标签 form标签 表单项标签 1 input 2 se
  • RocketMQ(一)—— 基本使用

    目录 1 RocketMQ基本使用 1 启动 2 测试 3 关闭 2 集群简介 特点 集群模式 工作流程 3 双主双从集群搭建 关闭防火墙 环境变量配置 创建消息存储路径 broker配置文件 启动 集群监控平台搭建 4 消息发送 1 基本

随机推荐

  • centos7安装mysql8.0.17初始化错误

    2019 08 22T13 21 17 518044Z 0 System MY 013169 Server root soft app mysql bin mysqld mysqld 8 0 17 initializing of serve
  • 免费下载正版office(仅限笔记本用户)

    买笔记本的时候 一般都会赠送正版office 但是由于重装系统等等某些原因 office找不到 面对这种情况 不用去网上找免登录的下载方法 详情请看下面方法 一 登录微软官网 注 一定要登录你买电脑时注册微软的账户 一般是qq邮箱 网址如下
  • 如何在前端完美控制浏览器兼容性问题

    分享一些好玩的代码 看看哈 function t n e var a 0 r isVisible function t var n t getBoundingClientRect e n width n right 0 n left 0 a
  • OpenGL 4.0的Tessellation Shader(细分曲面着色器)

    OpenGL 4 0的Tessellation Shader 细分曲面着色器 细分曲面着色器 Tessellation Shader 处于顶点着色器阶段的下一个阶段 我们可以看以下链接的OpenGL渲染流水线的图 https www ope
  • import pandas as pd 报错_chapter5-1 数据处理常见bug报错整理1

    本篇文章中 笔者把之前自己码代码的过程中出现的一些已解决的常见bug和解决方法进行了整理 还在不断更新中 主要内容有 一 与读取CSV文件有关的报错 1 1 utf 8 codec can t decode 1 2 pandas read
  • C语言中缀表达式求值(综合)

    题前需要了解的 中缀 后缀表达式是什么 不知道你们知不知道 反正我当时不知道 搜的百度 基本思路 先把输入的中缀表达式 后缀表达式 进行计算得出结果 栈 先进先出 先进后出 中缀转后缀 先把转换后的后缀表达式存入字符数组 从左至右依次读取
  • Mac 成功安装启动mysql,workbench连接不了

    首先启动并且成功登陆mysql 查看mysql占用端口号 执行命令 open Library LaunchDaemons com oracle oss mysql mysqld plist 我现在显示的是正常的端口号 如果你们显示的valu
  • 搭建部署svn服务器

    环境说明 环境 linux centos7 关闭防火墙和selinux systemctl stop firewalld setenforce 0 Ip 192 168 244 134 Svn服务器的搭建 安装svn yum install
  • 使用injectso 技术注入mtrace,对进程进行内存检测

    使用injectso 技术注入mtrace 对进程进行内存检测 来源 ChinaUnix博客 日期 2007 04 13 17 28 共有条评论 我要评论 在开发过程中 我们可以在程序中调用mtrace函数 来对内存管理进行跟踪 可如果已经
  • 华为一二三面

    目录 机试 关于机考简介 第一次机考之前HR小哥哥发给我的 好像没啥用 但还是放这儿吧 我的机试 2021年9月 一面 10 25 二面 10 26 三面 10 29 机试 关于机考简介 第一次机考之前HR小哥哥发给我的 好像没啥用 但还是
  • 【PyCharm】设置(风格

    设置方法见 分享一款好看的PyCharm风格 转 K Code 博客园
  • Invalid operation: Lob is closed. ERRORCODE=-4470, SQLSTATE=null

    使用db2的过程中出现这个错误 搜索有如下两种解决办法 这里尝试只有一种有效 记录如下 方法1 设置JDBC驱动的progressiveStreaming属性值为2 jdbc db2 localhost 50000 SAMPLE progr
  • Strtus2历史漏洞复现

    Strtus简介 Apache Struts是美国阿帕奇 Apache 软件基金会负责维护的一个开源项目 是一套用于创建企业级Java Web 应用的开源MVC框架 主要提供两个版本框架产品 Struts 1和Struts2 Struts2
  • 软件测试内容

    软件测试涉及以主要方面 需求收集 没有明确的要求 项目就无法起飞 这是最关键的阶段 需要将想法写成格式正确且易于理解的文档 以下生命周期代表了收集需求的关键步骤 收集 记录 分析 论证 验证 追踪 确认 如果错过了任何信息 以下是在此阶段应
  • python版本号比对_比较Python中的版本号

    假设我们必须比较两个版本号version1和version2 如果version1 gt version2 则返回1 否则 返回1 否则 当version1 我们可以假定版本号的每个级别的默认修订号为0 例如 版本号3 4的第一级和第二级修
  • Java从入门到实战总结-4.3、数据库进阶-事务

    Java从入门到实战总结 4 3 数据库进阶 事务 文章目录 Java从入门到实战总结 4 3 数据库进阶 事务 1 事务的语法 2 事务的ACID特性 3 事务的并发问题 4 事务隔离级别 5 不同的隔离级别的锁的情况 了解 6 隐式提交
  • 华为OD机试 - 字符串解密(Java)

    题目描述 给定两个字符串string1和string2 string1是一个被加扰的字符串 string1由小写英文字母 a z 和数字字符 0 9 组成 而加扰字符串由 0 9 a f 组成 string1里面可能包含0个或多个加扰子串
  • 云计算在IT领域的发展和应用

    文章目录 云计算的发展历程 云计算的核心概念 云计算在IT领域的应用 1 基础设施即服务 IaaS 2 平台即服务 PaaS 3 软件即服务 SaaS 云计算的拓展应用 结论 欢迎来到AIGC人工智能专栏 云计算在IT领域的发展和应用 o
  • ARMv8的两种执行状态: AArch64/AArch32

    Copied from ARM Compiler User Guide When compiling code you must first decide which target the executable is to run on A
  • 智能温控风扇设计(采用74ls164移位寄存器)

    温度传感器DS18B20采集环境模拟信号 其输出送入AT89C51 单片机在程序的控制下 将处理过的数据送到移位寄存器74LS164 经74LS164输出后驱动三位数码管显示 当被测温度高于18 时 单片机发出控制信号使降温电扇以自然风的形