久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4550|回復: 7
收起左側

51單片機的ds18b20溫度測量仿真,就是不顯示溫度,怎么調都不行,只有亂碼

[復制鏈接]
ID:856893 發表于 2020-12-8 21:26 | 顯示全部樓層 |閱讀模式
單片機的ds18b20溫度測量仿真,就是不顯示溫度,怎么調都不行,只有亂碼,希望有大哥幫幫忙^^
tu.png

二代.zip

65.46 KB, 下載次數: 18

回復

使用道具 舉報

ID:584814 發表于 2020-12-9 11:19 | 顯示全部樓層
本壇里有現成的直接下載一個就好
回復

使用道具 舉報

ID:856893 發表于 2020-12-9 15:11 來自觸屏版 | 顯示全部樓層
主要是在開發板上能夠正常運行,變成仿真圖就嗝屁了  
回復

使用道具 舉報

ID:748788 發表于 2020-12-10 21:30 | 顯示全部樓層
你從下面的鏈接下載 51單片機應用開發25例,其中有多點溫度采集系統,有程序有仿真,下圖是仿真截圖
http://www.zg4o1577.cn/bbs/dpj-54940-1.html 測量.jpg

回復

使用道具 舉報

ID:517466 發表于 2020-12-11 11:27 | 顯示全部樓層
建議你按照如下步驟調試程序:
1、忽略文段模塊的通訊,調通數碼顯示這塊。逐位顯示0-9的所有數字,包括帶小數點的情況
2、第一步都跳調通了,再去調試ds18b20。由于ds18b20的口位簡單,重點在于時序。
第一步很重要。另外如果擔心顯示出問題。可以把取得的溫度數據直接發送到串口去顯示,看看對不對。
以下是我做過的和18B20有關的代碼,用的12M晶振,STC89C52,實測過的
// 溫度傳感器接口
sbit DQ=P3^7; //數據傳輸線接單片機的相應的引腳

/*
********************************************************************************
** 函數名稱 : Init_DS18B20(void)
** 函數功能 : 初始化
********************************************************************************
*/
void Init_DS18B20(void)
{
unsigned char x=0;
DQ=1; //DQ先置高
Delay10us(60);//最小480,最大960
DQ=0; //發送復位脈沖
Delay10us(60);//最小480,最大960

DQ=1; //拉高數據線
Delay10us(6);//15-60us

// x=DQ; //用X的值來判斷初始化有沒有成功,18B20存在的話X=0,否則X=1
//delay(20);
while(DQ==0);
DQ=1;//讓傳感器釋放總線,避免影響下一步

}


/*
********************************************************************************
** 函數名稱 :  ReadOneChar()
** 函數功能 : 讀一個字節
********************************************************************************
*/
unsigned char  ReadOneChar()  //主機數據線先從高拉至低電平1us以上,再使數據線升為高電平,從而產生讀信號
{
        unsigned char dat=0;
        unsigned char mask,fmask;
        for(mask=0x01;mask!=0;mask<<=1)//一個周期需要至少60us,但采樣要在15us內完成
        {
                DQ=0;
                _nop_();
                DQ=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                if(DQ==0)//讀0
                {
                        fmask=~mask;
                        dat=dat&fmask;
                }
                else
                {
                        dat|=mask;
                }
                Delay10us(5);
                DQ=1;


        }
        return dat;

}


/*
********************************************************************************
** 函數名稱 : WriteOneChar(unsigned char dat)
** 函數功能 : 寫一個字節
//一個寫周期為60-120us,主機在15--45us內對信號采樣
********************************************************************************
*/

void WriteOneChar(unsigned char dat)
{
  unsigned char i=0; //數據線從高電平拉至低電平,產生寫起始信號。15us之內將所需寫的位送到數據線上,
  for(i=8;i>0;i--) //在15~60us之間對數據線進行采樣,如果是高電平就寫1,低寫0發生。
  {
   DQ=0; //在開始另一個寫周期前必須有1us以上的高電平恢復期。
   DQ=dat&0x01;
   Delay10us(6);//15-60us采樣
   DQ=1;
   dat>>=1;
  }
  delay(4);
}


/*
********************************************************************************
** 函數名稱 : ReadTemperature(void)
** 函數功能 : 讀溫度值(低位放tempL;高位放tempH;)
********************************************************************************
*/

void ReadTemperature(void)
{
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳過讀序列號的操作
WriteOneChar(0x44); //啟動溫度轉換
delayms(125); //轉換需要一點時間,延時
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳過讀序列號的操作
WriteOneChar(0xbe); //讀溫度寄存器(頭兩個值分別為溫度的低位和高位)
tempL=ReadOneChar(); //讀出溫度的低位LSB
tempH=ReadOneChar(); //讀出溫度的高位MSB

                if(tempH>0x7f)      //最高位為1時溫度是負
                {
                 tempL=~tempL;         //補碼轉換,取反加一
                 tempH=~tempH+1;      
                 fg=0;      //讀取溫度為負時fg=0
       }

           sdate = tempL/16+tempH*16;      //整數部分
           xiaoshu1 = (tempL&0x0f)*10/16; //小數第一位
           xiaoshu2 = (tempL&0x0f)*100/16%10;//小數第二位
           xiaoshu=xiaoshu1*10+xiaoshu2; //小數兩位
}
回復

使用道具 舉報

ID:213173 發表于 2020-12-11 15:45 | 顯示全部樓層
3201444707 發表于 2020-12-9 15:11
主要是在開發板上能夠正常運行,變成仿真圖就嗝屁了

給你改好了,原來的程序在開發板上也不一定正常吧。
二代.zip (62.78 KB, 下載次數: 50)

回復

使用道具 舉報

ID:213173 發表于 2020-12-11 15:48 | 顯示全部樓層
無標題.jpg
回復

使用道具 舉報

ID:856893 發表于 2020-12-12 20:26 來自觸屏版 | 顯示全部樓層
感謝大哥們的幫助,問題已經解決
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区亚洲二区三区 | 日韩不卡三区 | 国产黄色大片在线观看 | 亚洲成人午夜电影 | 久久国产精品偷 | 尤物在线| 91av视频在线观看 | 国产精品揄拍一区二区久久国内亚洲精 | 欧美精品中文字幕久久二区 | 网络毛片 | 一区二区三区精品在线视频 | 亚洲成人免费 | 国产在线精品一区二区三区 | 青青久草 | 国产精品一区二区日韩 | 久久美女网 | 岛国毛片 | 亚洲精品国产成人 | 日本二区在线观看 | 色综合中文| 日韩在线播放第一页 | 日本小视频网站 | 成人av一区二区亚洲精 | 国产高清在线观看 | 免费视频成人国产精品网站 | 国产美女精品视频免费观看 | 久久久久久久久久爱 | 日韩免费毛片视频 | 天堂在线中文字幕 | 亚洲精品一区av在线播放 | 日韩免费视频 | 一区二区三区四区视频 | 黄网站色大毛片 | 日本一区二区三区在线观看 | 亚洲一区二区三区四区五区中文 | 亚洲高清在线 | 久久网一区二区三区 | 99精品国产一区二区三区 | 日日操操 | 久久高清 | 超碰美女在线 |