1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      ADμC812的數據采集子系統及其ISP技術

      更新時間: 2006-04-13 16:16:36來源: 粵嵌教育瀏覽量:2178

        在單片機應用如火口荼的今天,一個真正的單片在系統可編程全智能數據采集系統終于出現了。它就是AD公司推出的嵌入式Flash MCU微轉換器ADμC812。

        ADμC812在單個芯片內集成了8路12位ADC采集系統、2路12位DAC、80C52MCU內核、8KB的閃速/電可擦除程序存儲器、640字節的閃速/電可擦除數據存儲器、看門狗定時器、640字節的閃速/電可擦除數據存儲器、看門狗定時器、電源監視器、I2C兼容的SPI和標準的UART串行I/O模塊及靈活的電源管理方案等等,真正實現了單片機應用系統的單片機。限于篇幅,本文只介紹其ADC采集子系統及其在系統編程技術。

        一、ADμC812的ADC采集子系統

        1.硬件組成結構

        ADμC812的ADC采集子系統部分由模擬多路轉換器、溫度傳感器、采樣保持電路(T/H)、12位逐次逼近比較的ADC、+2.5V基準源和ADC校正、控制邏輯組成,其組成如圖1所示。


        ADμC812的模擬輸入端的電壓有效輸入范圍與基準源有關。當采用內部基準源時,其有效輸入范圍為0~+2.5V;當采用外部基準源時,外部基準源應從Vref端引入,其合適的范圍為+2.3~+5V,相應的模擬輸入端的電壓范圍為0V~Vref。無論如何不應使其輸入電平為負或超過允許值AVDD+0.3V。當信號輸入為雙極性時,必須加入電平位移網絡,使其變為單極性信號輸入,如圖2所示。


        ADμC812可工作在-40~+85℃的工業級范圍,有3V和5V兩種供電工作方式,以便進一步降低功耗。ADC模擬包含了5μs、8通道、12位、單電源A/D轉換器。其中,A/D轉換器由基于電容DAC的常規則逐次逼近轉換器組成,可保證的±1LSB的差分非線性和±1/2LSB和積分非線性。在上電時由工廠編程的校準系數自動下載到ADC,以確保的ADC性能。該校準系數包括內部失調和增益校準兩個方面,用戶可根據需要重寫工廠編程的校準系數,以便使用戶目標系統中端點誤差的影響小。來自片內溫度傳感器的電壓輸出正比于熱力學溫度,它可通過多路轉換器的第9個ADC通道輸入,這方便了溫度測量的實現。

        2.軟件控制特性

        可編程性是應用系統發展的必然趨勢。為適應不同信號源的實際需求,ADμC812片內ADC模塊內的所有部件都能方便地通過3個SFR寄存器來設置。

        (1)ADCCON1——控制轉換和采集時間


        (2)ADCCON2——控制ADC通道選擇和轉換模式


        (3)ADCCON3——ADC狀態指示


        二、ADμC812的系統調試、編程技術

        目前,由于ADμC812只提供表貼封裝形式,因而在用仿真器進行程序調試時將會帶來一些問題。為方便調試,ADμC812A片內除集成了各具特色的硬件模塊外,還因化了方便實用的監控調試軟件,使其只需少量的外圍器件即可實現聯機調試,從而大大方便了用戶的使用,縮短了產品的研制周期。啟用調試方式的電路連接如圖3所示。


        在上電復位的瞬間,使EA引腳接高電平,PSEN引腳接一下拉電阻,即可使ADμC812進入監控調試支援方式。在此方式下,通過基于PC的Quick Start開發工具包,即可下載用戶程序。通過運行于Microsoft Windows系統下的下的ADμC.exe調試軟件,可實時調試用戶程序。

        該調試軟件支持單步、斷點和連續運行等工作方式,可方便地觀察MCU的運行結果,包括內部RAM、SFR、程序Flash EEPROM和數據Flash EEPROM等單元的內容。從而提高了工作效率,縮短了產品的開發周期。圖3中MAX232為RS232電平轉換器,用于將TTL電平轉換成RS232電平,以便直接連至PC的串行口,進行聯機調試或下載程序。

        Quick Start還提供了工作于DOS環境下的串行下載軟件DownLoad.exe。運行該軟件可直接將用戶程序編程到ADμC812芯片中的程序Flash存儲器中,免除了需用編程器和封裝適配器的麻煩,真正實現了在系統可編程。Quick Start開發工具軟件包可從www.analog.com/microconverter/quick-start.html下載得到。

        三、定時ADC編程舉例

        該例程主要說明如何利用ADC的單次轉換功能實現定時采樣的目的。定時器T0用于1.25ms定時,8個通道完成一次數據采集需要10ms。為增加抗干擾的能力,軟件中還加入了數字濾波功能。每個通道連續采樣16次后再進行平均處理,然后將高8位結果送出,其匯編語言源程序清單如下:

      $NOMOD51

      $INCLUDE() ;使用ADμC812預定義符

      Timer_ms_const equ(65536-9216/8);當晶振頻率為11.0592MHz時,10ms對應9216個周期

      ADC_tlag equ 20H.0;AD轉換標志,=1時表示采樣的8路AD值有效

      ADC_coun equ 30H;用于指示當前正在處理的ADC通道

      ADC_result equ 38H;38H~3FH存入0~7通道的ADC結果

      ADC_acc equ 40H;40~4FH存入0~7通道的累加值

      ORG 0000H

      start:

      jmp Begin

      ORG start+0BH

      Jmp Timer0_interrupt

      ORG start+100h

      Begin;

      mov SP,#60H

      mov R0,#20H;清工作單元

      mov R7,#40H

      clr A

      iRAM_init;

      mov @R0,A

      inc R0

      djnz R7,iRAM_init

      call Timer0_init;初始化T0為1.25ms中斷一次

      call ADC_init;初始化ADC為單次轉換

      setb EA

      Controlloop:

      Jnb ADC_flag,Controlloop

      …… ;將AD轉換的結果取走

      clr ADC_flag;允許開始下一次轉換

      jmp Controlloop

      ADC_init:

      mov ADCCON1,#01101100B;上電ADC

      mov ADCCON2,ADC_count;選擇轉換通道

      ret

      Timer0_interrupt:

      setb SCONV;開始單次ADC轉換

      mov TL0,#LOW(Timer_ms_const);裝入定時常數

      mov TH0,#HIGH(Timer_ms_const)

      push PSW

      mov PSW,#00001000B;使用page1

      mov R2,A;暫存A累

      Timer0_int_ADC:

      jb ADC_flag,Timer0_int_ADC_end;數據未取走則退出

      Mov A,ADCCON3;讀ADC狀態

      jb ACC.7,Timer0_int_ADC

      mov A,ADC_count

      anl A,#07H

      rl A

      add A,#ADC_acc

      mov R0,A

      mov A,ADCDATAL;將ADC轉換結果加入累加單元

      add A,@R0

      mov @R0,A

      inc R0

      mov A,ADCDATAH

      anl A,#0FH

      addc A,@R0

      mov #R0,A

      inc ADC_count

      mov A,ADC_count

      anl A,#07H

      mov ADCCON2,A;選擇下一通道

      mov A,ADC_count

      cjne A,#80H,Timer0_int_ADC_end

      mov ADC_count,#0

      mov R0,#ADC_acc;數字濾波后存入ADC結果

      mov R1,#ADC_result

      mov R7,#08

      Timer0_int_save_ADC:

      clr A

      mov #R0,A

      inc R0

      xch A,#R0

      mov @R1,A

      inc R0

      inc R1

      djnz,R7,Timer0_int_save_ADC

      setb ADC_flag

      Timer0_int_ADC_end:

      Mov A,R2

      Pop PSW

      Reti

      Timer0_init;

      mov TH0,#HIGH(Timer_ms_const);裝入定時常數

      mov TL0,#LOW(Timer_ms_const)

      anl TMOD,#11110000B

      orl TMDD,#00000001B

      Setb ET0;允許T0中斷

      Setb TR0;T0開始運行

      Ret

      END

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日本午夜精品一区二区三区电影 | 一本在线观看资源网站 | 思久96热在精品国产 | 亚洲中文精品视频在线 | 日韩中文字幕一区二区三区 | 亚洲老妇在线观看 |