找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4370|回复: 6
收起左侧

51单片机驱动12位AD MCP3204,含源码,Proteus仿真原理图,1602显示

[复制链接]
ID:201090 发表于 2019-6-15 23:03 | 显示全部楼层 |阅读模式
一个51单片机驱动的12位精度A/DMCP3204,网上资料比较少,自己编写的源码,Proteus中有原理图,能正确仿真出双路采集信号。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
QQ截图20190615230140.png

单片机源程序如下:
  1. #include<myc51.h>
  2. #include<1602.h>


  3. sbit clk = P1^4;   // clock signel
  4. sbit dout = P1^5;  // data get out
  5. sbit din = P1^6 ;   // data put in
  6. sbit cs = P1^7;    // cs selt


  7. void delay50ms(uint t)
  8. {
  9.                 uint j;
  10.                 for(t;t>0;t--)
  11.                 for(j=6245;j>0;j--);
  12. }

  13. sint getdata(uchar ch)   //ch=0xe0 选择通道CH0; ch=0xe8 选择通道CH1;ch=0xf0 选择通道CH2;ch=0xf8 选择通道CH3;
  14. {
  15.     sint  hd=0x00,ld=0x00,dat=0x00,t;
  16.        
  17.     //uchar ch=0xF8; //1 11 0 ;0 000

  18.     cs=1;
  19.     cs=0;
  20.    
  21.     clk=1;
  22.     for(t=0;t<6;t++)
  23.     {
  24.                         clk=0;//delay1us;
  25.                         if((0x80&ch)==0x80)
  26.                                         din=1;//dIN=1
  27.                         else
  28.                                         din=0;//dIN=0
  29.                                
  30.                         ch<<=1;
  31.                         clk=1;//delay1us;
  32.     }

  33.                 for(t=0;t<13;t++)
  34.     {
  35.                                 clk=0;
  36.                                 hd<<=1;
  37.                                 clk=1;
  38.         delay1us;delay1us;delay1us;
  39.                                 hd|=dout;   
  40.                           delay1us;delay1us;delay1us;
  41.     }
  42.     cs=1;  
  43.     return hd;   
  44. }

  45. void main()
  46. {
  47.    sint data_wendu,data_yanwu;     
  48.          float outdat_wendu,outdat_yanwu;
  49.        
  50.       
  51.    start1602();
  52.    delay50ms(10);
  53.    
  54.    goto_xy(0,0);
  55.          printf("w:");
  56.          goto_xy(0,1);
  57.    printf("Y:");
  58.    delay50ms(10);

  59.    while(1)
  60.    {
  61. //    delay50ms(10);         
  62. //    delay50ms(10);   
  63.                  
  64.                 data_wendu=getdata(0xe0);  //ch=0xe0 选择通道CH0; ch=0xe8 选择通道CH1;ch=0xf0 选择通道CH2;ch=0xf8 选择通道CH3;
  65.     outdat_wendu=((float)data_wendu/4095)*5;
  66.                  
  67.     delay50ms(1);               
  68.                  
  69.     data_yanwu=getdata(0xe8);  
  70.     outdat_yanwu=((float)data_yanwu/4095)*5;  
  71.     delay50ms(1);                 

  72.     goto_xy(4,0);   
  73.     printd(data_wendu);      
  74.                 goto_xy(10,0);
  75.                 printdf(outdat_wendu);
  76.                 goto_xy(4,1);   
  77.     printd(data_yanwu);      
  78.                 goto_xy(10,1);
  79.                 printdf(outdat_yanwu);
  80.    }

  81. }
复制代码

所有资料51hei提供下载:
MCP3204.rar (71.58 KB, 下载次数: 172)
回复

使用道具 举报

ID:377266 发表于 2019-9-24 13:19 | 显示全部楼层
谢谢大佬的分享
回复

使用道具 举报

ID:700840 发表于 2020-3-1 20:20 | 显示全部楼层
谢谢楼主分享!!!
回复

使用道具 举报

ID:495828 发表于 2020-3-12 16:29 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:100749 发表于 2020-3-22 09:30 来自手机 | 显示全部楼层
想用单片机做可调电源,正在学习。
回复

使用道具 举报

ID:713395 发表于 2020-3-22 15:01 | 显示全部楼层
实现不了,程序错误!
回复

使用道具 举报

ID:100749 发表于 2020-4-13 13:59 来自手机 | 显示全部楼层
做成功了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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