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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機多通道AD采集源程序(8路) STC15w系列

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:351872 發(fā)表于 2019-7-16 12:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
12864為串行接法。AD0~AD4接的5V電源。
AD5~AD7接的GND。

STC15W408AS 自帶8路10位AD  
程序只使用了高八位。量程為255.
程序里面含10位AD采集。1024。
代碼已注釋。
新手上路。有錯誤還請斧正。

制作出來的實物圖如下:


單片機源程序如下:
  1. #include <STC15.h>
  2. #include"intrins.h"
  3. #define uchar unsigned char;
  4. #define uint unsigned int;

  5. uchar a1,b1; //接收高八位,低八位
  6. uint ad1;    //用于接收10位AD數(shù)據(jù)

  7. #define  ADC_POWER 0X80; // 上電狀態(tài)
  8. #define  ADC_FLAG  0x10; // FLAG=1,結(jié)束轉(zhuǎn)換。ADC_FLAG:A/D轉(zhuǎn)換結(jié)束標(biāo)志位
  9. #define  ADC_START 0X08; // START=1,開始轉(zhuǎn)換。
  10. #define  ADC_SPEEDLL 0X00; //540個時鐘
  11. #define  ADC_SPEEDL  0X20; //360個時鐘
  12. #define  ADC_SPEEDH  0X40; //180個時鐘
  13. #define  ADC_SPEEDHH  0X60;//90個時鐘
  14. /*12864顯示*/
  15. unsigned char tab[]= {"AD1:    AD2:    "};
  16. unsigned char tab1[]={"AD3:    AD4:    "};
  17. unsigned char tab2[]={"AD5:    AD6:    "};
  18. unsigned char tab3[]={"AD7:    AD8:    "};
  19. uchar num[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0~9
  20. sbit rw=P2^6;                //12864 input
  21. sbit e=P2^7;                 //12864 clock
  22. uint ADC_data;               //高八位數(shù)據(jù)
  23. void chushihua();            //12864初始化
  24. void zhiling(unsigned char zhiling);
  25. void shuru(unsigned char n);
  26. void shuju(unsigned char shuju);
  27. void guding();
  28. void ADC_init();
  29. uchar ADC_P(unsigned char ch);
  30. void delay(unsigned char x)
  31. {
  32.         while(x--);
  33. }
  34. void main()
  35. {
  36.         TMOD=0X11;
  37.         TH0=0X3C;
  38.         TL0=0XB0;
  39.         EA=1;
  40.         ET0=1;
  41.         TR0=1;
  42.         chushihua();//12864初始化程序
  43.         ADC_init(); //ADC初始化程序
  44.        
  45.         while(1)
  46.         {

  47.                 ADC_data=ADC_P(0);//ad通道1
  48.           delay(5);
  49.                 tab[4]=num[ADC_data/1000];
  50.                 delay(5);
  51.                 tab[5]=num[ADC_data%1000/100];
  52.                 delay(5);
  53.                 tab[6]=num[ADC_data%100/10];
  54.                 delay(5);
  55.                 tab[7]=num[ADC_data%10];
  56.                
  57.                 ADC_data=ADC_P(1);//ad通道2
  58.           delay(5);
  59.                 tab[12]=num[ADC_data/1000];
  60.                 delay(5);
  61.                 tab[13]=num[ADC_data%1000/100];
  62.                 delay(5);
  63.                 tab[14]=num[ADC_data%100/10];
  64.                 delay(5);
  65.                 tab[15]=num[ADC_data%10];
  66.        
  67.                 ADC_data=ADC_P(2);//ad通道3
  68.           delay(5);
  69.                 tab1[4]=num[ADC_data/1000];
  70.                 delay(5);
  71.                 tab1[5]=num[ADC_data%1000/100];
  72.                 delay(5);
  73.                 tab1[6]=num[ADC_data%100/10];
  74.                 delay(5);
  75.                 tab1[7]=num[ADC_data%10];
  76.                
  77.                 ADC_data=ADC_P(3);//ad通道4
  78.           delay(5);
  79.                 tab1[12]=num[ADC_data/1000];
  80.                 delay(5);
  81.                 tab1[13]=num[ADC_data%1000/100];
  82.                 delay(5);
  83.                 tab1[14]=num[ADC_data%100/10];
  84.                 delay(5);
  85.                 tab1[15]=num[ADC_data%10];
  86.                
  87.                 ADC_data=ADC_P(4);//ad通道5
  88.           delay(5);
  89.                 tab2[4]=num[ADC_data/1000];
  90.                 delay(5);
  91.                 tab2[5]=num[ADC_data%1000/100];
  92.                 delay(5);
  93.                 tab2[6]=num[ADC_data%100/10];
  94.                 delay(5);
  95.                 tab2[7]=num[ADC_data%10];
  96.                
  97.                 ADC_data=ADC_P(5);//ad通道6
  98.           delay(5);
  99.                 tab2[12]=num[ADC_data/1000];
  100.                 delay(5);
  101.                 tab2[13]=num[ADC_data%1000/100];
  102.                 delay(5);
  103.                 tab2[14]=num[ADC_data%100/10];
  104.                 delay(5);
  105.                 tab2[15]=num[ADC_data%10];
  106.                
  107.                 ADC_data=ADC_P(6);//ad通道7
  108.           delay(5);
  109.                 tab3[4]=num[ADC_data%1000/100];
  110.                 delay(5);
  111.                 tab3[5]=num[ADC_data%1000/100];
  112.                 delay(5);
  113.                 tab3[6]=num[ADC_data%100/10];
  114.                 delay(5);
  115.                 tab3[7]=num[ADC_data%10];
  116.                
  117.                 ADC_data=ADC_P(7);//ad通道8
  118.           delay(5);
  119.                 tab3[12]=num[ADC_data/1000];
  120.                 delay(5);
  121.                 tab3[13]=num[ADC_data%1000/100];
  122.                 delay(5);
  123.                 tab3[14]=num[ADC_data%100/10];
  124.                 delay(5);
  125.                 tab3[15]=num[ADC_data%10];
  126.                 guding();
  127.         }
  128. }
  129. /****************
  130. *以下關(guān)于ADC
  131. *****************/
  132. void ADC_init() //adc初始化
  133. {
  134.         P1ASF=0XFF;     //設(shè)置P1為ADC采集
  135.         ADC_RES=0;                        //清除高八位結(jié)果寄存器
  136.         ADC_CONTR=0XE0; //ADC上電  A/D轉(zhuǎn)換周期90個時鐘周期
  137.         delay(5);
  138. }

  139. uchar ADC_P(unsigned char ch) //ADC處理函數(shù)
  140. {
  141.         ADC_CONTR&=~ADC_FLAG;  //關(guān)閉標(biāo)志位
  142.         ADC_CONTR=0X80|0X00|0X08|ch;
  143.         _nop_();_nop_();_nop_();_nop_();
  144.         while(!(ADC_CONTR&0x10));//等待ADC轉(zhuǎn)換完成

  145.         return ADC_RES;  //返回ADC結(jié)果  8位AD
  146.        
  147. /*   ADC_CONTR &= !ADC_FLAG;         //清除ADC中斷標(biāo)志
  148.           delay(30);
  149.     ADC_CONTR=0x80|0x00|0x08|0x00;
  150.           a1=ADC_RES;  //高8位
  151.           b1=ADC_RESL; //低8位
  152.           delay(60);
  153. //        ADC_data=(a1<<2)|(b1>>6); //10AD  */
  154. }
  155. /*************************
  156. *
  157. *
  158. *以下12864相關(guān)子函數(shù)
  159. *
  160. *************************/
  161. void shuru(unsigned char n)
  162. {
  163.         unsigned char a;
  164.         for(a=0;a<8;a++)
  165.         {
  166.                 e=0;
  167.                 if((n<<a)&(0x80)) //串行輸入
  168.                 {
  169.                         rw=1;
  170.                 }                                            
  171.                 else
  172.                 {
  173.                         rw=0;
  174.                 }
  175.                 e=1;        //移位時鐘
  176.                 e=0;
  177.         }
  178. }
  179. void zhiling(unsigned char zhiling)         //寫指令
  180. {
  181.         shuru(0xf8);
  182.         shuru(zhiling&(0xf0));
  183.         shuru((zhiling<<4)&(0xf0));
  184.         delay(2);
  185. }
  186. void shuju(unsigned char shuju)                  //寫數(shù)據(jù)
  187. {
  188.         shuru(0xfa);
  189.         shuru(shuju&(0xf0));
  190.         shuru((shuju<<4)&(0xf0));
  191.         delay(2);
  192. }
  193. void chushihua()
  194. {
  195.         zhiling(0x30);
  196.         delay(1);
  197.         zhiling(0x0c);        //打開顯示,無光標(biāo),光標(biāo)不反光
  198.         zhiling(0x01);        //清屏
  199.         delay(1);
  200. }
  201. void guding()
  202. {
  203.         unsigned char i;
  204.         zhiling(0x80);
  205.         for(i=0;i<16;i++)
  206.         {
  207.                 shuju(tab[i]);
  208.                 delay(3);
  209.         }
  210.         zhiling(0x90);
  211.         for(i=0;i<16;i++)
  212.         {
  213.                 shuju(tab1[i]);
  214.                 delay(3);
  215.         }
  216.         zhiling(0x88);
  217.         for(i=0;i<16;i++)
  218.         {
  219.                 shuju(tab2[i]);
  220.                 delay(3);
  221.         }
  222.         zhiling(0x98);
  223.         for(i=0;i<16;i++)
  224.         {
  225.                 shuju(tab3[i]);
  226.                 delay(3);
  227.         }
  228. }

  229. void time0() interrupt 1
  230. {
  231.         TH0=0X3C;
  232.         TL0=0XB0;
  233.        
  234. }
復(fù)制代碼

所有資料51hei提供下載:
多通道AD采集.zip (49.63 KB, 下載次數(shù): 198)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:813923 發(fā)表于 2020-8-13 16:57 | 只看該作者
有沒有proteus仿真電路鴨?
回復(fù)

使用道具 舉報

板凳
ID:646328 發(fā)表于 2020-11-16 15:52 | 只看該作者
uchar ADC_P(unsigned char ch) //ADC處理函數(shù)
{
        ADC_CONTR&=~ADC_FLAG;  //關(guān)閉標(biāo)志位
        ADC_CONTR=0X80|0X00|0X08|ch;
        _nop_();_nop_();_nop_();_nop_();
        while(!(ADC_CONTR&0x10));//等待ADC轉(zhuǎn)換完成

        return ADC_RES;  //返回ADC結(jié)果  8位AD
      
/*   ADC_CONTR &= !ADC_FLAG;         //清除ADC中斷標(biāo)志
          delay(30);
    ADC_CONTR=0x80|0x00|0x08|0x00;
          a1=ADC_RES;  //高8位
          b1=ADC_RESL; //低8位
          delay(60);
//        ADC_data=(a1<<2)|(b1>>6); //10AD  */

}如果使用10位ad,不應(yīng)該是
/*   ADC_CONTR &= !ADC_FLAG;         //清除ADC中斷標(biāo)志
          delay(30);
    ADC_CONTR=0x80|0x00|0x08|0x00;
          a1=ADC_RES;  //高8位
          b1=ADC_RESL; //低8位
          delay(60);
//        ADC_data=(b1<<2)|(a1>>6); //10AD  */
,詳情請看圖片

51hei截圖_20201116155222.png (38.13 KB, 下載次數(shù): 116)

51hei截圖_20201116155222.png

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:996527 發(fā)表于 2022-3-25 22:28 | 只看該作者
good,程序?qū)W習(xí)下,請問有沒有具體電路連接呢
回復(fù)

使用道具 舉報

5#
ID:361216 發(fā)表于 2022-5-24 15:16 | 只看該作者
不錯的資料,正是我想找了東西。
回復(fù)

使用道具 舉報

6#
ID:97678 發(fā)表于 2023-4-18 12:48 | 只看該作者
10位 ADC 采集部分程序有問題
做如下修改編譯就可以通過, 這樣修改可以嗎?
/****************
*以下關(guān)于ADC
*****************/
void ADC_init() //adc初始化
{
        P1ASF=0XFF;     //設(shè)置P1為ADC采集
        ADC_RES=0;        //清除高八位結(jié)果寄存器
        ADC_CONTR=0XE0; //ADC上電  A/D轉(zhuǎn)換周期90個時鐘周期
        delay(5);
}

uchar ADC_P(unsigned char ch) //ADC處理函數(shù)
{
ADC_CONTR &= !ADC_FLAG;         //清除ADC中斷標(biāo)志
          delay(30);
    ADC_CONTR=0x80|0x00|0x08|ch;
          a1=ADC_RES;  //高8位
          b1=ADC_RESL; //低8位
          delay(60);
        ADC_data=(a1<<2)|(b1>>6); //10AD  */

/*        ADC_CONTR&=~ADC_FLAG;  //關(guān)閉標(biāo)志位
        ADC_CONTR=0X80|0X00|0X08|ch;
        _nop_();_nop_();_nop_();_nop_();  */
       
/*   ADC_CONTR &= !ADC_FLAG;         //清除ADC中斷標(biāo)志
          delay(30);
    ADC_CONTR=0x80|0x00|0x08|0x00;
          a1=ADC_RES;  //高8位
          b1=ADC_RESL; //低8位
          delay(60);
//        ADC_data=(a1<<2)|(b1>>6); //10AD  */

              while(!(ADC_CONTR&0x10));//等待ADC轉(zhuǎn)換完成

        return ADC_RES;  //返回ADC結(jié)果  8位AD
}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费黄色a视频 | 天天插天天干 | 一级毛片免费完整视频 | 国产成人精品一区二 | 最新免费视频 | 日韩精品中文字幕一区二区三区 | 91久久久久久 | 亚州综合在线 | 日韩精品一区二区三区视频播放 | 三级黄视频在线观看 | 成人一区av | 亚洲bt 欧美bt 日本bt | 久久久国产一区二区三区 | 国产精品久久久久久久久久 | 国产精品视频免费播放 | 99久久久久久99国产精品免 | 美女福利视频网站 | 久在线观看 | 日日人人| 激情视频中文字幕 | 国产精品爱久久久久久久 | 亚洲成人一区二区 | 中文在线播放 | 国产一区久久精品 | 国产精品99久久久久久宅男 | 第四色影音先锋 | 先锋资源在线 | 精品九九在线 | 日韩久久久久久 | 四虎在线播放 | 欧美国产视频 | 国产精品久久亚洲7777 | 黄网站在线播放 | 精产嫩模国品一二三区 | 亚洲国产精品99久久久久久久久 | 国产91丝袜在线播放 | 免费一级毛片 | 亚洲一级毛片 | 一区二区免费高清视频 | 91xxx在线观看 | 99久久婷婷国产综合精品首页 |