繞線機(jī)是工業(yè)生產(chǎn)中的重要的設(shè)備,繞線機(jī)所繞制的產(chǎn)品是經(jīng)常變化的,會(huì)經(jīng)常根據(jù)繞線的匝數(shù)和線徑來(lái)調(diào)整繞線機(jī)的參數(shù)。龍?chǎng)坞娮訌氖?strong>自動(dòng)繞線機(jī),全自動(dòng)繞線機(jī)的研發(fā)已經(jīng)具有豐富的經(jīng)驗(yàn),從最初的PLC控制到現(xiàn)在的單片機(jī),我們提出用PS/2接口的數(shù)字鍵盤(pán)來(lái)實(shí)現(xiàn)參數(shù)的設(shè)置。
PS/2接口的數(shù)字鍵盤(pán)采用的通訊協(xié)議方便可靠,用計(jì)算機(jī)的PS/2接口數(shù)字小鍵盤(pán)來(lái)作為輸入的設(shè)定,是一種十分方便和廉價(jià)的方法,可以方便地修改單片機(jī)的各種參數(shù)。
1、PS/2鍵盤(pán)介紹
上電后,PS/2接口小鍵盤(pán)上電自檢通過(guò)發(fā)出信號(hào)OxAA或者發(fā)出自檢錯(cuò)誤信號(hào)OxFC、單片機(jī)接收為OxAA,進(jìn)入下一步,否則,進(jìn)行出錯(cuò)誤處理、關(guān)掉鍵盤(pán)的LED指示燈,單片機(jī)發(fā)送OxED信號(hào),然后接收鍵盤(pán)回應(yīng)給單片機(jī)的OxFA信號(hào),接著發(fā)送0x00并接收單片機(jī)發(fā)送的OxFA應(yīng)答信號(hào)、設(shè)置機(jī)打延時(shí)和速讀發(fā)送OxF6,接收OxFA應(yīng)答、檢查小鍵盤(pán)LED指示燈,發(fā)送OxED,接收OxFA,發(fā)送0x07開(kāi)LED指示燈,接收OxFA,發(fā)送0x00關(guān)LED指示燈,接收接收應(yīng)答信號(hào)OxFA。
2 PS/2鍵盤(pán)通訊原理
PS/2接口鍵盤(pán)與主機(jī)采用雙向通信方式,鍵盤(pán)可以向主機(jī)發(fā)送數(shù)據(jù),主機(jī)也可以發(fā)送命令給鍵盤(pán)。主機(jī)具有最高優(yōu)先權(quán)。通信協(xié)議是標(biāo)準(zhǔn)的串行異步通信格式,1位起始位,8位數(shù)據(jù)位LSB在先,1位奇校驗(yàn)位,1位停i1位,若為主機(jī)發(fā)送狀態(tài),則還有一位應(yīng)答位ACK、數(shù)據(jù)格式如圖2所示。
主機(jī)同鍵盤(pán)進(jìn)行通信時(shí),無(wú)論發(fā)送還是接收數(shù)據(jù),都要依賴于鍵盤(pán)發(fā)送的時(shí)鐘脈沖,每次數(shù)據(jù)傳輸發(fā)送11個(gè)時(shí)鐘脈沖,時(shí)鐘頻率為10~16.7kHz,通過(guò)判斷時(shí)鐘脈沖的上升沿和下降沿,逐位發(fā)送或讀取數(shù)據(jù)位。當(dāng)數(shù)據(jù)線DATA和時(shí)鐘線CLK同時(shí)為高電平時(shí),鍵盤(pán)可以發(fā)數(shù)據(jù)給主機(jī)、CLK可用作清除發(fā)送線、如果主機(jī)將CLK拉為低電平,則禁止鍵盤(pán)發(fā)送數(shù)據(jù),變成將需要發(fā)送的數(shù)據(jù)放到了發(fā)送緩存區(qū)中,直到CLK變?yōu)楦唠娖讲砰_(kāi)始發(fā)送數(shù)據(jù)。如果主機(jī)將DATA拉低,則當(dāng)鍵盤(pán)檢測(cè)到這一變化時(shí),接收來(lái)自主機(jī)的命令2、概括如圖3所示。
當(dāng)鍵盤(pán)發(fā)送數(shù)據(jù)時(shí),鍵盤(pán)先將DATA拉低,通知主機(jī)準(zhǔn)備接收數(shù)據(jù)。鍵盤(pán)在CLK為高電平時(shí)接收數(shù)據(jù)主機(jī)在CLK為低電平時(shí)讀取數(shù)據(jù)。發(fā)送數(shù)據(jù)的時(shí)鐘信號(hào)由鍵盤(pán)產(chǎn)生、時(shí)序如圖4所示。
為了避免在同一時(shí)刻發(fā)送數(shù)據(jù),應(yīng)將CLK拉低大約100μs以上,以禁止鍵盤(pán)發(fā)送數(shù)據(jù)、然后主機(jī)將數(shù)據(jù)線DATA拉低,發(fā)送起始位,并釋放CLK高電平,由鍵盤(pán)接管CLK,以產(chǎn)生時(shí)鐘信號(hào)、主機(jī)在此同步時(shí)鐘信號(hào)下發(fā)送數(shù)據(jù)、鍵盤(pán)接收數(shù)據(jù)是從檢測(cè)到DATA變低開(kāi)始,然后在CLK為高電平時(shí)讀取數(shù)據(jù),這與鍵盤(pán)發(fā)送數(shù)據(jù)時(shí)的情形相反。當(dāng)主機(jī)發(fā)送完校驗(yàn)位后,釋放數(shù)據(jù)線DATA停止位。隨后,鍵盤(pán)將DATA置成低電平,作為收到數(shù)據(jù)的應(yīng)答信號(hào)ACK,并產(chǎn)生一個(gè)周期的時(shí)鐘脈沖、如果在第11個(gè)脈沖后,主機(jī)未釋放DATA,鍵盤(pán)將繼續(xù)發(fā)送時(shí)鐘信號(hào)到DATA空閑。
鍵盤(pán)等待發(fā)送數(shù)據(jù)時(shí)它首先檢查時(shí)鐘以確認(rèn)它是否是高電平狀態(tài),如果小是,那么是主機(jī)抑制了通訊設(shè)備,必須緩沖任何要發(fā)的數(shù)據(jù)直到重新獲得總線的控制權(quán)。鍵盤(pán)有16字節(jié)的緩沖區(qū),而緩沖區(qū)僅存儲(chǔ)最后一個(gè)要發(fā)送的數(shù)據(jù)包如果時(shí)鐘線是局電平設(shè)備就可以開(kāi)始傳送數(shù)據(jù)。
3軟件流程圖和主要程序
程序流程圖各個(gè)模塊的作用,系統(tǒng)初始化:系統(tǒng)程序所應(yīng)用到的寄存器進(jìn)行參數(shù)初始化設(shè)定,防止寄存器小確定的參數(shù)對(duì)程序運(yùn)行造成影響、按鍵模塊:利用中斷消抖而節(jié)省消抖所占用的時(shí)間,且按鍵的執(zhí)行使用Switch語(yǔ)句進(jìn)行散轉(zhuǎn),達(dá)到多個(gè)參數(shù)的設(shè)定、EEPROM的讀寫(xiě):將己設(shè)定號(hào)的參數(shù)就行保存,重新上電可以讀出己設(shè)定好的參數(shù),防止參數(shù)的去失、SPI通訊:讓鍵盤(pán)和控制芯片進(jìn)行通訊、電機(jī)驅(qū)動(dòng):使用四線兩相步進(jìn)電機(jī)控制,程序編寫(xiě)拉局或拉低電平形成脈沖。
應(yīng)用C語(yǔ)言進(jìn)行程序編寫(xiě),根據(jù)寄存器在程序中的使用范圍,定義全局變量和局部變量,合理定義變量節(jié)省內(nèi)存的空間。程序中按鍵的執(zhí)行使用Switch語(yǔ)句,編寫(xiě)出的程序?qū)哟畏置、?jiǎn)單明朗。EEPROM的讀寫(xiě)保證參數(shù)的小會(huì)去失,SPI通訊的應(yīng)用為控制芯片和PS/2接口鍵盤(pán)搭建了一條數(shù)據(jù)通道。最后送顯模塊,使用數(shù)碼管,程序編寫(xiě)難度低,并起到人機(jī)界面交流的作用。
4結(jié)束語(yǔ)
繞線機(jī)所繞制的產(chǎn)品是經(jīng)常變化的,因此,要根據(jù)繞線的匝數(shù)和線徑經(jīng)常來(lái)調(diào)整繞線機(jī)的參數(shù),利用PS/2接II鍵盤(pán)實(shí)現(xiàn)參數(shù)的設(shè)置,采用SPI的通訊占用的I/O少,通訊協(xié)議可靠簡(jiǎn)單,且PS/2接口小鍵盤(pán)在市場(chǎng)己經(jīng)普及,因此模塊的維護(hù)和更換十分方便,價(jià)格低廉。使用該P(yáng)S/2就接II鍵盤(pán)修改參數(shù)簡(jiǎn)單,并在生產(chǎn)過(guò)程中也提高可效益。