基于單片機與CPLD的無(wú)線(xiàn)控制系統
地址譯碼端口以及不同端口實(shí)現的功能仿真結果如圖4所示??梢钥闯?,仿真結果符合設計要求。
5 單片機軟件設計
AVR單片機固化程序采用ICC語(yǔ)言編寫(xiě),并使用模塊化的設計方法,分為初始化程序、預定義子程序、主程序、無(wú)線(xiàn)收發(fā)控制程序、各功能模塊控制程序、讀功能子模塊的子程序、配置功能子模塊程序、超時(shí)程序等。模塊化設計使軟件更加靈活,便于調用和移植,并且在錯誤發(fā)生的時(shí)候,可以很快找到錯誤,極大地提高了系統的可靠性和穩定性。
單片機中要對擴展的不同I/O端口分配相對應的不同的內存地址。例如:要對擴展的電源管理I/O端口分配單片機所映射的內存地址為Ox2000??梢詫?xiě)成:#deftne POWER ADDR (*(unsigned char*)0x2000)。
單片機主要完成系統的控制功能,在實(shí)現輸出控制接口時(shí)需要與CPLD配合,提供CPLD需要的數據和地址及控制線(xiàn)。當需要某一組輸出工作時(shí),在單片機中用C語(yǔ)言對宏變量對應的地址進(jìn)行賦值,“WR”或“RD”同時(shí)就被拉低,CPLD通過(guò)這組信號判斷選擇并且使能某一組輸出工作,并將輸出控制代碼從單片機經(jīng)過(guò)CPLD的相應端口輸出,完成控制功能。例如對電源管理單片機中定義的I/O端口對應的內存地址為:#define POWER_ADDR(*(unsigned char*)Ox2000),當用C語(yǔ)言寫(xiě)下POWER_ADDR=Oxl2時(shí),就會(huì )在CPLD的8個(gè)I/O口輸出相應的控制信息“00010010”,從而對各功能模塊進(jìn)行供電或斷電。
6 結 語(yǔ)
采用CPLD作為單片機I/O端口的擴展芯片,大大減少了單片機外圍所用芯片的種類(lèi)和數量,縮小了體積,降低了功耗,提高了系統的可靠性和整體性。使用單片機和CPLD結合可以有效地實(shí)現過(guò)去需要利用單片機和大量外圍接口芯片才能完成的功能,而且還可以根據需要不斷地擴展外圍電路,只需要修改CPLD的程序就可以實(shí)現用戶(hù)的需求。CPLD器件與單片機結合,可以?xún)?yōu)勢互補,組成靈活的、硬軟件都可現場(chǎng)編程的控制器,縮短開(kāi)發(fā)周期,適應市場(chǎng)需要。
評論