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

📄 ztbmy.c

📁 对DS18b20传感器网络编码和搜索,以及对连接线的短路和开路进行检测
💻 C
字号:
/****************************************************************************
**此程序用于轴承故障诊断系统用
**功能:1、传感器编码 2、故障诊断搜索 3、轴温装置搜索4、校线 5、转速
**设计:程洪超
**日志:2005.3.23在液晶清屏命令LcaCommand(0x01)中加入延时程序delay(1000);
    这样不会出现乱字符;
        2005.6.30注意调整单总线器件写0写1的读写时隙,时序不对会导致单总线协议
        失败。
*****************************************************************************/
#include <C:\Keil\C51\INC\Philips\Reg51f.h>
#include <math.h>
#include <intrins.h>
#include <ctype.h>
#include <Float.h>
#include <string.h>
#include <stdio.h>


#define FALSE 0
#define TRUE  1
#define uchar unsigned char
#define uint  unsigned int
/*typedef struct
{
  uchar ROM[8];
  uchar CrcFlag;
}DOC1;
xdata DOC1 SensorBuf[1]; */
typedef struct
{
  uchar ROM[8];
  uchar SensorROM[8];
  uchar ZhouWei;
  //uchar CrcFlag;
}DOC2;
xdata DOC2 DS2406Buf[45];
idata DOC2 temp_buf[1];
sbit  DQ=P2^6;
sbit  DW=P3^7;
sbit  DataIN=P1^1;
sbit  DataOUT=P1^4;
sbit  TouchGND=P3^5;
sbit  TouchPower=P1^2;
sbit  PullUpPower=P0^1;
sbit  SID=P3^1;
sbit  SCLK=P3^4;
sbit  LCDCS=P3^0;
sbit  fangshi_key=P0^6;        //方式键
sbit  tiaozheng_key=P0^5;      //调整键定义
sbit  queren_key=P0^4;         //确认键
sbit  light_key=P3^4;          //灯键
sbit  background_light=P0^7;   //背光控制脚
sbit  in_wv=P0^1;              //温度传感器电源脚输入
sbit  in_12VA=P0^0;            //振动电压输入脚
sbit  P3_2=P3^2;
sbit  P0_0=P0^0;
sbit  P0_1=P0^1;
sbit  light=P1^0;
sbit  P3_3=P3^3;
uint  INT0_CNT;
uchar search_result;
/*********************************************
**以下为校线时,插座脚的定义
*********************************************/
sbit  Power12VA=P1^3;          //+12VA
sbit  WG=P1^6;
sbit  WIO=P1^5;
sbit  WV=P1^2;
sbit  P1_7=P1^7;
sbit  P0_2=P0^2;
sbit  P0_3=P0^3;
sbit  P2_0=P2^0;
sbit  P2_1=P2^1;
sbit  P2_2=P2^2;
sbit  P2_3=P2^3;
sbit  P2_4=P2^4;
sbit  P2_5=P2^5;
sbit  P2_6=P2^6;
sbit  P2_7=P2^7;
sbit  P3_6=P3^6;
sbit  P1_0=P1^0;
/***********************************************
**以下为印制板上插座XC9和XZ9等的标志位定义
**Flag_PIN1=0x00,表示XZ9的1脚和XC9的1脚是通的;
**Flag_PIN1=?,表示XZ9的1脚和XC9的1脚是断开的;
**Flag_PIN1的各位标志为1时,表示和1脚无短路,为
**0表示和1脚短路
************************************************/
uchar bdata Flag_PIN1;
sbit  Flag_PIN1_1=Flag_PIN1^0;
sbit  Flag_PIN1_2=Flag_PIN1^1;
sbit  Flag_PIN1_3=Flag_PIN1^2;
sbit  Flag_PIN1_4=Flag_PIN1^3;
sbit  Flag_PIN1_5=Flag_PIN1^4;
sbit  Flag_PIN1_6=Flag_PIN1^5;
sbit  Flag_PIN1_7=Flag_PIN1^6;
sbit  Flag_PIN1_8=Flag_PIN1^7;

uchar bdata Flag_PIN2;
sbit  Flag_PIN2_2=Flag_PIN2^1;
sbit  Flag_PIN2_3=Flag_PIN2^2;
sbit  Flag_PIN2_4=Flag_PIN2^3;
sbit  Flag_PIN2_5=Flag_PIN2^4;
sbit  Flag_PIN2_6=Flag_PIN2^5;
sbit  Flag_PIN2_7=Flag_PIN2^6;
sbit  Flag_PIN2_8=Flag_PIN2^7;

uchar bdata Flag_PIN3;
sbit  Flag_PIN3_3=Flag_PIN3^2;
sbit  Flag_PIN3_4=Flag_PIN3^3;
sbit  Flag_PIN3_5=Flag_PIN3^4;
sbit  Flag_PIN3_6=Flag_PIN3^5;
sbit  Flag_PIN3_7=Flag_PIN3^6;
sbit  Flag_PIN3_8=Flag_PIN3^7;

uchar bdata Flag_PIN4;
sbit  Flag_PIN4_4=Flag_PIN4^3;
sbit  Flag_PIN4_5=Flag_PIN4^4;
sbit  Flag_PIN4_6=Flag_PIN4^5;
sbit  Flag_PIN4_7=Flag_PIN4^6;
sbit  Flag_PIN4_8=Flag_PIN4^7;

uchar bdata Flag_PIN5;
sbit  Flag_PIN5_5=Flag_PIN5^4;
sbit  Flag_PIN5_6=Flag_PIN5^5;
sbit  Flag_PIN5_7=Flag_PIN5^6;
sbit  Flag_PIN5_8=Flag_PIN5^7;

uchar bdata Flag_PIN6;
sbit  Flag_PIN6_6=Flag_PIN6^5;
sbit  Flag_PIN6_7=Flag_PIN6^6;
sbit  Flag_PIN6_8=Flag_PIN6^7;

uchar bdata Flag_PIN7;
sbit  Flag_PIN7_7=Flag_PIN7^6;
sbit  Flag_PIN7_8=Flag_PIN7^7;

uchar bdata Flag_PIN8;
sbit  Flag_PIN8_8       =Flag_PIN8^7;
sbit  flag_fangshi_key  =Flag_PIN8^0;
sbit  flag_tiaozheng_key=Flag_PIN8^1;
sbit  flag_9cable       =Flag_PIN8^2;          //表示现在被校电缆为9芯总线
sbit  flag_7cable       =Flag_PIN8^3;          //表示现在被校电缆为7芯总线
sbit  flag_5cable       =Flag_PIN8^4;          //表示现在被校电缆为5芯总线
sbit  flag_short        =Flag_PIN8^5;          //校线时有短路标志
sbit  flag_cut          =Flag_PIN8^6;          //校线时有断路标志
uchar flag_85degree;

/************************************************/
void initialization();
//void exint1_DealCloseSys(void) interrupt 1 using 3
void InitLCD(void);
void INI_DS2450();
void read_ad2450();
void LcdCommand(unsigned char ccommand);
void LcdData(unsigned char cdata);
void dis(unsigned char  code *adr,unsigned char m);   /*显示n个字符*/
void delay(uint);
void OwWriteBit(uchar bitval);
uchar OwReadByte(void);
bit  OwReadBit(void);
void OwWriteByte(uchar val);
uchar ow_rest(void);
void OwWriteBit_code(uchar bitval);
uchar OwReadByte_code(void);
bit  OwReadBit_code(void);
void OwWriteByte_code(uchar val);
void wireWriteBit(uchar bitval);
uchar wireReadByte(void);
bit  wireReadBit(void);
void wireWriteByte(uchar val);
uchar wire_rest(void);
void DS2770WriteBit(uchar bitval);
uchar DS2770ReadByte(void);
bit  DS2770ReadBit(void);
void DS2770WriteByte(uchar val);
uchar DS2770_rest(void);
uchar docrc8(uchar value);
void Send_MatchRom(uchar FoundROM[8]);   // Perform Match ROM
uchar Read_ROMCode(uchar dat[8]);
uchar Read_ROMCode1(uchar dat[]);
uchar OWSearch();
uchar OWFirst();
uchar OWNext();
void OWTargetSetup(unsigned char family_code);
uint HEX2BCD(uint hex_data);
void Disp_Chinese(uchar ucAddr,uchar *pData,uchar ucNo);
void disp_SearchedSensor_count(uchar count);
void disp_SearchedDs2406_count(uchar count);
void disp_ZhouWei_num(uchar count);
void disp_ZhouWei_num1(uchar count1,uchar count2);
void disp_ZhouWei_num3(uchar count);                      //显示“轴位”
void disp_WenDuRslt(uint num);
void disp_WenDuRsltFu(uint num);                          //显示负温度

⌨️ 快捷键说明

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