<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > stc 8位ADC轉換實驗程序

          stc 8位ADC轉換實驗程序

          作者: 時間:2016-11-18 來源:網(wǎng)絡 收藏
          /*********************************************************************************************
          程序名:    8位ADC轉換實驗程序
          編寫時間:  2010年3月24日
          硬件支持:  STC12C2052AD 使用ADC功能 外部晶體12MHz
          接口說明:  
          修改日志:  
            1-
          /*********************************************************************************************
          說明:
          PC串口端設置 [ 4800,8,無,1,無 ]
          將ADC讀出的數(shù)值通過串口以十六進制方式顯示。
          /*********************************************************************************************/
          #include //單片機頭文件
          #include //51基本運算(包括_nop_空函數(shù))
          /*********************************************************************************************
          函數(shù)名:毫秒級CPU延時函數(shù)
          調(diào) 用:DELAY_MS (?);
          參 數(shù):1~65535(參數(shù)不可為0)
          返回值:無
          結 果:占用CPU方式延時與參數(shù)數(shù)值相同的毫秒時間
          備 注:應用于1T單片機時i<600,應用于12T單片機時i<125
          /*********************************************************************************************/
          void DELAY_MS (unsigned int a){
          unsigned int i;
          while( a-- != 0){
          for(i = 0; i < 600; i++);
          }
          }
          /*********************************************************************************************/
          /*********************************************************************************************
          函數(shù)名:UART串口初始化函數(shù)
          調(diào) 用:UART_init();
          參 數(shù):無
          返回值:無
          結 果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產(chǎn)生波特率(占用)
          備 注:振蕩晶體為12MHz,PC串口端設置 [ 4800,8,無,1,無 ]
          /**********************************************************************************************/
          void UART_init (void){
          //EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
          //ES = 1; //允許UART串口的中斷
          TMOD = 0x20; //定時器T/C1工作方式2
          SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
          TH1 = 0xF3; //定時器初值高8位設置
          TL1 = 0xF3; //定時器初值低8位設置
          PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
          TR1 = 1; //定時器啟動
          }
          /**********************************************************************************************/
          /*********************************************************************************************
          函數(shù)名:UART串口發(fā)送函數(shù)
          調(diào) 用:UART_T (?);
          參 數(shù):需要UART串口發(fā)送的數(shù)據(jù)(8位/1字節(jié))
          返回值:無
          結 果:將參數(shù)中的數(shù)據(jù)發(fā)送給UART串口,確認發(fā)送完成后退出
          備 注:
          /**********************************************************************************************/
          void UART_T (unsigned char UART_data){ //定義串口發(fā)送數(shù)據(jù)變量
          SBUF = UART_data; //將接收的數(shù)據(jù)發(fā)送回去
          while(TI == 0); //檢查發(fā)送中斷標志位
          TI = 0; //令發(fā)送中斷標志位為0(軟件清零)
          }
          /**********************************************************************************************/
          /*********************************************************************************************
          函數(shù)名:8位A/D轉換初始化函數(shù)
          調(diào) 用:Read (?);
          參 數(shù):輸入的端口(0000 0XXX 其中XXX是設置輸入端口號,可用十進制0~7表示,0表示P1.0,7表示P1.7)
          返回值:無
          結 果:開啟ADC功能并設置ADC的輸入端口
          備 注:適用于STC12C2052AD系列單片機(必須使用STC12C2052AD.h頭文件)
          /**********************************************************************************************/
          void Read_init (unsigned char CHA){
          unsigned char AD_FIN=0; //存儲A/D轉換標志
          CHA &= 0x07; //選擇ADC的8個接口中的一個(0000 0111 清0高5位)
          ADC_CONTR = 0x40; //ADC轉換的速度(0XX0 0000 其中XX控制速度,請根據(jù)數(shù)據(jù)手冊設置)
          _nop_();
          ADC_CONTR |= CHA; //選擇A/D當前通道
          _nop_();
          ADC_CONTR |= 0x80; //啟動A/D電源
          DELAY_MS(1); //使輸入電壓達到穩(wěn)定(1ms即可)
          }
          /**********************************************************************************************/
          /*********************************************************************************************
          函數(shù)名:8位A/D轉換函數(shù)
          調(diào) 用:? = Read ();
          參 數(shù):無
          返回值:8位的ADC數(shù)據(jù)
          結 果:讀出指定ADC接口的A/D轉換值,并返回數(shù)值
          備 注:適用于STC12C2052AD系列單片機(必須使用STC12C2052AD.h頭文件)
          /**********************************************************************************************/
          unsigned char Read (void){
          unsigned char AD_FIN=0; //存儲A/D轉換標志
          ADC_CONTR |= 0x08; //啟動A/D轉換(0000 1000 令ADCS = 1)
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          while (AD_FIN ==0){ //等待A/D轉換結束
          AD_FIN = (ADC_CONTR & 0x10); //0001 0000測試A/D轉換結束否
          }
          ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 關閉A/D轉換,
          return (ADC_DATA); //返回A/D轉換結果(8位)
          }
          /**********************************************************************************************/
          /*********************************************************************************************
          函數(shù)名:主函數(shù)
          調(diào) 用:無
          參 數(shù):無
          返回值:無
          結 果:程序開始處,無限循環(huán)
          備 注:
          /**********************************************************************************************/
          void main (void){
          unsigned char R;
          UART_init();//串口初始程序
          Read_init(0);//ADC初始化
          P1M0 = 0x01; //P1.7~.0:0000 0001(高阻)//注意:更改ADC通道時須同時將對應的IO接口修改為高阻輸入。
          P1M1 = 0x00; //P1.7~.0:0000 0000(強推)
          while(1){
          R = Read ();
          UART_T (R); //串口小秘書,將ADC讀出值送入串口顯示
          }
          }/**********************************************************************************************/
          /*************************************************************
          * 杜洋工作室 www.DoYoung.net
          /*************************************************************/


          關鍵詞: stc8位ADC轉

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();