久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3786|回復: 0
打印 上一主題 下一主題
收起左側

溫度傳感器ds18b20-AVR程序代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:51024 發表于 2014-7-12 01:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


以前學AVR時候寫的一些程序,分享一下







#include  

#include





// Alphanumeric LCD Module functions

#asm

   .equ __lcd_port=0x18 ;PORTB

#endasm

#include     

#define  uchar unsigned char

#define  uint unsigned int

#define  BIT(x) 1<<(x)

#define DQ_IN DDRC&=~BIT(2)   

#define DQ_OUT DDRC|=BIT(2)

#define DQ_SET PORTC|=BIT(2)

#define DQ_CLR PORTC&=~BIT(2)

#define DQ_R PINC&BIT(2)  

uint wan,qian,bai,shi;



uchar ds18b20_reset(void)

{

uchar i;

DQ_OUT;

DQ_CLR;

delay_us(500);

DQ_SET;

delay_us(100);

DQ_IN;

i=DQ_R;

delay_us(500);

return i;

}



void ds18b20_write_byte(uchar value)

{

uchar i;

for(i=0;i<8;i++){

DQ_OUT;

DQ_CLR;

delay_us(10);

if(value&BIT(0))

{

DQ_SET;

}

delay_us(100);

DQ_SET;

value=value>>1;

}

}



uchar ds18b20_read_byte(void)

{

uchar i,value;

for(i=0;i<8;i++)

{

value=value>>1;

DQ_OUT;

DQ_CLR;

delay_us(10);

DQ_SET;

DQ_IN;

if(DQ_R)

{

value|=0x80;

}

delay_us(50);

}

return value;

}



// Declare your global variables here



void main(void)

{  uchar i,j;

double  temp;

// Declare your local variables here



// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;



// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;



// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;



// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;



// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;



// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;



// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;



// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;



// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;



// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;



// LCD module initialization

lcd_init(16);



while (1)

      {ds18b20_reset();

      ds18b20_write_byte(0xcc);

      ds18b20_write_byte(0x44);

      delay_us(20);

      ds18b20_reset();

      ds18b20_write_byte(0xcc);

      ds18b20_write_byte(0xbe);  

      i=ds18b20_read_byte();

      j=ds18b20_read_byte();

      temp=(j*256.0+i)*6.25;

      wan=(int)temp/1000;

      qian=(int)temp00/100;

      bai=(int)temp0/10;

      shi=(int)temp;

      lcd_gotoxy(0,0);

      lcd_putchar(wan+48);

      lcd_putchar(qian+48);

      lcd_putchar('.');

       lcd_putchar(bai+48);

      lcd_putchar(shi+48);

      delay_ms(100);



      // Place your code here



      };

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线h | 亚洲色图图片 | 日韩免费av| 亚洲性在线 | 91精品一区 | 成人网址在线观看 | 精品国产色 | avav在线看 | 国产综合一区二区 | 亚洲国产一区二区三区 | 亚洲一区三区在线观看 | 免费国产视频在线观看 | 无码日韩精品一区二区免费 | 国产精品精品久久久 | 久久精品国产亚洲夜色av网站 | 草久久| 一级免费a | 一级a性色生活片久久毛片 一级特黄a大片 | 日韩在线观看网站 | 色偷偷噜噜噜亚洲男人 | 在线观看深夜视频 | 亚洲精品乱 | 视频一区二区三区四区五区 | 一区二区免费 | 国产线视频精品免费观看视频 | 精品9999| 国产三级 | 黄色大片网站 | 黄色成人免费看 | 在线视频第一页 | 国产99视频精品免费视频7 | www.一区二区 | 国产精品久久久久久久久久免费看 | 中文字幕伊人 | 美女爽到呻吟久久久久 | 黄色一级免费 | 一级毛片网 | 欧美日韩综合视频 | 午夜男人视频 | 日本久久精品视频 | 日韩在线免费 |