找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4791|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于原子哥AT24C04修改 I2C STM32源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"
  7. #include "usmart.h"         
  8. #include "24cxx.h"         

  9.                                 
  10. //要寫入到24c02的字符串?dāng)?shù)組  const 則后面變量不可變
  11. const unsigned char TEXT_Buffer[]={"Tomorrow"};
  12. #define SIZE sizeof(TEXT_Buffer)        //讀取要寫入芯片中的字節(jié)數(shù)。


  13. const unsigned char text_Buffer[]={"Hello,World!!!"};
  14. #define size sizeof(text_Buffer)        //讀取要寫入芯片中的字節(jié)數(shù)。


  15. void FMQ(void)
  16. {
  17.         fmq=1;//叫
  18.         delay_ms(50);
  19.         fmq=0;//停
  20.         delay_ms(50);
  21. }
  22. int main(void)
  23. {       
  24.         u8 key;
  25.         u16 i=0;
  26.         unsigned char datatemp[SIZE];
  27.         delay_init();                     //延時(shí)函數(shù)初始化          
  28.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  29.         uart_init(115200);                 //串口初始化為115200
  30.         LED_Init();                                  //初始化與LED連接的硬件接口
  31.         KEY_Init();                                //按鍵初始化                                 
  32.         AT24CXX_Init();                        //IIC初始化

  33.        
  34.         while(AT24CXX_Check())//檢測不到24c02
  35.         {
  36.                 printf("24C02 檢測失敗!\r\n");
  37.                 delay_ms(500);
  38.                 printf("請(qǐng)檢查 24C02!\r\n");
  39.                 delay_ms(500);
  40.                 fmq=!fmq;//DS0閃爍
  41.         }
  42.                 printf("24C02 準(zhǔn)備就緒!\r\n");
  43.                 FMQ();
  44.         while(1)
  45.         {
  46.                 key=KEY_Scan(0);
  47.                
  48.                 if(key==KEY1_PRES)                                //KEY_UP按下,寫入24C02
  49.                 {
  50.                         printf("Start 24C02....\r\n");
  51.                         AT24CXX_Write(0,(u8*)TEXT_Buffer,SIZE);
  52.                         printf("24C02 Write Finish!\r\n");
  53.                         FMQ();
  54.                 }
  55.                
  56.                 if(key==KEY2_PRES)                                //KEY_UP按下,寫入24C02
  57.                 {
  58.                         printf("開始寫入 24C02....\r\n");
  59.                         AT24CXX_Write(0,(u8*)text_Buffer,size);
  60.                         printf("24C02 寫入完成!\r\n");
  61.                         FMQ();
  62.                 }
  63.        
  64.                
  65.                 if(key==KEY0_PRES)//KEY1按下,讀取字符串并顯示
  66.                 {       
  67.                         if(SIZE>size)                        //那個(gè)多讀哪個(gè)
  68.                         {
  69.                                 printf("開始讀取 24C02.... \r\n");
  70.                                 AT24CXX_Read(0,datatemp,SIZE);                          //從第0 個(gè)開始讀取SIZE 個(gè)字節(jié)到datatemp
  71.                                 printf("讀取的數(shù)據(jù)是:%s\r\n ",datatemp);
  72.                                 FMQ();
  73.                         }
  74.                         else
  75.                         {
  76.                                 printf("開始讀取 24C02.... \r\n");
  77.                                 AT24CXX_Read(0,datatemp,size);                          //從第0 個(gè)開始讀取SIZE 個(gè)字節(jié)到datatemp
  78.                                 printf("讀取的數(shù)據(jù)是:%s\r\n ",datatemp);
  79.                                 FMQ();
  80.                         }
  81.                        
  82.                 }
  83.                
  84.                 i++;
  85.                 delay_ms(10);
  86.                 if(i==20)
  87.                 {
  88.                         LED1=!LED1;//提示系統(tǒng)正在運(yùn)行       
  89.                         i=0;
  90.                 }                  
  91.         }
  92. }
復(fù)制代碼

所有資料51hei提供下載:
(AT24C04 I2C實(shí)驗(yàn) PB6 SCL PB7 SDA).7z (222.06 KB, 下載次數(shù): 111)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:138247 發(fā)表于 2020-6-4 23:51 | 只看該作者

謝謝分享。。。
回復(fù)

使用道具 舉報(bào)

板凳
ID:495316 發(fā)表于 2023-10-3 09:57 | 只看該作者
這個(gè)要把I2C的驅(qū)動(dòng)合在一個(gè)文件就好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表