国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于89C51控制的數(shù)字電壓系統(tǒng)的設(shè)計(jì)

2020-05-12 06:06梁建華
關(guān)鍵詞:電壓表單片機(jī)電路

梁建華

(臨汾職業(yè)技術(shù)學(xué)院,山西 臨汾 041000)

隨著電子技術(shù)的發(fā)展,各類高精度測(cè)量?jī)x表隨之誕生.在電子產(chǎn)品運(yùn)用與維修時(shí),電壓的測(cè)量是一項(xiàng)常規(guī)性操作,通常使用電壓表或萬(wàn)用表來(lái)進(jìn)行測(cè)量,而它們均為指針式儀表,測(cè)量時(shí)因檔位選擇不當(dāng)、擺放位置不同及讀數(shù)姿勢(shì)等因素都會(huì)造成讀數(shù)不準(zhǔn)確,測(cè)量精確度不高,不能滿足數(shù)字智能化時(shí)代的要求.文中提出的數(shù)字電壓系統(tǒng)以單片機(jī)AT89C51為主控器,通過(guò)A/D轉(zhuǎn)換電路將模擬量轉(zhuǎn)換為數(shù)字量,由LCD顯示電路顯示測(cè)量結(jié)果,具有操作方便,精度高,抗干擾能力強(qiáng),可擴(kuò)展性強(qiáng)及集成方便等優(yōu)點(diǎn),在智能化測(cè)量領(lǐng)域具有良好應(yīng)用前景.

1 系統(tǒng)總體設(shè)計(jì)

該系統(tǒng)采用模塊化設(shè)計(jì)方法,以單片機(jī)為主控器,LCD顯示電路及A/D轉(zhuǎn)換電路組成數(shù)字電壓表控制系統(tǒng),通過(guò)可調(diào)電位器調(diào)節(jié)電壓表來(lái)模擬電壓的輸入,經(jīng)AT89C51單片機(jī)控制電路完成對(duì)外圍硬件控制及運(yùn)算,然后進(jìn)行A/D轉(zhuǎn)換[1]出數(shù)字量,即為輸出電壓值,最后由LCD顯示.

2 系統(tǒng)硬件設(shè)計(jì)

數(shù)字電壓系統(tǒng)電路有主控模塊電路、LCD顯示模塊電路及A/D轉(zhuǎn)換模塊電路組成,其接口電路原理圖如下:

圖1 數(shù)字電壓系統(tǒng)接口電路原理

2.1 主控模塊電路

該主控模塊電路由AT89C51控制器、電源電路、復(fù)位電路及時(shí)鐘電路組成單片機(jī)的最小系統(tǒng),采用電源電壓為5 V,選用振蕩器頻率為11.0592 MHz的石英晶體,通過(guò)按鍵電平復(fù)位方式進(jìn)行復(fù)位操作.

2.2 LCD顯示模塊電路

顯示模塊電路選用LCD1602[2]字符型模塊,內(nèi)部控制器為日立公司生產(chǎn)的HD44780,可用來(lái)顯示數(shù)字及字符.其外部引腳一般有16條,8條數(shù)據(jù)線 D0-D7與單片機(jī)P0口相連,3條控制線RS、RW、E分別與單片機(jī)P2.0、P2.1和P2.2相連.

2.3 A/D轉(zhuǎn)換模塊電路

A/D轉(zhuǎn)換模塊由A/D芯片和可調(diào)電位器組成,A/D芯片選用TLC549芯片,共有8個(gè)引腳(4、8引腳為接地和電源輸入,2腳AIN連接可調(diào)電位器RP2的滑動(dòng)端,1腳REF(+)、3腳REF(-)為參考電壓輸入分別接+5 V電源及地端,5腳CS為片選信號(hào)與單片機(jī)的RD引腳相連,7腳I/O CLK為時(shí)鐘信號(hào)與單片機(jī)的T1引腳相連,6腳DOUT為轉(zhuǎn)換后的串行數(shù)據(jù)輸出與單片機(jī)的WR引腳相連),其具有8位轉(zhuǎn)換結(jié)果、用CMOS技術(shù)、差分基準(zhǔn)電壓輸入、低功耗及5 V供電范圍等特點(diǎn).

3 系統(tǒng)軟件設(shè)計(jì)

3.1 算法設(shè)計(jì)思路

通過(guò)可調(diào)電位器RP2改變電壓輸出值在0~5 V內(nèi)連續(xù)變化,從而可以模擬模擬量的變化.依據(jù)A/D轉(zhuǎn)換芯片工作時(shí)序,利用定時(shí)器0定時(shí)5 ms,設(shè)置計(jì)數(shù)器累計(jì)4次,定時(shí)器0產(chǎn)生中斷,也就是20 ms進(jìn)行一次A/D采樣轉(zhuǎn)換,然后調(diào)用A/D轉(zhuǎn)換值函數(shù)將值轉(zhuǎn)換為對(duì)應(yīng)的ASCII值,最后通過(guò)LCD顯示A/D轉(zhuǎn)換值函數(shù)把轉(zhuǎn)換的數(shù)字量顯示在LCD1602上,顯示范圍為0~255.

3.2 數(shù)據(jù)結(jié)構(gòu)[3]設(shè)計(jì)

數(shù)字電壓表系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如表1所示:

表1 數(shù)字電壓表系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)

3.3 程序設(shè)計(jì)過(guò)程

3.3.1 主函數(shù)設(shè)計(jì)

主函數(shù)模塊主要完成硬件初始化、定時(shí)器[4]初值計(jì)算、定時(shí)器設(shè)置及函數(shù)調(diào)用等功能,其程序如下:

void main()

{

keytime=4;

InitLcd();

SendCommandByte(0x80);

Delay(2);

SendDataByte(‘A’);

SendDataByte(‘B’);

SendDataByte(‘C’);

SendDataByte(‘:’);

TH0=0Xee;

TL0=0X00;

TMOD=0X01;

TR0=1;

IE=0X82;

while(1);

}

3.3.2 定時(shí)器0中斷服務(wù)函數(shù)設(shè)計(jì)

設(shè)置軟計(jì)數(shù)變量keytime為4,定時(shí)器T0定時(shí)5 ms后,進(jìn)入定時(shí)器T0中斷服務(wù)函數(shù),軟計(jì)數(shù)量keytime減1,當(dāng)keytime值為0時(shí)則表明20 ms時(shí)間已到并進(jìn)行采樣一次;否則T0中斷函數(shù)返回主函數(shù),繼續(xù)計(jì)時(shí).實(shí)現(xiàn)程序如下:

Void time0(void) interrupt 1

{

TH0=0xee;

TL0=0x00;

keytime--;

If(keytime==0)

{

read_549();

jsdpbl();

dispdpbl();

}

}

3.3.3 A/D采樣轉(zhuǎn)換函數(shù)設(shè)計(jì)

2)由于鉆井垂直度是順利下人套管柱的重要條件之一,所以為了保證井眼的垂直度,在鉆進(jìn)過(guò)程中采取了以下措施:

根據(jù)A/D轉(zhuǎn)換芯片TLC549的工作時(shí)序,要求片選信號(hào)CS置低電平,內(nèi)部電路在測(cè)得CS下降沿后,再等待兩個(gè)時(shí)內(nèi)部時(shí)鐘上升沿和一個(gè)下降沿后,才能進(jìn)行A/D轉(zhuǎn)換.其程序編碼如下:

void read_549(viod)

{

unsigned char i;

AD_CS=0;

adbl=0x00;

for(i=0;i<8;i++)

{

AD_CK=1;

adbl=adbl<<1;

if(AD_OUT==1)

adbl++;

AD_CK=0;

}

AD_CS=1;

}

3.3.4 A/D值轉(zhuǎn)換ASCII碼函數(shù)設(shè)計(jì)

若要在LCD上顯示A/D轉(zhuǎn)換值adbl,則需要把它轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼,其實(shí)現(xiàn)函數(shù)如下:

void jsdpbl(void)

{

ledbai=(adbl/100)|0x30;

ledshi=((adbl%100)/10)|0x30;

ledge=(adbl%10)|0x30;

}

3.3.5 LCD1602顯示函數(shù)設(shè)計(jì)

LCD顯示函數(shù)模塊包括LCD初始化函數(shù)、寫入指令數(shù)據(jù)到LCD函數(shù)、寫入顯示數(shù)據(jù)到LCD函數(shù)、LCD顯示A/D轉(zhuǎn)換值函數(shù)及延時(shí)函數(shù).

void InitLcd() //LCD初始化函數(shù)

{

SendCommandByte(0x30);

SendCommandByte(0x30);

SendCommandByte(0x30);

SendCommandByte(0x38);

SendCommandByte(0x08);

SendCommandByte(0x01);

SendCommandByte(0x06);

SendCommandByte(0x0c);

}

void SendCommandByte(unsigned char ch) //寫入指令數(shù)據(jù)到LCD函數(shù)

{

RS=0;

RW=0;

P0=ch;

E=1;

Delay(1);

E=0;

Delay(100);

}

void SendDataByte(unsigned char ch) //寫入顯示數(shù)據(jù)到LCD函數(shù)

{

RS=1;

RW=0;

P0=ch;

E=1;

Delay(1);

E=0;

Delay(100);

}

void dispbpbl(void) // LCD顯示A/D轉(zhuǎn)換值函數(shù)

{

SendCommandByte(0x85);

SendDataByte(ledbai);

SendDataByte(ledshi);

SendDataByte(ledge);

}

void Delay(unsigned int t) //延時(shí)函數(shù)40 μs

{for(;t!=0;t--);}

4 結(jié)束語(yǔ)

該控制數(shù)字電壓系統(tǒng)總體設(shè)計(jì)采用模塊化方法,分析各硬件電路,列出數(shù)據(jù)結(jié)構(gòu)表,設(shè)計(jì)出相應(yīng)的算法,并編寫出各模塊程序代碼,進(jìn)行統(tǒng)一調(diào)試,然后對(duì)比系統(tǒng)在不同模擬輸入量時(shí),通過(guò)LCD顯示輸出電壓值的情況,可達(dá)到預(yù)期效果.且它采用單片機(jī)控制,具有電路簡(jiǎn)單,精度高,可擴(kuò)展性強(qiáng)及集成方便等優(yōu)點(diǎn),它將在智能化測(cè)量領(lǐng)域發(fā)揮更大作用.

猜你喜歡
電壓表單片機(jī)電路
電路的保護(hù)
如何判斷電壓表的測(cè)量對(duì)象
判斷電壓表測(cè)量對(duì)象有妙招
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
解讀電路
基于單片機(jī)的層次漸變暖燈的研究
基于單片機(jī)的多功能智能插排
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
巧用立創(chuàng)EDA軟件和Altium Designer軟件設(shè)計(jì)電路
基于MATLAB模擬混沌電路