历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2019年10月18日 | 51单片机自动凉衣服源程序电路图与实物图

2019-10-18 来源:eefocus

电路原理图如下:
 
制作出来的实物图如下:
 

 

单片机源程序如下:

#include

#include

#include      

#include        

#define uchar unsigned char

#define uint unsigned int


sbit DATA=P1^0;

sbit MOTOR_A_1=P2^5;   //电机控制脚

sbit MOTOR_A_2=P2^6;    //电机控制脚

sbit EN_MOTOR_A =P2^7;  //电机控制脚

sbit k1=P3^2;                               //按键

sbit k2=P3^3;                               //按键

sbit k3=P3^4;                               //按键

sbit k4=P3^5;                               //按键

sbit k5=P3^6;

sbit CS   = P1^2;

sbit Clk = P1^3;

sbit DATI = P1^4;

sbit DATO = P1^4;

unsigned char dat = 0x00;      

unsigned char count = 0x00;     

unsigned char CH;    

uchar mode=0;

sbit LED0=P2^3;

sbit LED1=P2^4;

uchar temp,humi; 

uchar error;                                //用于检验是否出现错误

uchar checksum,nn;                          //CRC                    

uchar nn;                                  //蜂鸣器                    

uchar TEMP_data[6];                         //用于记录实测的温度

uchar CO2_data[6];                         //用于记录实测的温度


uchar  U8FLAG,k;

uchar  U8count,U8temp;

uchar  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;

uchar  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

uchar  U8comdata;

uchar  count, count_r=0;

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

void Delay1(uint );

void  Delay_10us(void);

void  COM(void);

uchar RH(void);

unsigned char adc0832(unsigned char CH)

{

     unsigned char i,test,adval;

     adval = 0x00;

     test = 0x00;

     Clk = 0;       

     DATI = 1;

     _nop_();

     CS = 0;

     _nop_();

     Clk = 1;

     _nop_();

    if ( CH == 0x00 )      

    {

       Clk = 0;

       DATI = 1;      

       _nop_();

       Clk = 1;

       _nop_();

       Clk = 0;

       DATI = 0;      

       _nop_();

       Clk = 1;

       _nop_();

     }

     else

     {

       Clk = 0;

       DATI = 1;      

       _nop_();

       Clk = 1;

       _nop_();

       Clk = 0;

       DATI = 1;      

       _nop_();

       Clk = 1;

       _nop_();

     }

      Clk = 0;

      DATI = 1;

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

     {

       _nop_();

       adval <<= 1;

       Clk = 1;

       _nop_();

       Clk = 0;

       if (DATO)

          adval |= 0x01;

      else

          adval |= 0x00;

    }

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

      {

           test >>= 1;

           if (DATO)

              test |= 0x80;

           else

              test |= 0x00;

          _nop_();

          Clk = 1;

          _nop_();

          Clk = 0;

      }

      if (adval == test)      

           dat = test;

      _nop_();

       CS = 1;        

       DATO = 1;

       Clk = 1;

      return dat;

}



void Delay1(uint j)

{

    uchar i;

    for(;j>0;j--)

    {  

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

    }

}

void  Delay_10us(void)

{

    uchar i;

    i--;

    i--;

    i--;

    i--;

    i--;

    i--;

}

void  COM(void)

{

    uchar i;

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

    {

       U8FLAG=2;

     while((!DATA)&&U8FLAG++);

  Delay_10us();

  Delay_10us();

  Delay_10us();

    U8temp=0;

        if(DATA)U8temp=1;

  U8FLAG=2;

  while((DATA)&&U8FLAG++);    

     if(U8FLAG==1)break;


        

    }

}

//--------------------------------

//-----温湿度读取子程序 ------------

//--------------------------------

//----以下变量均为全局变量--------

//----温度高8位== U8T_data_H------

//----温度低8位== U8T_data_L------

//----湿度高8位== U8RH_data_H-----

//----湿度低8位== U8RH_data_L-----

//----校验 8位 == U8checkdata-----

//----调用相关子程序如下----------

//---- Delay();, Delay_10us();,COM(); 

//--------------------------------

uchar RH(void)

{

    DATA=0;        //主机拉低18ms 

Delay1(180);      //原来为5

DATA=1;      //总线由上拉电阻拉高 主机延时20us

Delay_10us();

Delay_10us();

Delay_10us();

Delay_10us();

DATA=1;         //主机设为输入 判断从机响应信号 

if(!DATA)      //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行   

{

     U8FLAG=2;

     

     while((!DATA)&&U8FLAG++); //判断从机是否发出 80us 的低电平响应信号是否结束  

     U8FLAG=2;

    while((DATA)&&U8FLAG++);    //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态

     COM();      //数据接收状态

     U8RH_data_H_temp=U8comdata;

     COM();

     U8RH_data_L_temp=U8comdata;

     COM();

     U8T_data_H_temp=U8comdata;

     COM();

     U8T_data_L_temp=U8comdata;

     COM();

     U8checkdata_temp=U8comdata;

     DATA=1;

     U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); //数据校验

     if(U8temp==U8checkdata_temp)

     {

        U8RH_data_H=U8RH_data_H_temp;

        U8RH_data_L=U8RH_data_L_temp;

        U8T_data_H=U8T_data_H_temp;

        U8T_data_L=U8T_data_L_temp;

        U8checkdata=U8checkdata_temp;

     }

  return 1;

}

else            //传感器不响应

{

    return 0;

}

}

void delay(uint z)                          //延时函数z为毫秒数

{

   int a,b;

   for(a=z;a>0;a--)

   for(b=120;b>0;b--);

}

          

void key()

{

   

   if (k1==0)                               //调整按键检测

   {

      delay(10);

      if (k1==0)

      {

         mode=!mode;

    EN_MOTOR_A=0;  //电机启动,等于0停止


         while(k1==0);

         

      }

   }

   if (k2==0)                               //调整按键检测

   {

      delay(10);

      if (k2==0)

      {

      if(mode==0)

   {

    EN_MOTOR_A=1;  //电机启动,等于0停止

    MOTOR_A_2 =0;  //正转

    MOTOR_A_1 =1;  //反转停止

   }

         while(k2==0);

         

      }

   }

    if (k3==0)                               //调整按键检测

   {

      delay(10);

      if (k3==0)

      {

      if(mode==0)

   {

    EN_MOTOR_A=1;  //电机停止

    MOTOR_A_1 =0;  //反转

    MOTOR_A_2 =1;  //正转停止

   }

         while(k3==0);

         

      }

   }

   if(k4==0)

   {

      delay(10);

      if(k4==0)

      {

      if(MOTOR_A_2==0)

   EN_MOTOR_A=0;  //电机停止

         

      }

   }

    if(k5==0)

   {

      delay(10);

推荐阅读

史海拾趣

Antenna Factor公司的发展小趣事

为了进一步扩大市场份额,Antenna Factor公司积极寻求与各行各业的合作伙伴建立合作关系。他们与多家通信设备制造商、电信运营商以及互联网企业签订了战略合作协议,共同推动无线通信技术的发展和应用。这些合作不仅为公司带来了更多的商业机会,也提升了其在行业中的影响力。

Euroquartz公司的发展小趣事

Euroquartz Limited成立于1982年,其发展历程中,1987年的一次收购具有重要意义。这一年,Euroquartz收购了Brookes Crystals,这是一家在第二次世界大战期间形成的英国石英晶体制造商。这一收购使Euroquartz在石英晶体领域获得了重要的技术积累和市场地位,成为了英国重要的变频控制产品制造商。

DeLorme公司的发展小趣事

随着公司业务的不断发展,DeLorme公司开始积极寻求市场扩张的机会。他们通过与国外知名品牌的合作,将自己的产品推向了国际市场。同时,他们还积极参与国际性的户外活动和赛事,通过这些活动提高品牌知名度和影响力。在国际市场的竞争中,DeLorme公司凭借其独特的技术优势和优质的产品质量逐渐获得了认可。

DACHANG公司的发展小趣事

随着公司实力的不断增强,DACHANG公司开始积极拓展国际市场。公司参加了多个国际电子展览会,与国际同行进行了广泛的交流与合作。同时,DACHANG公司还积极寻求与国际知名企业的合作机会,不断提升自己在全球电子产业链中的地位和影响力。

Benchmarq Microelectronics Inc公司的发展小趣事

随着半导体技术的不断进步,Benchmarq Microelectronics Inc始终保持着对技术创新的追求。公司加大研发投入,引进先进的生产设备和技术人才,不断推出具有创新性的半导体产品。其中,一款具有高性能、低功耗特点的芯片是公司技术创新的代表作。这款芯片采用了先进的工艺和材料,实现了更高的集成度和更低的功耗,满足了客户对高性能、长续航的需求。同时,公司还不断优化产品设计和生产流程,提高产品质量和生产效率,为客户提供了更加优质、可靠的产品。

GISMA Steckverbinder GmbH公司的发展小趣事

GISMA深知客户需求的重要性,因此始终将客户需求放在首位。公司拥有一支专业的研发团队和客户服务团队,能够根据客户的具体需求量身定制产品,提供从设计到生产的全方位服务。这种定制化服务模式不仅赢得了客户的广泛赞誉,也进一步巩固了GISMA在电子行业中的市场地位。通过深入了解客户需求,GISMA不断优化产品设计和生产流程,为客户提供更加优质的产品和服务。

问答坊 | AI 解惑

电子元器件:第一块DSP板设计中的点滴

从2006.8.1开始正式接触DSP到现在也已经一个多月了,从开始的在自己的开发板上调试熟悉DSP到现在要自己设计DSP,真的是很不容易.我想把在设计中遇到的问题和常用的电路芯片选择归纳如下:     1.电源部分使用了AC-DC5V的变压器,在引入板子 ...…

查看全部问答>

LM3S移植ucos

不知道大家用LM3S系列的多不,目前有不没有移植ucos的吗?不过在移植 时可以参考sTM32的移植例子! 我发个文档供大家参考: 1:文档 2:iAR工程: 以上内容仅供参考! 建议大家自己移植!…

查看全部问答>

uc/os-ii

eeworld真是个好东西,什么问题不懂 一提出来就可以解决,我已经受益匪浅了。 这里有uc/os的版块吗?我很需要和做这方面的人交流交流啊…

查看全部问答>

socket编程可不可以用域名

我原来的socket程序用ip,现在我申请了域名,想把ip换为域名,怎么改写原来的程序???…

查看全部问答>

请问一个c8051f单片机时钟使用的问题

现在用c8051f020的片子,使用的是外部振荡器产生时钟。可是我看datasheet上说串口使用系统时钟,是串口必须使用片内的时钟产生所需的波特率吗?同一个片子能既使用外部时钟有使用片内的时钟吗,谢谢!…

查看全部问答>

【请推荐一块数据I/O接口卡】

需要选择一款数字I/O卡,主要是用来进行信号的延时,输入的是光电开关转换的数字量,经过I/O卡的延时处理,输出触发信号去驱动摄像机进行数据采集,延迟大约0.5秒,速度不需要很快,希望用过类似性价比比较高的高手推荐一款,价格在1000元以内。…

查看全部问答>

职业培训机构首倡“中小软件企业人才供应计划”

本报讯:近日,瑞海软件公司技术负责人李成坐在北大青鸟APTECH培训中心内设立的招聘现场,正根据笔试和面试结果宣读招聘的学员名单。这一次,李成在北大青鸟APTECH培训中心又招聘到3名java方向的技术开发人员。为满足像瑞海公司这样的IT人才需求, ...…

查看全部问答>

LED显色指数是什么意思

replyreload += \',\' + 759478;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>