历史上的今天
返回首页

历史上的今天

今天是:2024年09月04日(星期三)

正在发生

2020年09月04日 | 51单片机温度+pwm控制风扇转速,且温度在LCD1602上显示

2020-09-04 来源:51hei

原理图如下:
 

源代码如下:

#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++;   

    }


推荐阅读

史海拾趣

Datakey Electronics公司的发展小趣事

在环境问题日益严重的今天,绿色环保已经成为电子产品行业的重要发展趋势。Datakey Electronics积极响应国家号召,致力于绿色产品的研发和生产。公司投入巨资研发环保材料和生产工艺,成功推出了一系列符合环保标准的产品。这些产品不仅满足了客户的需求,还为公司赢得了良好的社会声誉。

酷宅(Coolkit)公司的发展小趣事

酷宅科技始终将技术创新作为公司发展的核心驱动力。公司不断投入研发资源,推动物联网、云计算、大数据等前沿技术的研发和应用。通过技术创新,酷宅科技不仅提高了产品的智能化水平,还降低了生产成本,提高了生产效率。同时,公司还积极与高校、科研机构等合作,共同开展技术攻关和人才培养工作,为公司的长期发展提供坚实的技术支持。

BCD Semi(Diodes)公司的发展小趣事

作为一家高科技企业,BCD Semi(Diodes)公司深知创新是发展的核心动力。因此,公司始终将研发投入作为重中之重,不断加大对新技术、新产品的研发力度。通过持续的创新驱动,公司成功推出了一系列具有自主知识产权的高性能模拟半导体产品,为公司的长远发展奠定了坚实基础。

Headland Technology Product Group公司的发展小趣事

进入21世纪后,随着电子技术的飞速发展,HBControls意识到只有不断创新才能保持竞争力。公司加大了研发投入,成立了专门的研发团队,专注于新型继电器产品的研发。经过多次试验和改进,HBControls成功推出了HD-4850系列高性能继电器,该系列产品以其高可靠性、长寿命和低功耗等特点迅速赢得了市场的青睐。这一创新不仅提升了公司的市场份额,也进一步巩固了HBControls在继电器领域的领先地位。

Foxboro I C T Inc公司的发展小趣事

进入21世纪后,随着电子技术的飞速发展,HBControls意识到只有不断创新才能保持竞争力。公司加大了研发投入,成立了专门的研发团队,专注于新型继电器产品的研发。经过多次试验和改进,HBControls成功推出了HD-4850系列高性能继电器,该系列产品以其高可靠性、长寿命和低功耗等特点迅速赢得了市场的青睐。这一创新不仅提升了公司的市场份额,也进一步巩固了HBControls在继电器领域的领先地位。

Ferranti Electric Inc公司的发展小趣事

Ferranti Electric Inc公司非常重视知识产权的保护和积累。通过不断的技术研发和创新,公司积累了大量的知识产权,包括商标、专利等。这些知识产权的拥有不仅彰显了公司的技术实力和创新能力,也为公司的市场竞争提供了有力的保障。公司不断加大在研发和创新方面的投入,以保持其在电气行业的领先地位。

问答坊 | AI 解惑

DC/DC电源模块虚拟测试系统的设计

近几年来,随着对电源产品多样性和复杂性的要求的加大,如何科学而快速地检测其性能和指标成了一大难题。原来的手动测量方式已不能满足生产厂家和用户的要求,测试自动化成为电源模块测试追求的目标[1]。 随着虚拟仪器技术和计算机测试技术的发展, ...…

查看全部问答>

那个牌子PLC的脉冲指令好用?并且效果也好?

就单路脉冲来说,那个牌子PLC的脉冲指令好用?并且效果也好?(台达,LG,三菱,西门子,施耐德,欧姆龙。。。。) EMERSON有ABS(当前值读取指令)    ZRN(原点回归指令)    PLSV(可变速脉冲输出指令)   ...…

查看全部问答>

ActiveSync USB同步连接在PC上要编程操作该怎么整?枚举USB设备,把其当一般的USB设备来操作?还是RAPI?

ActiveSync USB同步连接在PC上要编程操作该怎么整?枚举USB设备,把其当一般的USB设备来操作?还是RAPI?…

查看全部问答>

求达人帮忙看下下面的程序怎么走的。

void CWINCE500_TCP_CLIENTDlg::OnBnClickedButton4() {         //打开串口1         //判断串口是否已经打开         if (m_pSerial != NULL)         { ...…

查看全部问答>

市场上流通大量的AT89C51 24PI 09XX的芯片,但去ATMEL主页没发现这个批号,为什么?

Device AT80C51RD2 AT83C5134 AT83C5135 AT83C5136 AT83EB5114 AT89C2051 AT89C4051 AT89C5115 AT89C5130A-M AT89C5131A-L AT89C5131A-M AT89C5132 AT89C51AC2 AT89C51AC3 AT89C51CC01 AT89C51CC02 AT89C51CC03 AT89C51ED2 AT89 ...…

查看全部问答>

求迅龙公司s3c2440_MDS522开发板用户手册及硬件电路图

如题,哪位大哥有以上资料,方便的话与小弟联系,不甚感谢,QQ:108763014,邮箱duxuejiao@hotmail.com…

查看全部问答>

嵌入式C里面设置绝对地址的数值的问题

如下   嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求 设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写 代码去完成这一任务。 原来的答案如下: *(int * cons ...…

查看全部问答>

Wince 5.0 图片加载问题

从wm6.0 移植过来的 代码  在 wince5.0 下运行加载本地图片时 SHLoadImageFile函数报错没定义 换成LoadImage后运行报错Getlasterror = 1814 请问大家怎么解决??                 //hbmpI ...…

查看全部问答>

大虾,能否用LSE做为STM8主时钟完成USART的串口通信

如题,能否用LSE(32.768kHz)做为STM8的主时钟完成串口通信啊。 麻烦给些思路,最好能给出验证过的代码。 偶在楼底下先谢您了...............…

查看全部问答>

【MSP430共享】基于MSP430单片机的智能温控系统

  在人类生活的环境中,温度扮演了一个极为重要的角色,工业生产中要严格考虑温度的变化对系统的影响,因而就有必要设计一个既可以对温度进行实时测量与监控又可以对其进行控制的仪器,我们这里采用msp430f149芯片进行控制,利用tmp275进行温 ...…

查看全部问答>