基于51單片機控制的數(shù)字氣壓計設計與實現(xiàn)
圖3
3.3 單片機
本氣壓計實現(xiàn)方案需使用單片機的P1口和P3口的一部分以及一個中斷源、一個定時器和一個計數(shù)器。因此,筆者選用了ATMEL的AT89C2051單片機,該器件與89C51兼容,具有2kB的可重復編程閃存,2.7V~6V的工作電壓范圍,128Byte的內部RAM以及兩個I/O口(P1,P3)、2個16位的計數(shù)器/定時器和6個中斷源,并可直接驅動LED輸出,同時帶有可編程的串行通訊口。另外,該單片機還具有體積小,價格低等特點。
3.4 LED顯示
單個LED是由7段發(fā)光二極管構成的顯示單元。有10個引腳,對應于7個段、一個小數(shù)點和兩個公共端。在顯示電路中,這些發(fā)光二極管有兩種接法:共陽極接法和共陰極接法。本設計中需要用4個LED組成顯示單元,并采用動態(tài)顯示方式。由于使用4個單個LED進行顯示的連線比較復雜,同時單片機的端口驅動能力也難以保證,而需要加入專門的驅動芯片。所以,筆者采用了4個LED連體的、內部已將其相應段接好的共陽極LED,它具有12個引腳,含7個段和4個公共端,為提高數(shù)碼管的亮度,可在位選線上加入一個三極管驅動電路。
由AT89C2051控制的顯示電路如圖3所示。該顯示電路需要選取合適的電阻R和Ra,才能保證LED的亮度,過大或者過小都無法讓LED正常顯示。設計時取R為4.7kΩ?Ra為510Ω比較理想。若考慮印制板布線的方便,可以采用貼片電阻和排阻來節(jié)省空間。另外,也可以用74LS244和74LS06構成驅動顯示電路,但這樣同樣要加限流電阻。因為74LS06是開漏器件,需要在輸出處加上拉電阻。
4 軟件實現(xiàn)
通過以上設計,便可通過fo來計算P的大小以得到實時的氣壓值。硬件電路設計完成之后,可使用AEDK5196PH仿真器的仿真環(huán)境進行仿真,并可用C51語言來編寫處理程序。其基本程序流程如圖4所示。
程序設定:T0為定時器,基本的定時時基為50ms。T1為計數(shù)器,運用內部中斷0可保證T0定時滿500 ms后就讀取此時計數(shù)器的值,以計算氣壓值。如使T1、T0均工作于方式1,并在P1口送字型碼,同時可用P3.0~P3.3做位選線,那么,其相應的函數(shù)如下:
(1)定時器T0中斷函數(shù):
void timer0(void) interrupt 1 using 1
{uint x, y;
uint count_ pluse;
ET0=0; //關閉T/C0中斷
Tcount++; //中斷次數(shù)
if?Tcount == 10){
TR1=0; //停止計數(shù)器計數(shù)
Tcount=0;
x=TH1;
y=TL1;
count_pulse=(x*256+y)*2;
ph=(uint)(10 * ((float)(count pulse+1520)/105.9? ?? //計算氣壓值
TH1 = 0x00; //重設計數(shù)初值
TL1=0x00;
}
TH0 = -50000/256; //重設50ms初值
TL0 = -50000%256;
if(TL0!= 0) TH0--;
ET0=1;
TR1=1;
return;
}
脈沖點火器相關文章:脈沖點火器原理
評論