51mcu做的DS18B20測溫源碼帶lcd12864液晶顯示,,,,,,,,,
0.png (60.59 KB, 下載次數: 33)
下載附件
2017-6-28 18:06 上傳
單片機源程序如下:
- /*******************************************************************************
- *
- * 普中科技
- --------------------------------------------------------------------------------
- * 實 驗 名 : 18B20溫度顯示試驗
- * 實驗說明 : LCD1602顯示溫度值。
- * 連接方式 : 見連接圖
- * 注 意 :
- *******************************************************************************/
- #include <reg52.h>
- #include "lcd.h"
- #include "temp.h"
- #include "juzhenkeys.h"
- #include <caidan.h>
- void LcdDisplay(int);
- /*******************************************************************************
- * 函數名 : main
- * 函數功能 : 主函數
- * 輸入 : 無
- * 輸出 : 無
- *******************************************************************************/
- void main()
- {
- // lcd_init();
- init(); //初始化LCD12864
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
-
- keys();
- caidanfuzhi();
-
-
- Lcd_Num1(3,0,Ds18b20ReadTemp());
- Lcd_Display(3,5,"度");
- // Delay1ms(1000);
-
-
- }
-
-
- }
- /*******************************************************************************
- * 函數名 : LcdDisplay()
- * 函數功能 : LCD顯示讀取到的溫度
- * 輸入 : v
- * 輸出 : 無
- *******************************************************************************/
- //void LcdDisplay(int temp) //lcd顯示
- //{
- //
- // unsigned char datas[] = {0,0,0,0,0}; //定義數組
- // float tp;
- // if(temp< 0) //當溫度值為負數
- // {
- // weizhi(3,0); //寫地址 80表示初始地址
- // LcdWriteData('-'); //顯示負
- // //因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
- // temp=temp-1;
- // temp=~temp;
- // tp=temp;
- // temp=tp*0.0625*100+0.5;
- // //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
- // //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
- // //算由?.5,還是在小數點后面。
- //
- // }
- // else
- // {
- // weizhi(3,0); //寫地址 80表示初始地址
- // LcdWriteData('+'); //顯示正
- // tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
- // //如果溫度是正的那么,那么正數的原碼就是補碼它本身
- // temp=tp*0.0625*100+0.5;
- // //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
- // //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
- // //算加上0.5,還是在小數點后面。
- // }
- // datas[0] = temp / 10000;
- // datas[1] = temp % 10000 / 1000;
- // datas[2] = temp % 1000 / 100;
- // datas[3] = temp % 100 / 10;
- // datas[4] = temp % 10;
- //
- // weizhi(3,1); //寫地址 80表示初始地址
- // LcdWriteData(0x30+datas[0]); //百位
- //
- // weizhi(3,2); //寫地址 80表示初始地址
- // LcdWriteData(datas[1]+0x30); //十位
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
DS18B20-LCD.zip
(101.47 KB, 下載次數: 50)
2017-6-28 14:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|