全球首發,全世界第一個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)
2019-1-27 16:53 上傳
點擊文件名下載附件
|