找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3060|回復: 0
收起左側

基于stc8a8k單片機的DS1302+18b20串口輸出程序

[復制鏈接]
ID:168165 發(fā)表于 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.                   讀時序  單總線器件僅在主機發(fā)出讀時序時,才向主機傳輸數據,所以,在主機發(fā)出讀
  19.                           數據命令后,必須馬上產生讀時序,以便從機能夠傳輸數據。所有讀時序至少
  20.                                   需要60us,且在2 次獨立的讀時序之間至少需要 1us  的恢復時間。每個讀時
  21.                                   序都由主機發(fā)起,至少拉低總線 1us 。主機在讀時序期間必須釋放總線,并且
  22.                                   在時序起始后的 15us 之內采樣總線狀態(tài)。典型的讀時序過程為:主機輸出低
  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);//等待系統穩(wěn)定
  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, 下載次數: 85)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表