找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2836|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机之ADC0832风速风向传感器附带DHT11

[复制链接]
跳转到指定楼层
楼主
ID:539117 发表于 2020-4-30 11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮师兄做的,其中一部分是风速风向在lcd上显示
#include“reg52.h”
#define uchar unsigned char
#define uint unsigned int

uchar wind_dat[16];
void ADC0832_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}

/**********************************ADC0832********************************/
uchar choiceADC(uchar Channel) //获取数值返回。入口:通道(0或1)。出口:数值。
{
         uchar i,Dat1=0,Dat2=0;
         CLK=0;
         DI=1;
         CS=0;
         CLK=1;
         CLK=0; //第一脉冲,开始位
         DI=1;
         CLK=1;
         CLK=0; //第二脉冲,模式选择
         DI=Channel;//通道选择,0或1
         CLK=1;
         CLK=0; //第三脉冲,通道选择
         DI=1; //释放输入线
         for(i=0;i<8;i++)   //从高到低取一次数
         {
            CLK=1; //下降沿有效
            CLK=0;
            if(DO) Dat1|=0x80>>i;
         }
         for(i=0;i<8;i++)   //从低到高取一次数
         {
                  if(DO) Dat2|=0x01<<i;
                  CLK=1; //下降沿有效
                  CLK=0;
         }
         CS=1;
         DI=1;
         CLK=1;  //数据读取完成,释放所有数据线
         if(Dat1==Dat2) return Dat1; //校验两次数相等,输出
         else return 0;
}
void wind_receive()
{         
        wind_dat[0] ='D' ;
        wind_dat[1] ='I';
    wind_dat[2] ='R';
        wind_dat[3] =':';       
       
        if(choiceADC(0)*5/255%10*72==0&&choiceADC(0)*5/255%10*72==360)
        {
                wind_dat[4] ='N';
                wind_dat[5] =' ';
                }
        if(choiceADC(0)*5/255%10*72>0&&choiceADC(0)*5/255%10*72<90)
        {
                wind_dat[4] ='E';
                wind_dat[5] ='N';
                }
        if(choiceADC(0)*5/255%10*72==90)
        {
            wind_dat[4] ='E';
                wind_dat[5] =' ';
                }
        if(choiceADC(0)*5/255%10*72>90&&choiceADC(0)*5/255%10*72<180)
        {
                wind_dat[4] ='E';
                wind_dat[5] ='S';
                }
        if(choiceADC(0)*5/255%10*72==180)
        {
                wind_dat[4] ='S';
                wind_dat[5] =' ';
                }
        if(choiceADC(0)*5/255%10*72>180&&choiceADC(0)*5/255%10*72<270)
        {
                wind_dat[4] ='W';
                wind_dat[5] ='S';
                }
        if(choiceADC(0)*5/255%10*72==270)
        {
                wind_dat[4] ='S';
                wind_dat[5] =' ';
                }
        if(choiceADC(0)*5/255%10*72>270&&choiceADC(0)*5/255%10*72<360)
        {
                wind_dat[4] ='W';
                wind_dat[5] ='N';
                }
    wind_dat[6] =' ';
        wind_dat[7] ='S';
    wind_dat[8] ='P';
    wind_dat[9] ='E';
    wind_dat[10] =':';
        if(choiceADC(1)*5/255%10*6>10)
        {
        wind_dat[11] ='0'+(choiceADC(1)*5/255*6/10);
        wind_dat[12] ='0'+(choiceADC(1)*5/255*6%10);  
        wind_dat[13] ='M';
        wind_dat[14] ='/';
        wind_dat[15] ='S';
        }
        else
        {
        wind_dat[11] ='0'+(choiceADC(1)*5/255*6);
        wind_dat[12] ='M';
        wind_dat[13] ='/';
        wind_dat[14] ='S';
        wind_dat[15] =' ';
        }

}

void main()
{   
   uint i;
   LcdInit();   //1602初始化  
   while(1)
   {   
        wind_receive();
        LcdWriteCom(0x80+0x40);
        for(i=0;i<16;i++)       
         {                         
             LcdWriteData(wind_dat[i]);                          
        }                                      
   }



sensor.rar

37.76 KB, 下载次数: 53, 下载积分: 黑币 -5

温湿度和风速风向在Lcd显示

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:539117 发表于 2020-4-30 11:42 | 只看该作者
不是师兄是室友,打错了
回复

使用道具 举报

板凳
ID:304785 发表于 2020-7-31 17:37 | 只看该作者
这个是实物的程序吗?风速和风向传感器分别用的什么可以告诉一下吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表