8253在生產(chǎn)線自動(dòng)計(jì)數(shù)系統(tǒng)中的應(yīng)用
8253在生產(chǎn)線自動(dòng)計(jì)數(shù)系統(tǒng)中的應(yīng)用
介紹一種基于計(jì)數(shù)器/定時(shí)器8253的生產(chǎn)線自動(dòng)計(jì)數(shù)系統(tǒng),詳細(xì)敘述了系統(tǒng)的軟、硬件設(shè)計(jì)原理及實(shí)現(xiàn)方法。
關(guān)鍵詞:計(jì)數(shù)器/定時(shí)器;自動(dòng)計(jì)數(shù)系統(tǒng)
Application of 8253 in Automatic counting System of Pro duct Line
LI Lei, XUE Jianbo
(Henan Normal University, College of Physics and Information Engineering, XinXiang 453002, China)
Key words: counter/timer; automatic?counting system
在工廠自動(dòng)化系統(tǒng)中,往往需要對產(chǎn)品進(jìn)行定量包裝,或隨時(shí)統(tǒng)計(jì)在流水線上所生產(chǎn)的某種產(chǎn)品的數(shù)量。為滿足工廠自動(dòng)化的需求,我們采用微處理器和8253等芯片設(shè)計(jì)了一種自動(dòng)計(jì)數(shù)系統(tǒng)。這種系統(tǒng)電路簡單,造價(jià)低,適合中小企業(yè)使用。
8253是可編程的計(jì)數(shù)器/定時(shí)器,其內(nèi)部有三個(gè)獨(dú)立的16位計(jì)數(shù)器/定時(shí)器通道,每個(gè)計(jì)數(shù)器 通道均可按6種不同的方式工作,并且都可以按二進(jìn)制或十進(jìn)制計(jì)數(shù)。其CLK0~CLK2是計(jì)數(shù)器0~2的時(shí)鐘脈沖輸入端,GATE0~GATE2是門控脈沖輸入端,OUT0~OUT2是輸出端(見圖1)。當(dāng)用8253做外部事件計(jì)數(shù)器時(shí),在CLK端所加的計(jì)數(shù)脈沖由外部事件產(chǎn)生,這些脈沖的間隔可以不相等。如果要用它做定時(shí)器,則CLK端應(yīng)輸入精確的時(shí)鐘脈沖。這時(shí),8253所能實(shí)現(xiàn)的定時(shí)時(shí)間決定于計(jì)數(shù)脈沖的頻率和計(jì)數(shù)器的初值,即
? 定時(shí)時(shí)間=時(shí)鐘脈沖周期tc×預(yù)置的計(jì)數(shù)初值n
8253的控制邏輯由5個(gè)控制信號和A0組成,對應(yīng)的操作見表1。
? 定時(shí)時(shí)間=時(shí)鐘脈沖周期tc×預(yù)置的計(jì)數(shù)初值n
8253的控制邏輯由5個(gè)控制信號和A0組成,對應(yīng)的操作見表1。
?
RL1,RL0——讀/寫操作位。00表示鎖存數(shù)據(jù),可隨時(shí)讀取計(jì)數(shù)器中的計(jì)數(shù)值;01表示只讀/寫低8位,高8位自動(dòng)置為0;10表示只讀/寫高8位,低8位自動(dòng)置為0;11表示讀/寫16位數(shù)據(jù),先低8位,后高8位。
M2,M1,M0——工作方式選擇位。0~5表示方式0~5。方式0,計(jì)數(shù)完中斷;方式1,可程控單觸發(fā)操作;方式2,分頻脈沖發(fā)生;方式3,分頻方波發(fā)生;方式4,軟件觸發(fā)選通;方式5,硬件觸發(fā)選通。其中方式0的工作過程如下:當(dāng)程序送一控制字將所選的計(jì)數(shù)器置于所設(shè)定的方式后,該計(jì)數(shù)器的輸出為低;當(dāng)計(jì)數(shù)器初值裝入被選中的計(jì)數(shù)器后,在外部輸入的門控高電平的控制下,則可通過各自的計(jì)數(shù)脈沖進(jìn)行遞減計(jì)數(shù)。此時(shí)其輸出仍為“低”。當(dāng)計(jì)數(shù)器從初始值減到全“0”時(shí),便產(chǎn)生一高電平輸出,利用此輸出信號向CPU發(fā)計(jì)數(shù)完中斷;此中斷請求一直保持到程序再次向計(jì)數(shù)器裝入初值為止。
BCD——計(jì)數(shù)方式選擇位。1表示按十進(jìn)制計(jì)數(shù),0表示按二進(jìn)制計(jì)數(shù)。
M2,M1,M0——工作方式選擇位。0~5表示方式0~5。方式0,計(jì)數(shù)完中斷;方式1,可程控單觸發(fā)操作;方式2,分頻脈沖發(fā)生;方式3,分頻方波發(fā)生;方式4,軟件觸發(fā)選通;方式5,硬件觸發(fā)選通。其中方式0的工作過程如下:當(dāng)程序送一控制字將所選的計(jì)數(shù)器置于所設(shè)定的方式后,該計(jì)數(shù)器的輸出為低;當(dāng)計(jì)數(shù)器初值裝入被選中的計(jì)數(shù)器后,在外部輸入的門控高電平的控制下,則可通過各自的計(jì)數(shù)脈沖進(jìn)行遞減計(jì)數(shù)。此時(shí)其輸出仍為“低”。當(dāng)計(jì)數(shù)器從初始值減到全“0”時(shí),便產(chǎn)生一高電平輸出,利用此輸出信號向CPU發(fā)計(jì)數(shù)完中斷;此中斷請求一直保持到程序再次向計(jì)數(shù)器裝入初值為止。
BCD——計(jì)數(shù)方式選擇位。1表示按十進(jìn)制計(jì)數(shù),0表示按二進(jìn)制計(jì)數(shù)。
使用8253計(jì)數(shù)功能的電路見圖1。
當(dāng)LED發(fā)光管與光電管之間無工件通過時(shí),LED發(fā)出的光能夠照在光電管上,使光電管導(dǎo)通,集電極變?yōu)榈碗娖健4诵盘柦?jīng)74LS14驅(qū)動(dòng)整形后送到8253的CLK1,使8253的CLK1端也為低電平。當(dāng)LED發(fā)光管與光電管之間有工件通過時(shí),LED發(fā)出的光被工件擋住,光電管截止,集電極變?yōu)楦唠娖?,?253的CLK1端也為高電平。待工件通過后,CLK1端又回到了低電平。這樣,每通過一個(gè)工件,就從CLK1端輸入一個(gè)正脈沖,利用8253對此脈沖計(jì)數(shù),就可以統(tǒng)計(jì)出工件的個(gè)數(shù)來。
8253的A1和A0分別與CPU地址總線的A2和A1相連。GATE1接+5V,OUT1作為中斷信號INT接到8259A的一個(gè)中斷請求輸入端IR2或者接51單片機(jī)的外部中斷輸入。本系統(tǒng)中設(shè)計(jì)的8253的端口地址分別為0350H,0352H,0354H,0356H。
8253的A1和A0分別與CPU地址總線的A2和A1相連。GATE1接+5V,OUT1作為中斷信號INT接到8259A的一個(gè)中斷請求輸入端IR2或者接51單片機(jī)的外部中斷輸入。本系統(tǒng)中設(shè)計(jì)的8253的端口地址分別為0350H,0352H,0354H,0356H。
編程時(shí),可選擇計(jì)數(shù)器1工作在方式0。在8253的方式0工作方式中,從將計(jì)數(shù)初值寫入計(jì)數(shù)器到開始減1計(jì)數(shù)之間,有一個(gè)時(shí)鐘脈沖的延遲。若計(jì)數(shù)初值為n=999,那么經(jīng)過n+1個(gè)即1000個(gè)脈沖時(shí)計(jì)數(shù)值減為0,并在OUT1端輸出一正跳變,這可以作為中斷請求。在中斷服務(wù)子程序中CPU可以做其他處理,如送下一個(gè)包裝箱等。
設(shè)計(jì)數(shù)初值為1999(要求一個(gè)包裝箱內(nèi)裝工件2000),按十進(jìn)制計(jì)數(shù),先送低8位,再送高8位,控制字為01110001B。
初始化程序?yàn)椋?BR> MOV AL,01110001B
設(shè)計(jì)數(shù)初值為1999(要求一個(gè)包裝箱內(nèi)裝工件2000),按十進(jìn)制計(jì)數(shù),先送低8位,再送高8位,控制字為01110001B。
初始化程序?yàn)椋?BR> MOV AL,01110001B
若自動(dòng)計(jì)數(shù)系統(tǒng)中,在包裝箱未裝滿之前想了解包裝箱中已經(jīng)裝了多少個(gè)工件,我們可以利用8253的數(shù)據(jù)鎖存功能;由于8253是減1計(jì)數(shù)器,可以讀取計(jì)數(shù)器的現(xiàn)行值,再用裝滿值減去現(xiàn)行值,即得當(dāng)前包裝箱中的工件數(shù)。
此時(shí)方式控制字為01000000B,實(shí)現(xiàn)上述功能的程序?yàn)椋?BR>
此時(shí)方式控制字為01000000B,實(shí)現(xiàn)上述功能的程序?yàn)椋?BR>
評論