標(biāo)題: STC8單片機(jī)+AD7606 16BIT并口正負(fù)電壓顯示 [打印本頁(yè)]

作者: pengwu1207    時(shí)間: 2018-5-30 15:33
標(biāo)題: STC8單片機(jī)+AD7606 16BIT并口正負(fù)電壓顯示
本帖最后由 pengwu1207 于 2018-6-4 09:10 編輯

STC8+AD7606并口16BIT顯示正負(fù)電壓 不知道怎么上傳視頻,下面是我的微博,里面有視頻,源程序附上  

https://weibo.com/2419242361/profile?topnav=1&wvr=6&is_all=1




AD7606.C內(nèi)容:

  1. #include "AD7606.h"

  2.    U16 ADC7606[8];

  3. void AD7607Init(){
  4.             AD7606_IOVCC=1;
  5. AD7606_RST=0;
  6. AD7606_RST=1;
  7. Delay1ms(200);
  8. AD7606_RST=0;

  9. P6M1=0XFF;P6M0=0X00;  //P6輸入
  10. P1M1=0XFF;P1M0=0X00;  //P1輸入
  11. P0M1=0X80;P0M1=0X07;//P0.7輸入,其余輸出
  12. P4M1=0X00;P0M1=0Xff;
  13. AD7606_OS2=AD7606_OS1=1;AD7606_OS0=0;
  14. AD7606_RAGE      =1;//        量程范圍選擇。0表示正負(fù)5V, 1表示正負(fù)10V.
  15. AD7606_CVA=AD7606_CVB=1;
  16. AD7606_CS=AD7606_RD=1;

  17. }


  18. void ReadAD7606_X()          //16進(jìn)制碼
  19. {
  20.       U8 k=0x2c;//校準(zhǔn)參數(shù)
  21.   U8 i,j;
  22.   U8 DatH,DatL;
  23.   U32 ADC[8];
  24. AD7606_CVA=AD7606_CVB=0;
  25. Delay1ms(1);
  26. AD7606_CVA=AD7606_CVB=1;
  27. while(AD7606_BUSY==0);
  28.            AD7606_CS=AD7606_RD=0;
  29.          Delay1ms(1);
  30. AD7606_CS=AD7606_RD=1;
  31. for(i=0;i<8;i++)  ADC=0;
  32. for(j=0;j<5;j++)
  33. {
  34.     for(i=0;i<8;i++)
  35. {
  36.        AD7606_CS=AD7606_RD=0;
  37.    Delay1ms(1);
  38.    AD7606_CS=AD7606_RD=1;
  39.    DatH = P6;
  40.    DatL = P1;
  41.    ADC7606 = (U16)DatH<<8|DatL;
  42.   ADC+=ADC7606;
  43. }
  44. }
  45. for(i=0;i<8;i++) ADC7606=ADC/5+k;      
  46. }

  47. void ReadAD7606_mV()//轉(zhuǎn)換電壓
  48. {
  49.            U32 V;
  50. U8 i;
  51. for(i=0;i<8;i++)
  52. {
  53.   if(ADC7606>>15)
  54.            {      
  55.            Display_ASCII("-",FONT_H*i+1,1+FONT_W*8,GREEN,BLACK);          //顯示負(fù)符號(hào)
  56. V=~ADC7606;         
  57.            }else{
  58.            Display_ASCII(" ",FONT_H*i+1,1+FONT_W*8,GREEN,BLACK);          //顯示空格表示正
  59. V=ADC7606;
  60.     }
  61.     V=V*1000*10/32768;          //mV輸出
  62. ADC7606=V;
  63. }

  64. }

  65. AD7606.H內(nèi)容:

  66. #ifndef __AD7606__H__
  67. #define __AD7606__H__

  68. #include <STC/STC8.h>
  69. #include<absacc.h>
  70. #include<intrins.h>
  71. #include<string.h>
  72. #include "def.h"
  73. #include "TFT.h"

  74. sbit AD7606_OS0       =P0^4;//
  75. sbit AD7606_OS1       =P0^5;//
  76. sbit AD7606_OS2       =P0^6;//
  77. sbit AD7606_BUSY      =P0^7;
  78. sbit AD7606_RAGE      =P4^0;//        量程范圍選擇。0表示正負(fù)5V, 1表示正負(fù)10V.
  79. sbit AD7606_CVB       =P4^1;//CVA,CVB : 啟動(dòng)AD轉(zhuǎn)換的控制信號(hào)。CVA決定1-4通道,CVB決定5-8通道。
  80. sbit AD7606_CVA       =P4^2;
  81. sbit AD7606_RD        =P4^3;
  82. sbit AD7606_RST       =P4^4;
  83. sbit AD7606_CS        =P4^5;
  84. sbit AD7606_FRST      =P4^6; //NC
  85. sbit AD7606_IOVCC     =P4^7;

  86. void AD7607Init();
  87. void ReadAD7606_X();
  88. void ReadAD7606_mV();
  89. #Endif#

  90. void main()
  91. {
  92. //U32 i;
  93. U8 j;
  94.     lcd_initial();
  95.     dsp_single_colour(BLACK);//黑色
  96. AD7607Init();
  97.    
  98. while(1)                        
  99. {
  100. ReadAD7606_X();
  101. for(j=0;j<8;j++)
  102.     {
  103. disDecX_4(ADC7606[j],1,FONT_H*j+1,RED,BLACK);
  104. }
  105. ReadAD7606_mV();
  106. for(j=0;j<8;j++)
  107.     {
  108. disDec_5(ADC7606[j],FONT_W*9+1,FONT_H*j+1,GREEN,BLACK);
  109. Display_ASCII("mV",FONT_H*j+1,1+FONT_W*13,BLUE,BLACK);         
  110. }
  111.            
  112.     }

  113. }
復(fù)制代碼


作者: 1113634577    時(shí)間: 2018-10-21 16:25
微博也要密碼?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1