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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機—AT24C1024(帶程序解析?。?7

          51單片機—AT24C1024(帶程序解析?。?7

          作者: 時間:2016-11-25 來源:網(wǎng)絡 收藏



          然后就是程序了:

          main.c(先從主程序開始嗎~~后邊還有很多的

          //------------------------------------------------------------------------------
          //main.c~~~主文件
          #include"reg52.h"
          #include"MacroAndCOnst.h"
          #include"at24c1024.h"
          #include"delay.h"
          #include"lcdinit.h"
          //------------------------------------------------------------------------------
          uchar code title[]="AT24C1024 Text: ";
          uchar send_data[16]={0,1,2,3,4,5,6,7,8,9};//要寫入到AT24C1024的數(shù)據(jù)
          uchar receive_data[10]; //存儲懂AT24C1024讀出的數(shù)據(jù)
          //------------------------------------------------------------------------------
          //main
          void main()
          {
          lcd_init();
          lcd_display_string(0x80,title,16);
          //delay(100);//不知道為什么,我第一做的時候延時時間長就錯誤,很明顯是寄存器公用問題
          //可是當我整理的時候卻又能用了~我去列~留著~
          while(!mcu_send_string(0xa0,0x00,0x00,send_data,10));
          delay(10);//這里一定要有一定的延時~~你懂的~~不過我用while循環(huán)送~~也可以不用延時
          //如果沒有while語句,那就必須要有個一直延時的~~
          while(!mcu_receive_string(0xa0,0x00,0x00,receive_data,10));
          lcd_display_string(0x80+0x40,receive_data,10);
          while(1);
          }

          LcdInit.c

          //------------------------------------------------------------------------------
          //LCD1602的初始化程序—可調(diào)用函數(shù)—C51
          #include"reg52.h"
          #include"MacroAndConst.h"
          #include"Delay.h"
          #include"Foot.h"
          //------------------------------------------------------------------------------
          #definedata_port P2
          sbit lcd_en=P3^4;//定義lcd_en使能引腳
          sbit lcd_rs=P3^5;//定義鎖存引腳
          sbit lcd_rw=P3^6;//定義讀寫引腳
          //------------------------------------------------------------------------------
          //LCD寫指令函數(shù)
          void lcd_write_command(uchar com)
          {
          lcd_rs=0;
          lcd_rw=0;
          data_port=com;
          delay(1);
          lcd_en=1;
          delay(1);
          lcd_en=0;
          }
          //------------------------------------------------------------------------------
          //LCD寫數(shù)據(jù)函數(shù)
          void lcd_write_data(uchar dat)
          {
          lcd_rs=1;
          lcd_rw=0;
          data_port=dat;
          delay(1);
          lcd_en=1;
          delay(1);
          lcd_en=0;
          }
          //------------------------------------------------------------------------------
          //LCD初始化函數(shù)
          void lcd_init()
          {
          lcd_write_command(0x01);
          delay(1);
          lcd_write_command(0x38);
          delay(1);
          lcd_write_command(0x0c);
          delay(1);
          lcd_write_command(0x06);
          delay(1);
          }
          //------------------------------------------------------------------------------
          //LCD顯示一個字節(jié)函數(shù)
          void lcd_display_char(uchar add,uchar dat)
          {
          lcd_write_command(add);
          delay(1);
          lcd_write_data(dat);
          delay(1);
          }
          //------------------------------------------------------------------------------
          //LCD顯示多個字節(jié)函數(shù)
          void lcd_display_string(uchar add,uchar *s,uchar num)
          {
          uchar i;
          lcd_write_command(add);
          for(i=0;i {
          lcd_write_data(s[i]);
          delay(1);
          }
          }
          IIC.c

          //------------------------------------------------------------------------------
          #include"reg52.h"
          #include"MacroAndConst.h"
          #include"intrins.h"
          #include"Foot.h"
          bitack;
          //------------------------------------------------------------------------------
          //開始信號函數(shù)
          void IIC_start()
          {
          sda=1;
          _nop_();
          scl=1;//開始信號建立時間大于4.7us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          sda=0; //開始信號鎖定大于4us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          scl=0;//鉗住IIC總線,準備發(fā)送或者接收數(shù)據(jù)
          _nop_();
          _nop_();
          }
          //------------------------------------------------------------------------------
          //結(jié)束信號函數(shù)
          void IIC_stop()
          {
          sda=0;
          _nop_();
          scl=1; //結(jié)束時間大于4us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          sda=1;//保證一個終止信號和其實信號的空閑時間大于4.7us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          }
          //------------------------------------------------------------------------------
          //主控器件接收應答函數(shù)
          void IIC_ack_acc()
          {
          _nop_();
          _nop_();
          sda=1;//8位數(shù)據(jù)發(fā)送完后,準備接收數(shù)據(jù)
          _nop_();
          _nop_();
          scl=1;
          _nop_();
          _nop_();
          _nop_();
          if(sda==1)
          ack=0;
          else
          ack=1;//接收到應答位,ack為1,否則置0
          scl=0;
          _nop_();
          _nop_();
          }



          關(guān)鍵詞: 51單片機AT24C102程序解

          評論


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