温湿度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉大概,传统的指针式的温度计只能指示温度,但是精度低,显示不够直观,本系统可以数字化显示温湿度,并可以在电脑端查看。
功能描述
1、采用51单片机作为主控芯片;
2、采用LCD1602作为显示模块;
3、采用DHT11传感器检测温湿度信息;
4、采用串口将温湿度信息发送至电脑端;
5、当温湿度超过设定的阈值时,报警指示灯闪烁,蜂鸣器报警;
6、可以通过按键设定温湿度报警阈值;
按键说明
1、设置键:进入设置模式;
2、加值键:对选中参数进行+1;
3、减值键:对选中参数进行-1;
电路设计
采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。
仿真设计
采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
程序设计
/*********************************************************/
// 10us级延时程序
/*********************************************************/
void Delay10us()
{
_nop_(); // 执行一条指令,延时1微秒
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
} /*********************************************************/
// 读取DHT11单总线上的一个字节
/*********************************************************/
uchar DhtReadByte(void)
{
bit bit_i;
uchar j;
uchar dat=0; for(j=0;j<8;j++)
{
while(!DHT11_P); // 等待低电平结束
Delay10us(); // 延时
Delay10us();
Delay10us();
if(DHT11_P==1) // 判断数据线是高电平还是低电平
{
bit_i=1;
while(DHT11_P);
}
else
{
bit_i=0;
}
dat<<=1; // 将该位移位保存到dat变量中
dat|=bit_i;
}
return(dat);
}
源文件获取
关注公众号【电子开发圈】,首页回复“温湿度”获取;
标签:0429,温湿度,dat,串口,设计,bit,nop,DHT11 From: https://blog.51cto.com/u_15856507/5814161