新型微控制器AduC812的P1口的應用
AduC812是一種新型的高度集成的高精度12位數據采集系統。在其片內,不僅包含了可重新編程的非易失性閃速/電擦除程序存儲器的高性能8位(與8051兼容)MCU,還包含了高性能的自校準多通道(8個(gè)輸入通道)ADC,兩個(gè)12位DAC。AduC812微控制器內核與8051指令集兼容,具有9個(gè)中斷源(2個(gè)優(yōu)先級)。片內還集成了8K字節的閃速/電擦除程序存儲器、640字節的閃速/電擦除數據存儲器以及256字節RAM。
AduC812共有52個(gè)管腳,使用4個(gè)通用數據端口P0~P3與外部器件進(jìn)行數據交換。每一個(gè)I/O口都有自己不同的驅動(dòng)執行電路。除端口1之外都是8位雙向端口。端口1的操作是AduC812特有的,表1說(shuō)明了P1口可復用的管腳功能。
表1 P1口管腳說(shuō)明

所有端口均包含位鎖存器和輸入緩沖器,I/D雙向端口還包含了輸出驅動(dòng)器。由于P1口沒(méi)有輸出驅動(dòng)器,所以P1口只能是輸入端口,只能被配置為數字輸入或模擬輸入,不能用于輸出,如圖1所示。AduC812的P1口通常用于模擬輸入;當不用于模擬輸入時(shí),可將0寫(xiě)至端口值,這樣就被設置為數字輸入方式。

2 P1口的各種功能與應用
P1口的主要功能是ADC的模擬輸入,另外還可用于一些控制輸入、定時(shí)器2和計數器2的數字輸入以及SPI從屬選擇輸入等。
2.1 模/數轉換輸入
AduC812中的ADC轉換塊包含了8通道、12位、單電源A/D轉換器。此模塊為用戶(hù)提供了多通道多路轉換器、跟蹤/保持、片內基準、校準特性。此模塊內的所有部件都能方便地通過(guò)3個(gè)寄存器SFR接口來(lái)設置。
A/D轉換器由基于電容DAC的常規逐次逼近轉換器組成。轉換器接收的模擬輸入范圍為0至+VREF。片內提供高精度、低漂移并經(jīng)工廠(chǎng)校準的2.5V基準電壓。內部基準可經(jīng)外部VREF引腳過(guò)驅動(dòng)。外部基準在2.3V至AVDD的范圍內。
AduC812裝有工廠(chǎng)編程的校準系數,它在上電時(shí)自動(dòng)下載到ADC,以確保最佳的ADC性能。ADC核包括內部失調和增益校準寄存器,所提供的軟件校準子程序可允許用戶(hù)在需要時(shí)重寫(xiě)工廠(chǎng)編程的校準系數,以便使用戶(hù)目標系統中端點(diǎn)誤差的影響為最小。
來(lái)自片內溫度傳感器的電壓輸出正比于絕對溫度,它也可向前端ADC多路轉換器(實(shí)際上是第9個(gè)ADC通道輸入)傳送。
2.1.1 ADC轉移函數
ADC的模擬輸入范圍是0V至VREF。在此范圍內,設計的代碼跳變發(fā)生在連續的整數LSB值的中間(即LSB,LSB,LSB,……FS-LSB)。當VREF=2.5V時(shí),輸出碼是直接的二進(jìn)制數,1LSB=FS/4096或2.5V/4096=0.61mV。在0至VREF范圍內理想的輸入/輸出轉移特性如圖2所示。

2.1.2 SFR至ADC塊的接口
AduC812中ADC的工作完全由3個(gè)SFR控制,它們分別是ADCCON1、ADCCON2和ADCCON3。
2.1.2.1 ADCCON1--ADC控制SFR#1
ADCCON1寄存器控制轉換和采集時(shí)間、硬件轉換模式以及掉電模式。詳述如下:
SFR地址: FFH
SFR上電缺省值: 20H
位可尋址: 無(wú)
ADCCON1 SFR位的說(shuō)明如表2所示。
MD1 MD0 CK1 CK0 AQ1 AQ0 T2C EXC
2.1.2.2 ADCCON2--ADC控制SFR#2
ADCCON2寄存器控制ADC通道選擇和轉換模式。詳述如下:
SFR地址: D8H
SFR上電缺省值: 00H
位可尋址: 是
ADCCON2 SFR位說(shuō)明如表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
位可尋址: 無(wú)
ADCCON3 SFR位的說(shuō)明如表4所示。
BUSY RSVD RSVD RSVD RSVD RSVD RSVD RSVD
2.1.3 ADC工作模式
通過(guò)設置ADCCON1和ADCCON2兩個(gè)寄存器,可使ADC處于三種不同的工作模式:一種是單步轉換模式,一種是連續轉換模式,還有一種是DMA工作模式。用軟件或通過(guò)把轉換信號加至外部引腳23(CONVST)可以啟動(dòng)單步或連續轉換模式,同時(shí)還可設置定時(shí)器2的溢出位,用作ADC轉換起始觸發(fā)脈沖輸入。
DMA工作模式與其他兩種工作模式有顯著(zhù)不同,若配置ADC工作在DMA工作模式,則ADC塊將進(jìn)行連續轉換并把采樣值捕獲到外部RAM空間,而不需要來(lái)自MCU核的任何干預,這種自動(dòng)捕獲功能可以擴展到16M字節的外部數據存儲器空間。值得注意的是,若工作于DMA工作模式,將要求用戶(hù)在中斷服務(wù)子程序中用5us的時(shí)間完成中斷服務(wù)、讀ADC結果并為進(jìn)一步的后續處理存儲結果,否則下一次ADC采樣可能會(huì )丟失。這一限制條件是由于A(yíng)duC812已把片內ADC設計成能運行在每5us采樣一次的最高速度(即200kHz采樣速率)。因此,在要求其他中斷速率的應用中,不能使用ADC DMA工作模式。
現以我們研制的家用心電圖機為例,說(shuō)明ADC的使用方法與功能實(shí)現。在該心電圖機中,ADC0用于心電信號的模擬輸入,將2.5V參考電壓接至VREF,由于人體心電信號在0.5mV~4mV,典型值在1mV左右,需經(jīng)過(guò)500倍的放大,落在A(yíng)DC輸入電壓0~2.5V范圍之內。因此,心電信號經(jīng)過(guò)LM324放大、濾波后輸入ADC0,進(jìn)行A/D轉換,得到數字量以進(jìn)行顯示、存儲、發(fā)送、打印等功能。在這里,A/D轉換后的12位數字量,最小可分辨的信號是0.6mV。對于最小的心電信號0.5mV,經(jīng)放大后為0.25V,對于最大的心電信號4mV,經(jīng)放大后為2V,均在A(yíng)DC的輸入范圍之內。
心電圖機使用電池作為電源,當電池電壓不足時(shí)需要提醒用戶(hù)更新電池。電源電壓為+5V,所以不能直接接至ADC的輸入端。電源電壓要經(jīng)過(guò)分壓電路進(jìn)行分壓,使分壓的電壓在A(yíng)DC的輸入范圍之內。ADC1用于電源電壓分壓后的模擬輸入,進(jìn)而監測電源電壓的變化,當電源電壓低于一定值時(shí)蜂鳴器報警,同時(shí)液晶顯示提醒用戶(hù)更換電池。若電源電壓低于4.5V時(shí)報警,則分壓后為1.5V,當ADC1的輸入低于1.5V(0999H)時(shí)則啟動(dòng)報警系統。
下面是利用ADC0采集心電信號的部分程序,ADC首先要初始化,即送適當的控制字,根據前面介紹的ADC的SFR,選擇適當的SFR值。
由于A(yíng)DC0作為心電信號的模擬輸入,選擇ADCCON1可使ADC正常工作,ADC時(shí)鐘分頻比為2。由于LM324輸出阻抗遠遠小于8kΩ,所以選擇ADC采集時(shí)鐘1,得到ADCCON1=50H。選擇通道0,可利用ADCCON2的默認值00H。
由于A(yíng)DC1作為電源監測的模擬輸入,選擇ADCCON1可使ADC正常工作,ADC時(shí)鐘分頻比為2。由于電源阻抗遠遠小于8kΩ,所以選擇ADC采集時(shí)鐘1,得到ADCCON1=50H。選擇通道1,ADCCON2=01H。
在下面程序中,堆棧設置在60H,利用定時(shí)器0中斷后執行采樣程序,選取采樣頻率為200Hz,因而定時(shí)器0的定時(shí)值為T(mén)L0=3CH,TH0=F6H。由于啟動(dòng)單個(gè)轉換周期完成一次A/D轉換需要16×2+1=33個(gè)AduC812主時(shí)鐘,程序中一次延時(shí)循環(huán)為2個(gè)主時(shí)鐘,因而在采樣程序中利用R0=16作為單個(gè)轉換周期,延時(shí)36個(gè)主時(shí)鐘,以完成一次采樣后的A/D轉換。ADCDATAL為A/D轉換低8位,ADCDATAH為A/D轉換高4位;R1、R2用于存放12位A/D轉換結果,設置00H位作為采樣結束標志位。

2.2按鍵控制
當不需要使用AduC812的ADC的全部8個(gè)通道時(shí),剩余的ADC輸入可用作數字輸入端。例如,我們將P1口中的幾位用于按鍵控制的輸入端口,此時(shí)要先將0寫(xiě)至端口值。需要注意的是,AduC812的P1口用作按鍵時(shí)是高電平有效,在沒(méi)有按鍵輸入時(shí),P1口應保持低電平,因此在用作按鍵的P1口應加下拉電阻(即P1.3~P1.7在沒(méi)有輸入時(shí)為低電平),阻值一般為幾千歐。在前面的例子中,按鍵分別連接到P1.3~P1.7,它們通過(guò)2kΩ的下拉電阻接至地;插座的第6腳接高電平VCC,用于觸發(fā)按鍵。當有鍵按下時(shí),P1.3~P1.7中的相應位接至高電平VCC,這樣就給出了按鍵信息。通過(guò)上面的程序就可以進(jìn)行判斷并執行相應的按鍵功能,并且采用防抖方法來(lái)提高可靠性,具體程序如下:




AduC812的P1口兼容了MCS51系列單片機的功能,而且又有著(zhù)自己獨特的多種其它可實(shí)現的功能。這樣,在一片單片機上利用P1口可以實(shí)現盡可能多的功能。
評論