用微控制器設計動態輸入範圍的PWM A

2023-01-02 12:48:06 字數 2972 閱讀 4671

用微控制器設計動態輸入範圍的pwm a/d轉換器

上傳者:lamborghini瀏覽次數:148

摘要:給出乙個利用cop820cj片上比較器設計的基於脈這調製的a/d變換器的設計方案,同時給出了利用軟體調整該a/d轉換器的輸入電壓的程式和方法。

關鍵詞:pwm a/d變換計數 cop820cj

1 cop820cj晶元介紹

cop820cj是美國國家半導體公司生產的一款8位微控制器,它內含64位元組ram和1k位元組rom,並帶有24個i/o口,時鐘頻率為10mhz,工作電壓為2.5~6.0v。

cop820cj具有多輸入喚醒(miwu)、低壓復位保護、片上模擬比較器和低電磁輻射設計等功能,其i/o口可程式設計為三態、推挽輸出、弱上拉輸入等型別。

cop820cj的埠分為l/i/d/g四類。其中i口為4位輸入埠,d口為4位輸出埠,g口有6位i/o口和2位輸入口,l口為8位i/o口。同時l口也是晶元的喚醒埠,其中l1和l2又是比較器輸入口,l3又是比較器輸出口。

l口配有資料暫存器(ldata [0doh])和配置暫存器(lconf [0d1h]),兩暫存器可共同決定該埠的狀態。具體關係見表1所列。

表1 l口狀態表

cop820cj的片上ram、埠、暫存器均可對映到00h~feh的資料記憶體空間,其中c0~cfh段主要是喚醒及用看門狗控制暫存器,d0~dfh段有8個埠類暫存器,e0~efh段為計時器和系統暫存器。00~2fh及f0~ffh為ram位址。其中,f0~feh段可用作暫存器,幷包括b位址暫存器[fch]、x位址暫存器[feh]和sp堆疊指標[fdh]三個專用暫存器。

2 cop820cj的工作原理

2.1 基本原理

利用cop820cj的片上模擬比較器和脈衝寬度調製方式可以構成由軟體調控且輸入範圍可變的a/d轉換器。其工作原理圖見圖1所示。圖中,l1和l2為比較器輸入端,當電容電壓小於輸入電壓時,l3端輸出高電平脈衝。

反之,l3輸出低脈衝,並對低脈衝減1計數。電路中的輸入電壓可通過l1、l2之間併聯的兩個背向二極體對電容c1快速充放電,以使兩者電位迅速接近。

點選放大

比較器允許的輸入電壓為0.4v~vcc-1.5v(此時電容電壓與充電、放電時間之間為近似線性關係),實際輸入電壓範圍可能要更小一些。

因此,可以通過設定高低脈衝的引數使電容電壓始終保持在測量範圍之內。若電源為5v,時鐘頻率為10mhz,脈衝週期為24個,即2.4μs,輸入電壓範圍是1.

0v~3.3v。那麼,可以設定高脈衝為先低8個時鐘,再高16個時鐘;設定低脈衝為先高5個時鐘,再低19個時鐘。

這樣,如果l3始終輸出高脈衝,電容電壓vh將近似為vcc×16/24=3.30v;如果l3始終輸出低電平,電容電壓vl則近似為vcc×5/24=1.04v。

進行a/d轉換時,l3可根據比較結果輸出高低脈衝,當脈衝數足夠多時,計數器的值即代表了輸入的電壓值,並可用下式表示:

vin=vl+(vh-vl)(nton/ntotal)

其中,nton為計數器的值,ntotal為總脈衝數。

2.2 轉換時間及解析度

由於脈衝週期為2.4μs,若脈衝總數為100,那麼,進行兩次計數的轉換時間近似為2.4×100×2=480μs。

當輸入為高速變化的訊號時,只需減少脈衝總數即可。如脈衝總數為100,輸入電壓為1.0~3.

3v,則解析度為23mv。為提高解析度,可先對輸入訊號進行粗測,然後調整高低脈衝的占空比,以使對應電壓略超出測量結果的上下限值,這樣即可獲得更高的解析度。

3 軟體設計

圖2所示是用cop820cj設計的a/d轉換器的工作軟體流程圖。其中,控制暫存器2(cntrl2[cc])的第三位是比較器允許位,第四位為比較器輸出。x指令為交換兩暫存器中的資料。

「sbit(rbit)i,n」指令為將n暫存器的第i位置1(0)。「ifbiti,n」指令在n暫存器的第i位為1時執行一條指令,否則跳過。「drsz n」指令的作用是先將暫存器n的值減1,如結果非零,則執行下一條指令,否則跳過。

要保證脈衝週期為24個時鐘,必須精確計算指令週期。其指令週期的時鐘數分別為:

nop:1個時鐘;sbit/rbit/ifbit(對b,x暫存器操作時):1個時鐘;drsz/jp:3個時鐘。

具體的匯程式設計序如下:

(b=ldata)

sbit 4,cntrl2 ;允許比較器工作

ld lconf,#00

ld ldata,#00 ;置l口為高阻輸入

conv:ld a,#02

ld 0f1,#02 ;記錄次數

ld total,#064

ld ton,#064 ;計數器賦初值

sbit3,[b]

sbit 3,lconf ;令l3輸出1

loop:ifbit3,cntrl2

jp high ;如比較器輸出為1,則跳轉

nopnop ;延時,使高低脈衝開始時間點一致

sbit 3,[b];低脈衝部分。l3置高5個時鐘

drsz ton ;ton減1

noprbit 3,[b] ;l3置低19個時鐘

nopnop

jp count

high:rbit3,[b];高脈衝部分。l3置低8個時鐘

nopnop

nopnop

nopnop

sbit 3,[b] ;置高16個時鐘

nopnop

count:drsz total ;total計數器減1

jp loop

rbit 3,lconf

rbit 3,[b];置l3為高阻輸入,以防差錯

ifeq a,0f1

jp reload ;第一次計數器到零則到reload

jp dec ;否則到dec

reload:ld ton,#064

ld total,#064;重新裝入計數器

dec:sbit 3,[b]

sbit 3,lconf 令l3輸出1

drsz 0f1

jmp loop ;進行第二次計數

ld a,ton

x a,00 ;儲存ton到ram00hend

微控制器設計報告

微控制器課程設計 簡易數字頻率計 姓名 學號 專業 實驗時間 1 實驗目的 1.要求學生具有製作除錯微控制器最小系統及外設的能力,能夠掌握微控制器內部資源的使用。2.熟練掌握焊接技術的基礎上,能熟練使用微控制器軟體開發環境keil c51程式設計除錯,並使用stc isp除錯工具採用串列埠 方式聯調...

微控制器設計報告格式

電子課程設計報告 班級 b120408 設計題目 定時搶答器 一 設計目的 掌握解碼器 十進位制加 減計數器的邏輯功能和工作原理,設計可預置時間的定時電路 分析與設計時序控制電路。畫出定時搶答器的整機邏輯電路圖,掌握智力搶答器的工作原理及其設計方法,並對各種元器件的功能和應用有所了解。並能對其在電路...

微控制器設計廣告燈

微控制器作業班級 020811 學號 02081087 姓名 楊昕煜 廣告燈 利用取表方式 1 目標 利用取表的方法,使埠p1做單一燈的變化 左移2次,右移2次,閃爍2次 延時的時間0.2秒 2 電路原理圖 3 系統板上硬體連線 把 微控制器系統 區域中的p1.0 p1.7用8芯排線連線到 八路發光...