51单片机温度+pwm控制风扇转速,且温度在LCD1602上显示

发布者:创意旋律最新更新时间:2020-09-04 来源: 51hei关键字:51单片机  pwm  控制风扇转速  LCD1602 手机看文章 扫描二维码
随时随地手机看文章

原理图如下:
 

源代码如下:

#include

#include

#include"define.h"

#include"delay.h"

#include"LCD1602.h"

#include"DS18B20.h"

#include"HL_alarm.h"

sbit KEY3 = P3^5;                //定义开始/停止

  void zhuan();

  unsigned char timer1;

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


void main()

{  if(KEY3==0)            //第一次检测是否有键按下

    {   

    PWM=0;MA=~MA;MB=~MB;

    delay(1);

    return;   

}

else

    {LCD_init();

    set_alarm_HL();

    DS_read_temperature();

    TMOD=0x01;

    TH0=-50000/256;

    TL0=-50000%256;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {}

}

}

void timer0() interrupt 1

{ if(KEY3==0)            //第一次检测是否有键按下

    {     TH0=-50000/256;

    TL0=-50000%256;

    DS_read_temperature();//读取温度

    if((HI_alarm==1)||(LO_alarm==1))

        alarm();

    if(DS_OK==0)

        return;//如果读取错误,返回从新再读

    display_temperature();

    buffer_line1[10]='S';//*********修改成STOP

    buffer_line1[11]='T';

    buffer_line1[12]='O';

    buffer_line1[13]='P';

PWM=0;MA=~MA;MB=~MB;

    delay(1);

    return;

}

else

{

    TH0=-50000/256;

    TL0=-50000%256;

    DS_read_temperature();//读取温度

    if((HI_alarm==1)||(LO_alarm==1))

        alarm();

    if(DS_OK==0)

        return;//如果读取失败,返回重新再读

    display_temperature();

    if(sign_temp<=50&&sign_temp>=15)

    {

        MA=1;

        MB=0;

        if(sign_temp<25) //等于45或65时停止转动,占空比0

        {    buffer_line1[10]='S';//*********修改成STOP

            buffer_line1[11]='T';

            buffer_line1[12]='O';

            buffer_line1[13]='P';

            PWM=0;

            delay(1);

            return;

        }

          buffer_line1[10]='R';//*********修改成RUN

        buffer_line1[11]='U';

        buffer_line1[12]='N';

        buffer_line1[13]=' ';

         zhuan();

    }

        else

        {

            MA=0;

            MB=0;

        }

    }

}

  void zhuan()

  {

    TMOD|= 0x10;   //设置定时计数器工作方式1为定时器

    TH1 = 0xFE;

    TL1 = 0x0C;             //--定时器赋初始值,12MHZ下定时0.5ms--//

    ET1 = 1;      //开启定时器1中断

    EA = 1;

    TR1 = 1;     //开启定时器

   

        if(timer1>50)  //PWM周期为50*0.5ms

        {

            timer1=0;

        }

        if(timer1 < sign_temp)    //改变sign_temp这个值可以改变直流电机的速度

        {

            PWM=1;

        }

        else

        {

            PWM=0;

        }

    }


void Time1(void) interrupt 3    //3为定时器1的中断号 1 定时器0的中断器 0外部中断 1 2外部中断 2 4串口中断

    {

    TH1 = 0xFE;  //重新赋初值

    TL1 = 0x0C;

    timer1++;   

    }


关键字:51单片机  pwm  控制风扇转速  LCD1602 引用地址:51单片机温度+pwm控制风扇转速,且温度在LCD1602上显示

上一篇:单片机红外解码,短按开关灯,长按调光,数码管显示键值
下一篇:单片机红外遥控风扇源程序

推荐阅读最新更新时间:2024-11-06 09:34

基于51单片机应用系统的串行通信设计
在红外成像技术的电力设备状态检测系统中,基于AT89C51单片机的应用系统,采用美国雷态公司的型号为3iLRL3的非接触式红外测温仪.该测温仪采用的是RS232C串行通信标准接口,该接口在很多通信设备中通用,目前与PC机的直接串行通信也是RS 232C接口。尽管RS232C性能指标并非很好,但还是有广泛的市场支持。串行通信技术在测控系统中占有很重要的地位,只用三根线.就可以方便的在2个数字设备之间进行信息的交换,实现全双工的传送数据,硬件成本低.而且通用性好。 2 串行通信的硬件设计 在所开发的系统中.红外测温仪将检测电力没备的工作和环境温度,通过RS 232C串口传给单片机,同时由单片机控制检测装置的在线工作组态,红外检测装
[单片机]
基于<font color='red'>51单片机</font>应用系统的串行通信设计
51单片机之——中断的概念
前面讲了许多51单片机的外设部分,大致有一些芯片,以及元器件。而这篇博文就走进单片机内设——中断系统。 首先,搞清楚什么是中断? 引用资料书的话:对于单片机而言,中断是指CPU在处理某一件事A时,发生了另一件事B,请求CPU迅速去处理(这个过程是“中断发生”);此时,CPU暂时停止当前的A事件(这个过程是“中断响应”),转去处理B事件(这个过程是“中断服务”);待CPU将B事件处理完毕后,再回到事件A被中断打断的地方继续处理事件A(这个过程是“中断返回”)。这一过程,称之为中断。其流程图如下所示: 其中,主程序为上述所说的A事件,中断请求由B事件发出。 再来引出一个生活中的例子: 首先,我们会知道有一个重要的人会在中午正餐的时
[单片机]
基于51单片机的湿度监测仿真和程序
仿真所用的湿度传感器为SHT11。SHT11是瑞士Scnsirion公司推出的一款数字温湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。 其主要特点如下: 高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上; 提供二线数字串行接口SCK和DATA,接口简单,支持CRC传输校验,传输可靠性高; 测量精度可编程调节,内置A/D转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程米选择); 引脚 名称 功能 1 GND 地线 2 DATA 串行数据线 3 SCK 串行 时钟 线 4 VDD 电源 正 NC NC 悬空 传输启动 数据传
[单片机]
基于<font color='red'>51单片机</font>的湿度监测仿真和程序
基于51单片机的模拟交通灯
/*----------------------------------------------- 注:P1口连接至LED用于显示红绿灯,P0口接数码管段码,用于显示时间; 两个74HC573控制段码和位码。段码接P20,位码接P21 ------------------------------------------------*/ #include reg52.h #define uchar unsigned char #define uint unsigned int sbit DUAN=P2^0; sbit WEI=P2^1; /*-------------------------------------------
[单片机]
51单片机STC89C52 iic
SCL BIT P2.1 SDA BIT P2.0 ORG 0000H LJMP MAIN ORG 0050H MAIN: MOV SP,#30H MOV P1,#0FFH ;灭LED MOV R6,#2 ;R6保存AT24C02内部待写地址,用于传递参数 MOV R7,#55H ;R7保存待写数据,用于传递参数 LCALL iic_Write ;调用写函数,将R7的数据写入AT24C02 R6所指地址 LCALL DELAY10MS ;延时 MOV R6,#2 ;R6保存AT24C02内部待读地址,用于给读函数传递参数 LCALL iic_Read ;调用读函数 MOV
[单片机]
一种基于PWM的CMOS数据接口电路设计
1 引言 随着电路系统需求的扩展,集成电路设计与制造技术的进步,现代数字系统多工作在几百Mbps的速率上,这些高速系统常包含多个电路模块。系统中不同模块间的接口十分重要,它一般采用总线结构。为了获得更高的数据传输速率必须增加内部总线宽度,实际应用中,采用更大芯片面积和更多端口数目。这类问题也出现在板级系统中。为此,提出一个端口同时传输多个比特的概念以解决该问题,即采用调制技术,在电路中将数据与时钟信号合并为一个通道以减少端口数。为解调该信号,接收端则采用时钟恢复电路(CRC)从数据流中提取时钟信号。常用的调制技术包括PPM ,PCM及PWM 。 给出了一采用PWM,传输速率达400Mbps的数据接口电路。用脉冲宽度对数据进
[嵌入式]
51单片机直接寻址方式与编程举例
直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。 例如:MOV A,30H 这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是: 1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。 我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形
[单片机]
89c51单片机和89s51单片机的区别,89s51单片机新增功能汇总
  AT89S51 是一个低功耗,高性能CMOS 8位 单片机 ,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统供给高性价比的解决方案。   AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved