<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機18B20溫度與串口實驗

          51單片機18B20溫度與串口實驗

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
          有圖有真相






          溫度顯示在串口調(diào)速器上,此軟件可到http://www.51hei.com/mcudown/單片機開發(fā)實用工具軟件這一欄下載
          下面單片機部分的源代碼:

          本文引用地址:http://www.ex-cimer.com/article/201611/323877.htm
          //11.0592晶振
          #include
          #define uchar unsigned char
          #define uint unsigned int
          code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //數(shù)碼管碼表
          code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //數(shù)碼管位選

          //sbit k8=P1^7; //按鍵發(fā)送溫度值
          sbit dec=P0^5; //小數(shù)點顯示位
          static uint count; //延時發(fā)送溫度值變量
          void delay(uint k)
          {
          while(k--);
          }
          void show_temp(uint k) //顯示溫度值函數(shù)
          {
          P0=seg[k/100];
          P2=tab[2];
          delay(30);
          P0=0xff;
          P2=0xff;
          P0=seg[k%100/10];
          dec=0; //顯示小數(shù)點
          P2=tab[1];
          delay(30);
          P0=0xff;
          P2=0xff;
          P0=seg[k%10];
          P2=tab[0];
          delay(30);
          P0=0xff;
          P2=0xff;
          }
          #include "18B20.h" //18B20庫函數(shù)
          uchar suf; //存放串口收到的數(shù)據(jù)
          uint temp; //輸出溫度值
          void serial_init() //串口初始化
          {
          TMOD|=0x20; //定時器設定自動重撞在模式
          TH1=TL1=0xfd; //9600波特率
          SM2=0; //無多機處理位
          SM1=1; // 8位可變波特率模式
          SM0=0;
          TR1=1; // 定時器1打開
          REN=1; //串口接收使能
          }
          void send_byte(uchar u) //發(fā)送一個字節(jié)函數(shù)
          {
          bit es;//保存先前ES狀態(tài)變量,這樣可以不干擾其他用戶用它是現(xiàn)在的狀態(tài)
          es=ES;
          ES=0; //暫時關閉串口中斷
          SBUF=u;//數(shù)據(jù)放入SBUF緩沖器等待發(fā)送完成
          while(TI==0); //等待發(fā)送完成
          TI=0;
          ES=es; //恢復先前狀態(tài)
          }
          void send_str(uchar *p)//發(fā)送一串字符函數(shù)
          {
          while(*p)
          {
          send_byte(*p);
          p++;
          }
          }
          void str_init() //串口中斷初始化
          {
          EA=1;
          ES=1;
          }
          void serial_event() interrupt 4 //串口中斷函數(shù)
          {
          if(RI==1)//在中斷里盡量只做需要的事情
          {
          suf=SBUF;
          RI=0;
          }
          else
          {
          ;
          }
          }
          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();