微控制器AduC812通用數(shù)據(jù)端口介紹及P1口的應(yīng)用
2.1.2 SFR至ADC塊的接口本文引用地址:http://www.ex-cimer.com/article/172008.htm
AduC812中ADC的工作完全由3個SFR控制,它們分別是ADCCON1、ADCCON2和ADCCON3。
2.1.2.1 ADCCON1--ADC控制SFR#1
ADCCON1寄存器控制轉(zhuǎn)換和采集時間、硬件轉(zhuǎn)換模式以及掉電模式。詳述如下:
SFR地址: FFH
SFR上電缺省值: 20H
位可尋址: 無
ADCCON1 SFR位的說明如表2所示。
MD1 MD0 CK1 CK0 AQ1 AQ0 T2C EXC
2.1.2.2 ADCCON2--ADC控制SFR#2
ADCCON2寄存器控制ADC通道選擇和轉(zhuǎn)換模式。詳述如下:
SFR地址: D8H
SFR上電缺省值: 00H
位可尋址: 是
ADCCON2 SFR位說明如表3所示。
ADCI DMA CCONV SCONV CS3 CS2 CS1 CS0
2.1.2.3 ADCCON3--ADC控制SFR#3
ADCCON3寄存器中只有一位有效,它給出ADC忙狀態(tài)的指示。詳述如下:
SFR地址: F5H
SFR上電缺省值: 00H
位可尋址: 無
ADCCON3 SFR位的說明如表4所示。
BUSY RSVD RSVD RSVD RSVD RSVD RSVD RSVD
2.1.3 ADC工作模式
通過設(shè)置ADCCON1和ADCCON2兩個寄存器,可使ADC處于三種不同的工作模式:一種是單步轉(zhuǎn)換模式,一種是連續(xù)轉(zhuǎn)換模式,還有一種是DMA工作模式。用軟件或通過把轉(zhuǎn)換信號加至外部引腳23(CONVST)可以啟動單步或連續(xù)轉(zhuǎn)換模式,同時還可設(shè)置定時器2的溢出位,用作ADC轉(zhuǎn)換起始觸發(fā)脈沖輸入。
DMA工作模式與其他兩種工作模式有顯著不同,若配置ADC工作在DMA工作模式,則ADC塊將進(jìn)行連續(xù)轉(zhuǎn)換并把采樣值捕獲到外部RAM空間,而不需要來自MCU核的任何干預(yù),這種自動捕獲功能可以擴(kuò)展到16M字節(jié)的外部數(shù)據(jù)存儲器空間。值得注意的是,若工作于DMA工作模式,將要求用戶在中斷服務(wù)子程序中用5us的時間完成中斷服務(wù)、讀ADC結(jié)果并為進(jìn)一步的后續(xù)處理存儲結(jié)果,否則下一次ADC采樣可能會丟失。這一限制條件是由于AduC812已把片內(nèi)ADC設(shè)計成能運(yùn)行在每5us采樣一次的最高速度(即200kHz采樣速率)。因此,在要求其他中斷速率的應(yīng)用中,不能使用ADC DMA工作模式。
現(xiàn)以我們研制的家用心電圖機(jī)為例,說明ADC的使用方法與功能實現(xiàn)。在該心電圖機(jī)中,ADC0用于心電信號的模擬輸入,將2.5V參考電壓接至VREF,由于人體心電信號在0.5mV~4mV,典型值在1mV左右,需經(jīng)過500倍的放大,落在ADC輸入電壓0~2.5V范圍之內(nèi)。因此,心電信號經(jīng)過LM324放大、濾波后輸入ADC0,進(jìn)行A/D轉(zhuǎn)換,得到數(shù)字量以進(jìn)行顯示、存儲、發(fā)送、打印等功能。在這里,A/D轉(zhuǎn)換后的12位數(shù)字量,最小可分辨的信號是0.6mV。對于最小的心電信號0.5mV,經(jīng)放大后為0.25V,對于最大的心電信號4mV,經(jīng)放大后為2V,均在ADC的輸入范圍之內(nèi)。
心電圖機(jī)使用電池作為電源,當(dāng)電池電壓不足時需要提醒用戶更新電池。電源電壓為+5V,所以不能直接接至ADC的輸入端。電源電壓要經(jīng)過分壓電路進(jìn)行分壓,使分壓的電壓在ADC的輸入范圍之內(nèi)。ADC1用于電源電壓分壓后的模擬輸入,進(jìn)而監(jiān)測電源電壓的變化,當(dāng)電源電壓低于一定值時蜂鳴器報警,同時液晶顯示提醒用戶更換電池。若電源電壓低于4.5V時報警,則分壓后為1.5V,當(dāng)ADC1的輸入低于1.5V(0999H)時則啟動報警系統(tǒng)。
下面是利用ADC0采集心電信號的部分程序,ADC首先要初始化,即送適當(dāng)?shù)目刂谱?,根?jù)前面介紹的ADC的SFR,選擇適當(dāng)?shù)腟FR值。
評論