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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于pcf8591+tlc2543的單片機雙路溫度檢測報警系統 帶串口上位機控制

[復制鏈接]
跳轉到指定樓層
樓主
基于pcf8591 tlc2543的雙路溫度檢測報警系統 帶串口上位機控制帶仿真 源程序
溫度傳感器是 LM35
兩路測溫通道所用的ad芯片分別是pcf8591 和 tlc2543
仿真開始運行后  串口助手發a 啟動pcf那路的測量 并顯示在6位一體數碼管
串口助手發b 啟動tlc那路的測量 并顯示在6位一體數碼管
當tlc那路溫度超過100攝氏度 蜂鳴器報警 并且上位機收到error!字符串
pcf那路測溫范圍0-150攝氏度
tlc那路測溫0-120攝氏度 數碼管顯示到小數點后一位

注意 運行仿真前要把兩個lm35的初始溫度設置為150攝氏度和30攝氏度 否則會抱錯 什么real time simulation failed
上面的lm35初始溫度設置為150攝氏度 下面的設置為30攝氏度 如下圖所示

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機源程序如下:
  1. #include "tlc2543.h"
  2. #include "uart.h"

  3. #define TIME_PERIOD 300
  4. unsigned char DSY_BUFF_CODE[16] = {0xc0,0xf9,0xa4,0xb0,
  5.                                         0x99,0x92,0x82,0xf8,
  6.                                         0x80,0x90,0x88,0x83,
  7.                                         0xc6,0xa1,0x86,0x8e};
  8. unsigned char txt[] = "Error!";
  9. sbit seg1 = P2^2;
  10. sbit seg2 = P2^3;
  11. sbit seg3 = P2^4;
  12. sbit seg4 = P2^5;
  13. sbit seg5 = P2^6;

  14. sbit bell = P3^7;  //pcf8591那路溫度超過100攝氏度 報警
  15. sbit led = P3^6;   //pcf8591那路溫度超過100攝氏度 閃燈
  16. void timer_init();
  17. unsigned int read_tmp();

  18. unsigned int temp_pcf8591,temp_tlc2543;
  19. bit flag;





  20. void main()
  21. {         

  22.         timer_init();
  23.         UART_int();       
  24. //        send_dc(0xff);                               
  25.         bell = 0;
  26.     led = 0;               
  27.     while(1)
  28.         {
  29.                  temp_pcf8591 = read_tmp();
  30.                 temp_tlc2543 = get_data();
  31.        
  32.                 if(temp_pcf8591>=10000) {bell = 1;        led = 1;        send_string(txt);}
  33.                 else {        bell = 0; led = 0;}
  34.                          
  35.         }
  36. }

  37. void timer_init()
  38. {
  39.         TMOD=0x01;
  40.         TH0=(65536-TIME_PERIOD)/256;
  41.         TL0=(65536-TIME_PERIOD)%256;  
  42.         EA=1;
  43.         ET0=1;  
  44. //        TR0=1;                                                            //先不開啟定時器0  后面通過上位機發特定字符來開啟定時器從而顯示溫度
  45. }


  46. void timer0_int ()interrupt 1
  47. {        static unsigned char num = 0;
  48.         static unsigned int temp;
  49.         num++;

  50.         TH0=(65536-TIME_PERIOD)/256;
  51.         TL0=(65536-TIME_PERIOD)%256;

  52.         if(flag) temp = temp_pcf8591;        //flag標志位控制要顯示的溫度值(pcf8591所測的溫度還是tlc2543測的溫度)
  53.         else temp = temp_tlc2543;


  54.         switch(num)                                           //動態顯示
  55.         {
  56.                 case 1:
  57.                 P2 &= 0x03;
  58.                 P0 = (DSY_BUFF_CODE[temp/10000]);
  59.                 seg1 = 1;
  60.                 break;

  61.                 case 2:
  62.                 P2 &= 0x03;
  63.                 P0 = DSY_BUFF_CODE[temp%10000/1000];
  64.                 seg2 = 1;
  65.                 break;               

  66.                  case 3:
  67.                 P2 &= 0x03;
  68.                 P0 = (DSY_BUFF_CODE[temp%1000/100])&(0x7f);
  69.                 seg3 = 1;
  70.                 break;

  71.                  case 4:
  72.                 P2 &= 0x03;
  73.                 P0 = DSY_BUFF_CODE[temp%100/10];
  74.                 seg4 = 1;
  75.                 break;

  76.                 default:
  77.                 break;
  78.                        

  79.         }
  80.          if(num==4) num =0;
  81.        

  82. }


  83. void UART_ISR() interrupt 4
  84. {

  85.         if(RI)
  86.         {
  87.          P2 = ~P2;       
  88.                  RI=0;
  89.            if(SBUF == 'a')
  90.                 {
  91.                         TR0 = 1;                        //發a  開啟定時器0
  92.                         flag = 1;                        //并且顯示pcf8591的溫度
  93.                
  94.                 }

  95. ……………………

  96. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載:
新建文件夾.rar (110.87 KB, 下載次數: 39)


評分

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

查看全部評分

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

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

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