一起玩儿Proteus仿真(C51)——08 基于DS18B20和LCD1602的数字温度计(二)

本文详细介绍了如何通过DS18B20温度传感器和LCD1602液晶显示器,配合C51单片机实现一个数字温度计。包括硬件连接、控制信号处理、LCD1602接口函数编写以及DS18B20温度读取和显示温度的完整程序流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:本文介绍如何使用DS18B20和LCD1602实现一个数字温度计

LCD1602与单片机的连接通常有两种方式,一种是直接控制方式,另一种是所谓的间接控制方式。它们的区别只是所用的数据线的数量不同,其他都一样。在这里我们采用直接控制的方式,将LCD1602的8根数据线和3根控制线E,RS和R/W与单片机直接相连。VO引脚是液晶对比度调试端,连接一个10kΩ的电位器即可实现对比度的调整,实际项目中也可以采用将一个适当大小的电阻从该引脚接地的方法进行调整,不过该电阻的大小应通过事先的调试来决定。

DS18B20只有三个引脚,电源、数据线和接地。将数据线直接连接到单片机的引脚就可以了。整个仿真系统的原理图如下所示:

下面就来逐步的看一下仿真程序的实现方法。在程序的最开始还是引入头文件、宏定义和配置常量参数部分。具体内容如下所示:

#include <reg51.h>

#include <intrins.h>

#include <string.h>

#include <stdio.h>

#define uchar unsigned char

#define uint unsigned int

// LCD1602控制引脚定义

sbit RS = P2^0;

sbit RW = P2^1;

sbit E = P2^2;

// 18B20引脚定义

sbit DQ = P2^3;

这些引脚的定义需要按照实际的接线方法来进行,如果与上面的原理图不同,那么请进行修改。

接下来就是在C51中最经常使用到的延时函数的声明和实现了。在这里定义了2个延时函数,如下所示:

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

//     延时函数

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

void delayUs2x(uchar t)

{   

 while(--t);

}

void delayMs(uchar t)

{

 while(t--)

 {

   //大致延时1mS

   delayUs2x(245);

 delayUs2x(245);

 }

}

接下来就是对LCD1602进行控制的各个函数了。对LCD1602进行控制的关键点在于把握对三个控制信号RS、R/W和E的组合使用。在这里实现了以下几个函数:

busyCheck():检查LCD1602是否处于忙状态,用于确定是否可以接收新的指令。

lcdExec():通知LCD1602执行刚刚下发的命令。

lcdWCmd():写入命令函数。

lcdPos():设置光标位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起玩儿科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值