摘要:在此介紹了一種由極少硬件構成的簡易智能碼盤,該系統(tǒng)主要由單片機和拔碼開關組成,采用撥碼開關設置輸入數(shù)據(jù)量的位碼和數(shù)碼,通過外部中斷數(shù)據(jù)采集按鍵控制該位數(shù)據(jù)量的輸入,并由顯示器監(jiān)視,內部E2PROM保存,同時通過串行口向用戶系統(tǒng)發(fā)送設置數(shù)據(jù)。故使用該碼盤用戶系統(tǒng)僅占用一個串行口或虛擬串行口就可實現(xiàn)16位BCD碼設置或64位二進制碼輸入,16位BCD碼可根據(jù)用戶需要分割為幾組,每組數(shù)據(jù)的位數(shù)也可任意定義,以滿足各種控制系統(tǒng)控制參數(shù)設置的需要。
關鍵詞:智能碼盤;16位BCD碼;撥碼開關;E2PROM
0 引言
在自動控制系統(tǒng)應用中,經(jīng)常需要設定控制目標參數(shù),這些參數(shù)一般由鍵盤或碼盤輸入,隨著工業(yè)自動化程度越來越高,各種碼盤的需求也逐漸增加。
很多學者研究了各式各樣的碼盤。他們大多是利用物理、電磁、生物、光學等原理,研制出撥鍵式、光電式及光柵式等碼盤。然而,這些碼盤都有一個共同的缺點,一個碼盤只能輸入一個數(shù)據(jù)位,當輸入量位數(shù)過多時,就需要多個碼盤,這樣將會帶來計算機接口數(shù)量不夠的矛盾,即輸入數(shù)據(jù)位數(shù)越多,硬件越多,占用CPU接口就越多,硬件體積大,成本高,系統(tǒng)結構復雜。
本文研究了一種簡易智能碼盤,只需占用系統(tǒng)CPU一個串行接口或2個普通輸入/輸出口(用虛擬串行口技術)就可實現(xiàn)16位BCD碼或者64位二進制碼輸入,不僅簡化了硬件電路,而且解決了當輸入數(shù)據(jù)位數(shù)過多時系統(tǒng)CPU接口不足的難題。
1 設計原理
該智能碼盤用8位撥碼開關實現(xiàn)數(shù)據(jù)輸入,其中高4位用于選擇輸入碼(BCD碼)的位數(shù),低4位用于設置BCD碼的大小。如設置第8位碼為7,則撥碼開關高4位設置為1000,低4位為0111,然后按一次采集按鈕即完成輸入。碼盤CPU將采集到的BCD碼存入相應的內存,并轉存片內E2PROM或FLASH內,然后再從串行口輸出供用戶設備使用(用戶CPU串口采樣)。智能碼盤系統(tǒng)框圖如圖1所示。
為了進一步降低成本,當用戶系統(tǒng)不大的情況下,也可選擇用戶CPU替代碼盤CPU。即利用用戶CPU的一個普通8位輸入/輸出口和一個外部中斷即可完成輸入控制參數(shù)設置功能。系統(tǒng)框圖如圖2所示。輸入完畢,所有撥碼開關處于斷開狀態(tài),該口即可恢復其他輸入或輸出口功能,即不占用用戶系統(tǒng)接口,提高了接口使用效率。
2 系統(tǒng)硬件設計
系統(tǒng)硬件結構主要由數(shù)據(jù)輸入電路、數(shù)據(jù)采集電路(碼盤CPU)、顯示電路、數(shù)據(jù)輸出電路(碼盤CPU串口輸出通信)等部分組成。
2.1 數(shù)據(jù)輸入電路
數(shù)據(jù)輸入部分由8位撥碼開關和上拉電阻組成。電路如圖3所示。
通過撥碼開關的接通、斷開,實現(xiàn)邏輯“0”和邏輯“1”的輸出,供碼盤CPU采樣,其采樣的數(shù)據(jù)含義為高4位代表輸入數(shù)據(jù)位數(shù),低4位代表數(shù)據(jù)大小。其數(shù)據(jù)大小和數(shù)碼含義由用戶定義,可以是BCD碼、格林碼、二進制碼或其他碼。最常用的為BCD碼或二進制碼。表1為撥碼開關位碼和數(shù)碼參數(shù)表。
2.2 數(shù)據(jù)采集電路
本設計采用STC12C2052AD作為碼盤CPU,它是一款高速,低功耗,超小封裝的單片機,其價格低廉,性能可靠,無需擴展即可滿足設計要求。片內2 KBFLASH和256 B片內RAM,可以完成10萬次以上的擦寫次數(shù),引腳封裝和指令系統(tǒng)都與MCS-51兼容,系統(tǒng)硬件設計簡單、軟件編程方便。數(shù)據(jù)采集在外部中斷中完成,當按采集按鈕時,系統(tǒng)立即響應中斷,即執(zhí)行中斷處理程序,從P1口讀入撥碼開關狀態(tài),然后拆分位碼和數(shù)碼,如果數(shù)據(jù)有效(數(shù)碼數(shù)值不大于9),則將采集數(shù)據(jù)存入相應內存,并轉存到E2PROM內,即完成了位碼指定位的數(shù)據(jù)輸入,然后碼盤CPU將這組數(shù)據(jù)發(fā)送至用戶系統(tǒng)CPU,再移植到控制參數(shù)緩沖器和送顯示器顯示,提示操作者設置控制參數(shù)的大小。當所有位設置完成后,即可完成整體數(shù)據(jù)采集。
2.3 數(shù)據(jù)輸出電路
該碼盤數(shù)據(jù)輸出由碼盤CPU通過異步通信串行接口(UART)進行串口發(fā)送,發(fā)送和接收波特率設置為1200b/s。
為保證通信可靠性,采用對講機通信方式,碼盤CPU采集數(shù)據(jù)完畢后(接到發(fā)送命令)主動發(fā)送呼叫口令“S”,用戶控制系統(tǒng)CPU接收口令“S”后,應答“O”來建立通信連接。聯(lián)結建立完畢后,將設置參數(shù)從高位到低位依次連續(xù)發(fā)送3遍。用戶系統(tǒng)CPU將接收到的3組數(shù)據(jù)進行對應表決校驗,來確定接收數(shù)據(jù)正確性。
用戶可以根據(jù)自己需要將接收到的16位數(shù)據(jù)將進行數(shù)據(jù)前后分組,每組數(shù)據(jù)位數(shù)和物理含義由用戶自己決定。例如在環(huán)境檢測系統(tǒng)中1~3位為環(huán)境溫度,4~5位為空氣濕度,6~8位為二氧化碳濃度,9~13位為光照強度,14~16位為噪聲強度。
3 軟件設計
本設計采用匯編語言編程,主要包括主程序、數(shù)據(jù)采集子程序、顯示子程序、FLASH讀/寫子程序、串口發(fā)送/接收子程序等。
3.1 碼盤CPU主程序流程圖
碼盤CPU主程序流程圖如圖4所示。
主要由系統(tǒng)初始化、E2PROM讀出、顯示,虛擬串口發(fā)送等程序模塊組成,系統(tǒng)初始化主要置更新標志為1,其目的是系統(tǒng)從E2PROM內讀出斷電前最后一次保存的數(shù)據(jù),顯示,并發(fā)送給用戶控制系統(tǒng)CPU,供用戶系統(tǒng)使用。
3.2 數(shù)據(jù)輸入中斷服務程序
圖5為數(shù)據(jù)輸入子程序流程圖,主要處理數(shù)據(jù)采集,并將采集到的數(shù)據(jù)存入E2PROM中。數(shù)據(jù)輸入子程序是智能碼盤程序的核心部分,其執(zhí)行過程如下:
(1)將P1的數(shù)據(jù)讀入;
(2)拆分位碼、數(shù)碼;
(3)判斷數(shù)碼數(shù)據(jù)是否合法(若數(shù)碼大于9,則視為不合法),若不合法,采樣數(shù)據(jù)無效;
(4)將位碼、數(shù)碼數(shù)據(jù)寫入E2PROM;
(5)向用戶CPU發(fā)送。
4 應用實例
在木材干燥過程中,需要若干個干燥階段。每個階段都需要設置干燥時間、干燥溫度以及干燥濕度。若濕度太大,木材易發(fā)霉;若溫度過高,濕度太低,木材干燥過快,易引發(fā)內裂,所以要求控制系統(tǒng)在滿足干燥濕度的條件下,盡快達到干燥溫度,并在該干燥溫度和濕度條件下保持干燥階段時間,使木材內的水分自然流出。
只應用該碼盤的前10位就能滿足干燥過程參數(shù)的設置,16~13位設置干燥時間(時/分),12~10位設置干燥溫度(干球溫度),9~7位設置干燥濕度(濕球溫度)。干燥控制系統(tǒng)從串行口接收到這些干燥控制參數(shù)保存到30H~39H中,即30H~33H保存干燥時間,34H~36H保存干燥溫度,37H~39H保存干燥濕度,控制系統(tǒng)在工作時,根據(jù)實際采樣溫度、濕度與這些控制設置參數(shù)比較決策是否加熱提高干燥溫度、是否噴灑蒸氣提高干燥濕度、根據(jù)實際干燥時間是否更改干燥階段等控制。
5 結語
經(jīng)試驗調試證明,本文提出的方法是切實可行的,系統(tǒng)結構簡單,穩(wěn)定性好,占用硬件接口少(只占用計算機一個串行口),當要求輸入數(shù)據(jù)越大,數(shù)字位數(shù)越多時,本方法的優(yōu)越性越明顯。