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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)與PC機(jī)串口通信

          51單片機(jī)與PC機(jī)串口通信

          作者: 時(shí)間:2012-12-01 來(lái)源:網(wǎng)絡(luò) 收藏

          單片機(jī)P2口接8只LED燈,P3.2~P3.3引腳連接有K1和K2共2個(gè)按鍵,使用單片機(jī)串行口與通信。
          1)由控制單片機(jī)的P2口,將送出的數(shù)以二進(jìn)制形式顯示在LED燈上;
          2)按下按鍵K1向PC機(jī)發(fā)送數(shù)字0x55,按下K2向PC機(jī)發(fā)送數(shù)字0xAA。
          源程序如下:
          //出自:51hei單片機(jī)學(xué)習(xí)網(wǎng)http://www.51hei.com
          #define uchar unsigned char
          #include "string.h"
          #include "reg51.h"
          unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
          0x08,0x03,0x46,0x21,0x06,0x0e}; //十六進(jìn)制-7段譯碼表
          void mDelay(unsigned int DelayTime) //延時(shí)函數(shù)
          { unsigned char j=0;
          for(;DelayTime>0;DelayTime--)//延時(shí)循環(huán)
          { for(j=0;j125;j++)
          {;}}}
          void SendData(uchar Dat) //發(fā)送函數(shù)
          { uchar i=0;
          SBUF=Dat;//發(fā)送Dat
          while(1){
          if(TI) //如果發(fā)送中斷標(biāo)志為1,則等待,
          { TI=0; break; }//否則清除發(fā)送中斷標(biāo)志
          }}
          uchar Key() //按鍵處理函數(shù)
          { uchar KValue;//聲明鍵值函數(shù)
          P3|=0x3e; //中間4位置高電平 0011 1101
          if((KValue=P3|0xe3)!=0xff)//如果按鍵按下
          { mDelay(10); //延遲時(shí)間函數(shù)
          if((KValue=P3|0xe3)!=0xff)//如果按鍵還在按下?tīng)顟B(tài)
          { for(;;)//等待
          if((P3|0xe3)==0xff) //如果按鍵抬起,
          return(KValue);//返回鍵值
          }}
          return(0); //如果按鍵沒(méi)有按下,返回0
          }
          void main()//主函數(shù)
          { uchar KeyValue;//定義鍵值變量KeyValue
          unsigned char ns,ng,temp;//定義變量ns,ng,temp
          P2=0xff;//熄滅P2口連接的所有發(fā)光管
          TMOD=0x20;//確定定時(shí)器工作模式,模式2,常數(shù)自動(dòng)裝入
          TH1=0xFD;
          TL0=0xFD;//定時(shí)器1的初值波特率為9600,晶體為11.0592MHz
          //PCON=0x80; 若是SMOD=1 可以使波特率加倍
          TR1=1;//啟動(dòng)定時(shí)器1
          SCON=0x40; //串口工作方式1運(yùn)行在8位模式
          REN=1; //允許接收
          for(;;) //無(wú)限循環(huán)
          {if(KeyValue=Key())//調(diào)用按鍵函數(shù),獲取按鍵信息
          { if((KeyValue|0xfb)!=0xff)//如果按鍵k1按下
          SendData(0x55); //調(diào)用發(fā)送函數(shù),送出0x55
          if((KeyValue|0xf7)!=0xff)//如果k2按下
          SendData(0xaa); //調(diào)用發(fā)送函數(shù),送出0xaa
          }
          if(RI)//如果接收中斷發(fā)生
          { P2=SBUF;//將接收數(shù)據(jù)寫(xiě)到端口P2
          RI=0; }//清除接收標(biāo)志位
          temp=P2;//暫存接收到的數(shù)據(jù)
          ng=temp 0x0f;//取接收數(shù)據(jù)低4位
          ns=temp>>4;//將高4位右移4位
          ns =0x0f;//取接收數(shù)據(jù)高4位
          P0=table[ng];//P0口連接的數(shù)碼管顯示低4位
          P1=table[ns]; //P1口連接的數(shù)碼管顯示高4位
          }}



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();