找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2325|回复: 0
打印 上一主题 下一主题
收起左侧

STM32单片机DS18B20测温数码管显示程序(不带CRC、不带零度以下温度)有注释

[复制链接]
跳转到指定楼层
楼主

DS1302驱动和数码管驱动程序如附件!
单片机源程序如下:
  1. #include "ds18b20.h"
  2. #include "display.h"
  3. #include "delay.h"
  4. void Ds18B20_Output()
  5. {
  6.         GPIO_InitTypeDef GPIO_InitStructure;
  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);                //使能PG时钟
  8.         
  9.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;                                        //PG11口
  10.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;                                //设定I/O口推挽输出
  11.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  12.         GPIO_Init(GPIOG,&GPIO_InitStructure);
  13. }
  14. void Ds18B20_Input()
  15. {
  16.         GPIO_InitTypeDef GPIO_InitStructure;
  17.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);                //使能PG时钟
  18.         
  19.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;                                        //PG11口
  20.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;                        //浮空输入
  21.         GPIO_Init(GPIOG,&GPIO_InitStructure);        
  22. }

  23. void Ds18b20_Reset(void)
  24. {
  25.         Ds18B20_Output();                //将PG11配置为推挽输出
  26.         DQ_Write_1;                                //拉高总线
  27.         delayus(1);
  28.         DQ_Write_0;                                //拉低总线
  29.         delayus(480);                        //延时,拉低总线480~960us
  30.         DQ_Write_1;                                //释放总线
  31.         Ds18B20_Input();                //DQ改为输入模式
  32.         delayus(40);                        //延时约60us
  33.         while((DQ_ReadBit));        //等待从机DS18B20应答
  34.         while(!(DQ_ReadBit));        //等待应答信号结束,释放总线        
  35. }
  36. void Ds18b20_Write(u8 dat)
  37. {
  38.         u8 m0;
  39.         Ds18B20_Output();                //将PG11配置为推挽输出
  40.         for(m0=0;m0<8;m0++)
  41.         {
  42.                 DQ_Write_0;                                //拉低总线
  43.                 delayus(10);                        //延时10us,最大不超过15us
  44.                 if(dat&0x01)
  45.                         DQ_Write_1;
  46.                 else
  47.                         DQ_Write_0;
  48.                 delayus(30);                        //延时40us
  49.                 DQ_Write_1;                                //释放总线
  50.                 delayus(1);                                //两个写之间,间隔至少1us
  51.                 dat>>=1;                                //右移1位,
  52.         }
  53. }
  54. u8 Ds18b20_Read(void)
  55. {
  56.         u8 m0,temp0;
  57.         for(m0=0;m0<8;m0++)
  58.         {
  59.                 temp0>>=1;                //数据右移一位
  60.                 Ds18B20_Output();                //将PG11配置为推挽输出
  61.                 DQ_Write_0;                                //拉低总线,启动
  62.                 DQ_Write_1;                                //释放总线
  63.                 if(DQ_ReadBit==1)
  64.                         temp0|=0x80;
  65.                 delayus(40);
  66.         }
  67.         return temp0;
  68. }
  69. void temperature(void)
  70. {
  71.         u16 temp1,temp2;
  72.         Ds18b20_Reset();
  73.         Ds18b20_Write(0xcc);                //跳过ROM
  74.         Ds18b20_Write(0x44);                //温度转换

  75.         Ds18b20_Reset();
  76.         Ds18b20_Write(0xcc);                //跳过ROM
  77.         Ds18b20_Write(0xbe);                //读取RAM
  78.         
  79.         temp1=Ds18b20_Read();                //读取低8位
  80.         temp2=Ds18b20_Read();                //读取高8位
  81.         Ds18b20_Reset();                        //复位,表示读取结束
  82.         display(((temp2<<8)|temp1)*0.0625);
  83. }
复制代码



注意缺少main函数等,介意的就不要下载了: HARDWARE.rar (2.22 KB, 下载次数: 30)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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