關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于LPC2103的SPI總線技術的應用

        基于LPC2103的SPI總線技術的應用

        作者: 時間:2010-05-20 來源:網絡 收藏


        圖4為接口與74HC595的連接原理圖。其中QA~QH分別連接共陽LED數碼管的8個段。在輸出1個字節的數據時,SSEL產生1個低電平,主機串行地發該字節的各個位,各個位都依次被鎖存在74HC595的移位寄存器內,當1個字節的數據傳輸完成后,SSEL由低電平變為高電平,從而使74HC595的移位寄存器的值被鎖存到74HC595的鎖存器并從其QA~QH引腳輸出;在SPI輸出1個字節數據的同時,74HC595移位寄存器之前的值也通過MISO引腳被SPI主機讀回。

        3 軟件設計[5]
        軟件設計包括:進行I/O口初始化,設置SPI引腳連接,啟用的SPI 0,設置GPIO的P0.4、P0.5、P0.6、P0.7為SPI 0的SCK0、MISO0、MOSI0、SSEL0特殊功能,置74HC595片選端的I/O口為輸出功能。其代碼如下:
        PINSEL0=0x00005500; //設置SPI引腳連接
        PINSEL1=0x00000000;
        IODIR=HC595_CS; //設置片選端I/O口為輸出
        3.1 SPI操作初始化
        圖5為SPI總線操作流程圖。使用的SPI總線主模式下實現對74HC595的數據傳輸,用來驅動外圍LED數碼管。設置SPI時鐘,在SPI主模式下,SPCCR寄存器控制SCK的頻率,SPI速率為Fpclk / SPCCR。通過SPCR控制寄存器設置時鐘相位、時鐘極性、主模式控制、字節移動方向及SPI中斷使能等。代碼實現如下:


        Void MSpiIni(void)
        { SPI_SPCCR = 0x52;//設置SPI時鐘分頻
        SPI_SPCR = (03)|//CPHA=0,數據再從SCK的第一時鐘沿采樣
        (14)|//CPOL=1,SCK為低有效
        (15)|//MSTR=1,SPI處于主模式
        (06)|//LSBF=0,SPI數據傳輸MSB(位7)在先
        (07);//SPIE=0,SPI中斷被禁止
        }
        3.2 SPI總線主模式下數據發送過程
        首先選擇從機,設置片選。選擇74HC595為從機,置片選端SSEL為低有效。將發送的數據寫入SPDR,發送出去。等待SPIF置位,即數據發送完畢。最后可從SPDR讀取收到的數據。以下為發送函數:
        uint8 MSendData(uint8 data)
        { IOCLR=HC595_CS; //片選端,由指定的I/O口置位
        SPI_SPDR=data;
        while(0==(SPI_SPSR0x80)); //等待SPIF置位,即等待數據發送完畢
        IOSET=HC595_CS; //片選置高無效,結束發送
        return(SPI_SPDR); //返回接收到的數據
        }
        3.3 控制LED數碼管主函數
        主函數使用LPC2103的SPI接口輸出給74HC595,用來控制LED數碼管顯示。DISP_TAB[ ]為LED顯示0-F字模的16進制碼表。MSendData( )實現每一字節數據的發送。
        #define HC595_CS 0x00000100 //P0.8口為74HC595的片選
        uint8 const DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
        int main(void)
        { uint8 rcv_data;
        uint8 i;
        PINSEL0=0x00005500; //設置SPI引腳連接
        PINSEL1=0x00000000;
        IODIR=HC595_CS; //設置LPC2103片選I/O口為輸出功能
        MSpiIni( ); //初始化SPI接口
        while(1)
        { for (i=0;i16;i++)
        {rcv_data=MSendData(DISP_TAB[i]); //發送顯示數據
        DelayNS(50); //延時
         }
        }
        return(0);
         }
        SPI總線的數據通信已經廣泛在MCU與各種外圍設備的串行通信中。如存儲系統、A/D轉換系統、網絡控制器和多MCU構成的分布式系統。本文給出了74HC595芯片驅動LED數碼管顯示的電路,采用SPI總線實現對LED顯示的數據傳輸,方便快捷、準確性高、速度快,滿足了復雜微控制系統對外圍設備控制的要求。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 博罗县| 扶余县| 河津市| 鞍山市| 庆元县| 娱乐| 米林县| 永平县| 凭祥市| 文登市| 漯河市| 大宁县| 米林县| 广宁县| 周至县| 称多县| 湖口县| 屯昌县| 祁连县| 杭锦旗| 恩施市| 江川县| 隆安县| 湘西| 天津市| 湘乡市| 安仁县| 会理县| 兴仁县| 北海市| 稻城县| 许昌市| 绍兴县| 武夷山市| 南平市| 米泉市| 祁门县| 宜川县| 化德县| 柘城县| 普安县|