全球首发,全世界第一个Proteus仿真stm32f103之实现IIC(IO模拟)实验现象:
本实验通过KEY02按键来控制24C02的写入“hello”,通过另外一个按键KEY01来控制24C02的读取"hello"。
显示相关信息。同时,我们可以通过USMART控制在24C02的任意地址写入和读取数据。
注意:1.软件使用的是proteu8.8 修复了部分bug,包括之前的定时器bug
2."hello"的16进制为“68 65 6c 6c 6f”如图中所示
3.菜单 Debug 可调出IIC调试器
4.使用的IO模拟实现IIC
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "key.h"
- #include "lcd.h"
- #include "usmart.h"
- #include "24cxx.h"
- //要写入到24c02的字符串数组
- const u8 TEXT_Buffer[]={"hello"};
- #define SIZE sizeof(TEXT_Buffer)
- int main(void)
- {
- u8 key;
- u16 i=0;
- u8 datatemp[SIZE];
-
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
- delay_init(72); //初始化延时函数
- //uart_init(115200); //初始化串口
- //usmart_dev.init(84); //初始化USMART
- KEY_Init(); //初始化按键
- //LCD_Init(); //初始化LCD
- AT24CXX_Init(); //初始化IIC
- LED_Init();
- while(AT24CXX_Check())//检测不到24c02
- {
- delay_ms(500);
- //LED0=!LED0;//DS0闪烁
- }
- while(1)
- {
- key=KEY_Scan(0);
- if(key==KEY1_PRES)//KEY1按下,写入24C02
- {
- AT24CXX_Write(0,(u8*)TEXT_Buffer,SIZE);
- }
- if(key==KEY0_PRES)//KEY0按下,读取字符串并显示
- {
- AT24CXX_Read(0,datatemp,SIZE);
- }
- i++;
- delay_ms(10);
- if(i==20)
- {
- LED0=!LED0;//提示系统正在运行
- i=0;
- }
- }
- }
复制代码
所有资料51hei提供下载:
proteus STM32F103 实现IIC.7z
(461.43 KB, 下载次数: 463)
|