新人一枚,開始在這里開拓一片自己的小天地啦最近開始學習傳感器,花了還幾天研究出來的DA18B20溫度傳感器的實驗
現(xiàn)在還是新手小白一個。。。。
開始記錄自己的學習歷程啦
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "ds18b20.h"
- #define Baud_rate 115200//波特率為115200
- #define Read_time 10//1/Read_time ms讀取一次數(shù)據(jù)
- /************************************************
- ALIENTEK精英STM32開發(fā)板實驗28DS18B20數(shù)字溫度傳感器 實驗
- ************************************************/
- int main(void)
- {
- u8 t=0;
- short temperature;
- delay_init(); //延時函數(shù)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
- uart_init(Baud_rate); //串口初始化為 115200
- LED_Init(); //初始化與LED連接的硬件接口
- LCD_Init(); //初始化LCD
- POINT_COLOR=RED; //設置字體為紅色
-
- while(DS18B20_Init()) //DS18B20初始化
- {
- LCD_ShowString(30,130,200,16,16,"DS18B20 Error");
- delay_ms(200);
- LCD_Fill(30,130,239,130+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(30,130,200,16,16,"DS18B20 OK");
- POINT_COLOR=BLUE;//設置字體為藍色
- LCD_ShowString(30,150,200,16,16,"Temp: . C");
- while(1)
- {
- if(t%Read_time==0) //每100ms讀取一次
- {
- temperature=DS18B20_Get_Temp();
- if(temperature<0)
- {
- LCD_ShowChar(30+40,150,'-',16,0); //顯示負號
- temperature=-temperature; //轉為正數(shù)
- }else LCD_ShowChar(30+40,150,' ',16,0); //去掉負號
- LCD_ShowNum(30+40+8,150,temperature/10,2,16); //顯示正數(shù)部分
- LCD_ShowNum(30+40+32,150,temperature%10,1,16); //顯示小數(shù)部分
- }
- delay_ms(10);
- t++;
- if(t==40)
- {
- t=0;
- LED0=!LED0;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
18B20數(shù)字溫度傳感器.7z
(496.45 KB, 下載次數(shù): 302)
2019-7-16 16:47 上傳
點擊文件名下載附件
|