|
非常實用的IO擴(kuò)展模塊
0.png (49.07 KB, 下載次數(shù): 218)
下載附件
2018-2-28 03:00 上傳
簡介
模塊為 I2C 接口的 16 路 IO 擴(kuò)展模塊,采用 MicroChip 的 MCP23017 芯片。芯片功能完備,每個 IO可任意配置為輸入或輸出,可設(shè)置使用上拉電阻,并且配置為輸入的 IO 都可以啟用中斷功能。IO 接口驅(qū)動能力強(qiáng),灌電流、拉電流可達(dá)25mA。
MCP23017 為高速 IIC 接口,支持 100KHz、400KHz、1.7MHz 的 IIC 頻率。芯片有 3 個地址引腳,可設(shè)置8個不同地址,所以通過兩根 IIC總線可連接8個模塊,實現(xiàn)最多 128 個IO擴(kuò)展。
資料中提供了模塊驅(qū)動程序(包含 51 單片機(jī)驅(qū)動程序、Arduino 庫文件和例程),程序的各個函數(shù)使用起來非常方便,很容易集成到其他程序中。
特性
1)驅(qū)動IC:MCP23017-E/SS
2)工作電壓 3.3V、5V
3)輸入電壓 3V-5.5V
4)工作溫度:-40℃~12℃
5)模塊尺寸:66x19mm
6)多個并聯(lián):可以,最多支持8 個
0.png (244.18 KB, 下載次數(shù): 112)
下載附件
2018-2-28 03:01 上傳
0.png (244.71 KB, 下載次數(shù): 113)
下載附件
2018-2-28 03:01 上傳
0.png (248.38 KB, 下載次數(shù): 101)
下載附件
2018-2-28 03:01 上傳
1)驅(qū)動IC
MCP23017 是專用IIC接口IO擴(kuò)展芯片,一個芯片可以擴(kuò)展 16路IO,16 個IO可以獨立任意設(shè)置為輸入、輸出,設(shè)置為輸入時可設(shè)置為中斷輸入。輸出端口的電流驅(qū)動能力強(qiáng),最大25mA。詳細(xì)參數(shù)見MCP23017數(shù)據(jù)手冊。
2)模塊供電
模塊控制接口的工作電壓3V~5.5V,VCC電源不要供超過此范圍的電壓,否則可能燒毀模塊。
3)控制接口
模塊控制接口采用的是雙排接口,每個標(biāo)號同時有兩個排針,這樣方便多個模塊并聯(lián)接線,免得從單片機(jī)開發(fā)板引出多根線到每個模塊。 控制接口包括SCL、SDA、RST、ITA、ITB。
RST接到低電平時,芯片復(fù)位,在板上有一個10K歐姆的上拉電阻將RST拉到了VCC,如果不需要通過單片機(jī)控制芯片復(fù)位,在使用模塊時,此引腳可不接線。
ITA、ITB是中斷輸出引腳,ITA對應(yīng)GPIOA上的輸入中斷,ITB對應(yīng)GPIOB 上的輸入中斷。不使用中斷可不接,使用中斷時可接到單片機(jī)的外部中斷引腳上。
ITA、ITB可聯(lián)合在一起使用,即當(dāng)16 個IO上任何一個中斷輸入產(chǎn)生中斷時,ITA和ITB同時產(chǎn)生中斷輸出。具體在驅(qū)動函數(shù)的MCP23017 初始化函數(shù)中配置。
ITA、ITB的輸出類型可設(shè)置位 OD輸出,推挽輸出-高電平有效,推挽輸出-低電平有效,具體在具體在驅(qū)動函數(shù)的MCP23017 初始化函數(shù)中
4)硬件地址配置
模塊上A0、A1、A2 為芯片的3行操作時,注意程序中定義的芯片地址
例程使用方法
1、51 單片機(jī)例程
我們提供的51單片機(jī)例程為Keil UV4中配置。
3 個硬件地址線。總共可產(chǎn)生8 個地址0x00~0x07地址要與模塊的硬件地址相同。
Keil UV4工程,需要使用Keil UV4軟件打開。
0.png (219.19 KB, 下載次數(shù): 99)
下載附件
2018-2-28 03:02 上傳
在I2C_Core.c文件中定義了程序使用的
如果您使用的是51 開發(fā)板,則可以按照此定義連接開發(fā)板和模塊,如果需要修改使用的引腳,可以在此處修改后重新編譯項目。
2、Arduino例程使用方法
我們提供了Arduino IDE的庫文件和例程,使用非常簡單。只需要將《到Arduino IDE安裝目錄的arduino-1.0.5文件中定義了程序使用的51 單片機(jī)的引腳:
0.png (11.51 KB, 下載次數(shù): 103)
下載附件
2018-2-28 03:03 上傳
開發(fā)板,則可以按照此定義連接開發(fā)板和模塊,如果需要修改使用的引腳,可以
的庫文件和例程,使用非常簡單。只需要將《TM16681.0.5-r2\libraries目錄下。然后退出 Arduino IDE,重新啟動開發(fā)板,則可以按照此定義連接開發(fā)板和模塊,如果需要修改使用的引腳,可以
TM1668》這個文件夾整體復(fù)制,重新啟動 ArduinoIDE,
在Arduino IDE的File-->Examples下會出現(xiàn)例程:
0.png (230.96 KB, 下載次數(shù): 112)
下載附件
2018-2-28 03:05 上傳
原理圖
0.png (382.47 KB, 下載次數(shù): 117)
下載附件
2018-2-28 03:05 上傳
應(yīng)該如何學(xué)習(xí)電子技術(shù)?
電子技術(shù)是充滿魅力并且引領(lǐng)未來的,但同時也是復(fù)雜的。那么,我們應(yīng)該怎樣去掌握它?
1、實踐——動手實踐是最有效最扎實的學(xué)習(xí)途徑。那么應(yīng)該怎樣實踐?
2、“先簡單后復(fù)雜,先單一后綜合”——這是學(xué)習(xí)復(fù)雜知識最有效的途徑。
3、了解每一個細(xì)節(jié)——細(xì)節(jié)就是知識基礎(chǔ)和精華。所以要遵循這樣的原則,打好堅實的基礎(chǔ)。
所以,我們專門設(shè)計了獨具特色的開發(fā)板和各種應(yīng)用模塊。讓應(yīng)用更容易。
MCP23017_MCP23S17的中文資料與英文資料:
0.png (146.16 KB, 下載次數(shù): 93)
下載附件
2018-2-28 03:08 上傳
arduino庫函數(shù)編寫經(jīng)驗(源碼可在附件下載)
1、例程的名字不能是以字母開頭
2、每個例程都要放在一個同名的單獨的文件夾中
3、每個類有一個構(gòu)造函數(shù),構(gòu)造函數(shù)無返回值
4、檢查每一行的結(jié)尾是否都有分號
5、error: expected `)' before numeric constant,一般是少逗號,少分號等
0.png (45.3 KB, 下載次數(shù): 101)
下載附件
2018-2-28 03:10 上傳
0.png (7.34 KB, 下載次數(shù): 103)
下載附件
2018-2-28 03:10 上傳
單片機(jī)源程序如下:
- /*------------------------------------------------------------------------------------
- * 項目名稱:
- MCP23017 IIC IO擴(kuò)展模塊測試程序v1.0
- * 功能描述:
- 1、程序首先將GPIOA和GPIOB都配置為輸出,實現(xiàn)流水燈效果
- 2、然后將GPIOA設(shè)置為輸出,GPIOB設(shè)置為輸入,并開啟GPIOB的中斷,每次GPIOB上有中斷時,
- 講GPIOB的值寫到GPIOA
- * 接線說明
- VCC —— 連接5V電源正極
- GND —— 連接5V電源負(fù)極
- SCL —— 連接單片機(jī)P1.0
- SDA —— 連接單片機(jī)P1.1
- RST —— 未連接,RST引腳為低電平時,器件復(fù)位
- INTA —— 連接到單片機(jī)P3.2(INT0)
- INTB —— 連接到單片機(jī)P3.3(INT1)
- * MCP23017使用方法
- 0、上電復(fù)位后,器件所有IO默認(rèn)為輸入狀態(tài)
- 1、首先調(diào)用初始化函數(shù)初始化MCP23017
- 2、調(diào)用相關(guān)的輸入輸出配置函數(shù),上拉電阻配置函數(shù),中斷配置函數(shù)配置各個IO
- 3、然后可以讀取或設(shè)置GPIO的狀態(tài)
- * 版權(quán)信息:
- (c) 飛翼電子, 2017.
- * 歷史版本:
-
- 2017-06-08:
- - 初始版本 V1.0.0;
- * 配置說明:
- MCU: AT89S51
- 晶振: 外部晶振:11.0592MHz
- 擴(kuò)展模塊: -
- 軟件: Keil.C51.V9.01
- - 編譯前,請根據(jù)硬件連接配置MCU與模塊的通訊接口
- - 將開發(fā)板的串口與PC連接
- /************************包含頭文件***************************************************/
- #include <reg51.h>
- #include "MCP23017.H"
- #include "usart.h"
- /************************公共常量定義*************************************************/
- //定義MCP23017器件硬件地址,取值范圍0x00~0x07,需要與模塊上A0、A1、A2的配置相同
- //根據(jù)實際地址進(jìn)行修改
- unsigned char deviceAddr = 0x00;
- /************************全局變量****************************************************/
- unsigned char IntFlag;
- /*************************************************************************************
- *函數(shù)名:Delay(unsigned char time)
- *功 能:延時函數(shù)
- **************************************************************************************/
- void Delay(unsigned char time)
- {
- int i,j,k;
- for(i=0;i<time;i++)
- for(j=0;j<50;j++)
- for(k=0;k<200;k++)
- {
- ;
- }
- }
- /************************主程序*******************************************************/
- void main()
- {
- unsigned char addr=0;
- unsigned char i;
- unsigned char tmp = 0x01;
- bit res; //定義一個BOOL變量
-
- EA=1; //使能全局中斷
- IT0=0; //設(shè)置外部中斷0為低電平有效中斷
- EX0=1; //使能外部中斷0
- IT1=0; //設(shè)置設(shè)置外部中斷1為低電平中斷
- EX1=1; //使能外部中斷1
- InitSerialPort();
-
- //初始化MCP23017,INTA和INTB獨立,使能硬件地址,INTA和INTB設(shè)置為開漏輸出
- MCP23017_INIT(deviceAddr,INTA_INTB_INDEPENDENT,HWA_EN,INT_OD);
- Delay(1);
- //將PORTA和PORTB都設(shè)置為輸出
- MCP23017_IO_DIR(deviceAddr,MCP23017_PORTA,ALLPIN,OUTPUT);
- //將PORTB設(shè)置為輸入,使能上拉,并配置中斷低電平中斷
- MCP23017_IO_DIR(deviceAddr,MCP23017_PORTB,ALLPIN,INPUT);
- MCP23017_IO_PU(deviceAddr,MCP23017_PORTB,ALLPIN,ENABLE);
- MCP23017_IO_INT(deviceAddr,MCP23017_PORTB,ALLPIN,LOWLEVEL_INTERRUPT);
-
- while(1)
- {
- //發(fā)生中斷后
- if(IntFlag == 1)
- {
- //讀取PORTB端口值,寫到PORTA
- i = MCP23017_READ_GPIO(deviceAddr,MCP23017_PORTB);
- MCP23017_WRITE_GPIO(deviceAddr,MCP23017_PORTA,i);
- IntFlag = 0;
- }
- //把端口值通過串口發(fā)送
- SendByte(i);
- Delay(1);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
MCP23017 IIC接口16路IO擴(kuò)展模塊資料v1.0.rar
(6.26 MB, 下載次數(shù): 493)
2018-2-28 03:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|