基于51單片機(jī)的溫度監(jiān)測,proteus仿真,有程序。
單片機(jī)源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit DQ=P3^7;
- sbit beep=P3^0;
- void reset(); //DS18B20復(fù)位函數(shù)
- void write_byte(uchar val); //DS18B20寫命令函數(shù)
- uchar read_byte(void); //DS18B20讀1字節(jié)函數(shù)
- void read_temp(); //溫度讀取函數(shù)
- void LED_display();
- void alarm();
- uchar tempH,tempL,num;
- uchar table[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9的LED字符編碼
- uchar setValue_low=15;
- uchar setValue_high=30;
- main()
- {
- while(1)
- {
- read_temp();
- LED_display();
- alarm();
- }
- }
- void delay(uint t)
- {
- for(;t>0;t--);
- }
- void reset() //DS18B20的復(fù)位
- {
- uchar presence=1;
- while(presence)
- {
- while(presence)
- {
- DQ=1;_nop_();_nop_();
- DQ=0;
- delay(50);
- DQ=1;
- delay(6);
- presence=DQ;
- }
- delay(45);
- presence=~DQ;
- }
- DQ=1;
- }
- void write_byte(uchar val) //DS18B20寫一個字節(jié)
- {
- uchar i;
- for(i=8;i>0;i--)
- {
- DQ=1;_nop_();_nop_();
- DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();
- DQ=val&0x01;
- delay(6);
- val=val>>1;
- }
- DQ=1;
- _nop_();
- }
- uchar read_byte(void) //DS18B20讀一個字節(jié)
- {
- uchar i;
- uchar value=0;
- for(i=8;i>0;i--)
- {
- DQ=1;_nop_();_nop_();
- value>>=1;
- DQ=0;
- _nop_();_nop_();_nop_();_nop_();
- DQ=1;_nop_();_nop_();_nop_();_nop_();
- if(DQ)
- value|=0x80;
- delay(6);
- }
- DQ=1;
- return(value);
- }
- void read_temp() //從DS18B20讀取溫度值
- {
- uchar ch1,ch2;
- reset();
- write_byte(0xcc);
- write_byte(0x44);
- reset();
- write_byte(0xcc);
- write_byte(0xbe);
- ch1=read_byte(); //DS18B20的溫度數(shù)值是16位的二進(jìn)制,精度高,最后四位是溫度的小數(shù)部分,最高五位為符號位(即正負(fù)溫度)
- ch2=read_byte();
- num=(ch2<<4)|(ch1>>4); //只取溫度值的中間八位,小數(shù)部分舍去,符號位舍去四位。
- tempH=num/10; //溫度的十位
- tempL=num-tempH*10; //溫度的個位
- }
- void LED_display() //顯示檢測的溫度
- {
- P2=0x0;
- P2=2;
- P0=table[tempL];
- delay(50);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
溫度監(jiān)測.zip
(64.79 KB, 下載次數(shù): 29)
2017-6-21 20:08 上傳
點(diǎn)擊文件名下載附件
溫度監(jiān)測
|