徐洪霞
[摘要]本文介紹一種基于單片機(jī)的遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)。本系統(tǒng)的上位機(jī)和下位機(jī)都采用P89LPC900系列單片機(jī),通過(guò)RS-485總線(xiàn)網(wǎng)絡(luò)達(dá)到一對(duì)多的控制目的。本文分別從硬件和軟件詳細(xì)介紹了系統(tǒng)平臺(tái)和工作流程,該系統(tǒng)結(jié)構(gòu)簡(jiǎn)潔、成本低,可靠性高,具有控制系統(tǒng)平臺(tái)的通用性。
[關(guān)鍵詞]P89LPC922;UART;RS-485;遠(yuǎn)程控制;ICP
引言
隨著數(shù)控技術(shù)的飛速發(fā)展,基于單片機(jī)的控制系統(tǒng)也日益復(fù)雜。但在一些要求響應(yīng)快,實(shí)時(shí)性強(qiáng)、控制量多的應(yīng)用場(chǎng)合,由單個(gè)單片機(jī)構(gòu)成的系統(tǒng)往往難以勝任,這時(shí)利用多個(gè)單片機(jī)之間或者結(jié)合PC組成分布式系統(tǒng)成為一個(gè)可行的解決方案。本文完全采用Philips公司的P89LPC900系列單片機(jī)組建控制系統(tǒng),利用RS-485總線(xiàn)網(wǎng)絡(luò),來(lái)達(dá)到一個(gè)單片機(jī)控制多個(gè)單片機(jī)的一對(duì)多通訊目的,并配置了豐富的外設(shè)接口,可廣泛應(yīng)用在銀行、武警、小區(qū)等領(lǐng)域[1,2]。
1、控制系統(tǒng)方案
控制系統(tǒng)主要有兩部分組成,即上位機(jī)(主控機(jī))和下位機(jī)(從機(jī))。上位機(jī)和下位機(jī)都選用相同的51單片機(jī),這樣方便單片機(jī)的統(tǒng)一開(kāi)發(fā)和維護(hù)。主控機(jī)通過(guò)485驅(qū)動(dòng)芯片接入RS-485總線(xiàn),它使用查詢(xún)方式與8個(gè)從機(jī)通信;8個(gè)從機(jī)也通過(guò)485驅(qū)動(dòng)芯片接入RS-485總線(xiàn),響應(yīng)主機(jī)的查詢(xún)命令,將數(shù)據(jù)回傳給主機(jī),從機(jī)之間的不能直接數(shù)據(jù)交換只能通過(guò)主機(jī)進(jìn)行轉(zhuǎn)發(fā)。
2、硬件電路設(shè)計(jì)
由于各個(gè)從機(jī)模塊的硬件電路完全相同,所以我們可以用一對(duì)一通訊模式來(lái)說(shuō)明一對(duì)多控制通訊模式。
2.1 共同接口設(shè)計(jì)
如圖,由于主控機(jī)和從機(jī)都是采用的同種同型號(hào)單片機(jī),所以一些接口可以采用相同的設(shè)計(jì),這樣更利于整個(gè)系統(tǒng)的硬件設(shè)計(jì)和軟件編程。比如:485接口、編程升級(jí)接口、存儲(chǔ)器接口和蜂鳴器接口等等,都可以采用完全相同的設(shè)計(jì)。
(1)485接口設(shè)計(jì)
如圖,單片機(jī)的串口引腳RXD和TXD分別連接MAX485的RO和DI引腳,以進(jìn)行串行數(shù)據(jù)交換;單片機(jī)的控制引腳通過(guò)三極管連接MAX485的DE和RE引腳,以控制驅(qū)動(dòng)器和接收器使能。這4個(gè)引腳均應(yīng)接上拉電阻。MAX485的A和B引腳為RS-485總線(xiàn)網(wǎng)絡(luò)的差分信號(hào)輸入/輸出端,兩者之間串聯(lián)120歐電阻。
(2)程序下載設(shè)計(jì)
P89LPC922支持ICP(在電路編程)及ISP(在系統(tǒng)編程)等下載模式對(duì)芯片進(jìn)行編程、及升級(jí)??赏ㄟ^(guò)外部的編程器或者PC的串口將程序下載到芯片中。ICP用到的5個(gè)腳分別是VCC、VSS、RST、PCL(P0.5)、PDA(P0.4)。
(3)外擴(kuò)存儲(chǔ)器設(shè)計(jì)
存儲(chǔ)器采用ATMEL公司的AT24C02電可擦除存儲(chǔ)芯片,采用I2C協(xié)議和單片機(jī)通訊[4]。
(4)蜂鳴器設(shè)計(jì)
蜂鳴器的驅(qū)動(dòng)采用PNP三極管8550來(lái)驅(qū)動(dòng),低電平有效。
2.2 主機(jī)設(shè)計(jì)
主控機(jī)除了上述的共同接口設(shè)計(jì)外,還要有I/O擴(kuò)展接口。由于單片機(jī)自身的I/O口數(shù)量有限,可以用三八譯碼器74LS138擴(kuò)展成8個(gè)I/O來(lái)驅(qū)動(dòng)LED,8個(gè)LED分別對(duì)應(yīng)著8個(gè)從機(jī),哪個(gè)從機(jī)響應(yīng)主機(jī)對(duì)應(yīng)的LED燈就會(huì)閃爍。
2.3 從機(jī)設(shè)計(jì)
從機(jī)除了上述的共同接口設(shè)計(jì)外,還要有設(shè)備地址接口和電機(jī)驅(qū)動(dòng)接口。
(1)地址獲取
利用四位撥動(dòng)開(kāi)關(guān)分別接到單片機(jī)的4個(gè)I/O,可以獲取16個(gè)不同的地址。
(2)電機(jī)驅(qū)動(dòng)
國(guó)產(chǎn)的電機(jī)驅(qū)動(dòng)L9110S是為控制和驅(qū)動(dòng)電機(jī)設(shè)計(jì)的兩通道推挽式功率放大專(zhuān)用集成電路器件。該芯片有兩個(gè)TTL/CMOS兼容電平的輸入,具有良好的抗干擾性;兩個(gè)輸出端能直接驅(qū)動(dòng)電機(jī)的正反向運(yùn)動(dòng),它具有較大的電流驅(qū)動(dòng)能力。
3、軟件設(shè)計(jì)
3.1 RS-485通訊協(xié)議設(shè)計(jì)[5]
RS-485總線(xiàn)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)多機(jī)通訊的關(guān)鍵是通訊協(xié)議設(shè)計(jì),而其中最重要的是幀結(jié)構(gòu)的設(shè)計(jì)。本系統(tǒng)根據(jù)控制系統(tǒng)的通用性定義了幀結(jié)構(gòu),如表1。
本系統(tǒng)的數(shù)據(jù)幀有四種類(lèi)型,它們分別是:主機(jī)詢(xún)問(wèn)從機(jī)是否在位的“Active”指令,從機(jī)應(yīng)答在位的“Ready”指令,主機(jī)發(fā)送讀設(shè)備請(qǐng)求的“Command”命令,從機(jī)發(fā)送設(shè)備狀態(tài)“Succeed”指令。
3.2 軟件流程
本系統(tǒng)平臺(tái)可以根據(jù)軟件不同實(shí)現(xiàn)多種一對(duì)多控制功能,具有控制系統(tǒng)通用性。主控機(jī)有8個(gè)按鈕,分別控制著1-8號(hào)從機(jī);并分別對(duì)應(yīng)著8個(gè)LED指示燈。主控機(jī)按下1號(hào)按鈕,詢(xún)問(wèn)1號(hào)從機(jī)是否在位,如果1號(hào)從機(jī)成功接收到數(shù)據(jù),就會(huì)反饋給主控機(jī)在位信息,這時(shí)主控機(jī)的1號(hào)LED燈亮;緊接著主控機(jī)發(fā)送開(kāi)門(mén)指令,如果1號(hào)從機(jī)能成功執(zhí)行命令,會(huì)再次反饋給主控機(jī)信息,這時(shí)1號(hào)LED燈會(huì)閃爍兩下。同樣的2-8號(hào)從機(jī)操作過(guò)程相同。
4、應(yīng)用前景
(1)完全基于單片機(jī),脫離PC機(jī),便于開(kāi)發(fā)成便攜式設(shè)備。可以廣泛用于銀行、酒店等領(lǐng)域的報(bào)警系統(tǒng)或者門(mén)禁系統(tǒng)。
(2)也可以把上位機(jī)換成PC機(jī),加上一些軟件比如:用戶(hù)界面、數(shù)據(jù)處理、后臺(tái)數(shù)據(jù)庫(kù)等,就可以開(kāi)發(fā)成用于工業(yè)數(shù)據(jù)采集控制系統(tǒng)。
5、結(jié)束語(yǔ)
本文完全利用單片機(jī)搭建了一個(gè)基于RS485通信協(xié)議的多單片機(jī)控制系統(tǒng)平臺(tái)。也可以根據(jù)實(shí)際的應(yīng)用場(chǎng)合,選擇合適的上位機(jī),稍作修改即可繼承運(yùn)用本系統(tǒng)。本系統(tǒng)具有一定的通用性。
參考文獻(xiàn)
[1]Philips semiconductors Inc.P89LPC920/921/922,8-bit microcontrollers with two-clock 80C51 core[R].2003.
[2]邰鳴,李雙田.基于RS485通信方式的多單片機(jī)控制系統(tǒng)[J].微計(jì)算機(jī)應(yīng)用,2008.
[3]廣州周立功單片機(jī)發(fā)展有限公司.P89LPC920/921/922[R].2004.
[4]Atmel Corporation.AT24C01A/02/04/08A/16A,Two-wire Serial EEPROM [R].2007.
[5]吳桂林,鄭建勇.RS485上下位機(jī)多機(jī)通信網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008.