找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5389|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)驅(qū)動(dòng)12位AD MCP3204,含源碼,Proteus仿真原理圖,1602顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一個(gè)51單片機(jī)驅(qū)動(dòng)的12位精度A/DMCP3204,網(wǎng)上資料比較少,自己編寫的源碼,Proteus中有原理圖,能正確仿真出雙路采集信號。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  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. }
復(fù)制代碼

所有資料51hei提供下載:
MCP3204.rar (71.58 KB, 下載次數(shù): 173)


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

使用道具 舉報(bào)

沙發(fā)
ID:377266 發(fā)表于 2019-9-24 13:19 | 只看該作者
謝謝大佬的分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:700840 發(fā)表于 2020-3-1 20:20 | 只看該作者
謝謝樓主分享!!!
回復(fù)

使用道具 舉報(bào)

地板
ID:495828 發(fā)表于 2020-3-12 16:29 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:100749 發(fā)表于 2020-3-22 09:30 來自手機(jī) | 只看該作者
想用單片機(jī)做可調(diào)電源,正在學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

6#
ID:713395 發(fā)表于 2020-3-22 15:01 | 只看該作者
實(shí)現(xiàn)不了,程序錯(cuò)誤!
回復(fù)

使用道具 舉報(bào)

7#
ID:100749 發(fā)表于 2020-4-13 13:59 來自手機(jī) | 只看該作者
做成功了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表