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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6219|回復: 0
打印 上一主題 下一主題
收起左側

溫度單片機P0口用74HC373或74HC573鎖存

[復制鏈接]
跳轉到指定樓層
樓主
ID:77367 發表于 2015-4-19 03:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


  1. #include <AT89X52.h>       //調用51單片機的頭文件
  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. //名稱:復位DS18B20函數
  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]; //顯示一位數據  
  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);//區間
  58.     disp(8,10);//左杠
  59.      
  60.      }

  61.    }
  62. }
復制代碼





  1. #include <AT89X52.h>       //調用51單片機的頭文件
  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. //名稱:復位DS18B20函數
  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]; //第一位顯示數據  
  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; //第一位顯示數據  
  35. P2 &=0xFC;
  36. _nop_();
  37. P2 |=0x03;
  38. _nop_();

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

  40. P0=tabca[TT/10]; //第二位顯示數據  
  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; //第一位顯示數據  
  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. }
復制代碼





  1. #include <AT89X52.h>       //調用51單片機的頭文件
  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. //名稱:復位DS18B20函數
  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. //名稱:讀一字節函數
  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. //名稱:寫一字節函數
  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的規范
  81.             _nop_();        //維持2US,符合大于1US小于15US的規范
  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的規范
  93.             _nop_();        //維持2US,符合大于1US的規范        
  94.          }
  95.       dat=dat>>1;    //寫入字節右移1位
  96. }
  97. }
  98. //---------------------------------------
  99. //名稱:DS18B20溫度轉換函數
  100. //---------------------------------------
  101. bit Convert(void)
  102. {   
  103. if(Reset()==0)          //復位DS18B20成功
  104.    {
  105.         WriteByte(0xcc);  //寫入跳過序列號命令字 Skip Rom
  106.         WriteByte(0x44);  //寫入溫度轉換命令字 Convert T
  107.         return 1;            //啟動溫度轉換成功
  108.    }
  109. else                    //失敗
  110.    {  
  111.         return 0;            //啟動溫度轉換失敗
  112.    }
  113. }
  114. //---------------------------------------
  115. //名稱:轉換結束處理函數
  116. //---------------------------------------
  117. void ReadFlash(void)
  118. {   
  119. unsigned char Lsb,Msb;
  120.     if(Reset()==0)          //復位DS18B20成功
  121.     {
  122.         WriteByte(0xcc);  //寫入跳過序列號命令字 Skip Rom
  123.         WriteByte(0xbe);  //寫入讀取數據令字 Read Scratchpad
  124.         Lsb=ReadByte();  //讀出第一個字節暫存于LSB
  125.         Msb=ReadByte();  //讀出第二個字節暫存于MSB
  126.         temp1=Lsb;       //temp1內裝溫度參數的小數部分
  127.         temp2=Msb; //(Msb>>4)|(Lsb<<4);//temp2內裝溫度參數的整數部分  
  128.     }
  129. else
  130.     {
  131.         temp1=0;     //如果復位失敗,溫度參數清零
  132.         temp2=0;     //如果復位失敗,溫度參數清零
  133.     }
  134. }

  135. void disp(w,s)                  
  136. {
  137.    unsigned char temp=0x01;
  138.    ///////////////////
  139.       P0=tabca[s]; //顯示一位數據  
  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);//區間
  182.       disp(8,10);//左杠      
  183.       }     
  184.   
  185.   }
  186. }
復制代碼





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人99久久亚洲综合精品 | 免费看的黄网站 | 天天爱天天操 | 亚洲欧美激情国产综合久久久 | 成人小视频在线观看 | 日本中文字幕日韩精品免费 | 久久爱黑人激情av摘花 | 国产成人av一区二区三区 | 免费看a| 成人精品视频 | 日韩精品免费视频 | 91亚洲欧美 | 色婷婷精品国产一区二区三区 | 国产一区二区三区免费观看在线 | 99热精品6 | 精品一区二区三区四区五区 | 国产成人99久久亚洲综合精品 | 一区二区三区四区不卡视频 | 一区二区在线免费观看 | 亚洲精品乱码久久久久久9色 | 91在线视频观看 | 337p日韩| 精品国产一区二区在线 | 国产伦精品一区二区三区视频金莲 | 日韩欧美不卡 | 欧美国产精品一区二区三区 | 中文在线a在线 | 欧美精品二区 | 在线观看免费福利 | 亚洲小视频 | av网站免费在线观看 | 日韩精品成人在线 | 亚洲小视频在线播放 | 国产精品一区视频 | 91亚洲免费 | 欧美视频在线播放 | 台湾av在线 | 亚洲欧美视频一区 | 日本亚洲一区 | 成人性视频免费网站 | 天堂一区二区三区四区 |