|
全球首發(fā),全世界第一個(gè)Proteus仿真stm32f103之實(shí)現(xiàn)IIC(IO模擬)實(shí)驗(yàn)現(xiàn)象:
本實(shí)驗(yàn)通過KEY02按鍵來控制24C02的寫入“hello”,通過另外一個(gè)按鍵KEY01來控制24C02的讀取"hello"。
顯示相關(guān)信息。同時(shí),我們可以通過USMART控制在24C02的任意地址寫入和讀取數(shù)據(jù)。
注意:1.軟件使用的是proteu8.8 修復(fù)了部分bug,包括之前的定時(shí)器bug
2."hello"的16進(jìn)制為“68 65 6c 6c 6f”如圖中所示
3.菜單 Debug 可調(diào)出IIC調(diào)試器
4.使用的IO模擬實(shí)現(xiàn)IIC
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
QQ圖片20190127091052.png (37.18 KB, 下載次數(shù): 118)
下載附件
2019-1-27 09:15 上傳
QQ圖片20190127090959.png (45.37 KB, 下載次數(shù): 122)
下載附件
2019-1-27 09:16 上傳
單片機(jī)源程序如下:
- #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的字符串?dāng)?shù)組
- const u8 TEXT_Buffer[]={"hello"};
- #define SIZE sizeof(TEXT_Buffer)
- int main(void)
- {
- u8 key;
- u16 i=0;
- u8 datatemp[SIZE];
-
- HAL_Init(); //初始化HAL庫(kù)
- Stm32_Clock_Init(RCC_PLL_MUL9); //設(shè)置時(shí)鐘,72M
- delay_init(72); //初始化延時(shí)函數(shù)
- //uart_init(115200); //初始化串口
- //usmart_dev.init(84); //初始化USMART
- KEY_Init(); //初始化按鍵
- //LCD_Init(); //初始化LCD
- AT24CXX_Init(); //初始化IIC
- LED_Init();
- while(AT24CXX_Check())//檢測(cè)不到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;//提示系統(tǒng)正在運(yùn)行
- i=0;
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
proteus STM32F103 實(shí)現(xiàn)IIC.7z
(461.43 KB, 下載次數(shù): 463)
2019-1-27 16:53 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|