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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

智能儀器溫度檢測,12位AD轉換

[復制鏈接]
跳轉到指定樓層
樓主
ID:361406 發(fā)表于 2018-6-28 22:29 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
智能儀器溫度檢測,12位AD轉換。


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit rs = P2 ^ 0;
  6. sbit rw = P2 ^ 1;
  7. sbit ep = P2 ^ 2;
  8. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e};
  9. /***定義0831引腳***/
  10. sbit CS1=P1^0;
  11. sbit CLK1=P1^1;
  12. sbit DO1=P1^2;
  13. /***定義溫度報警引腳***/
  14. sbit P24=P2^4;
  15. sbit P25=P2^5;
  16. /***定義按鍵引腳***/
  17. sbit Key0=P1^3;
  18. sbit Key1=P1^4;
  19. sbit Key2=P1^5;
  20. sbit Key3=P1^6;
  21. uchar i_flag=0;
  22. uchar len=0;
  23. uchar key_flag=0;
  24. uchar key_operate=0;
  25. uchar counter;
  26. uchar flag=0;
  27. uint Tl=0;
  28. uchar TV;
  29. uint Th[]={100,110,120,120};
  30. uchar tempH[3];
  31. uchar tempL[3];
  32. uchar tmpdata[]={0,0,0};
  33. uchar i=0,i1=0,n=0;
  34. int tmp=0;
  35. /***延時程序1***/
  36. void delayUs()
  37. {     
  38.     _nop_();
  39.     _nop_();     
  40.         _nop_();     
  41.         _nop_();     
  42.         _nop_();
  43.         }
  44. /***延時程序2***/
  45. void delayms(uint i)
  46. {  
  47.         uint j;  
  48.         for(;i>0;i--)   
  49.         for(j=55;j>0;j--);
  50.         }

  51. /***0831初始化和數據讀取***/
  52. uchar readad0831()
  53. {   
  54.         uchar i=0,tmp=0;   
  55.         DO1=1;   
  56.         CS1=1;   
  57.         delayUs();   
  58.         CLK1=0;   
  59.     CS1=0;
  60.    delayUs();   
  61.    CLK1=1;   
  62.    delayUs();   
  63.    CLK1=0;   
  64.    delayUs();   
  65.    CLK1=1;   
  66.    delayUs();   
  67.    CLK1=0;   
  68.    delayUs();   
  69.    for(i=0;i<=7;i++)     
  70.    {      
  71.    tmp<<=1;    //左移一位      
  72.    if(DO1)         
  73.    tmp++;         
  74.    CLK1=1;         
  75.    delayUs();         
  76.    CLK1=0;         
  77.    delayUs();     
  78.    }   
  79.    CS1=1;   
  80.    return tmp;
  81.    }
  82. /***主函數***/
  83. void main()
  84. {   
  85.    TMOD=0x01;                  
  86.    TH0=(65535-50000)/256;   //定時器0賦初值   
  87.    TL0=(65535-50000)%256;   
  88.    TH1=(65535-30000)/256;   //定時器1賦初值   
  89.    TL1=(65535-30000)%256;   
  90.    ET1=1;                   //允許定時器1中斷   
  91.    ET0=1;                   //允許定時器0中斷   
  92.    TR0=1;                   //定時器0開始工作   
  93.    TR1=1;                   //定時器1開始工作   
  94.    EA=1;                    //開放總中斷   
  95.    while(1)      
  96.    {      
  97.         P2=P2&0xf0;        //關閉所有數碼管      
  98.                 P2=P2|0x01;        //打開第一個數碼管      
  99.                 P0=table[i];       //第一個數碼管顯示數據     
  100.                 delayms(1);     
  101.                 if(flag==0)     
  102.                 {        
  103.                 tmpdata[0]=tmp/100;      //百位         
  104.                  tmpdata[1]=tmp%100/10;   //十位         
  105.                   tmpdata[2]=tmp%100%10;   //個位     
  106.                   if(tmp>=Th[i-1])         //溫度上限報警     
  107.                   P24=0;                //紅燈亮   
  108.                   else     
  109.                    P24=1;     
  110.                    if(tmp<=Tl)              //溫度下限報警     
  111.                    P25=0;                //黃燈亮   
  112.                    else     
  113.                         P25=1;      
  114.                          display(tmpdata);        //顯示溫度值     
  115.                           }   
  116.                          if(flag==1)                  //報警溫度上限值的顯示      
  117.                          {     
  118.                          tempH[0]=Th[i-1]/100;     //百位           
  119.                          tempH[1]=Th[i-1]%100/10;  //十位           
  120.                          tempH[2]=Th[i-1]%100%10;  //個位     
  121.                          display(tempH);        
  122.                          }   
  123.                          }
  124.                          }
  125. /***定時器0開中斷***/
  126. void timer0() interrupt 1  {   
  127.         TH0=(65535-50000)/256;        //定時器0重新賦初值   
  128.         TL0=(65535-50000)%256;
  129.         /***溫度循環(huán)檢測***/   
  130.         n++;      
  131.         P3=0x00;   
  132.         if(n==50)
  133.      {         
  134.          /***單路溫度檢測***/   
  135.          if(i_flag==0)     
  136.          {     
  137.          i++;   
  138.          if(i==5)     
  139.          i=1;   
  140.          i1=i;   
  141.           }   
  142.          else     
  143.          {   
  144.          i=i1;     
  145.          }        
  146.          /***四路溫度循環(huán)檢測***/   
  147.          if(i==1)        //第一路     
  148.          {      
  149.          P3=0x01;      
  150.          }   
  151.          else if(i==2)  //第二路      
  152.          {      
  153.          P3=0x02;     
  154.          }      
  155.          else if(i==3)  //第三路     
  156.          {               
  157.          P3=0x04;      
  158.          }   
  159.          else           //第四路     
  160.          {      
  161.          P3=0x08;         
  162.          }   
  163.           n=0;  
  164.            delayUs();     
  165.            TV=readad0831();               //讀取溫度值   
  166.            tmp=TV*(120.0/255.0)+0.5;      //A/D轉換      
  167.            }
  168.            }
  169. /***定時器1開中斷***/
  170. void Timer_1(void) interrupt 3 using 2 {  
  171.    TH1=(65536-30000)/256;         //定時器1重新賦初值   
  172.    TL1=(65536-30000)%256;   
  173. if(((!Key0)|(!Key1)|(!Key2)|(!Key3))&(key_flag==0))    //進入按鍵設置      
  174. {        
  175. key_flag=20;        
  176. while(--key_flag);      //延時去抖動         
  177.   key_flag=1;         
  178.   if(!Key0)               //進入單路溫度檢測模式         
  179.   {      
  180.   if(key_operate==0)   
  181.    {      
  182.    key_flag=0;       //允許按鍵長按            
  183.    if(counter++>30)  //Modle鍵要長按2S生效      
  184.     {         
  185.         i_flag=1;      
  186.         i1=i;               
  187.         key_operate++;      
  188.         flag=0;      
  189.         key_flag=1;  //不允許按鍵長按         
  190.          }     
  191.          }        
  192.          else      
  193.           {           
  194.            flag=1;        
  195.            }        
  196.            }         
  197.            if(key_flag==1)         //進入單路溫度上限值的設定        
  198.            {      
  199.            if(!Key1)            //加1鍵         
  200.            {        
  201.            Th[i-1]++;           
  202.            }      
  203.            if(!Key2)            //減1鍵         
  204.            {           
  205.            Th[i-1]--;         
  206.         }         
  207.                 }         
  208.                 if(!Key3)                 //恢復四路溫度檢測            
  209.                 {        
  210.                 key_operate=0;        
  211.                 counter=0;        
  212.                 flag=0;        
  213.                 i_flag=0;            
  214.                 }         
  215.                 }   
  216.                 if((Key0)&(Key1)&(Key2)&(Key3))     
  217.                 key_flag=0;
  218.                 }
復制代碼

所有資料51hei提供下載:
智能儀器溫度檢測.zip (57.34 KB, 下載次數: 20)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:543049 發(fā)表于 2019-5-30 10:05 | 只看該作者
報警時是哪一個led燈亮啊?
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产一区二区三区动漫 | 免费视频一区二区 | 99精品网站 | 日韩中文字幕在线视频观看 | 久草中文在线 | 欧美性视频在线播放 | 日韩中文一区二区三区 | 精品免费视频 | 欧美精品在欧美一区二区 | 手机在线观看 | 精品国产1区2区3区 一区二区手机在线 | 国产小视频在线 | 一级少妇女片 | 久久精品免费一区二区三 | 午夜免费观看网站 | www亚洲一区 | 黄色免费在线观看网站 | 中文字幕日韩欧美一区二区三区 | 国产一级视频在线播放 | 中文字幕乱码一区二区三区 | 久久久999精品 | 午夜视频在线免费观看 | 日韩一级在线 | 成年人精品视频 | 亚洲欧洲综合av | 国产一级特黄视频 | 95国产精品| japan25hdxxxx日本 做a的各种视频 | 黄色免费av| 国产高清亚洲 | 欧美日韩一区二区三区四区 | 亚洲精品av在线 | 成人区一区二区三区 | 国产精品久久久久久久粉嫩 | 91精品国产自产精品男人的天堂 | 日韩免费激情视频 | 久久偷人 | 国产精品小视频在线观看 | 在线视频日韩 | 国产电影一区二区三区爱妃记 | 91网站在线观看视频 |