【STC89C51智能温控风扇的硬件和软件设计案例6600字】_第1页
【STC89C51智能温控风扇的硬件和软件设计案例6600字】_第2页
【STC89C51智能温控风扇的硬件和软件设计案例6600字】_第3页
【STC89C51智能温控风扇的硬件和软件设计案例6600字】_第4页
【STC89C51智能温控风扇的硬件和软件设计案例6600字】_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STC89C51智能温控风扇的硬件和软件设计案例目录TOC\o"1-3"\h\u5671STC89C51智能温控风扇的硬件和软件设计案例 [25]。图3-11按键控制电路原理图1.7.1按键消抖按钮持续抖动∶其按钮颤动的持续时间主要原因是由于一个按钮的各种特殊机械、运动性质及其来源所决定的,一般正常情况下它们之间都会出现持续抖动到10ms以内,为了保证能够有效确保一个应用程序检测到一个按钮的一次完全闭合或者一次完全断开并响应一次,必须通过延长时间对该按钮进行消抖,等待闭合或断开稳定后再进行处理。图3-12按键抖动状态图按钮持续抖动∶其按钮颤动的持续时间主要原因是由于一个按钮的各种特殊机械、运动性质及其来源所决定的,一般正常情况下它们之间都会出现持续抖动到10ms以内,为了保证能够有效确保一个应用程序检测到一个按钮的一次完全闭合或者一次完全断开并响应一次,必须通过延长时间对该按钮进行消抖,等待闭合或断开稳定后再进行处理。本设计采用的是软件消抖,最简单的消抖原理,就是让这个抖动完全停止消失后再对其按键进行一次这个按键的内部状态抖动检查,如果和刚才被抖动检查时所得到的按键状态检查是一样,就已经完全可以准确判断和看出这个按键内部是否已经稳定动作。2.单片机智能温控系统软件的设计按钮持续抖动∶其按钮颤动的持续时间主要原因是由于一个按钮的各种特殊机械、运动性质及其来源所决定的,一般正常情况下它们之间都会出现持续抖动到10ms以内,为了保证能够有效确保一个应用程序检测到一个按钮的一次完全闭合或者一次完全断开并响应一次,必须通过延长时间对该按钮进行消抖,等待闭合或断开稳定后再进行处理。本设计采用的是软件消抖,最简单的消抖原理,就是让这个抖动完全停止消失后再对其按键进行一次这个按键的内部状态抖动检查,如果和刚才被抖动检查时所得到的按键状态检查是一样,就已经完全可以准确判断和看出这个按键内部是否已经稳定动作。2.1温控风扇程序设计总体思路智能温控风扇是使用定时器用做风扇的PWM调节实现功能,按键1用来调节手动模式下的加档位和自动模式下的温度加;按键2用来调节手动模式下的减档位和自动模式下的温度减;按键3用来切换手动挡位、自动档位、温度上限调整、温度下限调整。在系统启动电源通电后,对程序以及DS18B20初始化,写入、读取、温度转换等。2.2DS18B20系统初始化程序按照系统初始化时序图的要求表明,初始化的时序流程和操作步骤为:单片机将P2^4口置0持续750μs,这段时间的总线置0会产生一个复位脉冲,然后将总线置1持续时间约15至60us区间内,同时单片机开始收取信号。当总线置1后,DS18B20的系统接收到复位脉冲后,DS18B20等待15到60us,自动发出一个持续60-240us称为应答复位的脉冲来说明目前处于准备工作状态,以此来通知上位机做一些准备性的操作。当单片机收到的初始化信息并延时20us,最后把总线拉高。系统初始化与存在时序结束。图4-1DS18B20初始化时序图voidinit_18b20()//无返回值的初始化函数参数为空{ bitq;//定义q dq=1; //把总线拉高 delay_uint(1); dq=0; //给复位脉冲,拉低总线 delay_uint(80); dq=1; //把总线拉高,等待 delay_uint(10); q=dq; //读取18b20回复初始化信号 delay_uint(20); dq=1; //把总线拉高,释放总线}2.3DS18B20写入程序在单个总线上每个时隙只能够传送一位的数据,写入的时隙分为两种:分别是写0的写时隙和写1的写时隙。在总线处于高电平的情况下,把总线拉低这时候就开始写时隙了,这时候DS18B20有15至60us的数据采集时间且两个写时隙的间隔需留存1us的恢复时间。DS18B20在数据采集期间检测到为高电平,表明单片机向DS18B20写入1,在数据采集期间如果检测到为低电平,表明单片机向DS18B20写入0。图4-2DS18B20写入时序图在18B20持续拉低一条总线后,上位机继续拉低一条总线,就会输出一个书写0的时隙,待书写的时隙全部完成后将总线置1,置1的时间保持60-120us区间内。在连续置0一条总线后,单片机必须在15us内完成对DS18B20的写1与总线置1的过程。写时隙产生后,DS18B20在15至60us的进行总线的数据采集,以此来确定写0还是写1。voidwrite_18b20(uchardat){ uchar;//返回值为无符号字符型 for(i=0;i<8;i++)//i赋一个初值0,当i小于8时,执行for里的语句并且i自加,当不满足i<8时,结束for语句 { //写数据从最低位开始 dq=0; //把总线拉低,读时间隙开始 dq=dat&0x01;//向18b20写数据,以二进制方式保留最低位,其余位取0,保存到变量dq中 delay_uint(5); dq=1; //释放总线 dat>>=1;//表示dat向右移一位 } }2.4DS18B20读取程序单片机在总线为高电平的情况下先把总线置0持续1us再把总线置1后读时隙开始,单片机向DS18B20发出读命令后,DS18B20向总线输出数据。每个读时隙都应该保持60us以上的时间且两个读时隙之间需预留1us的恢复时间。图4-3详细的单片机读1时序图图4-4推荐的单片机读1时序图在读时隙开始后,DS18B20通过高总线保持高电平的手段向总线输送1数据,通过低总线保持低电平的手段向总线输送0数据。当向总线输送0数据的末期,DS18B20让总线保持高电平。向总线输出的数据在读时隙开始后15us内有效,因而单片机释放总线和读总线数据等动作需在15μs内完成。2.5温度转换程序DS18B20将转换的温度数据存放在储存形态是暂存的寄存器的第零和第一个字节当中,当需要获取温度数据时只需要发出读这两个字节的命令。读取温度值发送读取温度命令系统初始化跳过ROM操作读取温度值发送读取温度命令系统初始化跳过ROM操作图4-5读取温度值步骤流程图uintread_temp(){ uintvalue; ucharlow; init_18b20(); //初始化 EA=0;//关闭全部中断,否则影响时序 write_18b20(0xcc);//跳过64位ROM write_18b20(0x44);//温度转换命令 EA=1;//打开全部中断 delay_uint(50); init_18b20(); EA=0; write_18b20(0xcc); write_18b20(0xbe); //发送读取暂存器命令 low=read_18b20(); //读温度低字节 value=read_18b20();//读温度高字节 EA=1; value<<=8; //温度高位左移8位 value|=low; //高低两个字节合成一个整形变量 value*=0.625; //默认12的精度,转换温度值 retur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论