找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于stc8a8k单片机的DS1302+18b20串口输出程序

[复制链接]
跳转到指定楼层
楼主
ID:168165 发表于 2021-1-31 12:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//部分程序
  1.                                                  /*

  2.      DS18B20温度采集
  3.      说明  DS18B20  是由DALLAS  半导体公司推出的一种的“一线总线”接口的温度传感器。测量温度范围为-55~+125 ℃
  4.                将单总线接到了P1.3口上  也就是一个IO就可以完成读取DS温度的功能

  5.                    但当然 时序是很重要的如果用来移植 请仔细计算好时序  如delay2us  是2us的延时  
  6.                    delay1ms 是1ms的延时 这个延时都是在单片机内部晶振在27MHz 下 测出的程序累加延时
  7.                    虽然有偏差 但是已经比较接近了

  8.           DS18B20时序
  9.                   复位脉冲和应答脉冲 单总线上的所有通信都是以初始化序列开始        主机输出低电平,
  10.                                      保持低电平时间至少 480us,,以产生复位脉冲。接着主机释放总线,10K 的上拉电阻
  11.                                      将单总线拉高,延时15~60 us, 并进入接收模式(Rx)。接着DS18B20 拉低总线60~240 us,
  12.                                      以产生低电平应答脉冲, 若为低电平,再延时480 us 。
  13.                   写时序  写时序包括写0 时序和写1 时序。所有写时序至少需要60us,且在2 次独立的
  14.                           写时序之间至少需要 1us 的恢复时间,两种写时序均起始于主机拉低总线。
  15.                                   写 1 时序:主机输出低电平,延时2us,然后释放总线,延时60us 。
  16.                                   写0 时序:主机输出低电平,延时60us,然后释放总线, 延时2us 。                                          
  17.                   
  18.                   读时序  单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读
  19.                           数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少
  20.                                   需要60us,且在2 次独立的读时序之间至少需要 1us  的恢复时间。每个读时
  21.                                   序都由主机发起,至少拉低总线 1us 。主机在读时序期间必须释放总线,并且
  22.                                   在时序起始后的 15us 之内采样总线状态。典型的读时序过程为:主机输出低
  23.                                   电平延时 2us,然后主机转入输入模式延时 12us,然后读取单总线当前的电平,
  24.                                   然后延时50us。 ,                                         
  25.           DS就介绍到这里 如果想了解更多 请参考DS18B20的手册                       
  26.           
  27.           
  28.           DS18B20 IO为P13
  29.           串口跟踪显示

  30.       主频为11.0592MHz
  31.       串口波特率为9600                                                      
  32.                     
  33. */





  34. #include  "stc8.h"                  //STC15头文件
  35. #include  "def.h"                              //宏定义 常用函数
  36. #include  "DELAY.H"                                  //延时函数
  37. //#include  "spi.h"
  38. #include  "ds18b20.h"
  39. #include  "uart.h"
  40. #include  "ds1302.h"


  41. int Send_Time = 0;
  42. int kk = 0;



  43. void main()
  44. {         
  45.     short temperature;                        //温度变量
  46.         delay1ms(250);//等待系统稳定
  47.         ds1302_init(); //DS1302初始化
  48.         UartInit(); //串口的初始化

  49.     delay1ms(200);
  50.         DS1302_WriteTime(); //写入初始值
  51.     delay1ms(20);
  52.         Timer2Init();
  53.                         //串口初始化
  54.         delay1ms(200);
  55.         EA = 1;
  56.         UartSendStr("Uart temperature:\r\n");
  57.         while(1)
  58.         {
  59.          if(Send_Time >= 1500)
  60.          {
  61.          UartSendStr("TIME:\t");
  62.          DS1302_send();
  63.          UartSendStr("temperature:\t");
  64.          temperature=read_temp();                                                                                   //读取温度值
  65.      if(temperature<0)                   //是负温度
  66.          UartSendByte('-');
  67.            UartSendByte(temperature/100%10+'0');                 //串口温度显示
  68.            UartSendByte(temperature/10%10+'0');
  69.            UartSendByte('.');
  70.            UartSendByte(temperature%10+'0');
  71.            UartSendStr("\r\n");
  72.            Send_Time = 0;
  73.           }
  74.           // delay1ms(1500);


  75.         }
  76.           
  77. }

  78. void TM2_Isr(void) interrupt 12  using 2
  79. {        kk++;
  80.     Send_Time++;
  81.         if(Send_Time>2500){Send_Time=0;}
  82.     if(kk>1000){P55 = !P55;kk=0;}                                 //测试端口
  83.     AUXINTIF &= ~T2IF;                          //清中断标志                      //清中断标志
  84. }
复制代码




全部程序51hei下载地址:
程序2021_1_31串口打印1302 18b20定时.rar (150.17 KB, 下载次数: 84)

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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