单片机源程序如下:
- /*
- 程序说明: 单总线驱动程序
- 软件环境: Keil uVision 4.10
- 硬件环境: CT107单片机综合实训平台 8051 12MHz
- 日 期: 2011-8-9
- */
- #include "reg52.h"
- #include "ds18b20.h"
- #include "intrins.h"
- sbit DQ = P2^0; //单总线接口
- //单总线延时函数
- void Delay_OneWire(unsigned int t)
- {
- // unsigned char i;
- while(t--){
- // for(i=0; i<12; i++);
- }
- }
- //通过单总线向DS18B20写一个字节
- void Write_DS18B20(unsigned char dat)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- DQ = 0;
- DQ = dat&0x01;
- Delay_OneWire(5);
- DQ = 1;
- dat >>= 1;
- }
- Delay_OneWire(5);
- }
- //从DS18B20读取一个字节
- unsigned char Read_DS18B20(void)
- {
- unsigned char i;
- unsigned char dat;
-
- for(i=0;i<8;i++)
- {
- DQ = 0;
- dat >>= 1;
- DQ = 1;
- if(DQ)
- {
- dat |= 0x80;
- }
- Delay_OneWire(5);
- }
- return dat;
- }
- //DS18B20设备初始化
- bit init_ds18b20(void)
- {
- bit initflag = 0;
-
- DQ = 1;
- Delay_OneWire(12);
- DQ = 0;
- Delay_OneWire(80);
- DQ = 1;
- Delay_OneWire(10);
- initflag = DQ;
- Delay_OneWire(5);
-
- return initflag;
- }
- unsigned char Tempget()
- {
- unsigned char temp,low,high;
-
- init_ds18b20();
- Write_DS18B20(0xcc);
- Write_DS18B20(0x44);
- Delay_OneWire(200);
-
- init_ds18b20();
- Write_DS18B20(0xcc);
- Write_DS18B20(0xbe);
-
- low=Read_DS18B20();
- high=Read_DS18B20();
-
- temp=high<<4;
- temp|=(low>>4);
-
- return temp;
- }
复制代码
所有资料51hei提供下载:
18b20时序.zip
(1.1 KB, 下载次数: 5)
|