欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3715|回復: 1
打印 上一主題 下一主題
收起左側

關于單片機+DS18B20負數顯示的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:722619 發表于 2020-4-29 16:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大佬,我的DS18B20負數顯示時,溫度在0到-15.9就可以正常顯示,到-16就顯示為-0,-17就顯示-1·····這個是怎么回事?大佬們有啥解決方法嗎?附上相關代碼和仿真運行圖。相關代碼:
unsigned char tempL=0;  //設全局變量
unsigned char tempH=0;
unsigned char tempA;
unsigned char tempB;
unsigned char tempshi;
unsigned char tempge;
unsigned char xiaoshu1; //小數第一位
unsigned int zb;
bit  fg=1;              //溫度正負標志
······
//讀溫度值(低位放tempL;高位放tempH;)
void ReadTemperature(void)
{
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳過讀序列號的操作
WriteOneChar(0x44); //啟動溫度轉換
delaynms(250); //轉換需要一點時間,延時
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳過讀序列號的操作
WriteOneChar(0xbe); //讀溫度寄存器(頭兩個值分別為溫度的低位和高位)
tempL=ReadOneChar(); //讀出溫度的低位LSB
tempH=ReadOneChar(); //讀出溫度的高位MSB
tempA=(tempH<<8)|tempL;
if(tempH>0x07)      //最高位為1時溫度是負
{
    tempA=~tempA+1;
    zb=12;
tempB=tempA*(0.625)+0.5;
}
else
{
    tempB=tempA*(0.625);
    zb=0;
    }
    tempshi=tempB/100;
    tempge=tempB%100/10;
    xiaoshu1=tempB%10;
}







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2020-4-29 21:44 | 只看該作者
ds18b20數碼管顯示 仿真.zip (113.41 KB, 下載次數: 45)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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