找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3886|回复: 1
收起左侧

STC8单片机+AD7606 16BIT并口正负电压显示

[复制链接]
ID:270677 发表于 2018-5-30 15:33 | 显示全部楼层 |阅读模式
本帖最后由 pengwu1207 于 2018-6-4 09:10 编辑

STC8+AD7606并口16BIT显示正负电压 不知道怎么上传视频,下面是我的微博,里面有视频,源程序附上  

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




AD7606.C内容:

  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表示正负5V, 1表示正负10V.
  15. AD7606_CVA=AD7606_CVB=1;
  16. AD7606_CS=AD7606_RD=1;

  17. }


  18. void ReadAD7606_X()          //16进制码
  19. {
  20.       U8 k=0x2c;//校准参数
  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()//转换电压
  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);          //显示负符号
  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内容:

  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表示正负5V, 1表示正负10V.
  79. sbit AD7606_CVB       =P4^1;//CVA,CVB : 启动AD转换的控制信号。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. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:371527 发表于 2018-10-21 16:25 | 显示全部楼层
微博也要密码?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表