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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2443|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的超溫報(bào)警器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:109043 發(fā)表于 2016-3-15 16:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /*-----------------------------------------------
  2.   名稱:DS18b20數(shù)碼管顯示 超溫報(bào)警
  3. /***********************************************************
  4. 實(shí)驗(yàn)名稱:DS18b20數(shù)碼管顯示 超溫報(bào)警
  5. 程序說(shuō)明:顯示格式 符號(hào) xxx.x C ,可以顯示負(fù)溫度 超過(guò)設(shè)定溫度報(bào)警
  6. 實(shí)驗(yàn)平臺(tái):YZ200 V2.0開(kāi)發(fā)箱
  7. 作者:徐銳鋒
  8. 日期:2010-11
  9. 廣州研展電子科技有限公司 (我愛(ài)研發(fā)網(wǎng))  版權(quán)所有
  10. ***********************************************************/

  11. #include <reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
  12. #include "18b20.h"

  13. #define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換
  14. #define CtrlPort P1 //定義位選端口

  15. #define OVERTEMP 60 //定義超溫報(bào)警數(shù)值


  16. bit ReadTempFlag;//定義讀時(shí)間標(biāo)志


  17. unsigned char code DuanMa[10]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};// 顯示段碼值0~9
  18. unsigned char code WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼
  19. unsigned char TempData[8]; //存儲(chǔ)顯示值的全局變量


  20. void Display(unsigned char FirstBit,unsigned char Num);//數(shù)碼管顯示函數(shù)
  21. void Init_Timer0(void);//定時(shí)器初始化
  22. /*------------------------------------------------
  23.                     主函數(shù)
  24. ------------------------------------------------*/
  25. void main (void)
  26. {                  
  27. unsigned int TempH,TempL,temp;
  28. Init_Timer0();
  29. while (1)         //主循環(huán)
  30.   {


  31. if(ReadTempFlag==1)
  32. {
  33.   ReadTempFlag=0;
  34.   temp=ReadTemperature();
  35.   if(temp&0x8000)
  36.      {
  37.      TempData[0]=0x40;//負(fù)號(hào)標(biāo)志
  38.      temp=~temp;  // 取反加1
  39.          temp +=1;
  40.          }
  41.   else
  42.      TempData[0]=0;

  43.      TempH=temp>>4;
  44.      TempL=temp&0x0F;
  45.      TempL=TempL*6/10;//小數(shù)近似處理

  46.         if(TempH>OVERTEMP)//如果超溫則提示
  47.        TempData[0]=~0x76;//顯示"H"
  48.         else
  49.            TempData[0]=0;


  50.     if(TempH/100==0)
  51.           TempData[6]=0;
  52.         else
  53.       TempData[6]=DuanMa[TempH/100]; //十位溫度
  54.     if((TempH/100==0)&&((TempH%100)/10==0))//消隱
  55.           TempData[5]=0;
  56.         else
  57.      TempData[5]=DuanMa[(TempH%100)/10]; //十位溫度
  58.      TempData[4]=DuanMa[(TempH%100)%10]&0x7f; //個(gè)位溫度,帶小數(shù)點(diǎn)
  59.      TempData[3]=DuanMa[TempL];
  60.          TempData[1]=0x39;         //顯示C符號(hào)
  61.   }        
  62. }
  63. }

  64. /*------------------------------------------------
  65. 顯示函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管
  66. 輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值2表示從第三個(gè)數(shù)碼管開(kāi)始顯示
  67. 如輸入0表示從第一個(gè)顯示。
  68. Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2
  69. ------------------------------------------------*/
  70. void Display(unsigned char FirstBit,unsigned char Num)
  71. {
  72.       static unsigned char i=0;
  73.          

  74.            DataPort=0;   //清空數(shù)據(jù),防止有交替重影

  75.        CtrlPort=WeiMa[i+FirstBit]; //取位碼

  76.        DataPort=TempData[i]; //取顯示數(shù)據(jù),段碼

  77.            i++;
  78.        if(i==Num)
  79.               i=0;


  80. }
  81. /*------------------------------------------------
  82.                     定時(shí)器初始化子程序
  83. ------------------------------------------------*/
  84. void Init_Timer0(void)
  85. {
  86. TMOD |= 0x01;          //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響                     
  87. //TH0=0x00;              //給定初值
  88. //TL0=0x00;
  89. EA=1;            //總中斷打開(kāi)
  90. ET0=1;           //定時(shí)器中斷打開(kāi)
  91. TR0=1;           //定時(shí)器開(kāi)關(guān)打開(kāi)
  92. }
  93. /*------------------------------------------------
  94.                  定時(shí)器中斷子程序
  95. ------------------------------------------------*/
  96. void Timer0_isr(void) interrupt 1
  97. {
  98. static unsigned int num;
  99. TH0=(65536-2000)/256;                  //重新賦值 2ms
  100. TL0=(65536-2000)%256;

  101. Display(0,8);       // 調(diào)用數(shù)碼管掃描
  102. num++;
  103. if(num==300)        //
  104.    {
  105.     num=0;
  106.     ReadTempFlag=1; //讀標(biāo)志位置1
  107.         }
  108. }
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本成人片在线观看 | 国产精品久久久久久久久久久久 | av入口 | 黄色一级免费 | 日韩在线日韩 | 亚洲一区二区在线播放 | 中文字幕乱码一区二区三区 | 一区二区三区四区免费观看 | 欧美成人a∨高清免费观看 91伊人 | 美女网站视频免费黄 | 久久在线| 久青草影院 | 欧美无乱码久久久免费午夜一区 | 国产综合久久 | 伊人91在线| 日韩成人久久 | 精品国产精品国产偷麻豆 | 日韩欧美一区二区三区免费观看 | 草草在线观看 | 久久亚洲一区二区三区四区 | 国产一级在线观看 | 日韩成人一区二区 | 色性av| 午夜影院在线观看视频 | 国产在线高清 | 91在线看| 另类视频在线 | 狠狠的干狠狠的操 | 欧美精品在线一区二区三区 | 中文字幕精品一区 | 成人1区2区 | 黑人粗黑大躁护士 | 国产在线中文字幕 | 久久精品99久久 | 不卡一区二区三区四区 | 国产一区久久精品 | 精品91久久| 日日夜夜草 | 欧美精品一区二区三区四区五区 | 中文字幕免费视频 | 久久成人人人人精品欧 |