單片機(jī)串行外圍接口電路的三線式結(jié)構(gòu)設(shè)計
SPI總線接口芯片為完成單片機(jī)的常規(guī)外圍電路擴(kuò)展設(shè)計帶來了機(jī)遇,可擴(kuò)展的外圍電路包括A/D與D/A轉(zhuǎn)換器、顯示、時鐘、存儲器、監(jiān)視復(fù)位、I/O、顯示等。本文利用國內(nèi)目前較為流行的I2C,SPI串行通信協(xié)議實現(xiàn)單片機(jī)外圍電路的A/D轉(zhuǎn)換、D/A轉(zhuǎn)換、時鐘、I/O擴(kuò)展、E2PROM以及LED驅(qū)動器件的擴(kuò)展功能,實現(xiàn)了單片機(jī)系統(tǒng)功能模塊化,電路集成化的目的。
1 SPI集成接口芯片功能及應(yīng)用
1.1 A/D轉(zhuǎn)換器
單片機(jī)應(yīng)用系統(tǒng)中典型的應(yīng)用模式是通過傳感器采集現(xiàn)場的微弱信號參數(shù),經(jīng)過濾波放大處理后再通過A/D模數(shù)轉(zhuǎn)換送至單片機(jī)系統(tǒng)實現(xiàn)各種工業(yè)調(diào)節(jié)和控制,在此過程中A/D轉(zhuǎn)換電路的設(shè)計尤其重要。早期的A/D轉(zhuǎn)換器與CPU接口一般采用并行總線方式,新型A/D轉(zhuǎn)換器采用I2C,SPI總線方式可節(jié)省CPU的I/O資源,使產(chǎn)品小型化。本文中選用的A/D轉(zhuǎn)換器為SPI串行總線接口的10位模數(shù)轉(zhuǎn)換器TLC1549。
1.2 D/A轉(zhuǎn)換器
D/A轉(zhuǎn)換器的種類繁多,從接口形式而言,有串口和并口之分。目前新型的D/A轉(zhuǎn)換器大都采用了串行總線協(xié)議。D/A芯片的輸出形式有電流型和電壓型兩種,由于電流輸出形式在實際電路中必須將輸出轉(zhuǎn)換成電壓輸出。為了簡化電路和提高可靠性,本文選用電壓型的SPI串行總線接口TLC5615 D/A轉(zhuǎn)換器。
1.3 驅(qū)動顯示器接口芯片
目前廣泛使用的顯示器件主要有LED(二極管顯示管)、LCD(液晶顯示器)和VFD(真空熒光管)等。LCD和VFD顯示器顯示成本較高,而LED顯示器造價低廉,與單片機(jī)接口方便靈活,技術(shù)上易于實現(xiàn),通常用于顯示阿拉伯?dāng)?shù)字和少數(shù)字符。本文選用LED作為顯示器件。串行總線方式的LED顯示器接口芯片與并行方式相比,僅占有CPU的少數(shù)幾根I/O口線便可實現(xiàn)LED功能,因此本設(shè)計中采用了SPI串行接口顯示驅(qū)動芯片MAX7219。
1.4 看門狗芯片X5045
單片機(jī)應(yīng)用系統(tǒng)(或產(chǎn)品)在運行中會受到各種各樣的干擾,導(dǎo)致系統(tǒng)內(nèi)部數(shù)據(jù)出錯或嚴(yán)重影響程序的運行。因此,單片機(jī)應(yīng)用系統(tǒng)的開發(fā)要考慮系統(tǒng)的可靠性設(shè)計。“看門狗”是系統(tǒng)可靠性設(shè)計中的重要一環(huán)。所謂“看門狗”是指在單片機(jī)程序設(shè)計中采用的一種程序監(jiān)視技術(shù),當(dāng)單片機(jī)受到干擾失控導(dǎo)致程序跑飛或陷入死循環(huán)時,通過采取一定的軟硬件措施使程序脫離死循環(huán)或重新運行。本文中選用多功能芯片X5045。
1.5 I/O擴(kuò)展芯片PCF8574
目前,在單片機(jī)應(yīng)用系統(tǒng)的外圍串行擴(kuò)展接口器件中,除了上述SPI總線以外,還有I2C總線。I2C總線提供了較完善的總線協(xié)議和最簡單的串行連接方式,并提供了總線操作的狀態(tài)處理軟件包。本文在設(shè)計中加入常用的I2C總線的I/O擴(kuò)展片PCF8574,用他來增加單片機(jī)的I/O口,提高單片機(jī)的外掛器件的能力。PCF8574具有低的電流損耗并有輸出鎖存功能,能輸出大電流,可直接驅(qū)動LED發(fā)光管。
2 硬件設(shè)計
本次設(shè)計所有的接口芯片均采用串行方式,串行方式通信有單線、兩線、三線等多種方式,其中以兩線、三線最為流行。在本次設(shè)計中,主要采用三線方式,即SPI(SerialPeripheral Interface,串行接口)。設(shè)計中所用的接口器件包括A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、實時時鐘、存儲器、看門狗、I/O、LED顯示器。在本次設(shè)計中采用的是51系列的單片機(jī)作為主CPU,而他不具有SPI接口系統(tǒng),故不可直接與各個廠家生產(chǎn)的多種標(biāo)準(zhǔn)的SPI外圍器件直接接口。為了解決這一難題,在本設(shè)計中使用軟件來模擬SPI系統(tǒng)中的4條線:串行時鐘總線SCK、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MOSO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線/CS。用P2.1模擬CPU的數(shù)據(jù)輸出端(MOSI),P2.0模擬CPU的數(shù)據(jù)輸入端(MOSO),P2.2模擬CPU的SCK輸出端。外圍接口芯片公用這三條控制線,但在這種方式下,每次只能驅(qū)動執(zhí)行一片芯片。鑒于SPI與I2C總線電路設(shè)計、時序和程序設(shè)計的不同,又在本次設(shè)計中加入了一片I2C總線接口的I/O擴(kuò)展芯片,用P1.0來模擬SDA,用P1.1來模擬SCL,以便了解兩者的截然不同之處。硬件框圖如圖1所示。
3 軟件設(shè)計
用PCF8574來擴(kuò)展I/O端口,低四位為燈,高四位為小開關(guān),通過中斷的方法讀入I/O的狀態(tài)。經(jīng)過取高四位,打到低四位,以點亮或熄滅相應(yīng)的指示燈。整個系統(tǒng)在工作中,只要按下任意一個鍵都將使PCF8574產(chǎn)生中斷申請信號,使CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中,CPU根據(jù)按鍵的狀態(tài)控制程序轉(zhuǎn)移。按下鍵1,調(diào)用A/D轉(zhuǎn)換子程序;按下鍵2,調(diào)用顯示子程序;按下鍵3,調(diào)用D/A轉(zhuǎn)換子程序,用示波器觀察其輸出波形;按下鍵4,調(diào)用看門狗芯片X5045的工作子程序,進(jìn)行單字節(jié)的寫、讀。軟件總體流程框圖見圖2。
4 結(jié) 語
目前,單片機(jī)應(yīng)用系統(tǒng)的外圍擴(kuò)展已從并行方式為主過渡到以串行方式為主的時代。許多新型外圍器件都帶有UART的移位寄存器方式,MOTOROLA公司的SPI、NS公司的Microwire、Dallas公司的1-wire和Philips公司的I2C總線等,他們都提供了較完善的總線協(xié)議,連接方式簡單,在擴(kuò)展外圍器件設(shè)計中得到廣泛的應(yīng)用。本文通過在設(shè)計中使用MCS-51的I/O口來模擬總線接口,實現(xiàn)了單片機(jī)與串行總線接口器件的數(shù)據(jù)傳輸,該方案已通過調(diào)試,整個單片機(jī)系統(tǒng)運行良好。試驗表明MCS-51的I/O口來模擬總線接口的方法在設(shè)計中可行有效。