⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zuopin.c

📁 18b20的程序
💻 C
字号:
// Target : M8
// Crystal: 8.0000Mhz    //8M晶振
#include <iom8v.h> 
#include <macros.h> 

void delay_us()     //微秒延时程序(1us)
{
 asm("nop");
}	
void delay(unsigned int time)    
{
while(time)
  { delay_us();
    time--;
   }
}	
   
void init_1820()    //初始化18b20
{
  PORTD|=0X80;   //总线置1
  delay(10);
  PORTD&=~0x80;  //总线置0 
  delay(1200);    // 延时等待
  DDRD&=~0x80;  
  PORTD|=0x80;   //总线置1
  delay(50);   
  DDRD|=0x80; 
  PORTD|=0x80; 
  delay(200);   
} 
void write_1820(unsigned char temp)   //写数据
{   
  unsigned char i=0; 
  for(;i<8;i++) 
  { 
    PORTD&=~0X80; 
    if(temp&(1<<i))   //写数据,从低位开始 
    PORTD|=0X80; 
    else 
    PORTD&=~0X80; 
    delay(50);  
    PORTD|=0X80; 
  } 
  PORTD|=0X80; 
} 

unsigned char read_1820() //读数据
{   
 unsigned char m,i=0,n=0;     
  for(;i<8;i++) 
    { 
    PORTD&=~0X80;
	delay(5); 
    PORTD|=0X80; 
    DDRD&=~0X80; 
    m=(PIND&0X80);   //读数据,从低位开始 
    if(m) 
    n|=(1<<i); 
    else 
    n&=~(1<<i); 
    delay(80); 
    DDRD|=0X80; 
  } 
  return (n); 
} 
void temperature_read()  //读取温度值
{
  unsigned char tempture;
  unsigned char i,temh,teml; 
  init_1820();     //复位18b20 
  write_1820(0xcc);   // 发出转换命令 
  write_1820(0x44);    //启动温度转换
  delay(400); 
  init_1820();    
  write_1820(0xcc); //发出读命令 
  write_1820(0xbe);  //读数据
  teml=read_1820(); 
  temh=read_1820(); 
  UDR=teml;
  delay(150);
  UDR=temh;
  for(i=0;i<100;i++)   //延时等待
  delay(500);     
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)     //初始化uart
{
 UCSRB = 0x00; //disable while setting baud rate
 UCSRA = 0x00;
 UCSRC = BIT(URSEL) | 0x06;
 UBRRL = 0x33; //set baud rate lo
 UBRRH = 0x00; //set baud rate hi
 UCSRB = 0x18;
}

void main(void) //主函数 
{ 
delay(1000); 
DDRD=0Xff; 
PORTD=0Xff; 
uart0_init();
while(1)    
  temperature_read();
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -