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

📄 main.h

📁 msp430F413用DS18B20测温
💻 H
字号:
      /********************************************************
      * 命令字定义                                 *
      ********************************************************/
      #define uchar unsigned char
      #define uint unsigned int
      /***精确定时方法*****/
      #define CPU_F ((double)2031616)         //8000000为 MCLK=8MHZ的意思*
      #define Delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 
      #define Delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
      /***调用此程序时实参必是数字,而不能使用变量作为实参。 
      Delay_us(1);     //这是产生1微秒的延时 
      Delay_ms(1);     //这是产生1毫秒的延时 
      Delay_us(3.5);   //延时3.5毫秒,还是可以这样呢 
      Delay_ms(3.5);   //延时3.5毫秒…是不是很实用?
      ***精确定时方法*****/
   //#define wei1_1      P1DIR|=BIT7;P1OUT|=BIT7 //数码管低位置高
   //#define wei1_0      P1DIR|=BIT7;P1OUT&=~BIT7 //数码管低位置低
   //#define wei2_1      P1DIR|=BIT6;P1OUT|=BIT6 //数码管高位置高
   //#define wei2_0      P1DIR|=BIT6;P1OUT&=~BIT6 //数码管高位置低
   #define duan_out    P2DIR=0xff   //数码管段选P2口设为输出
   #define IR_DIR_IN   P1DIR&=~BIT0  //红外接收头P1.0设置为输入,
   #define IRIN        (P1IN&BIT0)   //红外接收头输入值
   #define duan        P2OUT   //数码管段选为P2口
         //设置重复检测次次数,超出次数则超时
      #define     ReDetectTime    20
      //ds18b20命令
      #define     SkipROM      0xCC
      #define     MatchROM     0x55
      #define     ReadROM      0x33
      #define     SearchROM    0xF0
      #define     AlarmSearch 0xEC
      #define     Convert      0x44
      #define     WriteScr     0x4E
      #define     ReadScr      0xBE
      #define     CopyScr      0x48
      #define     RecallEE     0xB8
      #define     ReadPower    0xB4

      //P2.0接DS18B20的DQ,P2.1为DQ的上拉电源
      #define ReleaseDQ() P2OUT |= BIT0    //上拉/释放总线
      #define PullDownDQ() P2OUT &= ~BIT0   //下拉总线
      #define vcc()   P2OUT |= BIT1
      #define ReadDQ() P2IN&BIT0
      #define IoIn_DQ() P2DIR&=~BIT0
      #define IoOut_DQ() P2DIR|=BIT0
      
      #define RXD   0x02                          // RXD on P1.1
      #define TXD   0x01                          // TXD on P1.0
      //  Conditions for 9600 Baud SW UART, SMCLK = 1048576
      #define Bitime_5  0x47                 // ~ 0.5 bit length + small adjustment
      #define Bitime    0x6C                 // ~ 9620 baud

      unsigned int RXTXData;
      unsigned char BitCnt;

      void TX_Byte (void);
      void RX_Ready (void);



      /********************************************************
      * 函数                            *
      ********************************************************/
      void Display(void);   //显示
      void Sys_Init(void); //系统初始化
      void Ds18b20_WriteBit(uchar bitdata); //写bit2DS18B20
      void Ds18b20_WriteByte(uchar chrdata); //写Byte DS18B20
      void Ds18b20_Write(uchar *p_readdata, uchar bytes); //写 DS18B20
      uchar Ds18b20_Init(void);         //DS18B20初始化,存在返0,否则返1
      uchar Ds18b20_ReadBit(void);    //读bit From DS18B20
      uchar Ds18b20_ReadByte(void);         //读Byte DS18B20
      //uchar Ds18b20_ReadRom(uchar *p_readdata); //读 DS18B20 ROM:成功返0,失败返1
      uchar Ds18b20_ReadEE(uchar *p_readdata); //读 DS18B20 EE :成功返0,失败返1
      uchar TempCal(uchar *p_fuhao,uchar*p_wendu_zhensu,uchar *p_wendu_yusu); 
      //成功返0,失败返1 (温度范围-55 --- +128)
      void InitSys();
      void display();
      void temG();
      void mu1(void);//mu
      void mu2(void);//上
      void mu3(void);//下
      void mu4(void);//enter
      void flash_eraseFLASH(uchar *seg);
      void flash_writeByte(int dst, uchar value);
      void ReadFlash(uint wAddr,uchar *bBuf,uchar bLen);
     
      /********************************************************
      * 变量                            *
      ********************************************************/
    uchar time_yanshi, key_yanshi;
    uchar wendu_zhensu = 0;
    uchar wendu_yusu = 0;
    uchar wendu_fuhao = 0;
    uchar dat[8]={0,0,0,0,0,0,0,0};
    uchar dw,dd,day,wdj,ds,i1,i2,i3,i4;
    uchar y1=1,x=1,y2=1;
    
    uint daf;
    int pp;
    uint tt1[6]={0,0,0,0,0,0};
    uchar wt1[6]={21,21,21,21,21,21};
    const uchar  xx[4]={1,1,1,1},a[6]={5,1,1,12,12,10},b[6]={0,0,0,31,31,0};
    const uchar  c[6]={0,0,0,60,74,0};
    const uchar digit[13]=
      {
      0xAF, // "0"    LCD segments a+b+c+d+e+f
      0xA0, // "1"    b+c
      0xCB, // "2"    a+b+g+e+d
      0xE9, // "3"    a+b+c+d+g
      0xE4, // "4"    b+c+f+g
      0x6D, // "5"    a+c+d+f+g
      0x6F, // "6"    a+c+d+e+f+g
      0xA8, // "7"    a+b+c
      0xEF, // "8"    a+b+c+d+e+f+g
      0xED, // "9"    a+b+c+d+f+g
      0x40, // "-"
      0x4f, // "E"
      0x00   /* 不显示 */
      };
      const uchar CrcTable [256]={
      0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
      157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
      35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
      190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
      70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
      219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
      101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
      248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
      140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
      17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
      175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
      50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
      202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
      87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
      233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
      116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
      };
     
      
      
      
      

⌨️ 快捷键说明

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