<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC單片機(jī)模/數(shù)轉(zhuǎn)換器ADC模塊的設(shè)計思路及電路設(shè)計

          PIC單片機(jī)模/數(shù)轉(zhuǎn)換器ADC模塊的設(shè)計思路及電路設(shè)計

          作者: 時間:2013-03-15 來源:網(wǎng)絡(luò) 收藏

            ADCON1、TRISA和TRISE寄存器控制A/D端口引腳的操作。這個作為模擬輸入的端口引腳必須有它們的相應(yīng)位TRIS置1(輸入)。如果TRIS位清0(輸出),數(shù)字輸出電平(VOH或VOL)將被轉(zhuǎn)換。A/D操作是獨(dú)立于(CHS(2∶0))位和TRIS位的狀態(tài)之外的。

            在睡眠期間A/D模塊可以工作,這種A/D時鐘要求對RC置1,(ARCS(1:0)=11), 當(dāng)選擇RC時鐘源時,A/D模塊在開始轉(zhuǎn)換之前等待一個指令周期。這種允許執(zhí)行的睡眠指令,可以消除在轉(zhuǎn)換中產(chǎn)生的所有數(shù)字開關(guān)噪聲。

            當(dāng)轉(zhuǎn)換完成時,GO/DONE位將被清0,和轉(zhuǎn)換結(jié)果一塊裝入ADRES寄存器,如果A/D中斷使能,單片機(jī)將從睡眠中喚醒,如果A/D中斷不使能,盡管ADON位仍保持置1,A/D模塊仍將被關(guān)閉。

            如果A/D時鐘源是另一種時針選擇(不是RC),盡管ADIN位仍保持1,睡眠指令將導(dǎo)致目前的轉(zhuǎn)換中斷和A/D模塊被關(guān)閉。關(guān)閉A/D,把A/D模塊放到它的最低電流消耗狀態(tài)。

            單片機(jī)復(fù)位強(qiáng)制所有寄存器復(fù)位到它們的復(fù)位狀態(tài),強(qiáng)制關(guān)閉A/D轉(zhuǎn)換模塊和進(jìn)行的轉(zhuǎn)換。在ADRESH、ADRESL寄存器的值在上電復(fù)位時不變,ADRESH、ADRESL寄存器在上電復(fù)位之后將包含未知數(shù)據(jù)。

            1. 設(shè)計思路

            將RA2引腳作為模擬電壓輸入,模擬量為連接在RA2引腳上的微調(diào)電阻提供,借此可以提供一個連續(xù)變化的模擬電壓。端口D連接8個LED作為數(shù)據(jù)輸出顯示,并設(shè)置一個報警值。

            本程序中將報警值設(shè)為2.5V,經(jīng)A/D轉(zhuǎn)換后對應(yīng)十六進(jìn)制數(shù)值為0x200H,當(dāng)A/D轉(zhuǎn)換的值未達(dá)到警戒值(0x200H)時,點(diǎn)亮8個發(fā)光二極管的低4個,表明系統(tǒng)運(yùn)行正常;當(dāng)A/D轉(zhuǎn)換的值達(dá)到或超過警戒值(0x200H)時,發(fā)出報警信號,點(diǎn)亮與D口相連的LED顯示報警信息。

            2. 電路設(shè)計

            單片機(jī)與LED的接口原理如圖3所示。

            圖3 PIC16F877與LED的接線


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();