欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1979|回復: 0
收起左側

數碼管18B20溫度顯示程序

[復制鏈接]
ID:313465 發表于 2018-4-22 00:40 | 顯示全部樓層 |閱讀模式
    #include<reg52.h>
    #include<intrins.h>
    #define  uchar  unsigned  char
    #define  uint   unsigned  int
    #define  duanma  P0
    sbit LSA=P2^2;
        sbit LSB=P2^3;
        sbit LSC=P2^4;
        sbit ds=P3^7;
        bit flag;
        uint temp;
        uint shu=0;
          uchar displaydata[4];                                                                                                                                             
         uchar  code table[]={
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
        //
         void digdisplay();
         void digdisplay1();

        void delayus(uint t)
        {
         while(t--);
        }

  void ds_reset() //18b20初始化
  {
   ds=1;
   delayus(5);
        ds=0;
        delayus(80);//480-960us
        ds=1;
        delayus(14);
        if(ds==0)
          flag=1;
        else
          flag=0;
          delayus(20);

  }       
bit ds_read_bit()//讀一位
{
  bit dat;
  ds=0;
  _nop_();
  _nop_();
  ds=1;
  _nop_();
  dat=ds;
  delayus(8);
   return dat;
}       
uchar ds_read_byte() //讀一個字節
{
  uchar i,j,k;
  for(i=0;i<8;i++)
   {
            j=ds_read_bit();
         k=(j<<7)|(k>>1);
             
   }
        return k;
}       
void ds_write_byte(uchar dat)//
{
   uchar i;
   for(i=0;i<8;i++)
   {
            ds=0;
         _nop_();
         ds=dat&0x01;//
         delayus(1);
         ds=1;
         dat=dat>>1;
   }
   //delayus(3);
}       
uint read_temperature()//
{
  uchar a,b;
  ds_reset();
  ds_write_byte(0xcc);
  ds_write_byte(0xbe);
   a=ds_read_byte();
   b=ds_read_byte();
   temp=b;
   temp=temp<<8;
   temp=temp|a;
   temp=temp*0.0625*10+0.5;
          
                    
   return temp;
}       
void digdisplay1()
{
         displaydata[2]=table[temp/100];
                          
                         displaydata[1]=table[temp%100/10]|0x80;
                          
                        displaydata[0]=table[temp%10];
}       
       
        void  main()
        {                 
          while(1)
         {
                 ds_reset();
           ds_write_byte(0xcc);
           ds_write_byte(0x44);
                    
          
          read_temperature();
                    
                       

                digdisplay1();       
                 digdisplay( );
                 
                } //while(1);
          
        }


         void digdisplay()
{       
/
                switch(shu)         //
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;
                }
                duanma=displaydata[shu];
                 
                shu++;
                if(shu>3)
                 shu=0;
       
                                    

        }


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表