0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

兩種單片機IO擴展的方法和代碼免費下載

Wildesbeast ? 來源:單片機教程網(wǎng) ? 作者:單片機教程網(wǎng) ? 2020-08-09 14:13 ? 次閱讀

下面介紹兩種單片機io擴展的方法

?。。?!用8243擴展單片機IO接口

/*----------------------------------------------------------------------------------------------------------------

函數(shù)名稱:Config.h

功能描述:8243端口配置

輸入參數(shù):無

輸出參數(shù):無

特殊說明:在不同的單片機應用系統(tǒng)中,需要做相應調(diào)整

//----------------------------------------------------------------------------------------------------------------*/

#include 《reg52.h》

sbit ContrBit0=P1^0;

sbit ContrBit1=P1^1;

sbit ContrBit2=P1^2;

sbit ContrBit3=P1^3;

sbit PROG =P1^4;

sbit CS =P1^5;

sfr data_buf=0x90;

/*----------------------------------------------------------------------------------------------------------------

函數(shù)名稱:driver8243

功能描述:驅(qū)動8243

輸入?yún)?shù):sele_P端口選擇,sele_M工作模式選擇,out_data輸出模式下的輸出數(shù)據(jù)

輸出參數(shù):in_data接收模式返回接收到的數(shù)據(jù),其它模式返回0

特殊說明:在不同的單片機應用系統(tǒng)中,需要做相應得調(diào)整

//----------------------------------------------------------------------------------------------------------------*/

#include《config.h》

char driver8243(char sele_P,char sele_M,char out_data)

{

char in_data=0;

PROG=1; //置PROG為高電平

//開始寫控制字

if((sele_P&0x01)==0) //將控制字最低位送到8243的p2.0

{

ContrBit0=0;

}

else

{

ContrBit0=1;

}

if((sele_P&0x02)==0) //將控制字第二位送到8243的p2.1

{

ContrBit1=0;

}

else

{

ContrBit1=1; //以上兩位共同指定端口地址

}

//寫端口工作模式控制字

if((sele_M&0x01)==0) //將端口工作模式控制字低位送到8243的p2.2

{

ContrBit2=0;

}

else

{

ContrBit2=1;

}

if((sele_M&0x01)==0) //將端口工作模式控制字高位送到8243的p2.3

{

ContrBit3=0;

}

else

{

ContrBit3=1;

} //寫控制字完成

PROG=0; //在PROG上產(chǎn)生下降沿

switch(sele_M&0x03) //判斷工作模式

{

case 0: break; //sele_M=B00為輸入,不處理,等待上升沿

case 1: data_buf=out_data;break; //sele_M=B01為輸出,直接送數(shù)據(jù)

case 2: data_buf=out_data;break; //sele_M=B10為邏輯或,直接送數(shù)據(jù)

case 3: data_buf=out_data;break; //sele_M=B11為邏輯與,直接送數(shù)據(jù)

}

PROG=1; //在PROG上產(chǎn)生上升沿

if((sele_M&0x03)==0) //sele_M=B00為輸入,接收數(shù)據(jù)

in_data=(data_buf&0x0F);

return(in_data); //sele_M=B00,返回接收到的數(shù)據(jù)

//sele_M!=B00,返回0

}

void main( void)

{

char receive_data;

receive_data= driver8243(1,0,5);

}

單片機io擴展方法2:

=======================單片機中IO口擴展IC===================================

單片機中IO口數(shù)量非常有限,做一些少量的外圍控制還可以,如果系統(tǒng)稍大一些就要加外加芯片來擴展IO數(shù)量,在應用過程

中我發(fā)現(xiàn)PCF8574這款芯片非常理想具有8路的輸入輸出的IO口同時具有鎖存功能,和MCU的通訊方式為I2C,還具有中斷

輸出功能當其中一個腳拉低時,就從中斷腳輸出一個低電平來通知單片機響應,這樣MCU就可以按自己的方式工作當有外部觸

發(fā) 時才讀取PCF8574做為外部擴展按鍵等非常方便。

現(xiàn)在這種片子在使用中由于在使用中沒有規(guī)化好端口的輸入輸出,在具體的應用時不太符合常規(guī),大家也有所看法,所以philips最近

又出了一款新的IO擴展芯片打算取爾代之,地址也是和PCF8574一樣它的名字叫PCA9554

===================================================================================

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6027

    文章

    44459

    瀏覽量

    631255
  • IO
    IO
    +關(guān)注

    關(guān)注

    0

    文章

    431

    瀏覽量

    39023
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8381

    瀏覽量

    150581
收藏 人收藏

    評論

    相關(guān)推薦

    比較分析兩種不同的可提高柵極驅(qū)動電流的方法

    電子發(fā)燒友網(wǎng)站提供《比較分析兩種不同的可提高柵極驅(qū)動電流的方法.pdf》資料免費下載
    發(fā)表于 09-23 11:13 ?0次下載
    比較分析<b class='flag-5'>兩種</b>不同的可提高柵極驅(qū)動電流的<b class='flag-5'>方法</b>

    單片機基本io功能調(diào)試過程

    所使用的單片機型號以及需要調(diào)試的IO口。不同型號的單片機IO口的配置和特性上可能有所不同。 查閱單片機手冊 : 查閱
    的頭像 發(fā)表于 09-14 14:38 ?338次閱讀

    單片機io口怎么配置成輸出口

    單片機IO口配置成輸出口的過程通常涉及對單片機內(nèi)部寄存器的操作。不同型號的單片機在寄存器配置和編程方式上可能有所不同,但基本原理是相似的。以下是一個通用的步驟,用于將
    的頭像 發(fā)表于 09-14 14:33 ?458次閱讀

    單片機io口輸出電流多大

    單片機IO口的輸出電流大小會受到多種因素的影響,包括單片機的型號、IO口的配置模式以及外部電路的設計等。以下是對單片機
    的頭像 發(fā)表于 09-14 14:29 ?750次閱讀

    單片機io口的四工作狀態(tài)

    )是單片機與外部世界進行數(shù)據(jù)交換的接口。每個I/O口可以配置為輸入或輸出狀態(tài),或者同時具備這兩種功能。I/O口的狀態(tài)可以通過編程來控制,以滿足不同的應用需求。 2. 單片機I/O口的工作原理 I/O口的工作原理涉及到數(shù)字電路的基
    的頭像 發(fā)表于 09-14 14:24 ?744次閱讀

    請問如何擴展單片機IO口?

    在很多項目上都會因單片機IO口不夠、或降低硬件成本要擴展IO口,特別在一些機械設備上,如本人從事的這個行業(yè),有時候由一個單片機
    發(fā)表于 04-24 06:30

    兩種簡單、精確、靈活的熱電偶溫度測量方法

    電子發(fā)燒友網(wǎng)站提供《兩種簡單、精確、靈活的熱電偶溫度測量方法.pdf》資料免費下載
    發(fā)表于 02-28 14:41 ?1次下載

    單片機代碼自動生成器程序

    單片機代碼自動生成器是一能夠幫助開發(fā)人員快速生成單片機代碼的工具。它利用了現(xiàn)代計算機技術(shù)和算法,能夠根據(jù)用戶提供的輸入和需求,自動生成符合
    的頭像 發(fā)表于 01-08 14:12 ?2588次閱讀

    單片機解析g代碼方法

    單片機是一完整的計算機系統(tǒng),它集成了處理器、存儲器、輸入輸出接口等基本的計算機組成部分。單片機應用廣泛,可以用于控制各種電子設備。在單片機中,G
    的頭像 發(fā)表于 12-22 14:15 ?1480次閱讀

    單片機、嵌入式入門實驗報告相關(guān)代碼仿真介紹

    電子發(fā)燒友網(wǎng)站提供《單片機、嵌入式入門實驗報告相關(guān)代碼仿真介紹.zip》資料免費下載
    發(fā)表于 12-22 10:52 ?11次下載

    avr單片機兩種燒寫程序方式的區(qū)別?

    最近在做一個單片機程序,有點疑問,用avrstudio燒程序接的是avrdragon,用ISPUSB是另外一個軟件,這兩種燒程序有什么區(qū)別?者過程都是先寫熔絲,寫flash,寫eeprom;我試著用ISPUSB連avrsrud
    發(fā)表于 11-10 07:41

    利用74373芯片進行單片機IO擴展方法

    在電路設計的某些時候,微處理器(如單片機IO口不夠用了,此時該怎么辦呢?利用輔助芯片進行IO擴展是個簡單直接的方法,能用較少的成本增多
    的頭像 發(fā)表于 11-02 14:20 ?2052次閱讀
    利用74373芯片進行<b class='flag-5'>單片機</b><b class='flag-5'>IO</b>口<b class='flag-5'>擴展</b>的<b class='flag-5'>方法</b>

    單片機IO擴展有哪幾種方法?

    單片機IO擴展有哪幾種方法
    發(fā)表于 11-01 07:47

    51單片機和32單片機的比較分析

    單片機IO口控制速度是指,在程序中對單片機的某個IO口操作,IO口需要多少時間才能真正的執(zhí)行,這個數(shù)值很重要,因為在某些場合,比如刷屏,如果
    的頭像 發(fā)表于 10-31 15:20 ?5631次閱讀
    51<b class='flag-5'>單片機</b>和32<b class='flag-5'>單片機</b>的比較分析

    單片機通信系統(tǒng)的設計

    電子發(fā)燒友網(wǎng)站提供《一單片機通信系統(tǒng)的設計.pdf》資料免費下載
    發(fā)表于 10-30 11:11 ?0次下載
    一<b class='flag-5'>種</b><b class='flag-5'>單片機</b>多<b class='flag-5'>機</b>通信系統(tǒng)的設計