历史上的今天
返回首页

历史上的今天

今天是:2024年12月06日(星期五)

正在发生

2019年12月06日 | 51单片机控制DHT11在1602上显示温湿度的程序

2019-12-06 来源:51hei

单片机源程序如下:

#include  

#define uint unsigned int 

#define uchar unsigned char 

typedef bit BOOL; 

sbit io = P2^0; 

sbit rs = P2^6;  

sbit rw = P2^5; 

sbit ep = P2^7; 

uchar data_byte; 

uchar RH,RL,TH,TL;

/********延时模块***********/ 

void delay(uchar ms) 

{  // 延时子程序 

uchar i; 

while(ms--) 

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

}

void delay1()//延时10us 

uchar i; 

i--; 

i--; 

i--; 

i--; 

i--; 

i--; 

void longdelay(uchar s) //长延时 

while(s--) 

  delay(60); 

}

BOOL lcd_bz()//测试LCD忙碌状态 

BOOL result;  

rs = 0;  

rw = 1; 

ep = 1; 

result = (BOOL)(P0 & 0x80); 

ep = 0;  

return result;  

}

void write_cmd(uchar cmd)// 写指令 

{  

while(lcd_bz()); 

rs = 0; 

rw = 0; 

ep = 0; 

P0 = cmd; 

ep = 1; 

ep = 0; 

}

void write_addr(uchar addr)//写地址

write_cmd(addr|0x80); 

}

void write_byte(uchar dat)//写字节 

{  

while(lcd_bz()); 

rs = 1; 

rw = 0; 

ep = 0; 

P0 = dat;          

ep = 1; 

ep = 0; 

}

void lcd_init()// 初始化 

{

write_cmd(0x38); 

delay(1); 

  write_cmd(0x08); 

delay(1); 

write_cmd(0x01); 

delay(1); 

write_cmd(0x06); 

delay(1);  

write_cmd(0x0c); 

delay(1);

}

void display(uchar addr, uchar q)//在某一地址上显示一字节 

delay(10); 

write_addr(addr); 

write_byte(q); 

longdelay(2); 

}

void start()//开始信号 

{

io=1; 

delay1(); 

io=0; 

delay(20);//>18ms  

io=1; 

delay1();//20-40us 

delay1(); 

delay1(); 

delay1(); 

delay1(); 

}

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

uchar i,temp,count; 

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

   count=2;  

  while((!io)&&count++)//等待50us低电平结束 

  temp=0; 

  delay1();

  delay1();

  delay1();

  delay1(); 

   if(io==1)

  temp=1; 

  count=2;

  while((io)&&count++); 

  if(count==1)break; 

data_byte<<=1; 

  data_byte|=temp; 

return data_byte; 

}

void receive()//接收数据 

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

   uchar count; 

start();//开始信号 

io=1; 

if(!io)//读取DHT11响应信号 

  count=2;

  while((!io)&&count++);//DHT11高电平80us是否结束 

  count=2; 

  while((io)&&count++); 

  R_H=receive_byte(); 

  R_L=receive_byte(); 

  T_H=receive_byte(); 

  T_L=receive_byte(); 

  check=receive_byte(); 

  io=0;//拉低延时50us 

  delay1();

   delay1();

  delay1();

  delay1();

  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; 

  } 

void main() 

{

lcd_init(); 

delay(10); 

while(1) 

  receive(); 

  delay(100); 

  display(0x00,'R'); 

  display(0x01,':'); 

  display(0x02,RH/10+0x30); 

   display(0x03,RH%10+0x30);

  display(0x04,'%'); 

  display(0x40,'T'); 

  display(0x41,':');                                 

  display(0x42,TH/10+0x30); 

  display(0x43,TH%10+0x30); 

display(0x44,0xdf); 

  display(0x45,0x43); 

}



推荐阅读

史海拾趣

Burr-Brown公司的发展小趣事

Burr-Brown公司,成立于1956年,初期仅有两名雇员,并得益于房地产开发商的支持。公司起初专注于制造模拟集成电路,第一年的销售总额为1600美元。创始人布朗怀揣雄心壮志,提出在一年内将厂房扩大到1200平方英尺,并期望销售收入能增长到7200美元。随着销售的稳步增长,公司不断迁往更大的设施,最终在1965年购买了附近的机场,为公司未来的成长奠定了坚实的基础。

Dresden Elektronik公司的发展小趣事

Dresden Elektronik公司始终将产品质量放在首位。他们建立了严格的质量管理体系,从原材料采购到生产、检测、包装等各个环节都严格把关。这种对品质的执着追求使公司的产品在市场上赢得了良好的口碑,也为公司赢得了众多忠实的客户。

台湾肯尼威(CANNYWELL)公司的发展小趣事

在品质保障的基础上,肯尼威开始积极拓展市场。公司不仅在台湾本地建立了完善的销售网络,还成功进军国际市场。通过与多家国际知名企业的合作,肯尼威的产品逐渐打入电子、机械、医疗器械等多个领域。同时,公司还积极参加国际展会,展示最新的技术和产品,吸引了众多海外客户的关注。

科达嘉CODACA公司的发展小趣事

科达嘉电子不仅立足于深圳,还积极布局全球市场。公司通过参加国际电子展会、与国际知名企业合作等方式,不断拓展海外市场。同时,科达嘉还根据客户需求,提供个性化的电感解决方案,赢得了众多客户的信任和合作。公司的主要产品,如一体成型电感、大电流电感等,已广泛应用于工业控制、汽车电子等多个领域。

ABB Group公司的发展小趣事

科达嘉电子不仅立足于深圳,还积极布局全球市场。公司通过参加国际电子展会、与国际知名企业合作等方式,不断拓展海外市场。同时,科达嘉还根据客户需求,提供个性化的电感解决方案,赢得了众多客户的信任和合作。公司的主要产品,如一体成型电感、大电流电感等,已广泛应用于工业控制、汽车电子等多个领域。

Fukushima Futaba Electric Co Ltd公司的发展小趣事

近年来,全球电子行业面临着诸多挑战,包括技术更新换代迅速、市场竞争加剧等。Futaba Electric积极应对这些挑战,不断加大研发投入,推出了一系列具有创新性和竞争力的新产品。同时,公司还注重与上下游产业链的合作与协同,通过整合资源、优化流程等方式降低成本、提高效率。此外,Futaba Electric还积极响应环保政策,推动绿色制造和可持续发展。这些努力使得公司在面对挑战时依然能够保持稳健的发展态势。

问答坊 | AI 解惑

FPGA巨头赛灵思调整策略做大市场

随着Altera推出65nm工艺的FPGA,全球两大FPGA巨头又开始在65nm节点开始了新一轮的竞争。不过,近日赛灵思公司亚太区市场营销总监郑馨南透露:赛灵思将会有新的举措-加强FPGA在传统的通信、消费领域以及新兴汽车电子、医疗电子等领域的渗透。 与ASI ...…

查看全部问答>

节能灯光源频闪的危害与对策

节能灯光源频闪的危害与对策 一、什麼是光源频闪? 这里需要区别一下频闪与频闪效应: 1、频闪:光源频闪就是光源发出的光随时间呈快速、重复的变化,使得光源跳动和不稳定。是指电光源光通量波动的深度。光通量波动深度越大,频闪越严重。而电 ...…

查看全部问答>

WinCE6 SD 卡驱动?

驱动运行输出 FSDMGR!StoreDisk_t::MountStore:Opened the Store\"Dsk1\" hstore=0xd0970d90 FSDMGR!StoreDisk_t::MountStore:Genometry:NumSec=991232 BytesPerSec=512 FreeSec=0 BiggestGreatable=0 WinCE中没有SD卡的盘符,可能是驱动问题,还 ...…

查看全部问答>

FileMapping读取size<=4096的文件后异常!

步骤: 1) FileMapping读取size 4096的文件2 3) FileMapping读取另一个文件3, MapViewOfFile()返回地址中的内容是文件2的. 不知道是不是driver层的问题?…

查看全部问答>

我的光驱是DVD的,为什么不能读DVD-R格式的刻录碟?

我的光驱是PIONEER DVD-ROM DVD-122. 最近买了个刻录机,刻了几张CD-R格式的盘和DVD-R格式的盘, 结果发现光驱不能读这几张DVD-R格式的碟,但刻好的CD-R格式的盘都可读; 买来的CD碟,普通DVD的电影碟和买的DVD游戏碟也都行。 我Nero InfoTool测 ...…

查看全部问答>

一个人的奋斗历程(推荐,转载)

一个人的奋斗历程 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望 能够为国内it的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有 方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友 ...…

查看全部问答>

【低功耗】可编程逻辑阵列减少毛刺的低功耗布线算法

随着可编程逻辑门阵列(FPGA,Field Programmanle Gate Array)应用的不断普及,便携式设备和无线设备的涌现,过去对于FPGA主要关心的速度、单片容量、费用以及可靠性等,现在对于低功耗FPGA的需 求,与速度、容量、费用等到了一样的高度,成为FPG ...…

查看全部问答>

zigbee开发协议栈怎么学习

想请高手指点下 1)开发zigbee协议栈要掌握到什么程度? 2)z-stack2007中有个GenericAPP应用例子,关于绑定那里不太明白,希望能指点下,在处理函数里面主要 3)要开发一些应用,是不是还要了解开发板硬件方面的东西? …

查看全部问答>