久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4308|回復: 0
打印 上一主題 下一主題
收起左側

dsPIC30F6015控制AD7715程序源碼 親測可用

[復制鏈接]
跳轉到指定樓層
樓主
ID:313807 發表于 2018-4-22 16:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我寫的dsPIC30F6015控制AD7715程序,親測可用

單片機源程序如下:
  1. #include <p30f6015.h>
  2. _FOSC(CSW_FSCM_OFF & XT_PLL4);
  3. _FWDT(WDT_OFF);
  4. #define uchar unsigned char
  5. #define uint unsigned int  
  6. #define CS_A          LATCbits.LATC13 //RC13輸出
  7. #define DRDY                PORTDbits.RD10 //RD10輸入
  8. uint result;


  9. void delay_ms(uint x) //延時程序 10M晶振  0.1us
  10. {
  11.         uint a,b;
  12.         for(a=x;a>0;a--)
  13.                 for(b=2500;b>0;b--);
  14. }



  15. void Init_PORT(void)
  16. {
  17.         // TRISFbits.TRISF4 =0;  //報警信號輸出  
  18.   //U2MODEbits.UARTEN=0;  //禁止串口
  19.   TRISGbits.TRISG6=0; //  SCK
  20.   TRISGbits.TRISG7=1; //  SDI
  21.   TRISGbits.TRISG8=0; //  SDO
  22.   TRISDbits.TRISD10=1;// DRDY
  23.   TRISCbits.TRISC13=0;// CS_A
  24. }


  25. //--------------------------------------------------------------------------------------------------
  26. // 函數名稱: Init_SPI2()
  27. // 函數功能: 初始化設置SPI2
  28. // 入口參數: 無
  29. // 返回值:無
  30. //--------------------------------------------------------------------------------------------------
  31. void Init_SPI2()
  32. {
  33.         SPI2BUF=0;        //數據寄存器清0
  34.         IFS1bits.SPI2IF=0;//清中斷標志
  35.         IEC1bits.SPI2IE=0;//關閉中斷
  36.         IPC6bits.SPI2IP=2;//中斷優先級為2

  37.   SPI2STATbits.SPIEN=0; //禁止SPI2
  38.   SPI2CONbits.PPRE = 1;//主分頻比16:1
  39.         SPI2CONbits.SPRE = 4;//預分頻比4:1  SCk=10M/(16*4)
  40.   SPI2CONbits.FRMEN = 0; //禁止幀SPI支持
  41.   SPI2CONbits.DISSDO = 0; //使用SDO2引腳
  42.         SPI2CONbits.MODE16 = 0; //8位通訊
  43.   SPI2CONbits.SMP = 0; //中間采樣輸入數據
  44.   SPI2CONbits.CKE = 0; //由空閑轉為工作狀態時輸出數據
  45.   SPI2CONbits.CKP = 1;  //空閑狀態為高電平
  46.   SPI2CONbits.MSTEN = 1; //主模式
  47.   SPI2CONbits.SSEN = 0; //不使用SS2引腳
  48.   
  49.   SPI2STATbits.SPISIDL = 0; //空閑模式下繼續工作
  50.         SPI2STATbits.SPIROV = 0; //未溢出
  51.         SPI2STATbits.SPIEN = 1; //使能SPI2
  52. }


  53. void Init_Uart2()
  54. {         
  55.          U2BRG=10;// set baudrate 56000BPS       
  56.   U2MODE =0x8000 ;//8位數據、無校驗、一個停止位
  57.                 IEC1bits.U2RXIE = 1;
  58.   IPC6bits.U2RXIP = 5;// UART1接收器中斷優先級位       
  59.   IFS1bits.U2RXIF=0;
  60.          IEC1bits.U2TXIE = 0;
  61.          IPC6bits.U2TXIP = 6;
  62.                 U2STAbits.UTXISEL = 0;
  63.                 U2STAbits.UTXBRK  = 0;
  64.                 U2STAbits.UTXBF          = 0;       
  65.                 U2STAbits.URXISEL = 0;
  66.                 U2STAbits.ADDEN          = 0;
  67.                 U2STAbits.UTXEN = 1;
  68. }

  69. /************************************************************
  70. *         函數名稱:UART2_Send()
  71. *        串口2發送子函數
  72. ************************************************************/
  73. void UART2_Send(unsigned char data)
  74. {
  75.     U2TXREG=data;
  76.     while(IFS1bits.U2TXIF==0);
  77.     IFS1bits.U2TXIF=0;
  78. }



  79. //--------------------------------------------------------------------------------------------------
  80. // 函數名稱: AD_write()
  81. // 入口參數: commuCFG通訊寄存器控制字
  82. // 出口參數: 無
  83. // 函數功能: 寫AD7715
  84. //--------------------------------------------------------------------------------------------------
  85. void AD_write(unsigned char data)
  86. {
  87.         unsigned char temp;
  88.   CS_A=0;
  89.   Nop();
  90.   SPI2BUF=data;
  91.   while(IFS1bits.SPI2IF==0);
  92.   IFS1bits.SPI2IF=0;
  93.   temp=SPI2BUF;
  94.   CS_A=1;
  95.   Nop();
  96. }


  97. uint read_from_ad7715()//讀AD7715 二個字節
  98. {
  99.         uchar read_h,read_l;
  100.   uint AD;
  101.   while(DRDY);
  102.         CS_A=0;
  103.   Nop();
  104.   SPI2BUF=0xff;
  105.   while(IFS1bits.SPI2IF==0);
  106.   IFS1bits.SPI2IF=0;
  107.   read_h=SPI2BUF;
  108.   Nop();
  109.   SPI2BUF=0xff;
  110.   while(IFS1bits.SPI2IF==0);
  111.   IFS1bits.SPI2IF=0;
  112.   read_l=SPI2BUF;
  113.   AD=(read_h<<8)+read_l ;
  114.   CS_A=1;
  115.         return (AD);
  116. }




  117. int main(void)
  118. {       
  119.   Power_Management();
  120.   Init_PORT();
  121.   Init_SPI2();
  122.   Init_Uart2();
  123.   AD_write(0x10); //設定寄存器,寫模式  增益為1  
  124.   AD_write(0x6C);        //設置SetReg,單端,60hz 自校驗方式 時鐘2.4576MHz 輸入不加緩沖
  125.   while(1)
  126.   {   
  127.     while(DRDY);  //等待AD7715提供可讀的數據  
  128.     AD_write(0x38);
  129.     Nop();
  130.     result=read_from_ad7715();
  131.     UART2_Send(result>>8);
  132. ……………………

  133. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
dsPIC30f控制AD7715.zip (120.12 KB, 下載次數: 20)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品99在线 | 日韩欧美一区二区三区免费观看 | 午夜资源| 亚洲色视频 | 99福利视频 | 亚洲国产成人在线观看 | 久草热视频 | 黄色毛片免费看 | 午夜影院在线观看 | 亚洲国产精品久久久 | 一区二区精品 | www.色.com| 91精品国产综合久久久久久首页 | 日韩精品成人网 | 56pao在线 | 91高清在线观看 | 国产一区二区三区久久久久久久久 | 国产一区二区三区www | 国产亚洲精品一区二区三区 | 成人看片在线观看 | 国产1区2区3区 | 亚洲综合电影 | 欧美成人精品 | 亚洲高清视频在线观看 | 在线不卡 | 国产精品爱久久久久久久 | 欧美黑人国产人伦爽爽爽 | 在线免费观看a级片 | 国产精品美女久久久久久免费 | 断背山在线观看 | 国产在线网址 | 亚洲色欧美另类 | 影音先锋久久 | 国产成人免费网站 | 亚洲综合首页 | 国产99视频精品免费视频7 | 久久久国产一区二区三区四区小说 | 成年人视频在线免费观看 | 久久亚洲一区二区 | 国产福利在线视频 | 成年人精品视频 |