將模擬訊號轉換成數碼訊號的電路,我們稱其為模數轉換器,簡稱a/d轉換器或adc(analog-to-digital converter)。同理,將數碼訊號轉換成模擬訊號的電路稱為數模轉換器,簡稱d/a轉換器或dac,微控制器能夠儲存的資料都是數字型別的。
一、逼近式adc原理
簡介:在進行轉化時,一般都需要經過取樣、量化和編碼三個步驟。a/d轉換的過程是需要時間的,我們可以在連續變化的模擬量上按一定的時間規律取得對應的瞬時值,量化後以數字的形式輸出,從而可以實現從模擬量到數字量的轉化。
步驟:
±lsb/2
adc結構:stc15f2k60s2微控制器adc由多路選擇開關、比較器、逐次比較暫存器、10位dac、轉換結果暫存器(adc_res和adc_resl)以及adc控制暫存器adc_contr構成
核心部分:電壓比較器、逐次比較暫存器、10位dac。
舉例:下圖為8位逐次逼近,集散ad編碼d7~d0(過程類似用天平,先放大砝碼,再放小砝碼)
圖中,oe為使能,eoc為1表示完成ad轉換。
二、adc控制暫存器
符號描述
p1asf
選擇p1.x口作為模擬功能a/d的使用
adc_contr
adc控制暫存器
adc_res
控制adc結果儲存格式
adc_resl
控制adc結果儲存格式
adrj
位於暫存器clk_div/pcon中,用於控制adc轉換結果存放位置
ie中斷允許暫存器
ip中斷優先順序控制暫存器
ad_contr控制暫存器
暫存器格式:
sfr name
bitb7
b6b5
b4b3
b2b1
b0adc_contr
name
adc_power
speed1
speed0
adc_flag
adc_start
chs2
chs1
chs0
暫存器功能
bitfuncton
adc_power
電源控制位,0:關閉adc電源;1:開啟adc電源
adc_start
控制adc開始,建議開啟電源後適當延時,穩定後在啟動a/d轉換
speed
模數轉換器換速度控制位,00:adc轉換週期=540;11:ac轉換週期=90
chs選擇 p1.x 坐為a/d輸入來用
adrj
adrj=0時,0位的a/d轉換結果的高8位存放在adc_res中,低兩位存放在adc_resl的低兩位中
8-bit a/d轉換結果:adc_res[7:0] = 256 * vin/vcc
a/d轉換程式設計
開啟adc電源(設定adc_power位)
適當延時,等adc內部模擬電源穩定。一般延時1ms即可;
設定p1口中的相應口線作為ad轉換模擬量輸入通道(設定p1asf暫存器);
選擇adc通道(設定adc_contr中的chs2-chs0位);
根據需要設定轉換結果儲存格式(設定clk_div中adrj位);
查詢ad轉換結束標誌adc_flag,判斷ad轉換是否完成,若完成,則讀出ad轉換結果(儲存在adc_res和adc_resl暫存器中),並進行資料處理。
採用中斷方式,還需進行中斷設定(中斷允許和中斷優先順序);
在中斷服務程式中讀取ad轉換結果,並將adc中斷請求標誌adc_flag清零。
樣例程式
STC15微控制器的EEPROM程式設計
在程式中使用 stc15微控制器是乙個8位的微控制器,據說在世界上銷量最大,是國產的品牌。其中也有許多值得稱道的地方,比如不用晶振,不用外部的儲存器,flash可以做記憶體使用等。可以進入休眠狀態,外部中斷就可以喚醒等。在使用者需要保持資料,當掉電可以儲存這些資料,等下次啟動後繼續使用資料。這個功能...
STC15 微控制器 利用 外部中斷 測頻率
中斷測頻率 先來看張圖 圖中標明 itx 0 時 下降沿觸發中斷 itx 1 時 上公升沿,下降沿均可觸發中斷,這裡要注意不是隨便乙個io口有上公升沿或下降沿時都觸發中斷,比如我的int0 對應的埠是p32 所以 只有p32埠有上公升沿 下降沿時才會觸發外部中斷0。include include t...
STC15系列微控制器SPI使用教程(三)
stc15系列微控制器spi使用教程 一 資料型別重定義 ifndef uchar define uchar unsigned char endif ifndef uint define uint unsigned int endif io埠定義 sbit miso p2 2 主機讀從裝置 主入從出...