天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

QLdsPIC3]AD轉換[C30+dsPIC30F6014A]

更新時間: 2019-01-05
閱讀量:656

//熟悉AD轉換模塊的使用
//軟件規劃
// 3路AD轉換結果送D口LED顯示
// 只顯示AD轉換結果的低8位
// 4次轉換結果求平均值
// 由T3按10MS時間間隔觸發采樣并轉換
// RA12,RA13,RA14決定顯示3路中哪一路送顯示(RA12 - RB4 RA13 - RB5 RA14 - RB6)
//硬件規劃
// 撥碼開關S1置ON
// 撥碼開關S2第6,7,8開
// 撥碼開關S3置ON

#include             //dsPIC30F6014標準頭文件

  _FOSC(CSW_FSCM_OFF & XT_PLL4);  //4倍頻晶振,Failsafe 時鐘關閉
  _FWDT(WDT_OFF);                 //關閉看門狗定時器
  _FBORPOR(PBOR_OFF & MCLR_EN);   //掉電復位禁止,MCLR復位使能。
  _FGS(CODE_PROT_OFF);            //代碼保護禁止

unsigned int adresult[]={1,2,3};

void init();
void initT3();
void initad();
void adchange();
void display();

void init()
{
   TRISB=0x0070;                  //RB4,B5,B6設置為輸入(AD輸入口),其他輸出
   TRISA=0X7000;                  //RA12,RA13,RA14置為輸入,其他輸出
   TRISD=0XFF00;                  //RD口低8位輸出,高8位輸入
}

void initT3()
{
   T1CON=0;                       //T3做定時器。分頻比1:1
   TMR3=0;                      
   PR3=0X2710;                    //10MS時間
}

void initad()
{
   ADPCFG=0xFF8F;                 //RB4-RB6做AD輸入口,其他位做普通I/O口
   ADCON1=0X0044;                 //采用T3比較結束采樣并開始轉換
   ADCON2=0X042C;                 //掃描輸入,每12個采樣中斷一次(即每個輸入采樣4次求平均數)
   ADCON3=0X000F;                 //Tad=8Tcy
   ADCSSL=0X0070;                 //在引腳AN4,AN5,AN4掃描輸入
   ADCON1bits.ADON=1;             //開啟AD轉換
}

void adchange()
{
 while(!IFS0bits.ADIF);        //等待AD轉換完成
    IFS0bits.ADIF=0;              //清除AD中斷標志位
    adresult[0]=ADCBUF0+ADCBUF3+ADCBUF6+ADCBUF9;   //4次RB4轉換的結果和
    adresult[0]=adresult[0]>>2;                    //平均值
    adresult[1]=ADCBUF1+ADCBUF4+ADCBUF7+ADCBUFA;
    adresult[1]=adresult[1]>>2;
    adresult[2]=ADCBUF2+ADCBUF5+ADCBUF8+ADCBUFB;
    adresult[2]=adresult[2]>>2;
} 

void display()
{  
    PORTD=0X0000;                 //清除所有顯示
 if(!PORTAbits.RA12) PORTD=adresult[0]&0x00ff;   //RA12按下則顯示RB4轉換結果
    if(!PORTAbits.RA13) PORTD=adresult[1]&0x00ff;   //RA13按下則顯示RB5轉換結果
    if(!PORTAbits.RA14) PORTD=adresult[2]&0x00ff;   //RA14按下則顯示RB6轉換結果
}

int main (void)
{
 init();                     //I/O口初試化函數
    initT3();                   //T3初試化函數
    initad();                   //AD轉換初始化函數
    T3CONbits.TON=1;            //開啟T3定時器
    while(1)
    {
       adchange();              //AD轉換函數
       display();               //結果顯示函數
    }
}

联系我们: 和田县| 明光市| 汉中市| 城步| 岑溪市| 乐陵市| 宁德市| 阿图什市| 嘉善县| 湖州市| 沾益县| 桐城市| 忻州市| 汪清县| 将乐县| 阆中市| 郑州市| 玛曲县| 梁平县| 林口县| 永定县| 拜泉县| 资溪县| 东海县| 铜梁县| 布尔津县| 庄河市| 长宁县| 德江县| 宜丰县| 英吉沙县| 织金县| 乌什县| 江西省| 荆门市| 虎林市| 正安县| 丹江口市| 外汇| 镇安县| 西盟|