溫度傳感器的讀寫時序原理跟紅外遙控差不多,關于宋老師的lesson16_2例程的DS18B20.c的代碼這里我們就不講解了,
《手把手教你學51單片機》文檔第16章都已講解明白。我們要講解的是溫度數值的轉換如何在液晶屏上顯示出來。
1.大于等于0度的轉換
首先我們知道大于等于0度的時候,臨時存取沒有轉換過的16位的變量的數值只需要乘以0.0625就是轉換出來的實際溫度了。
看到以下表格就知道,0x07D0=2000,實際溫度就是2000*0.0625=+125度。
假如temp是unsigned int型變量用來存取沒有轉換過的臨時溫度,那么我們再定義一個float型的變量temp_float。
我們把temp強制轉換成float類型,這樣“temp_float=(float)temp*0.0625”就是實際的溫度了。
我們要想把實際溫度顯示在液晶屏上該如何做呢?
假如我們要顯示的范圍只需保留一位小數即可,那么要顯示像19.2度這樣,我們要做的是把temp_float再乘以10.0,
然后又強制轉換回來“temp=(u16)temp_float;”讓temp存取192這個unsigned int類型的數據。
我們定義一個數組str。
str[0]='0'+( (temp/100)%10 );
str[1]='0'+( (temp/10)%10 );
str[2]='.';
str[3]='0'+( temp%10 );
這樣的話“LcdShowStr(0, 0, str);”就是顯示19.2了。
可是溫度傳感器測溫最高有125度,也就是我們也要滿足測量超過100度時候的顯示。
比如顯示101.2度時,液晶屏是這樣顯示
顯示29.5度液晶屏要這樣顯示
顯示0.7度液晶屏要這樣顯示,可以看到小數點要靈活改變
那么我們需要重新完善顯示的代碼,我們定義一個u8變量temp_i初始化時為0
temp_float=(float)temp*0.0625*10.0;//實際溫度值再乘以10倍
temp=(unsigned int)temp_float; //得到16位整型的數值
str[0]='0'+( (temp/1000)%10 ); //當溫度大于等于100度時需要顯示百位數
str[1]='0'+( (temp/100)%10 ); //當溫度大于等于10度時需要顯示十位數
str[2]='0'+( (temp/10)%10 ); //當溫度大于等于1度時需要顯示個位數
str[3]='.';
str[4]='0'+( temp%10 ); //溫度必須顯示小數點后的一位
if(str[0]=='0')temp_i++;
if(str[1]=='0')temp_i++;
LcdShowStr(0, 0, str+temp_i); //顯示到液晶屏上
temp_i=0;
我們做的是高位為0不顯示,也就是當溫度為25.9度時,有
str[0]=’0’; str[1]=’2’; str[2]=’5’; str[3]=’.’; str[4]=’9’;
而“LcdShowStr(0, 0, str+temp_i);”就是從str[1]開始顯示,這樣液晶屏就是這樣顯示了
同理當溫度為0.7度時,“LcdShowStr(0, 0, str+temp_i);”里的temp_i的值為2,那么就是從str[2]開始顯示,顯示就如以下的方式了,顯示完了temp_i要清0,繼續接下一次的顯示。
上一篇:51單片機-代碼文件和測試
下一篇:51單片機-溫度傳感器代碼解析Ⅱ
推薦閱讀
史海拾趣
佰宏公司始終將品質放在首位,通過嚴格的生產流程和質量控制體系,確保每一件產品的穩定性和可靠性。同時,公司還注重環保和可持續發展,積極采用環保材料和節能技術,努力為社會和環境做出貢獻。
這五個故事只是佰宏公司發展歷程中的一部分,但它們卻生動地展現了佰宏公司從創立到發展的艱辛與輝煌。在未來的道路上,佰宏將繼續秉承“創新、品質、合作、共贏”的理念,為電子行業的發展貢獻更多的力量。
近年來,隨著環保意識的日益增強,HBControls積極響應國家號召,致力于綠色環保產品的研發和生產。公司投入大量資金引進環保設備和技術,對生產流程進行改造升級,以減少對環境的影響。同時,HBControls還積極推廣綠色供應鏈理念,與供應商共同構建綠色、低碳的供應鏈體系。這些舉措不僅提升了公司的社會形象,也為企業的可持續發展奠定了堅實的基礎。
為了進一步提升國際競爭力,Connection One公司開始實施全球化戰略布局。公司在全球范圍內設立研發中心和銷售網絡,以便更好地了解當地市場需求并提供定制化產品。這一舉措不僅加速了公司的國際化進程,還為其帶來了更多的商業機會。
在業務拓展方面,CalAmp公司始終保持著敏銳的市場洞察力。某年,公司成功推出了RFID動物溯源和共享單車智能等新業務。這些新業務不僅為公司帶來了新的增長點,也進一步拓寬了其業務范圍。雖然新產品線的毛利率較低,對公司的整體毛利率和凈利率產生了一定影響,但公司通過優化成本結構和提升運營效率,逐步改善了這一狀況。同時,公司與澳大利亞利德品有限公司簽訂的品牌授權及合作協議,也為公司未來的盈利能力提升奠定了基礎。
DFI深知產品質量對于企業的重要性。因此,公司從設計到生產,都實施了嚴格的質量管理。在產品設計階段,DFI的專責團隊會對電路、機構和零組件進行嚴格的測試與檢驗,確保每個專案的設計和質量都具備一致的高質量。在生產階段,所有產品出貨前都必須通過完整的產品內部檢驗,以確保產品的可靠性和耐久性。這些質量管理措施使DFI的產品在市場上享有良好的口碑,也為公司贏得了眾多客戶的信任。
隨著公司規模的不斷擴大和市場競爭的加劇,Corex Intervest Inc公司意識到單打獨斗已經無法滿足市場需求。因此,公司開始積極尋求與其他企業的戰略合作,共同推動電子行業的發展。公司與多家知名企業建立了戰略合作關系,共同研發新產品、開拓新市場,實現了資源共享和互利共贏。
低噪聲放大器是雷達、通信、電子對抗、遙測遙控等電子系統中關鍵的微波部件,有廣泛的應用價值。由于微波系統的噪聲系數基本上取決于前級放大器的噪聲系數,因此LNA噪聲系數的優劣會直接影響整個系統性能的好壞。低噪聲放大器的設計主要包括輸入、 ...… 查看全部問答∨ |
|
我現在拿到mtk的offer了,手機軟件開發職位,11w/年左右,我也同時拿到了另一家國內比較有名的做網絡安全的公司的offer,8~9w/年。 上面兩個公司職位一個是偏嵌入式,一個是win c++軟件開發, 我是計算機系的,自己感 ...… 查看全部問答∨ |
大家好,我現在使用STM32開發板,遇到一個問題,就是必須用一個通用IO來模擬串口。 我將通用IO配置如下: /* Configure USART4 Tx (Pc.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin ...… 查看全部問答∨ |
做串口通信測試,大家都知道要做通信線的對調連接工作(如2--3,3--2等) 請問:在一個具體的測試工作中,如何做這些通信線的對調連接呀? 是拆開通信插頭重新焊接各線? 有沒有專門用來測試串口通信的 ...… 查看全部問答∨ |
事先聲明,我不是搞病毒的,技術還沒到那個層次,即使以后到那個層次也不害人。呵呵 Win2000以上的桌面windows系統中,ARP的有效時間在 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters 子鍵下ArpCacheLife鍵值表 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 試用Vishay新型“IHLP磁芯損耗計算器”,搶樓贏好禮
- LPC4370重磅來襲 有獎問答贏好禮!
- 電子工程師,如何更好地擁抱GaN?參與問卷有好禮!
- 報名贏京東卡 | 國產FPGA安路科技2024線上新品發布會
- 兆易GD32450I-EVAL免費測評試用
- 追更有驚喜:解救被FSM折磨過的你,justd0解析LSM6DSOX有限狀態機官方例程
- 電路圖站2.0版上線,公開征集網友建議,填寫調查問卷贏積分!
- 全球首款Cortex-M23內核物聯網芯片SAML10和SAM L11系列 闖關獲取SAML10/SAML11法寶,拆除電子界安全危機,贏好禮!
- 邀請好友體驗WEBENCH,禮品豐厚你有他也有!