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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ADC0832模數(shù)轉(zhuǎn)換采集電壓上位機和下位機單片機程序源碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3721 發(fā)表于 2016-6-17 01:15 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式




ADC0832電壓采集上位機程序,51黑附件中可下載vc++源碼


下面是單片機做的下位機程序:
  1. #include<reg52.h>
  2. #include "intrins.h"
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit ADCS =P2^3;  //ADC0832 chip seclect
  6. sbit ADDI =P2^2;  //ADC0832 k in
  7. sbit ADDO =P2^1;  //ADC0832 k out
  8. sbit ADCLK =P2^0;  //ADC0832 clock signal

  9. sbit cs=P2^2;
  10. sbit wr=P2^3;
  11. unsigned char dispbitcode[8]={0xf7,0xfb,0xfd};  //位掃描
  12. unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  13. unsigned char dispbuf[3];
  14. unsigned char table[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  15. uint temp,adc=0;
  16. uchar getdata; //獲取ADC轉(zhuǎn)換回來的值
  17. uchar flag,a;

  18. void delayms(void)  //12mhz delay 1.01ms
  19. {
  20.    unsigned char x,y;   
  21.    x=10;
  22.    while(x--)
  23.   {
  24.        y=4;
  25.        while(y--);
  26.     }
  27. }

  28. void display(void)  //數(shù)碼管顯示函數(shù)
  29. {
  30.   char k;
  31. for(k=0;k<3;k++)
  32.   {

  33.   P1 = dispbitcode[k];
  34.   
  35.   P0 = dispcode[dispbuf[k]];
  36.    
  37.     delayms();
  38.   if(k==0)          //加上數(shù)碼管的dp小數(shù)點
  39.           P0&=0x7f;
  40.   delayms();
  41.            P1=0xff;
  42.   
  43.   }
  44. }
  45. //采集并返回
  46. unsigned int Adc0832(unsigned char channel)     //AD轉(zhuǎn)換,返回結果
  47. {
  48.     uchar i=0;
  49.     uchar j;
  50.     uint dat=0;
  51.     uchar ndat=0;

  52.     if(channel==0)channel=2;
  53.     if(channel==1)channel=3;
  54.     ADDI=1;
  55.     _nop_();
  56.     _nop_();
  57.     ADCS=0;//拉低CS端
  58.     _nop_();
  59.     _nop_();
  60.     ADCLK=1;//拉高CLK端
  61.     _nop_();
  62.     _nop_();
  63.     ADCLK=0;//拉低CLK端,形成下降沿1
  64.     _nop_();
  65.     _nop_();
  66.     ADCLK=1;//拉高CLK端
  67.     ADDI=channel&0x1;
  68.     _nop_();
  69.     _nop_();
  70.     ADCLK=0;//拉低CLK端,形成下降沿2
  71.     _nop_();
  72.     _nop_();
  73.     ADCLK=1;//拉高CLK端
  74.     ADDI=(channel>>1)&0x1;
  75.     _nop_();
  76.     _nop_();
  77.     ADCLK=0;//拉低CLK端,形成下降沿3
  78.     ADDI=1;//控制命令結束
  79.     _nop_();
  80.     _nop_();
  81.     dat=0;
  82.     for(i=0;i<8;i++)
  83.     {
  84.         dat|=ADDO;//收數(shù)據(jù)
  85.         ADCLK=1;
  86.         _nop_();
  87.         _nop_();
  88.         ADCLK=0;//形成一次時鐘脈沖
  89.         _nop_();
  90.         _nop_();
  91.         dat<<=1;
  92.         if(i==7)dat|=ADDO;
  93.     }  
  94.     for(i=0;i<8;i++)
  95.     {
  96.         j=0;
  97.         j=j|ADDO;//收數(shù)據(jù)
  98.         ADCLK=1;
  99.         _nop_();
  100.         _nop_();
  101.         ADCLK=0;//形成一次時鐘脈沖
  102.         _nop_();
  103.         _nop_();
  104.         j=j<<7;
  105.         ndat=ndat|j;
  106.         if(i<7)ndat>>=1;
  107.     }
  108.     ADCS=1;//拉低CS端
  109.     ADCLK=0;//拉低CLK端
  110.     ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)
  111.     dat<<=8;
  112.     dat|=ndat;
  113.     return(dat);            //return ad k
  114. }


  115. void main()
  116. { P0=0XFF;
  117.   TMOD=0x20;
  118. TH1=0xfd;
  119. TL1=0xfd;
  120. TR1=1;
  121. REN=1;
  122. SM0=0;
  123.   SM1=1;
  124.   EA=1;
  125.   ES=1;
  126.   while(1)
  127.   {           if(flag==1)
  128.      {        
  129.             ES=0;
  130.             flag=0;
  131.             SBUF=getdata;
  132.    while(!TI);
  133.            TI=0;
  134.         ES=1;               
  135.                

  136.          
  137.          }
  138.            getdata=Adc0832(1);
  139.   temp=getdata*1.0/255*500;  //電壓值轉(zhuǎn)換,5V做為參考電壓,分成256份。
  140.   dispbuf[2]=temp%10;         //個位
  141.   dispbuf[1]=temp/10%10; //十位
  142.   dispbuf[0]=temp/100; //百位

  143.          
  144.       display();
  145.   
  146.   }        

  147. }
  148. void ckzd() interrupt 4
  149. {        
  150.          RI=0;
  151.          
  152.          a=SBUF;



  153.    switch(a)
  154.    {
  155.                    case 'a':

  156.                      flag=1; break;

  157.                 case 'b':

  158.                   P0=adc; break;

  159.                 case 'c':
  160.         
  161.                   P0=adc; break;

  162.                 default:
  163.         P1=0xFF;
  164.         break;
  165.     }
  166.         
  167. }
復制代碼




ADC0832模數(shù)轉(zhuǎn)換測試程序,帶上位機源程序和下位機源程序,將adc0832采集的電壓值送給上位機顯示,本人親測

上位機和下位機ADC0832upanddown.rar (5.72 MB, 下載次數(shù): 139)


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

使用道具 舉報

沙發(fā)
ID:273849 發(fā)表于 2018-5-14 19:44 | 只看該作者
是用什么軟件做的啊
回復

使用道具 舉報

板凳
ID:65956 發(fā)表于 2018-9-27 13:21 | 只看該作者
才0-5V,上位機也才那樣,功能太簡單了,測量范圍也太小了,還有ADC才8位,精度太差
回復

使用道具 舉報

地板
ID:186637 發(fā)表于 2018-10-19 21:55 | 只看該作者
謝謝分享!學習學習!
回復

使用道具 舉報

5#
ID:478255 發(fā)表于 2019-3-22 10:02 | 只看該作者
這個_nop_是什么意思?延時的意思嗎
回復

使用道具 舉報

6#
ID:63090 發(fā)表于 2020-5-10 12:28 | 只看該作者
挺好O,感謝分享
回復

使用道具 舉報

7#
ID:860602 發(fā)表于 2021-1-8 22:37 | 只看該作者

這個_nop_是什么意思?延時的意思嗎  

是的 ,相當于匯編的nop指令
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲a毛片 | 国产成人精品综合 | 高清国产一区二区 | 国产精品视频在线播放 | 色综合久 | 成人影院av | 国产日韩精品在线 | 欧美日韩精品专区 | 日韩欧美二区 | 国产精品3区 | 色一级| 国产成人99av超碰超爽 | 亚洲成人av一区二区 | 91影院| 超碰美女在线 | 国产精品久久久久久久模特 | 成人在线一级片 | 亚洲狠狠爱一区二区三区 | 国产高清在线精品 | 这里精品 | www.男人天堂.com | 国产黄色在线观看 | 久久久久99 | 欧美日韩三级视频 | 国产精品毛片无码 | 国产精品一区二区在线免费观看 | 久久久精品一区二区 | 欧美视频在线看 | 国产成人久久精品 | 国产美女黄色 | 国产精品久久久久久久久久久久久 | 日韩在线 | 精品乱码一区二区三四区 | 国外成人在线视频网站 | 久久精品免费 | 亚洲成人一区 | 色综合99| 日本精品一区二区三区在线观看视频 | 日本三级电影免费观看 | 亚洲日本中文 | 亚洲精品欧美 |