找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9721|回复: 3
收起左侧

32位STM32单片机DS18B20驱动 LCD实时温度显示

[复制链接]
ID:168444 发表于 2017-6-16 11:22 | 显示全部楼层 |阅读模式
基于32位的单片机DS18B20驱动,可实现LCD实时温度显示。
0.png

STM32单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "ds18b20.h"

  7.   
  8. int main(void)
  9. {
  10.         u8 t=0;                            
  11.         short temperature;  
  12.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  13.         delay_init(168);  //初始化延时函数
  14.         uart_init(115200);                //初始化串口波特率为115200
  15.        
  16.         LED_Init();                                        //初始化LED
  17.         LCD_Init();
  18.   POINT_COLOR=RED;//设置字体为红色
  19.         LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
  20.         LCD_ShowString(30,70,200,16,16,"DS18B20 TEST");       
  21.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  22.         LCD_ShowString(30,110,200,16,16,"2014/5/7");
  23.         while(DS18B20_Init())        //DS18B20初始化       
  24.         {
  25.                 LCD_ShowString(30,130,200,16,16,"DS18B20 Error");
  26.                 delay_ms(200);
  27.                 LCD_Fill(30,130,239,130+16,WHITE);
  28.                 delay_ms(200);
  29.         }   
  30.         LCD_ShowString(30,130,200,16,16,"DS18B20 OK");
  31.         POINT_COLOR=BLUE;//设置字体为蓝色
  32.         LCD_ShowString(30,150,200,16,16,"Temp:   . C");         
  33.         while(1)
  34.         {                        
  35.                 if(t%10==0)//每100ms读取一次
  36.                 {                                                                          
  37.                         temperature=DS18B20_Get_Temp();       
  38.                         if(temperature<0)
  39.                         {
  40.                                 LCD_ShowChar(30+40,150,'-',16,0);                        //显示负号
  41.                                 temperature=-temperature;                                        //转为正数
  42.                         }else LCD_ShowChar(30+40,150,' ',16,0);                        //去掉负号
  43.                         LCD_ShowNum(30+40+8,150,temperature/10,2,16);        //显示正数部分            
  44.                    LCD_ShowNum(30+40+32,150,temperature%10,1,16);        //显示小数部分                   
  45.                 }                                  
  46.                  delay_ms(10);
  47.                 t++;
  48. ……………………

  49. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
32位单片机DS18B20驱动.rar (486.96 KB, 下载次数: 129)
回复

使用道具 举报

ID:409028 发表于 2019-2-24 20:59 | 显示全部楼层
感谢正好需要这个!!!
回复

使用道具 举报

ID:780228 发表于 2020-6-20 18:41 | 显示全部楼层
有proteus仿真吗
回复

使用道具 举报

ID:196745 发表于 2020-6-21 16:34 来自手机 | 显示全部楼层
为什么51能做的,用32做。仅仅熟悉用法的话直接看32学习板视频不就行了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表