代码如下:
ds18b20.c
ds18b20.h
- #ifndef ds18b20_H
- #define ds18b20_H
- /*********************************************************************************************************
- ** 基本环境
- ********************************************************************************************************/
- #include <intrins.h>
- #include<reg52.h>
- /*********************************************************************************************************
- ** 1-Wire参数定义
- ********************************************************************************************************/
- //1-Wire Standard Speed
- #define TLOW0 40 //单线写0低电平时间80us
- #define TLOW1 1 //单线写1低电平时间7us
- #define TSOLT 40 //时间间隙80us
- #define TRDV 1 //获得信号时间7us
- #define TRSTL 300 //复为低电平时间 600us延时
- #define TPDHIGH 20 //40us高电平存在检测
- #define TPDLOW 80 //160us低电平存在检测
- #define TTSTH 200 //400us复位电平延时
- /*********************************************************************************************************
- ** 1-Wire命令定义
- ********************************************************************************************************/
- /*ROM操作命令*/
- #define OW_SearchROM 0xF0 //搜索ROM
- #define OW_ReadROM 0x33 //读取ROM
- #define OW_MatchROM 0x55 //匹配ROM
- #define OW_SkipROM 0xCC //跳过ROM
- #define OW_AlarmSearch 0xEC //告警搜索
- /*存取器操作与温度变换命令*/
- #define OW_ConvertT 0x44 //温度转换
- #define OW_WriteScratchpad 0x4E //写暂存器命令
- #define OW_ReadScratchpad 0xBE //读暂存器命令
- #define OW_CopyScratchpad 0x48 // 复制寄存器
- #define OW_RecallE2 0xB8 //从新调用E2
- #define OW_ReadPower 0xB4 //读电源模式
- /*********************************************************************************************************
- ** 信号线声明
- ********************************************************************************************************/
- sbit DQ =P2^7;
- /*********************************************************************************************************
- ** 变量全局声明
- ********************************************************************************************************/
- extern unsigned char Temperature;
- /*********************************************************************************************************
- ** 函数声明
- ********************************************************************************************************/
- static void Delay_us (unsigned char us);
- static unsigned char OWTouchReset (void);
- static void OWWriteBit (unsigned char BitData);
- static unsigned char OWReadBit (void);
- static void OWWriteByte (unsigned char Data);
- static unsigned char OWReadByte (void);
- extern unsigned char DS18B20_Init (void);
- extern unsigned char ReadDS18B20 (void);
- extern void DS18B20ConvT (void);
- /**********************end****************************************/
- #endif
display.c
- //程序:display.c键盘显示子程序
- //功能:显示所需要显示的数字
- //函数返回值:unsigned char
- #include"display.h"
- //sbit LED1=P2^0;
- // 数码管0~1, A,B所对应的数码管键值
- uchar code disp_save_num[12]={0X88, 0XBE, 0XC4, 0X94, 0XB2, 0X91,
- 0X81, 0XBC, 0X80,0X90,0XA0,0XFF};
- //读取所需显示的数字,并显示
- void Display(uchar *disp_num)
- {
- uchar move_number,move_bit;
- uchar disp_number;
-
-
- SS_CLK = 0;
-
- for(move_number=0;move_number<4;move_number++)
- {
- disp_number=disp_save_num[*(disp_num+move_number)];//读取所需显示的数字
- //并从所对应的键值里
- //选择对应的键值
-
- for(move_bit=0; move_bit<8; move_bit++)
- {//显示对应键值
- // P0=disp_save_num[3];
- // LED1=0;
- SS_DATA = disp_number&0x80;
-
- SS_CLK = 1;
- SS_CLK = 0;
- disp_number<<=1;
- }
- }
- }
-
display.h
|