基于51单片机的新型冰箱温度控制器系统

发布者:luanzgc最新更新时间:2016-09-18 来源: eefocus关键字:51单片机  冰箱温度  控制器系统 手机看文章 扫描二维码
随时随地手机看文章
0引言

    随着生活的改善,消费水平的提高。越来越多的普通居民开始使用冰箱。每年冰箱的市场额都在千万以上。随着中国电子行业的高速发展。一个个新型的企业开始计入抢夺市场的竞争中。使得供应生产商,在保证质量和顾客需要的前提下,纷纷消减陈本,制定不同的战略。目前各大冰箱控制器的生产厂家存在着更加残酷的竞争,只有把握住优质的技术,结合低廉的陈本才能为企业,迎来生存的机会。基于这种情形,我们认为现如今,在家电的低端市场,廉价实用性强的控制器为各大产品提供了巨大优势,这种优势是在竞争中无法忽略的。我们的产品追求廉价实用,节能环保,突出用户地位更加人性化,应用宽泛。

1 系统总体介绍

这是一个基于51单片机的电冰箱控制系统,通过51单片机控制其余的温控设备以及其余的扩展设备,从而达到系统预期的目的。电路简单实用,而且经济廉价,适用于很多场合。51单片机的控制也很方便简单,而且能做到控制系统的作用。

产品特色有:

人机交互式控制,必要时可根据顾客的个人意愿设置停开时间比,满足不同的需要;

成本低,手动调节部分可以控制在10元以下,主控部分在25元以下,甚至可以更低一些;

可人为控制停机,防止因为制冷剂等原因造成不停进而损坏压缩机;

防止因为断电等高压启动损坏压缩机。

2 系统硬件组成

本系统由单片机最小系统、时间控制器、液晶模块、温度采集模块以及给单片机供电的电源模块等模块组成,下面分别做详细的介绍。

2.1 单片机供电电路

单片机工作的电压是5V的直流电,所以我们要为单片机供应持续不变的直流电信号,这样才能保证单片机工作的稳定,以及单片机在处理数据上的持续性。单片机在工作时由时钟频率决定其输出波形。从市用的普通交流电出发,我们可以设计出给单片机供电的电源电路。

首先把交流电接入小型变压器,把220V的交流电变成15V的交流电,然后经过整流桥整流,滤波电路滤波,可以得到接近12V的直流电压,再经过7805的集成稳压片,就可以得到5V的直流电了。当然有时候要采用小型蓄电池作为最初的电源,我们把7805的电路另作一个模块放在一边备用。       电路图如图一: 

 基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

 

 

                                                        图一:稳压电路

2.2 时间控制器电路

这是一种小型的低成本时间控制器,可人为设定不同的开停比,控制冰箱开或停,模拟温控过程。电路成本低(小于10元),可靠性较高,适合于广大用户使用。该模块的电路图如图二所示:

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                            图二:时间控制器电路

此电路核心为一片555时基电路,在此构成可调占空比的无稳态多谐振荡器。由555的工作原理可知,其③脚输出电压由②、⑥脚的输入电压决定。R3、D6、RP2、R5、C3构成充电支路,当C3上的电压小于2/3Vcc(Vcc为555的工作电源电压)时,③脚输出高电平,K1释放,LED1熄灭,一旦C3上的充电电压升高至2/3Vcc时,则555内部RS触发器翻转,③脚输出低电平,K1吸合,LED1点亮,同时⑦脚内部的放电管对地导通,C3通过R4、RP1、D5支路对⑦脚放电,直到C3上的电压降至1/3Vcc时,⑦脚停止放电③脚又恢复输出高电平;此后C3又通过充电支路进行充电……周而复始。

    充电时间T1=0.693(R3+R5+RP2)C3

    放电时间T2=0.693(R4+RP1)C3

    设计中R3取16kΩ,R4取100 kΩ,R5取270 kΩ,RP1、RP2均取4.7 MΩ的电位器,C3为1000μF的低漏电铝电解电容器,则T1、T2的定时最长可达约54分钟。由于C3漏电流的存在,实际定时可达80分钟。

    电路中,RP1、RP2分别为开机调节及定时调节电位器,LED1、LED2分别定时、电源指示。R1、C1、D1~D4及C2、ZD、R2等组成简单的电容降压稳压电路,提供555时基电路及继电器K1的工作电源。开机后,电路自动进入延时启动状态,如需快速启动,可按一下轻触开关S1,则可实现快启功能。

    对于实际的电路图,C1需选用耐压大于400V的聚丙烯电容器。K1可选触点电流大于5A的高灵敏度继电器。C3应选用漏电尽可能低的电解电容器,这样生产时的一致性较好,不然时间误差会很大。

    制作完成后,一般情况无须调试。将电冰箱插入CZ上,RP1、RP2调于最小位置(均为5分钟定时),通电后LED2亮。约5分钟后,LED1熄灭、K1释放。如果实现开机时快启,只需按一下S1即可。调节RP1、RP2,即可完成不同的时间通断比,使接于CZ上的电冰箱受其控制而实现节能。

2.3 温度采集电路

我们用到的温度采集芯片是常用的DS18B20,我们用的是形如三极管封装的三脚外形,这种封装的芯片才电路连接上很是方便,三脚分别是电源端、接地端和信号端,只要分别接入电路节能正常工作。但是在用该芯片对温度采集时还得用到AD转换的芯片。我们用的是ADS1286P。在进行温度采集时我们对三个不同地点的温度分别进行采集,用AD转换芯片转换后送给单片机进行数据的分析和处理。从而再进行对其他模块进行控制。这种电路在连接和处理上都是很简单的,编程上也很便捷,适合很多场合的使用。

ADS1286P的原理图如图三:

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                                   图三:ADS1286P的原理图

ADS1286P和DS18B20的连接也很方便。作为一种AD转换的芯片,前者在使用上和其它一些AD处理芯片的应用也差不多。由于在温度采集时会涉及三个点的采集,所以两者的连接图没有画在一起。DS18B20的电路图如图四所示:

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                                        图四:温度采集电路

2.4 语音控制模块

我们用到的语音芯片是ISD1700系列的ISD1760。这种芯片的特点有:可录、放音十万次,存储内容可以断电保留一百年;可以用两种控制方式,两种录音输入方式,两种放音输出方式;可处理多达255段信息;有丰富多样的工作状态提示;多种采样频率对应多种录放时间;音质好,电压范围宽,应用灵活等。工作电压在2.4V-5.5V,最高不能超过6V,静态电流0.5-1uA,工作电流20mA。在用该芯片时可以利用独立键盘工作模式,可以用按键进行录放功能,还有快进、擦除、音量控制、直通放音和复位等功能。芯片采用的是28脚直插式封装,管脚图如图五:

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                      图五:ISD1700系列引脚图

在放音方面,也由两种模式,分别是边沿触发和电平触发模式,都由/PLAY管脚触发。芯片的擦除还可以采用单个擦出和全体擦除,在该芯片的使用上很是便捷,而且这种芯片设有控制音量大小的管脚和复位管脚以及快进管脚,都能够用按键来进行控制。在满足要求的前提下,这种芯片的性价比也相对很高,能够适应很多场合的使用。

该芯片的典型应用电路如图六所示:

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                            图六:ISD1760应用电路

2.5 单片机最小系统以及液晶显示模块

这是整个系统的核心部分,是系统工作的必要条件,也是个模块连接到一起的链接枢纽。

在单片机最小系统中,我们需要给单片机工作提供必要的条件:由外部晶振给与单片机工作的时钟频率,还应有复位电路和供电电路。单片机采用宏晶公司的STC89C51单片机,这种单片机不仅便宜,而且在使用上也很方便。它不仅在编程上便捷,在造价上也很经济实惠,而且对于像这种简单的控制也能起到很好的控制作用。整个系统都由单片机来进行控制,采集到的温度信号传给单片机进行处理,完了再对其余模块进行控制,以达到对整个系统的控制。图七就是单片机最小系统和液晶显示模块的电路图:

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                       图七:单片机最小系统+液晶电路

3 系统软件设计

系统的软件设计是针对硬件的各个方面,硬件的集成就是软件程序的集成。其中包括了温度的采集,A/D转换,液晶显示,语音报警以及自动手动的调节部分等等各个部分。

各部分程序的集合就构成了整个系统的完整程序,用51单片机来控制整个系统的实现。系统中还用到了继电器,这是一个用低电压控制高电压的元器件,能够对一些高于5V的模块进行驱动。

整个程序的设计围绕着各个模块的连接,更关键的是和主控芯片51单片机的连接。

下图是整个系统的硬件组成图,以及各个模块的连接图,从图中我们就可以看出系统软件设计的思路。如图八

基于51单片机的新型冰箱温度控制器系统 - bingqingyujie..5 - ~bluestart~O(∩_∩)O

                                                     图八:系统硬件组成图

    系统源程序见附录一。

4 总结

在这几个月的项目制作中,我们学到了很多的东西,也完成了这个项目。从这个项目中,我们学到了很多东西,在硬件制作和软件编程上都得到了很大的提高。整个项目的制作过程就是一个发现问题—解决问题的过程,也可以说是发现困难—解决困难的过程。在整个过程中我们遇到了很多的困难,包含在整个系统的各个方面。当我们发现困难的时候,我们会在网上找相关的资料,然后一起讨论,把困难给解决。当然很多时候,这不是一个很容易的事儿,很多东西不是那么容易就给解决的,这时候我们会从不同的方案中选择、实验,淘汰掉那些不能达到目的的方案,最后得到我们需要的方案。当然,很多时候我们还会请教实验室的学长们,他们帮助我们解决了不少问题,这样我们才能完成整个系统。

在此,感谢学校给我们这个学习和锻炼的机会,让我们能够在实践中学习,把实践和理论相结合,从而学到更多的知识。感谢孙岩老师的耐心指导与帮助,希望以后能有机会得到更大的锻炼。

 

参考文献:

【1】         郭天祥.《51单片机C语言教程》北京:电子工业出版社 2009.1

【2】         赵建领.《Protel电路设计与制版宝典》 北京:电子工业出版社 2007.1

【3】         赵建领.《51系列单片机开发宝典》北京:电子工业出版社 2008.4

【4】         张伟,孙颖,赵晶.《Protel99SE高级应用》北京:人民邮电出版社 2007.7

【5】         周润景,张丽娜.《Protel99SE原理图与印制电路板设计》北京:电子工业出版社 2008.8

【6】         戴佳,戴卫恒,刘博文.《51单片机C语言应用程序设计实例精讲》第二版北京:电子工业出版社 2008.12

【7】         虞立信陈波虞立工.《电冰箱模糊控制器的研制》 《家用电器科技》1997年04期

【8】         丛树松.会说话的电冰箱[J].家电科技 1983年03期

【9】         孙凤斌. 电冰箱时间控制器.中国:90217787.7 ;1991.1.30

 

附件程序:

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar bdata SR0_L;

uchar bdata SR0_H;

uchar bdata SR1;

uchar APCL=0;APCH=0;

uchar PlayAddL , PlayAddH;

uchar RecAddL,RecAddH;

uchar flag1=0;

 

sbit ds=P1^0;

 uchar id[3][8]={{40,235,18,249,1,0,0,121},{40,159,23,249,1,0,0,239},{40,205,27,155,1,0,0,25}};

 

sbit RS=P3^6;

sbit EN=P2^0;

 

 

sbit p01=P3^1;

 

sbit CMD=SR0_L^0;

sbit FULL=SR0_L^1;

sbit PU=SR0_L^2;

sbit EOM=SR0_L^3;

sbit INTT=SR0_L^4;

sbit RDY=SR1^0;

sbit ERASE=SR1^1;

sbit PLAY=SR1^2;

sbit REC=SR1^3;

 

uchar bdata flag=0;

sbit PR_flag=flag^1;//0放音,1录音

sbit Erase_flag=flag^4;

sbit Stop_flag=flag^7;

 

sbit SS=P1^1;

sbit SCK=P1^2;

sbit MOSI=P1^3;

sbit MISO=P1^4;

sbit LED=P3^0;

//sbit Key_AN=P2^1;

//sbit Key_STOP=P2^2;

//sbit Switch_PR=P2^3;

uchar ff;

 

void ISD_Init();

unsigned char ISD_SendData(unsigned char dat);

void ISD_PU(void);

void ISD_Clr_Int(void);

void ISD_Rd_Status(void);

void ISD_WR_APC2(uchar apcdatl,uchar apcdath) ;

void ISD_SET_PLAY (unsigned char Saddl,Saddh,Eaddl,Eaddh);

void delay_us(uint);

 

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

          液晶**************

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

void write_command(uchar com)

{

       RS=0;

       P0=com;

       delay_us(5);

       EN=1;

       delay_us(5);

       EN=0;

 

}

void write_data(uchar data1)

{

       RS=1;

       P0=data1;

       delay_us(5);

       EN=1;

       delay_us(5);

       EN=0;

 

}

 

void yejing_init()

{

EN=0;

 

write_command(0x38);

write_command(0x0c);

write_command(0x06);

write_command(0x01);

}

 

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

     18B20

        *************************8***/

void delay(uint t)

{

 for(;t>0;t--);

}

 

 

void ow_reset()

{

 bit pre=1;       //工作标志

 while(pre)

  {

    while(pre)

      {

        ds=1;

        _nop_();   //延时

        _nop_();

        ds=0;

        delay(50); //550US

        ds=1;

        delay(5);  //55US

        pre=ds;    //presence=0继续下一步

      }

    delay(45);     //500US

    pre=~ds;

  }

 ds=1;

}

 

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

//写一个字节函数

void write_byte(uchar t)

{

 uchar i;

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

  {

     ds=1;

    _nop_(); _nop_();

    ds=0;

    _nop_(); _nop_(); _nop_(); _nop_(); _nop_();//5us

    if((t&0x01)==0x01)

     {

      ds=1;

     }// DQ=t&0x01; //最低位移出

    else

     {

      ds=0;

     }

    delay(6);      //66us

    t=t>>1;        //右移1位

  }

 ds=1;

 delay(1);

}

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

//读一个字节函数

uchar read_byte()

{

 uchar i;

 uchar value=0;

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

  {

    ds=1;

    _nop_(); _nop_();

    value=value>>1;

    ds=0;

    _nop_(); _nop_(); _nop_(); _nop_();   //4us

    ds=1;

    _nop_(); _nop_(); _nop_(); _nop_();   //4us

    if(ds==1)

       {

         value=value|0x80;

       }

    delay(6);          //66us

  }

 ds=1;

 return(value);

}

uint dealwith(uchar hbit,uchar lbit)

{

    float newtemp;

    uint temp=0,inttemp=0;

    temp=hbit;

    temp=temp<<8;

    temp=temp|lbit;

       temp<<=4;

       temp>>=4;

    newtemp=temp*0.0625+0.05;

    inttemp=newtemp*10;

    return (inttemp);  

}

void display(uchar  add,uint date)

{

     uint shi,ge,sfen;

        shi=date/100;

        ge=date%100/10;

        sfen=date%10;

      

       switch(add)

       {

       case 0:write_command(0x80);      break;

       case 1:write_command(0x80+8);  break;

       case 2:write_command(0x80+0x40);    break;

       }

        if(flag1==0) write_data('+');

        else {write_data('-') ; flag1=0;}

        write_data(shi+0x30);

        write_data(ge+0x30);

        write_data('.');

        write_data(sfen+0x30);

        write_data('C');

}

//void get_id(uchar *p)

//{

//ow_reset();

 //write_byte(0x33); //Skip ROM

 //for(n=0;n<8;n++) *p++=read_byte(); //读取64位ROM ID

//}

void conver(uchar k )

{

    uchar wenh=0,wenl=0;

       uchar n;

    float tentemp;

      

//     ds=P1^0;       

 

    ow_reset();           //复位

    write_byte(0xcc);     //不进行编号匹配

    write_byte(0x44);     //进行温度转换

       while(!ds);

 

       ow_reset();

 //DQ_SendByte(0xcc); // Skip ROM

       write_byte(0x55); //发送ID匹配命令

      for(n=0;n<8;n++)  write_byte(id[k][n]); //发送64 bit ID

 

 

 //   ow_reset();          

  //  write_byte(0xcc);     //不进行编号匹配

    write_byte(0xbe);     //发读命令

    wenl=read_byte();     //温度低八位

    wenh=read_byte();     //温度高八位

      

       if(wenh>128)  flag1=1;

                             

    tentemp=dealwith(wenh,wenl);     //数据处理

    display(k,tentemp);

}

void main()

{

uchar k;

yejing_init();

delay_us(1);

ISD_Init();

while(1)

{                  

     for(k=0;k<=2;k++)

       {

           conver(k);

              delay_us(20);

       }    

                                  

                     //     ISD_SET_PLAY(PlayAddL,PlayAddH,RecAddL,RecAddH);

                    

 

                     /*                                do{ISD_Rd_Status();ISD_SET_PLAY(16,0,31,0);                              

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

             

                                                       

                                                         do{ISD_Rd_Status();   ISD_SET_PLAY(32,0,46,0);

                                 

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

             

 

                                                

                                                         do{ISD_Rd_Status(); ISD_SET_PLAY(47,0,62,0);                            

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

             

 

                                                         do{ISD_Rd_Status(); ISD_SET_PLAY(63,0,75,0);                            

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

             

 

                                                         do{ISD_Rd_Status();   ISD_SET_PLAY(76,0,84,0);                                   

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

             

                                                         do{ISD_Rd_Status();   ISD_SET_PLAY(85,0,97,0);

                                 

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

             

                                                

                                          //            do{ISD_Rd_Status();   ISD_SET_PLAY(68,0,72,0);

                                 

                                          //               }while(RDY==0);

                                          //            ISD_Clr_Int();

                                                         do{ISD_Rd_Status(); ISD_SET_PLAY(98,0,110,0);                            

                                                           }while(RDY==0);

                                                        ISD_Clr_Int();

 

                                                        */

}

}

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

       ISD1760子程序

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

void ISD_Init()

{

uchar i=2;

SS=1;

SCK=1;

MOSI=0;

 

do

{

ISD_PU();

delay_us(50);

ISD_Rd_Status();

}

while(CMD||(!PU));

ISD_WR_APC2(0x40,0x04);//

do

{

ISD_Rd_Status();

}

while(RDY==0);

do

{

LED=0;

delay_us(300);

LED=1;

delay_us(300);

i--;

}

while(i>0);

 

}

uchar ISD_SendData(uchar dat)

{

uchar i,j,BUF_ISD=dat;

SCK=1;

SS=0;

for(j=4;j>0;j--);

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

{

SCK=0;

for(j=2;j>0;j--);

if(BUF_ISD&0x01)MOSI=1;

       else MOSI=0;

BUF_ISD>>=1;

if(MISO)BUF_ISD|=0x80;

SCK=1;

for(j=6;j>0;j--);

}

MOSI=0;

return BUF_ISD;

}

void ISD_PU()

{

ISD_SendData(0x01);

ISD_SendData(0x00);

SS=1;

delay_us(50);

}

void ISD_Clr_Int()

{

ISD_SendData(0x04);

ISD_SendData(0x00);

SS=1;

}

void ISD_Rd_Status()

{

uchar i;

ISD_SendData(0x05);

ISD_SendData(0x00);

ISD_SendData(0x00);

SS=1;

for(i=2;i>0;i--);

SR0_L=ISD_SendData(0x05);

SR0_H=ISD_SendData(0x00);

SR1=ISD_SendData(0x00);

SS=1;

}

void ISD_WR_APC2(uchar apcdatl,uchar apcdath)

{

ISD_SendData(0x65);

ISD_SendData(apcdatl);

ISD_SendData(apcdath);

SS=1;

}

void ISD_SET_PLAY(uchar Saddl,uchar Saddh,uchar Eaddl,uchar Eaddh)

{

ISD_SendData(0x80);

ISD_SendData(0x00);

ISD_SendData(Saddl);

ISD_SendData(Saddh);

ISD_SendData(Eaddl);

ISD_SendData(Eaddh);

ISD_SendData(0x00);

SS=1;

}

void delay_us(uint aa)

{

uint i,j;

for(i=0;i

for(j=0;j<120;j++);

}

关键字:51单片机  冰箱温度  控制器系统 引用地址:基于51单片机的新型冰箱温度控制器系统

上一篇:基于52单片机的智能小车的设计与制作
下一篇:c51与汇编语言的接口

推荐阅读最新更新时间:2024-03-16 15:10

基于单片机的病房紧急呼叫系统设计
文中介绍了一种基于AT89S51单片机设计的医院病房呼叫系统。该系统主要模块是由51单片机系统、1602液晶显示器及其他单元电路组成,同时也利用单片机的全双工通信来实现整个模块之间的通讯功能。所设计的系统核心控制器主要采用价格低廉,性能可靠的51单片机;整个设计模块的主要工作原理是分机按键呼叫,主机蜂鸣器报警,同时显示呼叫的号码和呼叫次数,主机按键可查询分机呼叫次数。使用本设计的病房紧急呼叫系统,具有很重要的应用价值,可以使病人快速找到医生,以节约病人的宝贵时间。 设计一款能满足大众要求,适合各种服务性行业的紧急呼叫系统,无疑会对改善人们生活起着十分重要的作用。对医院单位而言,在同类行业中,需要对病人或客户进行快速、准确的服务和治疗
[单片机]
基于单片机的病房紧急呼叫<font color='red'>系统</font>设计
51单片机-数码管&LED
1.同时点亮猜想 在本章第一节里说过要想点亮数码管,那么我们第一章学过的LED小灯就没有机会点亮了,硬件上的确是这样。 不过我们软件上还是可以实现让一个数码管和一盏LED小灯同时点亮的,大家还记得我们之前举过一个这样的例子吗? #include reg52.h sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { ADDR3 = 1;//使能三八译码器 ENLED = 0;// ADDR2 =
[单片机]
基于51单片机的直流电机驱动(L298)
L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。 1,L298内部的原理图 2,L298 引脚符号及功能 3,L298的逻辑功能 当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,I
[单片机]
89C51单片机和8254-2实际步进式PWM输出
简介:介绍一种新型PWM输出的方式。它是用89C51作为主控部分,用8254-2可编程定时器/计数器来实现1Hz~3kHz步进式PWM的输出;具有分辨率高、反应速度快及占用CPU时间少的优点。 引言 脉宽调制(PWM)技术最初是在无线电技术中用于信号的调制,后来在电机调速中得到了很好的应用。本设计中要求输出PWM从1Hz~3kHz步进式递增,单步为1Hz。由于89C51的时钟最大能取24MHz,单指令周期为0.5μs,计数频率为×10 6Hz。当输出2999Hz和3000Hz时,若采用89C51内部计数器来计数,根本无法区别。因为计数频率为2MHz,单指令周期0.5μs,而要输出2999Hz时,计数应为666.889;输出30
[单片机]
89C<font color='red'>51单片机</font>和8254-2实际步进式PWM输出
51单片机基础之LCD1602
外观: 原理: LCD1602是一种工业字符型液晶,能够同时显示16x2即32个字符。 LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。 基本接线: 读状态:输入:RS=L,RW=H,E=H ----输出:D0~D7=状态字 写指令:输入:RS=L,RW=L,D0~D7=指令码 ----输出:无 读数据:输入:RS=H,RW=H,E=H ----输出:D0~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲
[单片机]
<font color='red'>51单片机</font>基础之LCD1602
51单片机数码管的动态显示
/******************************************* * 本节实验,需要加深理解锁存器,位选线, * 段选线等,以及防止重影的方法;和keil中数 * 组的定义; *另外想让8个数码管同时显示不同的数字, *靠的是程序的快速运行,和人眼的短时间缓冲原理实现的 *本例的延时设定是1ms,可以分别用100ms *等尝试一下 ******************************************/ #include reg52.h #define uchar unsigned char #define uint unsigned int
[单片机]
51单片机流水灯控制(5种方法)
实现流程: 1. 新建一个工程(新项目) 2. 查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚 3. 编写程序(通过查看原理图可以看到我们需要控制整个P2口以控制8个LED灯) 4. 编译程序,下载程序至开发板 5. 查看效果(调试) 进制转换表(因为单片机首先处理的是十六进制的数据,所以我们需要将二进制控制需求转换成十六进制去写代码): 控制代码: #include REGX52.H //头文件 #include Delay.h #include intrins.h /* ---------------------------------------------
[单片机]
<font color='red'>51单片机</font>流水灯控制(5种方法)
基于嵌入式控制器的电站废水处理的控制系统
锅炉作为热电站的主要设备,要求安全长周期运行,其中结垢是影响寿命的主要因素,对水的要求比较高。锅炉用水是将水在一定的温度和压力下加热产生蒸汽,用蒸汽作为传热和动力的介质,对于低压和中压锅炉,这种锅炉对水质要求稍低;而高压锅炉对水质要求非常高。凡能导致锅炉、给水系统及其它热力设备腐蚀、结垢及引起汽水共腾现象,使离子交换树脂中毒的杂质如溶解氧、可溶性二氧化硅、铁以及余氯等都应大部分或全部出去。在锅炉水处理中,锅炉补充水的离子交换水处理是最基本和最重要的水处理方法,我单位三个电站均采用这种方法。离子交换树脂失效后必须加碱或加酸进行还原,因此产生大量的酸碱废水,直接外排不但影响环境,而且受到环保部门的监视,造成不必要的损失,直接影响经
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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