找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3806|回复: 2
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主


单片机源程序如下:
  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的字符串数组  const 则后面变量不可变
  11. const unsigned char TEXT_Buffer[]={"Tomorrow"};
  12. #define SIZE sizeof(TEXT_Buffer)        //读取要写入芯片中的字节数。


  13. const unsigned char text_Buffer[]={"Hello,World!!!"};
  14. #define size sizeof(text_Buffer)        //读取要写入芯片中的字节数。


  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();                     //延时函数初始化          
  28.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  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("请检查 24C02!\r\n");
  39.                 delay_ms(500);
  40.                 fmq=!fmq;//DS0闪烁
  41.         }
  42.                 printf("24C02 准备就绪!\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)                        //那个多读哪个
  68.                         {
  69.                                 printf("开始读取 24C02.... \r\n");
  70.                                 AT24CXX_Read(0,datatemp,SIZE);                          //从第0 个开始读取SIZE 个字节到datatemp
  71.                                 printf("读取的数据是:%s\r\n ",datatemp);
  72.                                 FMQ();
  73.                         }
  74.                         else
  75.                         {
  76.                                 printf("开始读取 24C02.... \r\n");
  77.                                 AT24CXX_Read(0,datatemp,size);                          //从第0 个开始读取SIZE 个字节到datatemp
  78.                                 printf("读取的数据是:%s\r\n ",datatemp);
  79.                                 FMQ();
  80.                         }
  81.                        
  82.                 }
  83.                
  84.                 i++;
  85.                 delay_ms(10);
  86.                 if(i==20)
  87.                 {
  88.                         LED1=!LED1;//提示系统正在运行       
  89.                         i=0;
  90.                 }                  
  91.         }
  92. }
复制代码

所有资料51hei提供下载:
(AT24C04 I2C实验 PB6 SCL PB7 SDA).7z (222.06 KB, 下载次数: 104)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:138247 发表于 2020-6-4 23:51 | 只看该作者

谢谢分享。。。
回复

使用道具 举报

板凳
ID:495316 发表于 2023-10-3 09:57 | 只看该作者
这个要把I2C的驱动合在一个文件就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表