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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR和51單片機(jī)串口通信簡(jiǎn)單實(shí)驗(yàn)

          AVR和51單片機(jī)串口通信簡(jiǎn)單實(shí)驗(yàn)

          作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
          //AVR作為發(fā)送機(jī),控制51的喇叭發(fā)聲和2極管發(fā)光
          //AVR發(fā)送方代碼 //采用2400波特率
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int
          #define k1 PIND_Bit4 //設(shè)置為喇叭
          #define k3 PIND_Bit6 //設(shè)置為發(fā)光管
          #define k4 PIND_Bit7 //發(fā)送控制命令
          #define UDRE 5
          #define RXC 7
          uchar dat=48;
          void delay(uint k)
          {
          uint i,j;
          for(i=0;ifor(j=0;j<1140;j++);
          }
          #include "1602.h"
          void port_init()
          {
          PORTA=0xff;
          DDRA=0xff;
          PORTB=0xff;
          DDRB=0xff;
          PORTC=0xff;
          DDRC=0xff;
          PORTD=0xff;
          DDRD=0x0f;
          }
          void serial_init()
          {
          UCSRB=0x00;
          UCSRA=0x02; //雙倍速
          UCSRC=0x06; //8位字符模式
          UBRRH=0x01; //2400波特率
          UBRRL=0xa0;
          UCSRB=0x18;
          }
          void send(uchar k) //串口發(fā)送函數(shù)
          {
          while(!(UCSRA&(1<UDR=k;

          }
          void key1()
          {
          static uint i,j;
          if(k1==0)
          {
          if(i==0)
          {
          j++;
          if(j>10)
          {
          if(k1==0)
          {
          i=1;j=0;
          dat=49;
          }
          }
          }
          }
          else
          {
          i=0;j=0;
          }
          }
          void key3()
          {
          static uint i,j;
          if(k3==0)
          {
          if(i==0)
          {
          j++;
          if(j>10)
          {
          if(k3==0)
          {
          i=1;j=0;
          dat=50;
          }
          }
          }
          }
          else
          {
          i=0;j=0;
          }
          }

          void main()
          {
          port_init();
          serial_init();
          init1602();
          delay(1000);
          while(1)
          {
          displayonechar(1,6,dat);
          if(k4==0)
          {
          send(dat);
          }
          key1(); //喇叭發(fā)聲
          key3(); //2極管發(fā)光
          }
          }
          //----------1602庫(kù)函數(shù)-----------
          #define RS PORTB_Bit0
          #define RW PORTB_Bit1
          #define EN PORTB_Bit2
          #define DATA PORTA
          #define busy 0x80

          void wait()
          {
          uchar val;
          DATA=0xff;
          RS=0;
          RW=1;
          __no_operation();
          __no_operation();
          EN=1;
          __no_operation();
          __no_operation();
          DDRA=0x00;
          val=PINA;
          while(val&busy)
          {
          val=PINA;
          }
          EN=0;
          DDRA=0xff;
          }

          void writecmd(uchar cmd)
          {
          wait();
          RS=0;
          RW=0;
          __no_operation();
          DATA=cmd;
          __no_operation();
          EN=1;
          __no_operation();
          __no_operation();
          EN=0;
          }
          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: AVR51單片機(jī)串口通

          評(píng)論


          技術(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); })();