DS18B20测温与数码管显示

       原本要写一篇DS18B20测温LCD1602显示的实验,应关注者的要求先写了一篇DS18B20测温与数码管显示的实验。DS18B20测温与数码管显示是通过51单片机读取DS18B20的温度值,然后实时的通过数码管显示当前温度值。

1.系统原理图(回复关键字DS18B20,自动获取原理图代码下载连接)

       数码管采用的共阳极数码管,数据口段码接单片机的P0口,位选信号接的单片机的P2.0、P2.1、P2.2、P2.3。其中P2.0控制百位显示,P2.1控制十位显示,P2.2控制各位及小数点显示,P2.3为小数位显示控制端。共阳数码管与单片相连时单片机的灌电流极小,不能用来驱动数码管,需要接三极管放大电流来点亮数码管,三极管采用NPN型的接法如图所示。

  1. 图片

2.系统主程序

void main()
{
 
  float tmp=0.0;
  int count = 0;    
    unsigned int temp=0;
    P2=0X00;
  dsInit();
    while(1)
    {
        if(count >= 100)
        {
            sendChangeCmd();
          tmp=getTmpValue();
            temp=(unsigned int)(tmp*10.0);
            count = 0;
        }
        LEDdisplay(temp);
        count++;
    }
}   
 

3.数码管显示代码

/*******************************************************************************
* 函 数 名 :LEDdisplay
* 函数功能 :循环显示各个位上的数据
* 输    入 :num要显示的数据
* 输    出 :无
*******************************************************************************/
void LEDdisplay(unsigned int num)
{
    unsigned char qian,bai,shi,ge;
    qian=num/1000;
    bai=num%1000/100;
    shi=num%100/10;
    ge=num%10;
    
    wela_1 = 0;      //关闭所有数码管
    wela_2 = 0;
    wela_3 = 0;
    wela_4 = 0;    
    
    wela_3=1;  //显示百位
    LED_PORT=table[bai];
    Delay_ms(1);
    LED_PORT = 0xff;
    wela_3=0;
    
    wela_2=1;  //显示十位
    LED_PORT=table[shi];
    xiaoshudian=0;
    Delay_ms(1);
    LED_PORT = 0xff;
    wela_2=0;
    
    wela_1=1;  //显示个位
    LED_PORT=table[ge];
    Delay_ms(1);
    LED_PORT = 0xff;
}

4.仿真运行视频见链接:DS18B20测温与数码管显示(回复关键字DS18B20,自动获取原理图代码下载连接)。

 

  • 7
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 167
    评论
好的,以下是一个基于 Arduino Uno 板和 DS18B20 温度传感器,并且使用 SSD1306 OLED 显示屏的示例代码,可以获取温度并在 OLED 上显示: 首先,您需要安装 Adafruit_SSD1306 库和 OneWire 库。您可以在 Arduino IDE 中选择菜单 "工具" > "管理库",然后搜索并安装这两个库。 接下来,将 DS18B20 温度传感器连接到 Arduino Uno 板: - 将 DS18B20 的 VCC 引脚连接到 Arduino 的 5V 引脚 - 将 DS18B20 的 GND 引脚连接到 Arduino 的 GND 引脚 - 将 DS18B20 的 DATA 引脚连接到 Arduino 的数字引脚 2 最后,将 SSD1306 OLED 显示屏连接到 Arduino Uno 板: - 将 OLED 的 VCC 引脚连接到 Arduino 的 5V 引脚 - 将 OLED 的 GND 引脚连接到 Arduino 的 GND 引脚 - 将 OLED 的 SCL 引脚连接到 Arduino 的数字引脚 5 - 将 OLED 的 SDA 引脚连接到 Arduino 的数字引脚 4 接下来是示例代码: ```c++ #include <OneWire.h> #include <DallasTemperature.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> // 定义 DS18B20 数据引脚 #define ONE_WIRE_BUS 2 // 初始化 OneWire 和 DallasTemperature 库 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); // 定义 OLED 显示屏相关参数 #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup() { // 初始化串口通信 Serial.begin(9600); // 初始化 OLED 显示屏 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(0, 0); display.println("Temperature:"); display.display(); // 初始化 DS18B20 温度传感器 sensors.begin(); } void loop() { // 获取当前温度 sensors.requestTemperatures(); float temperature = sensors.getTempCByIndex(0); Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °C"); // 在 OLED 显示屏上显示当前温度 display.clearDisplay(); display.setCursor(0, 0); display.println("Temperature:"); display.setCursor(0, 10); display.print(temperature); display.print(" "); display.print((char)247); display.print("C"); display.display(); // 延时 2 秒 delay(2000); } ``` 请根据您的具体硬件和传感器类型进行修改。另外,您还需要在计算机上安装 SSD1306 OLED 显示屏库和串口通信软件(如 Arduino IDE 或 CoolTerm),以便接收并查看发送的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 167
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值