历史上的今天
返回首页

历史上的今天

今天是:2024年11月11日(星期一)

正在发生

2020年11月11日 | 51单片机OLED+dht11显示温度的源程序

2020-11-11 来源:51hei

入门51单片机一个多月,参加一个比赛熬夜写出了OLED+DHT11程序。


单片机源程序如下:

#include "REG51.h"

#include "oled.h"

#include

typedef unsigned char BYTE;

typedef unsigned int WORD;

#define uint unsigned int

#define uchar unsigned char

sbit io=P1^2;//dht11data端接单片机的P1^0口//

sbit IN1 = P1^0;                        

sbit IN2 = P1^1;  //输入电机接口

sbit K1  = P3^0;

sbit K2  = P3^1;          //按键接口

uchar data_byte;


uchar RH,RL,TH,TL;


int count1,a;

void DelayUs2x(unsigned char t)


{


        while(--t);


}


void DelayMs(unsigned char t)


{


        while(t--)


        {


//大致延时1mS


        DelayUs2x(245);


        DelayUs2x(245);


        }


}


void delay(uchar ms) //延时模块//

{


  uchar i;


  while(ms--)                 


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


}


void delay1()//一个for循环大概需要8个多机器周期一个机器周期为1us晶振为12MHz也就是说本函数延时8us多此延时函数必须德稍微精确一点


{


  uchar i;


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


}


//电机的程序

void ZHUAN(){

       

          IN2=0;

   }



void speed(int cnt,int sd)

{  

if(cnt        {

        IN1=1;

        }

else  

        {

        IN1=0;

        }


}  

void turn(int cnt,int sd)                                   

{  

    ZHUAN();          

        speed(cnt,sd);

}  




void start()//开始信号


{


  io=1;


  delay1();


  io=0;


  delay(25);// 主机把总线拉低必须大于18ms保证DHT11能检测到起始信号


  io=1;    //发送开始信号结束后拉高电平延时20-40us


  delay1();//以下三个延时函数差不多为24us符合要求


  delay1();


  delay1();


}

uchar receive_byte()//接收一个字节//


{


  uchar i,temp;


  for(i=0;i<8;i++)//接收8bit的数据


  {


        while(!io);//等待50us的低电平开始信号结束


        delay1();//开始信号结束之后延时26us-28us以下三个延时函数


         delay1();


        delay1();


        temp=0;//时间为26us-28us表示接收的为数据'0'


        if(io==1)


         temp=1; //如果26us-28us之后还为高电平则表示接收的数据为'1'


    while(io);//等待数据信号高电平'0'为26us-28us'1'为70us


        data_byte<<=1;//接收的数据为高位在前右移


         data_byte|=temp;


  }


  return data_byte;


}

void receive()//接收数据//

{


  uchar T_H,T_L,R_H,R_L,check,num_check,i;


  start();//开始信号//


  io=1;   //主机设为输入判断从机DHT11响应信号


  if(!io)//判断从机是否有低电平响应信号//


  {  

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


        while(io);//判断从机发出 80us 的高电平是否结束如结束则主机进入数据接收状态


        R_H=receive_byte();//湿度高位


        R_L=receive_byte();//湿度低位


        T_H=receive_byte();//温度高位


        T_L=receive_byte();//温度低位


        check=receive_byte();//校验位


        io=0; //当最后一bit数据接完毕后从机拉低电平50us//


        for(i=0;i<7;i++)//差不多50us的延时


        delay1();


        io=1;//总线由上拉电阻拉高进入空闲状态


        num_check=R_H+R_L+T_H+T_L;


        if(num_check==check)//判断读到的四个数据之和是否与校验位相同


        {


   RH=R_H;


   RL=R_L;


   TH=T_H;


   TL=T_L;


   check=num_check;

        }

  }

}


int main(void)

{       

        TMOD=0x01;

        EA=1;  

        TH0=(65536-1000)/256;

        TL0=(65536-1000)%256;

        ET0=1;

        TR0=1;

       

        a = 100;

                OLED_Init();                        //初始化OLED  

                OLED_Clear() ;

                OLED_ShowCHinese(36,0,0);

                OLED_ShowCHinese(54,0,1);

                OLED_ShowCHinese(72,0,2);

                OLED_ShowCHinese(0,2,3);

                OLED_ShowCHinese(18,2,5);

                OLED_ShowCHinese(0,4,4);

                OLED_ShowCHinese(18,4,5);

                OLED_ShowString(37,4,":",16);

                  OLED_ShowString(37,2,":",16);

        while(1)

        {

            turn(count1,a);


                if(K1==0)


                {


                        DelayMs(100);


                        if(K1==0)// 去抖动


                        {

                           if(a>=0)

                           a=a-10;

                        }


                        }

                if(K2==0)


……………………


推荐阅读

史海拾趣

Davies Molding公司的发展小趣事

随着电子行业的快速发展,Davies Molding公司意识到,只有不断创新,才能在市场上保持领先地位。因此,公司积极引进先进的生产技术和设备,不断提升自身的研发能力。通过不断的技术创新,Davies Molding公司成功推出了一系列具有竞争力的新产品,满足了市场对高品质塑料注塑成型产品的需求。

EETools公司的发展小趣事

面对快速变化的市场环境和不断涌现的新技术,EETools始终保持开放和创新的姿态。公司不仅持续关注行业动态和技术趋势,还积极探索新的业务领域和增长点。例如,EETools正在研发基于人工智能和物联网技术的嵌入式开发工具,以满足未来市场的需求。同时,公司还计划进一步拓展海外市场,提升品牌在国际市场的竞争力。这些举措将为EETools的未来发展奠定坚实的基础。

Anytek Technology Corporation Ltd公司的发展小趣事

Anytek始终坚持以创新为驱动,不断推出具有市场竞争力的新产品。2007年,公司自主研发的创新型产品“高清汽车行车记录仪”面世,这款产品以其高清画质、稳定性能和易用性等特点,迅速占领了市场制高点。随后,Anytek又于2008年推出了行业唯一一款双镜头的“双镜头行车记录仪”,这一创新设计进一步提升了行车记录仪的功能性和实用性,赢得了市场的广泛认可。

Bomar公司的发展小趣事

近年来,随着物联网和人工智能技术的快速发展,智能化物流成为了电子行业的新趋势。Bomar公司敏锐地捕捉到了这一市场机遇,开始将业务范围拓展至智能化物流领域。通过与深兰科技等公司的合作,Bomar公司成功推出了智能化物流、仓储装备以及清洁机器人等产品,并成功销往欧洲市场。这些产品的推出不仅提升了Bomar公司的市场竞争力,也为公司的未来发展开辟了新的增长点。

广东华裕(GDHY)公司的发展小趣事

90年代初,电子行业的竞争日益激烈,Bomar公司为了保持市场领先地位,开始寻求与全球优秀制造商的合作。在这一背景下,公司与一些精选的亚洲工厂建立了密切的合作关系。这些工厂按照Bomar公司的规格和标准进行生产,确保了产品质量的稳定性和一致性。通过与亚洲工厂的合作,Bomar公司成功降低了生产成本,提高了生产效率,进一步巩固了其在全球市场的地位。

全鹏(CHAMPION)公司的发展小趣事

为了提升国际市场竞争力,全鹏公司一直致力于提高产品质量和管理水平。在2014年,全鹏电子科技有限公司成立,并成功通过了ISO9001国际质量管理体系、ISO14001环境管理体系认证和汽车与医疗器材体系IATF/16949认证。这些认证不仅证明了全鹏公司在质量管理方面的实力,也为其在国际市场上赢得了更多的信任和机会。

问答坊 | AI 解惑

自己制作12V-24V车载电源

自己制作12V-24V车载电源 …

查看全部问答>

在杭州的同行谁有s3c2450的开发板,借用一下

在杭州的同行谁有S3C2450的开发板,12M 晶振, 64M DDR2 内存的板子,我想借用下测试下代码。我现在的板子DDR2内存没有工作,我用Samsung WinCE NBoot 和 测试代码的配置初始化DDR2都不能正常工作,我想确认下是代码问题还是硬件问题。大家交个朋友 ...…

查看全部问答>

VC++6.0的MSComm控件中如何实现波特率更高的通讯

    正在编写使用VC++6.0的MSComm控件做通讯的东西,不过实现不了230400或256000波特率的通讯,请问有什么办法?            是MSComm不够格?还是需要其他什么办法?…

查看全部问答>

求一wince的画图软件

不知哪位有过这种软件,希望有靓仔能提供给我啊,相关信息也行啊, QQ:947218069…

查看全部问答>

自己设计的板子为什么单片机容易坏?

小弟最近做了一个板子,用的片子是at89s52的,今天上电成功,液晶屏也成功,但是通电静置半小时液晶屏无显示,用万用表测单片机引脚,有的电压不到3v,放到isp下载器上,无法完成下载,换了一片单片机,液晶屏正常工作,然而又过了一会儿,这块也坏 ...…

查看全部问答>

CSR BlueLab蓝牙开发资料、SPI仿真器(SPI下载器)转让

您好 本人全新CSR蓝牙开发工具闲置转让: 你需要CSR 蓝牙开发的SPI仿真头(下载线)的吗? 具有UART-232转接口、复位键、HOLD键、 兼容1.8V  I/O口,串口收发可以倒换或短接,面积小巧、使用方便。 支持CSR的BlueLab、BlueSuite ...…

查看全部问答>

谁有Wince4.2或5.0下的 CP2101驱动啊

谁有Wince4.2或5.0下的 CP2101驱动啊 可以给我发一份吗? 邮箱smloveflu@163.com 谢谢啦…

查看全部问答>

请问嵌入式Linux是怎么回事?

   我想转投嵌入式Linux系统开发,可是不知道嵌入式Linux是在Linux下用C/C++开发,还是用Linux本身的语法在Shell中开发?另外如果是用C/C++开发的话是用C开发的多还是用C++多?我有一点C和C++的基础,但是不多,不知道这两个语言在Linux ...…

查看全部问答>

为何要努力实现环路补偿

为何要努力实现环路补偿?…

查看全部问答>

监测客车所载人数用什么传感器比较好?

如题:监测客车所载人数用什么传感器比较好?…

查看全部问答>