单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "usmart.h"
- #include "24cxx.h"
-
- //要写入到24c02的字符串数组 const 则后面变量不可变
- const unsigned char TEXT_Buffer[]={"Tomorrow"};
- #define SIZE sizeof(TEXT_Buffer) //读取要写入芯片中的字节数。
- const unsigned char text_Buffer[]={"Hello,World!!!"};
- #define size sizeof(text_Buffer) //读取要写入芯片中的字节数。
- void FMQ(void)
- {
- fmq=1;//叫
- delay_ms(50);
- fmq=0;//停
- delay_ms(50);
- }
- int main(void)
- {
- u8 key;
- u16 i=0;
- unsigned char datatemp[SIZE];
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //初始化与LED连接的硬件接口
- KEY_Init(); //按键初始化
- AT24CXX_Init(); //IIC初始化
-
- while(AT24CXX_Check())//检测不到24c02
- {
- printf("24C02 检测失败!\r\n");
- delay_ms(500);
- printf("请检查 24C02!\r\n");
- delay_ms(500);
- fmq=!fmq;//DS0闪烁
- }
- printf("24C02 准备就绪!\r\n");
- FMQ();
- while(1)
- {
- key=KEY_Scan(0);
-
- if(key==KEY1_PRES) //KEY_UP按下,写入24C02
- {
- printf("Start 24C02....\r\n");
- AT24CXX_Write(0,(u8*)TEXT_Buffer,SIZE);
- printf("24C02 Write Finish!\r\n");
- FMQ();
- }
-
- if(key==KEY2_PRES) //KEY_UP按下,写入24C02
- {
- printf("开始写入 24C02....\r\n");
- AT24CXX_Write(0,(u8*)text_Buffer,size);
- printf("24C02 写入完成!\r\n");
- FMQ();
- }
-
-
- if(key==KEY0_PRES)//KEY1按下,读取字符串并显示
- {
- if(SIZE>size) //那个多读哪个
- {
- printf("开始读取 24C02.... \r\n");
- AT24CXX_Read(0,datatemp,SIZE); //从第0 个开始读取SIZE 个字节到datatemp
- printf("读取的数据是:%s\r\n ",datatemp);
- FMQ();
- }
- else
- {
- printf("开始读取 24C02.... \r\n");
- AT24CXX_Read(0,datatemp,size); //从第0 个开始读取SIZE 个字节到datatemp
- printf("读取的数据是:%s\r\n ",datatemp);
- FMQ();
- }
-
- }
-
- i++;
- delay_ms(10);
- if(i==20)
- {
- LED1=!LED1;//提示系统正在运行
- i=0;
- }
- }
- }
复制代码
所有资料51hei提供下载:
(AT24C04 I2C实验 PB6 SCL PB7 SDA).7z
(222.06 KB, 下载次数: 111)
|