資源簡介
89c51單片機,實時采集ds18b20溫度,并用1602顯示。也可以設置閾值范圍,到達此范圍溫度,蜂鳴器報警,離開此溫度范圍時,報警停止。
代碼片段和文件信息
/***********************18B20實時溫度計1602顯示***********************
*??晶振:11.0592MHZ
******************************************************************/
#include?
#include?
#include?
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?rw?=?P2^1;?
sbit?RS?=?P2^0;??
sbit?LCDEN?=?P2^2;
sbit?ds?=?P2^6;?
void?delayUs()
{
????_nop_();
}
void?delayMs(uint?a)
{
????uint?i?j;
????for(i?=?a;?i?>?0;?i--)
????????for(j?=?100;?j?>?0;?j--);
}
void?writeComm(uchar?comm)????????????//指令寄存器,當rs?rw=0,en由1變成0時,就把P0口的數據送入?
{
?????RS?=?0;????
????P0?=?comm;
????LCDEN?=?1;
?????delayUs();
????LCDEN?=?0;
????delayMs(1);
}
//寫數據:RS=1?RW=0;
void?writeData(uchar?dat)
{
????RS?=?1;
????P0?=?dat;
????LCDEN?=?1;
????delayUs();
????LCDEN?=?0;
????delayMs(1);
}
?void?init()
?{
????rw?=?0;?
????writeComm(0x38);
????writeComm(0x0c);?
????writeComm(0x06);
????writeComm(0x01);?
}
void?writeString(uchar?*?str?uchar?length)
{
????uchar?i;
????for(i?=?0;?i?????{
????????writeData(str[i]);
????}
?}
?
/**//*****************************DS18B20*******************************/
void?dsInit()
?{
????
????unsigned?int?i;??
????ds?=?0;
????i?=?100;??
????while(i>0)?i--;
????ds?=?1;???
????i?=?4;
????while(i>0)?i--;
}
?
void?dsWait()
{
????unsigned?int?i;
????while(ds);??
????while(~ds);
????i?=?4;
????while(i?>?0)?i--;
}
bit?readBit()
{
????unsigned?int?i;
????bit?b;
????ds?=?0;
????i++;???
????ds?=?1;?
????i++;?i++;??
????b?=?ds;
????i?=?8;?
????while(i>0)?i--;
????return?b;
}
unsigned?char?readByte()
{
????unsigned?int?i;
????unsigned?char?j?dat;
????dat?=?0;
????for(i=0;?i<8;?i++)
????{
????????j?=?readBit();
??????
????????dat?=?(j?<7)?|?(dat?>>?1);
????}
????return?dat;
}
void?writeByte(unsigned?char?dat)
{
????unsigned?int?i;
????unsigned?char?j;
????bit?b;
????for(j?=?0;?j?8;?j++)
????{
????????b?=?dat?&?0x01;
????????da
- 上一篇:用KNN算法診斷乳腺癌
- 下一篇:哈希表的設計與實現.zip
評論
共有 條評論