C8051F32X單片機(jī)AD數(shù)據(jù)采集程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
(1)AD數(shù)據(jù)采集程序說明
1)過程簡(jiǎn)單說明
使用C8051F32X片內(nèi)10位AD進(jìn)行256個(gè)數(shù)據(jù)(每個(gè)數(shù)據(jù)為10位,占2個(gè)字節(jié))512字節(jié)的數(shù)據(jù)采集。
采用TIME2定時(shí)溢出觸發(fā)啟動(dòng)AD轉(zhuǎn)換方式。
在AD數(shù)據(jù)轉(zhuǎn)換完成,AD結(jié)束標(biāo)志位為1時(shí),自動(dòng)產(chǎn)生AD轉(zhuǎn)換完成中斷(C8051F32X中斷10)。在中斷服務(wù)程序中,將AD轉(zhuǎn)換結(jié)果讀到片內(nèi)RAM中。在程序中表現(xiàn)為:將ADCOH、ADCOL存放到full函數(shù)中,設(shè)該函數(shù)上限為512,當(dāng)fu11=512時(shí),變量bLOCk_finish=l(初始狀態(tài)和表1ADC控制寄存器ADCOCN功能說明fu11<512時(shí),block_finish=0)。此時(shí),主程序中的while(block_finish)結(jié)束等待,進(jìn)入下一部分程序。
AD數(shù)據(jù)采集結(jié)束后,再把采集的512個(gè)數(shù)據(jù)字節(jié)用IAP方式寫入單片機(jī)flash的2000H~2200H中。
2)定時(shí)器2的工作設(shè)置和工作過程
使用TIME2定時(shí)溢出觸發(fā)啟動(dòng)ADC進(jìn)行數(shù)據(jù)采集轉(zhuǎn)換時(shí),設(shè)定時(shí)器2為16位自動(dòng)加載方式;定時(shí)器控制寄存器TMR2CN(地址:C8H)在初始,化時(shí)設(shè)置為(C8H)=#OOH,其第3位=0時(shí),設(shè)置定時(shí)器2工作在16位自動(dòng)重裝方式。
時(shí)鐘為系統(tǒng)時(shí)鐘的1/12=1MHz,時(shí)鐘控制寄存器CKCON(8EH)設(shè)置為:(8EH)=#02H:。
TMR2RL是定時(shí)器2重載寄存器的低8位,設(shè)置為TMR2RL=65535-(SYSCLK/10000)=65535-100,即定時(shí)器2的溢出間隔時(shí)間為100/s。設(shè)TMR2=Oxffff,是立即重新加載值;TR2=1:置TMR2RN寄存器的位2(TR2)為1時(shí),允許定時(shí)器2工作在定時(shí)器溢出啟動(dòng)AD方式。此時(shí),定時(shí)器2開始工作。
說明:當(dāng)TR2置1后,定時(shí)器2就循環(huán)工作在定時(shí)溢出啟動(dòng)AD方式狀態(tài)。如要停止其工作,必須在程序中設(shè)置TMR2RN=#FBH。
3)AD工作方式設(shè)置和工作過程
設(shè)置ADCOCN(ADC控制寄存器)=#02H其2~0位設(shè)為02,置為定時(shí)器2溢出啟動(dòng)ADC轉(zhuǎn)換方式。
設(shè)置電壓基準(zhǔn)寄存器REFOCN=#OBH,選Vdd為電壓基準(zhǔn)。
設(shè)置AMXOP=#OOH,選AD輸入接口為Pl.0。
設(shè)AMXON=#1FH,選ADC負(fù)輸入寄存器=接地,P1.0工作在單端模式。
要置P1.0口工作在模擬方式:PIMDIN=#XOH,P1.0要設(shè)置PISKIP=#XIH。
設(shè):ADCOCF,ADC配置寄存器(BCH)=#OOH,選數(shù)據(jù)右對(duì)齊,SAR時(shí)鐘=3MHz。
當(dāng)設(shè)置ADCOCN寄存器的第7位ADOEN=1時(shí);使能ADC開始轉(zhuǎn)換工作。
ADC工作后,就不斷的自動(dòng)循環(huán)工作,除非ADOEN位被清零,才能令其停止工作。
設(shè)置EIE1(擴(kuò)展中斷允許1寄存器)=0X08,其位3置1時(shí),允許ADOINT標(biāo)志的中斷請(qǐng)求。即使用ADOINT作為中斷的握手標(biāo)志。
此時(shí),當(dāng)AD轉(zhuǎn)換完成,ADOINT自動(dòng)置1后,產(chǎn)生ADC中斷(C8051F32X單片機(jī)中斷10)。
程序在進(jìn)入中斷服務(wù)程序中;將AD轉(zhuǎn)換結(jié)果的10位數(shù)字分別放到:
tempstoragel
此時(shí),采集的AD數(shù)據(jù)是放在單片機(jī)的片內(nèi)RAM中的。為了掉電后這些數(shù)據(jù)能夠不丟失,還要將其用在系統(tǒng)編程的方式寫到flash中去。
(2)AD數(shù)據(jù)采集流程
AD數(shù)據(jù)采集流程流程圖如下圖所示。
?。?)C8051F32X單片機(jī)AD數(shù)據(jù)采集源程序