久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6240|回復(fù): 0
收起左側(cè)

溫度單片機(jī)P0口用74HC373或74HC573鎖存

[復(fù)制鏈接]
ID:77367 發(fā)表于 2015-4-19 03:29 | 顯示全部樓層 |閱讀模式


  1. #include <AT89X52.h>       //調(diào)用51單片機(jī)的頭文件
  2. #include <Intrins.h>
  3. sbit ds18b20=P3^7;
  4. sbit OK=P3^6;
  5. unsigned char TT,temp1,num,TL=20,TH=27,w,s,m,n;
  6. unsigned char temp,temp2,key,dat;
  7. unsigned char  code tabcc[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff};//共陰極
  8. unsigned char  code tabca[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xBF};//共陽極
  9. //---------------------------------------
  10. //名稱:復(fù)位DS18B20函數(shù)
  11. //---------------------
  12. void delay(int ms)
  13. {
  14.   int i;
  15.   while(ms--)
  16.    for(i=0;i<120;i++);
  17. }

  18. void disp(w,s)                  
  19. {
  20.    unsigned char temp=0x01;
  21.    ///////////////////
  22.       P0=tabca[s]; //顯示一位數(shù)據(jù)  
  23.    P2 &=0xFC;
  24.     _nop_();
  25.    P2 |=0x03;
  26.    _nop_();   

  27.   
  28.    P0=1<<w-1;          //一位位選
  29.    P2 =0x01;
  30.    _nop_();
  31.    P2 |=0x03;
  32.    _nop_();
  33.    delay(6);
  34.    /////////////////////////
  35.    P0=0xff;         //一位顯示完后清屏  
  36.    P2 &=0xFC;
  37.    _nop_();
  38.    P2 |=0x03;
  39.    _nop_();
  40.    ///////////////////
  41. }
  42. void main()
  43.   {
  44.     char i;
  45. while(1)
  46. {
  47.    TT++;
  48.    if(TT==100)
  49.       TT=0;
  50.    n=TT/10;
  51.    m=TT%10;
  52.    for(i=0;i<20;i++)
  53.      {
  54.     disp(1,m); //個位
  55.     disp(2,n); //十位

  56.     disp(6,10);//右杠
  57.     disp(7,2);//區(qū)間
  58.     disp(8,10);//左杠
  59.      
  60.      }

  61.    }
  62. }
復(fù)制代碼





  1. #include <AT89X52.h>       //調(diào)用51單片機(jī)的頭文件
  2. #include <Intrins.h>
  3. sbit ds18b20=P3^7;
  4. sbit OK=P3^6;
  5. unsigned char TT,temp1,num,TL=20,TH=27,y;
  6. unsigned char temp,temp2,key,dat;
  7. unsigned char  code tabcc[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff};//共陰極
  8. unsigned char  code tabca[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x00};//共陽極
  9. //---------------------------------------
  10. //名稱:復(fù)位DS18B20函數(shù)
  11. //---------------------
  12. void delay(int ms)
  13. {
  14.   int i;
  15.   while(ms--)
  16.    for(i=0;i<120;i++);
  17. }


  18. void disp(void)
  19. {
  20.    unsigned char temp=0x01;
  21.    ///////////////////
  22.       P0=tabca[TT%10]; //第一位顯示數(shù)據(jù)  
  23. P2 &=0xFC;
  24.   _nop_();
  25. P2 |=0x03;
  26. _nop_();   

  27. P0=0x01;          //第一位位選
  28. P2 =0x01;
  29. _nop_();
  30. P2 |=0x03;
  31. _nop_();

  32. delay(6);
  33. /////////////////////////
  34. P0=0xff; //第一位顯示數(shù)據(jù)  
  35. P2 &=0xFC;
  36. _nop_();
  37. P2 |=0x03;
  38. _nop_();

  39. ///////////////////

  40. P0=tabca[TT/10]; //第二位顯示數(shù)據(jù)  
  41. P2 &=0xFC;
  42.   _nop_();
  43. P2 |=0x03;
  44. _nop_();   

  45. P0=0x02;          //第二位位選
  46. P2 =0x01;
  47. _nop_();
  48. P2 |=0x03;
  49. _nop_();
  50. delay(6);
  51. //////////////////////
  52. P0=0xff; //第一位顯示數(shù)據(jù)  
  53. P2 &=0xFC;
  54. _nop_();
  55. P2 |=0x03;
  56. _nop_();
  57.      /////////////////////

  58. }

  59. void main()
  60.   {
  61.     char i;
  62. while(1)
  63. {
  64. TT++;
  65. if(TT==100)
  66.     TT=0;
  67. for(i=0;i<20;i++)
  68.    {
  69. disp();
  70.   
  71.    }

  72.    }
  73. }
復(fù)制代碼





  1. #include <AT89X52.h>       //調(diào)用51單片機(jī)的頭文件
  2. #include <Intrins.h>
  3. sbit ds18b20=P3^7;
  4. sbit OK=P3^6;
  5. unsigned char TT,temp1,num,TL=20,TH=27,w,s,m,n;
  6. unsigned char temp,temp2,key,dat;
  7. unsigned char  code tabcc[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff};//共陰極
  8. unsigned char  code tabca[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xBF,0xFF};//共陽極
  9. //---------------------------------------
  10. //名稱:ms延遲
  11. //---------------------
  12. void delay(int ms)
  13. {
  14.   int i;
  15.   while(ms--)
  16.    for(i=0;i<120;i++);
  17. }
  18. //---------------------------------------
  19. //名稱:復(fù)位DS18B20函數(shù)
  20. //---------------------
  21. bit Reset(void)
  22. {
  23.    unsigned int i;
  24.    bit k;
  25.    ds18b20=0;           
  26.    i=95;         
  27.    while(i--);  
  28.                     
  29.    ds18b20=1;   
  30.    i=9;        
  31.    while(i--);      
  32.               
  33.    k=ds18b20;           
  34.    i=55;         
  35.    while(i--);     
  36.                
  37.    return k;         
  38. }
  39. //---------------------------------------
  40. //名稱:讀一字節(jié)函數(shù)
  41. //---------------------------------------
  42. unsigned char ReadByte(void)
  43. {
  44.    unsigned int i;
  45.    unsigned char j,buf=0;
  46.    for(j=0;j<8;j++)  
  47.    {
  48.         buf=buf>>1;   
  49.         ds18b20=0;        
  50.         _nop_();      
  51.         _nop_();              
  52.         ds18b20=1;   
  53.         _nop_();        
  54.         _nop_();   
  55.         _nop_();     
  56.         _nop_();      
  57.         _nop_();        
  58.         _nop_();      
  59.         _nop_();        
  60.        if(ds18b20==1)
  61.        buf|=0x80;
  62.        i=7;     
  63.           while(i--);  
  64.                
  65.    }
  66.    return buf;         
  67. }
  68. //---------------------------------------
  69. //名稱:寫一字節(jié)函數(shù)
  70. //---------------------------------------
  71. void WriteByte(unsigned char dat)
  72. {
  73. unsigned int i;
  74.     unsigned char j;
  75.     for(j=0;j<8;j++)
  76.      {            
  77.        if(dat&0x01)   //如果寫1
  78.          {     
  79.             ds18b20=0;    //拉低     
  80.             _nop_();        //維持2US,符合大于1US小于15US的規(guī)范
  81.             _nop_();        //維持2US,符合大于1US小于15US的規(guī)范
  82.             ds18b20=1;     //拉高      
  83.             i=7;      //維持約63US,符合不低于60US的要求
  84.             while(i--);    //維持約63US,符合不低于60US的要求        
  85.          }
  86.       else      //如果寫0
  87.          {           
  88.             ds18b20=0;    //拉低         
  89.             i=7;     //維持約63US,符合不低于60US的要求
  90.             while(i--);   //維持約63US,符合不低于60US的要求              
  91.             ds18b20=1;    //拉高        
  92.             _nop_();        //維持2US,符合大于1US的規(guī)范
  93.             _nop_();        //維持2US,符合大于1US的規(guī)范        
  94.          }
  95.       dat=dat>>1;    //寫入字節(jié)右移1位
  96. }
  97. }
  98. //---------------------------------------
  99. //名稱:DS18B20溫度轉(zhuǎn)換函數(shù)
  100. //---------------------------------------
  101. bit Convert(void)
  102. {   
  103. if(Reset()==0)          //復(fù)位DS18B20成功
  104.    {
  105.         WriteByte(0xcc);  //寫入跳過序列號命令字 Skip Rom
  106.         WriteByte(0x44);  //寫入溫度轉(zhuǎn)換命令字 Convert T
  107.         return 1;            //啟動溫度轉(zhuǎn)換成功
  108.    }
  109. else                    //失敗
  110.    {  
  111.         return 0;            //啟動溫度轉(zhuǎn)換失敗
  112.    }
  113. }
  114. //---------------------------------------
  115. //名稱:轉(zhuǎn)換結(jié)束處理函數(shù)
  116. //---------------------------------------
  117. void ReadFlash(void)
  118. {   
  119. unsigned char Lsb,Msb;
  120.     if(Reset()==0)          //復(fù)位DS18B20成功
  121.     {
  122.         WriteByte(0xcc);  //寫入跳過序列號命令字 Skip Rom
  123.         WriteByte(0xbe);  //寫入讀取數(shù)據(jù)令字 Read Scratchpad
  124.         Lsb=ReadByte();  //讀出第一個字節(jié)暫存于LSB
  125.         Msb=ReadByte();  //讀出第二個字節(jié)暫存于MSB
  126.         temp1=Lsb;       //temp1內(nèi)裝溫度參數(shù)的小數(shù)部分
  127.         temp2=Msb; //(Msb>>4)|(Lsb<<4);//temp2內(nèi)裝溫度參數(shù)的整數(shù)部分  
  128.     }
  129. else
  130.     {
  131.         temp1=0;     //如果復(fù)位失敗,溫度參數(shù)清零
  132.         temp2=0;     //如果復(fù)位失敗,溫度參數(shù)清零
  133.     }
  134. }

  135. void disp(w,s)                  
  136. {
  137.    unsigned char temp=0x01;
  138.    ///////////////////
  139.       P0=tabca[s]; //顯示一位數(shù)據(jù)  
  140.       P2 &=0xFC;
  141.       _nop_();
  142.       P2 |=0x03;
  143.       _nop_();   

  144.   
  145.       P0=1<<w-1;          //一位位選
  146.       P2 =0x01;
  147.       _nop_();
  148.       P2 |=0x03;
  149.       _nop_();
  150.       delay(4);
  151.    /////////////////////////
  152.       P0=0xff;         //一位顯示完后清屏  
  153.       P2 &=0xFC;
  154.       _nop_();
  155.       P2 |=0x03;
  156.       _nop_();
  157.    ///////////////////
  158. }
  159. void main()
  160. {      
  161.   while(1)
  162.   {   
  163.       {
  164.       if(Convert()==1);
  165.         {
  166.       ReadFlash();
  167.       TT=(temp2<<4)|(temp1>>4);     
  168.      }
  169.    if(TT<TL)
  170.        num=0;
  171.    else if(TT>TH)
  172.        num=2;
  173.       else   //((TT>=TL)&(TT<=TH))
  174.        num=1;
  175.       disp(1,TT%10); //個位
  176.       disp(2,TT/10); //十位
  177.    
  178.   
  179.   
  180.       disp(6,10);//右杠
  181.       disp(7,num);//區(qū)間
  182.       disp(8,10);//左杠      
  183.       }     
  184.   
  185.   }
  186. }
復(fù)制代碼





相關(guān)帖子

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线一区二区 | 午夜网站视频 | 综合二区 | 国产亚韩| 国产成人午夜高潮毛片 | 野狼在线社区2017入口 | 搞黄视频免费看 | 久久久www | 亚洲精品在线免费观看视频 | 免费一级黄色 | 国产福利在线播放麻豆 | 久久久激情视频 | 国产精品亚洲精品日韩已方 | 日本电影免费完整观看 | 99久久精品免费看国产四区 | 欧美黑人体内she精在线观看 | 一级欧美一级日韩片 | 国产精品1区 | 91亚洲国产成人久久精品网站 | av手机在线 | 国产免费看| 精品久久久久久久 | av网站免费观看 | 日韩aⅴ视频 | 三级av免费 | 精品国产亚洲一区二区三区大结局 | 亚洲在线一区二区 | 色狠狠桃花综合 | 中文字幕av一区 | 中文字幕在线免费 | 午夜精品一区二区三区在线播放 | 在线视频一区二区三区 | 一区二区三区国产精品 | 精品一区二区久久 | 韩国精品一区 | 中文字幕亚洲视频 | 国产一区二区日韩 | 精品www| 亚洲成人一区二区在线 | 亚洲精品一区二区三区在线观看 | 中文字幕在线观看一区 |