📄 ds18b20.c~
字号:
#include<mega16.h>
#include<delay.h>
#include<stdlib.h>
#include<string.h>
#asm
.equ __lcd_port=0x1b //端口A
#endasm
#include <lcd.h>
#define uchar unsigned char
//char flash string[]="date:";
//char flash s[]="time:";
char flash s1[]="wendu:" ;
//char flash s2[]="\xdfC" ;
char tempstr[5];
//char s3[]="set tempature";
//char s4[]="temparature is" ;
//char s5[]="too high";
#define QD_PORT PORTC
#define QD_DDR DDRC
#define QD_PIN PINC
#define QD_H QD_PORT|=0x01 //PC0置高
#define QD_L QD_PORT&=~0x01 //下拉
#define QD_DDRL QD_DDR&=~0x01
#define QD_DDRH QD_DDR|=0x01
float tempa ;
/*void lcd_xianshiflash(uchar x,uchar y,char flash *string)
{
lcd_gotoxy(x,y);
lcd_putsf(string);
} */
void b20_init(void) //初始化
{
QD_DDRH;
QD_H;
delay_us(4);
QD_L;
delay_us(500);
QD_H;
QD_DDRL; delay_us(5);
while(QD_PIN&0x01);
while(!QD_PIN&0x01);
QD_DDRH;
QD_H;
delay_us(20);
}
void b20_write_byte(uchar data) //写时间隙
{
uchar i;
for(i=0;i<8;i++)
{
if(data&0x01)
{
QD_L;
delay_us(7);
QD_H;
delay_us(55);
}
else
{
QD_L;
delay_us(60);
QD_H;
delay_us(8);
}
data=data>>1;
}
}
uchar b20_read_byte(void) //读时间隙
{
uchar data,i;
data=0x00;
for(i=0;i<8;i++)
{
QD_L;
delay_us(5);
QD_H;
delay_us(2);
if(QD_PIN&0x01)
{
data|=(0x01<<i);
}
delay_us(45);
}
return (data);
}
void b20_write_command(uchar command)
{
b20_init();
delay_ms(1);
b20_write_byte(0xCC);
b20_write_byte(command);
}
void b20_read_temparater(void)
{
int temp;
uchar templ,temph;
b20_write_command(0x44);//开始温度转换
b20_write_command(0xBE);//读取暂存器和CRC字节
templ=b20_read_byte();
temph=b20_read_byte();//高字节
lcd_gotoxy(1,1);
lcd_puts(0);
if(temph&0x80)
{
temp=temph;
temp=(temp<<8)|templ;
temp=(-1)*temp;
lcd_gotoxy(9,1);
lcd_putchar('-');
}
else {
temp=temph;
temp=(temp<<8)|templ;
}
tempa=(temp>>4)+(temp&0x0F)/16.0;
}
void main()
{
if(lcd_init(16))
{
lcd_clear();
while(1)
{
b20_read_temparater();
ftoa(tempa,1,tempstr);//将浮点通过ftoa函数转为一个字符串,然后把字符串中的每一个字符依次发送出去。
lcd_gotoxy(0,0);
lcd_putsf(s1);
lcd_gotoxy(7,0) ;
lcd_puts(tempstr) ; //该函数将在从当前的显示位置开始,显示定义在SRAM中的字符串
delay_ms(1000);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -