收藏 分销(赏)

智能风扇的设计培训资料.doc

上传人:精*** 文档编号:3855717 上传时间:2024-07-22 格式:DOC 页数:31 大小:724KB
下载 相关 举报
智能风扇的设计培训资料.doc_第1页
第1页 / 共31页
智能风扇的设计培训资料.doc_第2页
第2页 / 共31页
智能风扇的设计培训资料.doc_第3页
第3页 / 共31页
智能风扇的设计培训资料.doc_第4页
第4页 / 共31页
智能风扇的设计培训资料.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、智能风扇的设计精品资料智能风扇的设计摘 要随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中生活中扮演着一个越来越重要的角色,它对人们的生活有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。 近年来,电风扇增设了各种新功能,既彰显了个性,也在无形中提高了档次。电风扇的自动控制,能够解决夏天人们晚上熟睡,由于夜里温度低导致受凉,或者从睡梦醒来亲自开关电风扇的问题,具有重要的现实意义,本文中智能风扇的设计以AT89C51单片机为核心,巧妙利用温度传感器,及时准确的采集环境温度,利用双向晶闸管进行无极调速,把智能控制技术用于家用电器的控制中,能够根据周围环境的温

2、度对风速进行实时调整。 关键词: AT89C51单片机,温度传感器DS18B20,七段晶体数码管目 录1 绪论12 芯片介绍12.1 AT89C51单片机介绍12.2 温度传感器DS18B20介绍42.3 DS18B20的温度处理方法53 硬件电路及系统原理分析63.1 系统总体设计63.2 功能描述63.3单片机最小系统电路83.4 键盘控制电路83.5数码管显示电路93.6 电机调速电路103.6.1 电机调速原理103.6.2 电机控制模块设计113.7 报警电路124 控制器软件设计124.1 主程序124.2 温度传感器面模块134.3 电机调速与控制子程序145仿真结果15结 论1

3、7致 谢18参考文献19附录20仅供学习与交流,如有侵权请联系网站删除 谢谢281 绪论随着空调在日常生活中的普遍应用,很容易想到电风扇会为空调的社会淘汰品,其实经过市场的考验和证实,事实并非如此。虽然空调产品仍然具有很强大的生命力,但是电风扇在市场的验证下也显示着它的市场优势,并且其销售在不停的复苏具有很大的发展空间。据市场调查,电风扇的不停复苏主要在于以下三个方面:一是电风扇虽然没有空调机的强大的制冷功能,而电风扇是直接取风,风力更加温和,比较适合老年人、儿童以及体质虚弱的人使用。二是电风扇经过多年的市场使用,较合适人们的使用习惯,而且结构简单,操作方便,安装简易。三是电风扇比起空调产品而

4、言,其价格低廉,相对省电,更容易进入老百姓的家庭。随着人们生活水平及科技水平的不断提高,现在急用电器在款式、功能等方面日益求精,并朝着健康、安全、多功能、节能等方向发展。过去的电器不断地显露其不足之处,电风扇作为家用电器也是其中一员,同样存在类似的问题。传统的电风扇较为突出的缺点是:一是风扇的风力大小不能根据温度的变化自动的调节风速,对于那些昼夜温差比较大的地区,这个自动调节风速就显得尤其重要了,特别是人们在熟睡时常常没有察觉到夜间的温度变换,那样既浪费时间而且容易引起感冒。二是传统的风扇是机械式的定时方式,机械式的定时方式常常伴随着很大的机械运功的声音。三是传统的电风扇没有远程遥控控制电风扇

5、的功能,对于平时需要调节风速,而又不想走进风扇带来的很多不便。所以设计了这一款。我们都知道,传统电风扇采用机械方式进行控制,功能少、噪音大、各档的风速变化大,况且,档速调换也不方便。而基于AT89C51单片机的智能电风扇调速器的设计,巧妙的利用红外线遥控技术、单片机控制技术、无极调速技术和温度传感技术,把智能控制技术应用于家用电器的控制中,将电风扇的点击转速作为被控制量,由单片机分析采集到的数字温度信号,再通过可控硅对风扇进行调速,从而达到自动调整风速的效果。2 芯片介绍2.1 AT89C51单片机介绍AT89C51个引脚功能介绍如图1所示图1 AT89C51引脚图VCC:AT89C51电源正

6、端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的单项放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上石英振荡器晶体系统就可以工作了,此外可以在两引脚与地之间加入30PF的小电容,可以是系统更稳定,避免噪声干扰儿死机。 RESET:AT89C51的重置引脚,高电平工作,只要对晶片重置时,只要对此引脚电平升之高电平并保持两个机器周期以上的时间,AT89C51便能完成系统重置的各项动作,使得内部特殊功能寄存器之间的内容均被设成已知状态,并且只地址0000H处开始读入程序代码执行程序。 EA/VPP:“EA”表示存取外部程序代码之意,

7、低电平有效,也就是当此引脚低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031级8032中,EA引脚必须接低电平,因为其内部无程序存储空间。如果是使用8751内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚输入。ALE/PROG:ALE表示地址锁存器启用信号。AT89C51可以利用这支引脚来触发外部的8位锁存器(74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89C51是以多工的方式送出地址及数据。所以程序执行时ALE引脚的输出频率约是系统频率的1/6,因此可以用来驱动其他周边晶片的时机输

8、入。此外在烧录8751程序代码时,此引脚会当成程序规划的特殊功能来使用。PSEN:程序存储启用,当8051被设成为读取外部程序代码工作模式是(EA=0),会公出此信号以便取得程序代价,通常这支脚是接到EPROM的OE脚。AT89C51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,是的数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORAT0(P0.0P0.7):端口0是一个8位宽的开路基极双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,因此类推。其他三个I/O端口(P!、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在做I/O用时可以

9、推动8个TTL负载。如果当EA引脚为低电平时,P0就以多工方式提升地址总线(A0A7)及数据总线(D0D7)设计者必须外加锁存器将端口0送出的地址锁存住成为A0A7,再配合端口2所送出的A8A15合成已完整的16位地址总线,而定址到6KB的外部存储器空间。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样的若将端口1的输出设为高电平,变速由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。 PORT2(P2.0p2.7):端

10、口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTl 负载,若将端口2的输入设为高电平时,此端口便能当成输入端口来使用。P2除了做一般I/O端口使用外,若是在AT89C51扩充外接程序存储器或数据存储器时,也提升地址总线的高字节A8A15,这个时候P2变不能当作I/O来使用了。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工作在其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制外部数据内容的读取会写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输入。

11、P3.2:INT0:外部中断0输入。P3.3:INT1,外部中断1输入P3.4:T0,计时计数器0输入P3.5:T1,计时计数器1输入P3.6:WR外部数据存储器的写入信号。P3.6:RD,外部数据存储器的读取信号。2.2 温度传感器DS18B20介绍DS18B20温度传感器是美国达拉斯半导体公司推出的应用单总线技术的数字温度传感器。该期间将半导体温敏器件、A/D转换器、存储区等做在一个很小的继承电路芯片上。本设计温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下放慢的原因:(1)系统的特性:测温范围为-55C+125C,测温精度为士0.5C;温度转换

12、精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出:12位精度转换的最大时间为750MS:可以铜锁数据线供电,具有超低功耗工作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模继承电路功能越来越强大,体积越来越小,而价格越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需要一个I/O端口且一条总线上尅挂接几十个DS18B20,测温时无需任何外部原件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的实施量。(4)系统的调试和维护:由于

13、引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字器件,故障率低,抗干扰强,因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,因此VDD接地,它是通过内部电容在空闲时从数据线获得能量,来完成温度转换,相应的完成温度转换时间较长。这种情况下,用单片机的一个I/O口完成对DS18B20总线的上拉。另一种外部供电方式(VDD接+5V),响应的完成温度测量的时间较短。可以选用LM324A运算放大器作为温度传感器,将其设计成比例控制调节

14、器,输出电压与热敏电阻的阻值成正比,但这种方案需要多次检测后方可使采样精确,过于烦琐。所以我采用更为优秀的DS18B20数字温度传感器,它可以直接将模拟温度信号转化为数字信号,降低了电路的复杂程度,提高了电路的运行质量。2.3 DS18B20的温度处理方法DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单

15、线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源,因而使用DS18B20可使系统结构更趋简单可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。 DS18B20简介:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0 +5.5 V。(4)测温范围:-55 +125 。固有测温分辨率为0.5 。(5)通过编程可实现912位的数字读

16、数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守单总线器件的工作时序。表1 DS18B20温值转换变温度值/数字输出(十六进制)数字输出(二进制)+12507D0H0000 0111 1101 0000+850550H0000 0001 0101 0000+26.6250191H0000 0001 1001 0001+10.12500A2H0000 0000 1010

17、0010+0.50008H0000 0000 0000 100000000H0000 0000 0000 0000-0.5FFF8H1111 1111 1111 1000-10.125FF5EH1111 1111 0110 1110-25.625FF6FH1111 1111 0110 1111-55FC90H1111 1100 1001 00003 硬件电路及系统原理分析3.1 系统总体设计系统总体设计图如图2所示。 图2 系统总体设计结构图本系统是以单片机为核心,由数字温度传感器DS18B20温度、单位选择、电机调速电路和蜂鸣器报警电路组成。通过键盘可以控制系统为几个不同的工作状态,失眠状态

18、、自动挡以及其他几个档位进行工作。3.2 功能描述传统电风扇供电采用的是220V交流电,电机转速分为几个档位,通过人工手动调整电机转速达到改变风速的目的。每改变一次风力,都要有人的参与这样就会带来不便。本设计是以AT89C51单片机为控制中心,主要通过提取温度传感器DS18B20得到的温度以及内部定时器设定时间长短来控制电风扇的开关及转速的变化。电风扇可工作在两种状态:手动调整状态、自动调整状态。手动状态时可以手动调节速度:自动状态时可以通过温度高低自动调节速度:“温度高,转速快,温度低,转速慢”;本设计主要介绍根据温度传感器DS18B20所采用的温度来实现自动调速。P3.2在接通电源之后,C

19、UP处于休眠状态,当用户选择了相应的按键及档位(自动挡,一档,二档,三档)之后,风扇就进入了相应的工作状态。本风扇系统的自动挡是通过数字温度传感器DS18B20测量环境温度,在测量完温度之后,通过LED数码管显示出实时温度,第四位显示的是当前温度的警告信息。处于一档进行工作:E标识温度稍高一点(3035度之间),用二档工作,风扇转速快一点,降温快:F标识温度很高(37度以上),应该让风扇处于最快的转速,以快速的降低温度。还有一位数码管是单独的显示档位的。系统总电路图如图3所示。图3 系统总体原理图3.3单片机最小系统电路在设计的温度控制系统设计中。控制核心是AT89C51 单片,它有32个I/

20、O口,片内含4K FLASH 工艺的程序存储器,便于用电的方式瞬间擦除和改写,外部12MHZ晶振,一个指令周期为1微秒其最小系统主要包括:复位电路、振荡电路以及存储器选择模式(EA脚的高低电平选择)电路图如下图4所示。 图4 单片机最小系统3.4 键盘控制电路单片机系统中完成控制参数输入及附带的基本输入设备,是人工干预的重要手段。按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为链路连接式键盘和矩阵连接式键盘。独立键盘:每个键互相独立,各自与一条I/O线相连,CUP可直接读取I/O线的高/低电平状态。其优点四硬件、软件结构简单,判断速度快,使用方便,多用于设置控制键、功能键。适用于键数

21、少的场合。矩阵键盘:按键矩阵排列,各键处于矩阵行/列的节点处。CUP通过对连在行(列)的I/O 送出已知电平的信号。然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是按键多,占用I/O口线少,一个按键资源利用合理,但判键速度慢,多用于设置数字键,适用于键数多的场合。 鉴于以上独立键盘和矩阵键盘的特点,本系统使用键盘较少,对键盘的速度要求是很高,因此我们选择独立键盘作为本系统的输入部分。如图5所示。图5 键盘控制系统3.5数码管显示电路 动态显示的特点是将所有位数码管的段选线并联在一起,有位选线控制是哪一位数码管有效。位选数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管同都在显

22、示。动态显示的亮度比静态显示要差一点,所以在选择限流电阻应略小于静态显示电路中的。本设计一共用5个数码管显示:即前3个显示温度,第4个显示温度单位,第5个显示档位。通过单片机的P1口控制数码管的段选信号,用P2口的P2.0到P2.4控制数码管的位选。通过DS18B20采集温度信号并作为单片机的输入信号,根据输入信号的不同,通过不同的软件程序产生相应的输入信号来控制数码管的显示。数码管显示电路如图6所示。图6 数码管显示电路3.6 电机调速电路电机调速是整个控制装置中的一个相当重要的方面。通过控制改变双向可控硅的导通角,使输入端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速

23、,实现各挡位风速的无级调速。3.6.1 电机调速原理双向可控硅的导通条件如下:1)阳-阴极间加正向电压;2)控制极-阴极间加正向触发电压;3)阳极电流IA 大于可控硅的最小维持电流IH。电风扇的风速设为从高到低5、4、3、2、1档,各档风速都有一个限定值。在额定电压、额定功率下,以最高转速运转时,要求风叶最大圆周上的线速度不大于2150m/min。且线速度可由下列公式求得 (1)式中,V为扇叶最大圆周上的线速度(m/min),D为扇中的最大顶端扫出圆的直径(mm);n为电风扇的最高转速(r/min)。代入数据求得 1555r/min,取 =1250 r/min,又因为:(2)取n1=875 r

24、/min.则可得出五个档位的转速值: =1250r/min =1150r/min =1063r/min =980r/min =875r/min又由于负载上电压的有效值 (3) 其中,u1为输入交流电压的有效值,为控制角。解得: =0 t=0ms =23.5 t=1.70ms =46.5 t=2.58ms =61.5 t=3.43ms =76.5 t=4.30ms以上计算出的是控制角和触发时间,当检测到过零点时,按照所求得的触发时间延时脉冲,便可实现预期转速3.6.2 电机控制模块设计电路中采用了双向可控硅型光耦合MOC3041、集光电隔离、过零检测、过零触发等功能于一身,避免了输入输出通道同时

25、控制双向可控硅触发的缺陷,简化了输出通道隔离2驱动电路的结构。所设计的可控硅触发电路原理图见图2-3 。其中RL即为电机负载,其工作原理是:单片机响应用户的参数设置,在I/ O 口输出一个高电平,经反向器反向后,送出一个低电平,使光电耦合器导通, 同时触发双向可控硅,使工作电路导通工作。给定时间内,负载得到的功率为: (4)式中:P 为负载得到的功率,n 为给定时间内可控硅导通的正弦波个数: N 为给定时间内交流正弦波的总个数; U 为可控硅在一个电源周期全导通时所对应的电压有效值,I 为可控硅在一个电源周期全导通时所对应的电流有效值。由式(1) 可知,当U ,I ,N 为定值时, 只要改变n

26、 值的大小即可控制功率的输出,从而达到调节电机转速的目的。风扇电机控制电路如图7所示。图7 风扇电机控制电路3.7 报警电路蜂鸣器工作原理简介:当控制端口通以不同频率及不同占空比的信号时蜂鸣器将发出不同强度及不同频率的声音。由于其具有比传统的喇叭体积小,价格低等优点,所以此次提示音电路选用蜂鸣器。具体电路如8图:图8 蜂鸣器报警系统4 控制器软件设计本系统的运行程序采用C语言编写,采用模块化设计,整体程序有主程序和显示键盘扫描、红外线接收以及电机控制等子程序模块组成。4.1 主程序 在主程序进行初始化后,开始反复检测各模块相关部门的缓冲区的标志,如果缓冲区置位,说明相应的数据需要处理,然后主程

27、序调用相应的处理模块。如图9所示。如图9 主程序流程图4.2 温度传感器面模块如下图10所示,主机控制DS18C20数字温度传感器完成温度转化工作次序经过三个步骤:初始化好、ROM操作指令、存储器操作指令。单片机所用过得系统频率问12MHz。根据DS19B20数字温度传感器进行初始化时序、读时序和写时序分别可编写3个子程序:初始化子程序、写子程序、读子程序。图10 数字温度传感器模块程序流程图DS18B20芯片功能命令表2如下。表2 DS18B20功能命令表命令 功能描述 命令代码CONVERT 开始温度转换 44HREAD SCRATCHPAD 读温度寄存器(共9字节) BEHREAD RO

28、M 读DS18B20序列号 33HWRITE SCRATCHPAD 将警报温度值写如暂存器第2、3字节 4EHMATCH ROM 匹配ROM 55HSEARCH ROM 搜索ROM F0HALARM SEARCH 警报搜索 ECH SKIP ROM 跳过读序列号的操作 CCH READ POWER SUPPLY 读电源供电方式:0为寄生电源,1为外电源 B4H4.3 电机调速与控制子程序本模块采用双向可控硅过零触发方式,由单片机控制双向可控硅的通断。通过改变每个控制周期内可控硅导通和关断电流完整全波信号的个数来台阶负载功率,进而达到调速的目的。因为INTO信号反应工频电压过零时刻,所以只要在中

29、断0的中断服务程序中完成控制门的开启与关闭,并利用中服务次数控制量n进行计数和判断,即每中断一次,对n进行减1计数,如果n不等于0。保持控制电平为“1“,继续打开控制门;如果n=0,则是控制电平复位为”0“,关闭控制门,使可控硅的过零控制,从而达到按制量控制的效果,实现速度可调。(1)中断服务程序:执行中断服务程序时,首先保护现场,INT0中断标志置位,禁止主程序 修改工作参数,然后开始减1计数,判断是否关断可控硅,然后INT0中断标志位清零,还原初始化数据,恢复现场,中断返回(设1秒钟通过波形数N=100)(2)回路控制执行程序:主回路执行程序的人任务是初始化数据存储单元,确定电机工作参数N

30、min/Nmax,并将其算成“有效过零脉冲”的个数;确定中断优先级、开中断,为了保证正弦波的完成,工频过零同步中断INT0确定为高一级的中断源电机控制模块中断响应流程图如图11所示。图11 电机控制模块中断响应流程图5仿真结果当温度小于30度时,风速为1挡如图12所示。如图12 挡1示意图当温度大于30度小于35度时,风速为2挡 如图13所示。如图13 挡2示意图当温度大于35度时,风速为3挡。如图14所示。如图14 挡3示意图当温度大于40度时,蜂鸣器响起,此时显示OL。如图15所示。如图15所示 警报示意图结 论首先,通过这次应用系统设计,在很大程度上提高了自己的独立思考能力和单片机的专业

31、知识,也深刻了解写一篇应用系统的步骤和格式,有过这样的一次训练,相信在接下来的日子我们都会了,而且会做得更好。 我所写的系统主要根据目前节智能化电风扇技术的发展趋势和国内实际的应用特点和要求,采用了自动化的结构形式,实现对电风扇转速的自动控制。 系统以单片机AT89C51为核心部件,单片机系统完成对环境温度信号的采集、处理、显示等功能;用Protel软件绘制电路原理图和PCB电路印刷板图,由Protues软件进行访真测试,利用MCS51汇编语言编制,运行程序该系统的主要特点是: 1)适用性强,用户只需对界面参数进行设置并启动系统正常运行便可满足不同用户对最适合温度的要求,实现对最适温度的实时监

32、控。 2)系统成本低廉,操作非常简单,随时可以根据软件编写新的功能加入产品。操作界面可扩展性强,只要稍加改变,即可增加其他按键的使用功能。本系统在当今提倡人性化设计和健康产品的环境下具有非常好的市场前景。 本设计在模拟检测中运行较好,但采样据不太稳定。功能上的缺憾是对于两个档之间的临界温度处理不好,并且档位太少。还有待改进。致 谢回想起这篇课程设计之前的一段时间,特别感谢我的指导老师和张老师以及身边关心帮助我的朋友们。在课程设计的写作当中遇了无数的困难和障碍,但都在他们的热心帮助线度过了。尤其是强烈的感谢我的课程指导老师张具琴老师,她对我进行了无私的知道和帮助,不厌其烦的帮助我进行了课程设计的

33、修正和改进。 同时也感谢这篇论文所涉及到的各位学者,感谢周边帮助我的同学们。参考文献1 张鑫.单片机原理及应用.电子工业出版社2 明德刚.DS18B20在单片机温控系统中的应用.贵州大学学报,2006,2 3 黄朝民,肖明清,吴志强.单片机原理与应用.现代电子技术,2006,12 4 刘进山.基于MCS-51电风扇智能调速器的设计.电子质量,2004,105 肖洪兵. 跟我学用单片机M. 北京:北京航空航天大学出版社,20026 赵晓安. MCS-51单片机原理及应用M. 天津:天津大学出版社,20017 曹巧媛.单片机原理及应用.北京:电子工业出版社,2002.28 王伦.电风扇原理与维修技

34、术M.北京:新时代出版社,19999 张毅刚.新编MCS-51单片机应用设计.哈尔滨工业大学出版社,2006,10附录附录:程序清单#include #include /包含_nop_()函数定义的头文件#include #include #define uchar unsigned char#define uint unsigned intuchar code xiaoshu=0xc0,0xc0,0xf9,0xf9,0xa4,0xb0,0xb0,0x99,0x92,0x92,0x92,0x82,0xf8,0xf8,0x80,0x80,0x90;/小数部分编码uchar code table=

35、0xc0,0xf9,0xa4,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/数码管显示字符/端口的定义sbit DQ=P25;sbit L1=P20;sbit L2=P21;sbit L3=P22;sbit L4=P23;sbit L5=P24;uchar time_DS18B20; /设置全局变量,专门用于严格延时uchar TL; /储存暂存器的温度低位 uchar TH; /储存暂存器的温度高位uint flag;uchar temp,temp1;uchar shi,ge,dot,xiao;/*-延时函数-*/v

36、oid delay(unsigned char ms)unsigned char i;while(ms-)for(i = 0; i 250; i+)_nop_();_nop_();_nop_();_nop_();/*-DS18B20的初始化-*/bit Init_DS18B20(void) bit flag_DS18B20; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先将数据线拉高 for(time_DS18B20=0;time_DS18B202;time_DS18B20+) ;/略微延时约6微秒 DQ = 0; /再将数据线从高拉

37、低,要求保持480960us for(time_DS18B20=0;time_DS18B20200;time_DS18B20+); /略微延时约600微秒以向DS18B20发出一持续480960us的低电平复位脉冲 DQ = 1; /释放数据线(将数据线拉高) for(time_DS18B20=0;time_DS18B2010;time_DS18B20+);/延时约30us(释放总线后需等待1560us让DS18B20输出存在脉冲) flag_DS18B20=DQ; /让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time_DS18B20=0;time_DS18B20200;ti

38、me_DS18B20+); /延时足够长时间,等待存在脉冲输出完毕 return (flag_DS18B20); /返回检测成功标志 /*-读一个字节的程序- */unsigned char ReadOneChar( ) unsigned char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i=1; _nop_(); /等待一个机器周期 DQ = 1; /将数据线人为拉高,为单片机检测DS18B20的输出电平作准备 for(time_DS18B20=0;time_DS18B203;time_DS18B20+); /延时约6us,使主机在15us内采

39、样 if(DQ=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00;/如果读到的数据是0,则将0存入dat将单片机检测到的电平信号DQ存入ri for(time_DS18B20=0;time_DS18B208;time_DS18B20+);/延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十进制数据/*-写一个字节的程序- */WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) DQ =1; / 先将数据线拉高 _nop_();

40、/等待一个机器周期 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat&0x01; /利用与运算取出要写的某位二进制数据,并将其送到数据线上等待DS18B20采样 for(time_DS18B20=0;time_DS18B2010;time_DS18B20+);/延时约30us,DS18B20在拉低后的约1560us期间从数据线上采样 DQ=1; /释放数据线 for(time_DS18B20=0;time_DS18B20=1; /将dat中的各二进制位数据右移1位 for(time_DS18B20=0;time_DS18B204;time_DS18B20+) ; /稍作延时,给硬件一点反应时间 return(dat);/返回读出的湿巾纸 /*-读温度子函数-*/void ReadyReadTemp(void) Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换 for(time_DS18B20=0;time_DS18B20=8) TH=TH; /当温度为负数时求负数的补码 TL=TL; TL=TL+1; flag=1; /当温度为负值时标志置1 if(TL=0) TH+=1;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服