日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]只需調(diào)用gettemp();就可以了!出口參數(shù)wmh是顯示的高位,wml使顯示的低位,然后調(diào)用你的顯示程序就可以了! /************************************************************************* ds18b20頭文件 M16內(nèi)

只需調(diào)用gettemp();就可以了!出口參數(shù)wmh是顯示的高位,wml使顯示的低位,然后調(diào)用你的顯示程序就可以了!

/*************************************************************************
ds18b20頭文件
M16內(nèi)部8M
*************************************************************************/
#define CLR_DIR_1WIRE DDRC&=~BIT(2) //只要修改這里的參數(shù)就可以了!呵呵!
#define SET_DIR_1WIRE DDRC|=BIT(2)//里面什么都不用該!
#define CLR_OP_1WIRE PORTC&=~BIT(2)
#define SET_OP_1WIRE PORTC|=BIT(2)
#define CHECK_IP_1WIRE (PINC & 0x04)//檢測
unsigned char wmh,wml;
void init_1820()
{
SET_DIR_1WIRE;//設(shè)置PC2 為輸出
SET_OP_1WIRE;
CLR_OP_1WIRE;
delay_nus(480);//480us以上
SET_OP_1WIRE;
CLR_DIR_1WIRE;
delay_nus(20); //15~60us
while(CHECK_IP_1WIRE);
SET_DIR_1WIRE;
SET_OP_1WIRE;
delay_nus(140); //60~240us
}
void write_1820(unsigned char x)
{
unsigned char m;
for(m=0;m<8;m++)
{
CLR_OP_1WIRE;
if(x&(1< SET_OP_1WIRE;
else
{CLR_OP_1WIRE;}
delay_nus(40); //15~60us
SET_OP_1WIRE;
}
SET_OP_1WIRE;
}
unsigned char read_1820()
{
unsigned char temp,k,n;
temp=0;
for(n=0;n<8;n++)
{
CLR_OP_1WIRE;
SET_OP_1WIRE;
CLR_DIR_1WIRE;
k=(CHECK_IP_1WIRE);//讀數(shù)據(jù),從低位開始
if(k)
temp|=(1<else
temp&=~(1<delay_nus(50); //60~120us
SET_DIR_1WIRE;
}
return (temp);
}

void gettemp() //讀取溫度值
{
unsigned char temh,teml,wm0,wm1,wm2,wm3;
init_1820();//復(fù)位18b20
write_1820(0xcc); // 發(fā)出轉(zhuǎn)換命令
write_1820(0x44);
//delay_nms(800); //不延時也好使,不知道怎么回事!
init_1820();
write_1820(0xcc);//發(fā)出讀命令
write_1820(0xbe);
teml=read_1820();//讀數(shù)據(jù)
temh=read_1820();
wm0=teml>>4; //只要高8位的低四位和低8位的高四位,溫度范圍0~99啦!
wm1=temh<<4;
wm2=wm1+wm0;//16進(jìn)制轉(zhuǎn)10進(jìn)制
wm3=wm2/100;
wmh=(wm2%100)/10; //出口參數(shù)了!wmh是顯示的高位,wml使顯示的低位
wml=(wm2%100)%10;
}


//延時程序:

//delay.h
/*-----------------------------------------------------------------------
延時函數(shù)
系統(tǒng)時鐘:8M
-----------------------------------------------------------------------*/
void delay_1us(void) //1us延時函數(shù)
{
asm("nop");
}

void delay_nus(unsigned int n) //N us延時函數(shù)
{
unsigned int i=0;
for (i=0;i delay_1us();
}

void delay_1ms(void) //1ms延時函數(shù)
{
unsigned int i;
for (i=0;i<1140;i++);
}

void delay_nms(unsigned int n) //N ms延時函數(shù)
{
unsigned int i=0;
for (i=0;i delay_1ms();
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉