Temperature sensor ds18b20-AVR program code

Publisher:电子设计艺术家Latest update time:2017-11-23 Source: eefocusKeywords:ds18b20  AVR Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

#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)

{

flying 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)

{

flying 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)

{ fly 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

 

      };

}


Keywords:ds18b20  AVR Reference address:Temperature sensor ds18b20-AVR program code

Previous article:Matrix keyboard-AVR program code
Next article:ds1302 clock-AVR program code

Recommended ReadingLatest update time:2024-11-16 14:50

Can a tiny fruit drive an AVR microcontroller?
The configuration of a working fruit powered AVR microcontroller is as follows: Hardware: Mega88, 32KHz external crystal oscillator, 2x negative voltage circuit driven by AVR's PWM, LCD is a static pen-end LCD, driven directly by Mega88's IO port, without time-sharing scanning. Software: Refresh the LCD display ev
[Microcontroller]
Can a tiny fruit drive an AVR microcontroller?
Programming of ultrasonic distance measurement based on AVR microcontroller
#include #defineucharunsignedchar #defineuintunsignedint ucharint_flag; uintqian,bai,shi,ge; swimming; floatdistance; //AlphanumericLCDModulefuncTIons #asm .equ__lcd_port=0x18;PORTB #endasm #include //ExternalInterrupt0servicerouTIne interrupt voidext_int0_isr(void) {#asm("sei") if(int_flag) { distance=i*17.3; } el
[Microcontroller]
Programming of ultrasonic distance measurement based on AVR microcontroller
Realize the process of USB_Flash_BootLoader HID to flash the AVR microcontroller chip program
In the early stage of making USBASP, I learned the BootLoader principle of AVR microcontroller chip, found a lot of information about USB-HID and BootLoader, and made a simple atmega8(16) board that can flash the program. Now I will share what I have learned with you. 1. About BootLoader         BootLoader means that
[Microcontroller]
Realize the process of USB_Flash_BootLoader HID to flash the AVR microcontroller chip program
Interface Design between Digital Temperature Sensor TC77 and AVR Microcontroller
The AVR series of microcontrollers have integrated TWI (Two-wire Serial Interface) bus. This bus has the characteristics of I2C bus, that is, simple wiring, external hardware only needs two pull-up resistors, and 128 different devices can be interconnected using the clock line SCL and the data line SDA; it also
[Microcontroller]
Interface Design between Digital Temperature Sensor TC77 and AVR Microcontroller
AVR microcontroller tutorial - serial port sending
So far, our development board can only process a small amount of data: read a few pin levels, output a few LEDs, and at most use a digital tube to display a two-digit number. As for inputting a command, outputting a debugging message, or even using scanf and printf for input and output, it is unimaginable on the devic
[Microcontroller]
AVR microcontroller tutorial - serial port sending
AVR MCU UART sends data in query and interrupt mode
/****************************************************** *************************************************** ************* * AVR MCU UART sends data in query and interrupt mode * Description: Test environment hardware M16, development platform IAR for AVR V5.11B *************************************************** *
[Microcontroller]
AVR MCU-Functional Features Introduction
AVR microcontroller is a RISC microcontroller launched by Atmel in 1997. RISC (Reduced Instruction Set Computer) is relative to CISC (Complex Instruction Set Computer). RISC does not simply reduce instructions, but improves the computing speed by making the computer structure simpler and more reasonable. RISC gives pr
[Microcontroller]
Design Idea of ​​Embedded "Thin Server" System Based on AVR Microcontroller
1 Introduction In the 21st century, the development of computers has entered a stage full of opportunities - the post-PC era. After the PC, various forms of digital products have begun to become a major tool for information processing, and are gradually forming a huge industry full of business opportunities. The
[Microcontroller]
Design Idea of ​​Embedded
Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号