日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
普通I/O口實(shí)現(xiàn)測(cè)量可調(diào)電阻,調(diào)節(jié)LED的閃爍頻率!
普通I/O口實(shí)現(xiàn)測(cè)量可調(diào)電阻,調(diào)節(jié)LED的閃爍頻率!
 更新時(shí)間:2009-7-22 16:39:05  點(diǎn)擊數(shù):0
【字體: 字體顏色
/script>

相信大家都見過(guò)用普通I/O口測(cè)量電阻方案,一直以來(lái)沒有親自動(dòng)手制作.今天終于制作成功!實(shí)現(xiàn)用普通I/O測(cè)量可調(diào)電阻,調(diào)節(jié)LED閃爍頻率!現(xiàn)與大家一起分享!


此主題相關(guān)圖片如下:


此主題相關(guān)圖片如下:



 

//引入頭文件*********************************************************
#include          "delay.h"
#include          "delay.c"
#include          "pic1684.h"

//輸入定義***********************************************************
#define       Key       RA0                                //按鍵輸入
#define       InRc      RA1                                //測(cè)量輸入                                  

//輸出定義***********************************************************
#define       RcSu      TRISA1                             //輸出設(shè)置

//公用變量***********************************************************
     unsigned char cycle = 0;                              //計(jì)時(shí)母數(shù)
     unsigned char coune = 0;                              //時(shí)間計(jì)數(shù)

//*******************************************************************
//函數(shù)名稱:port_init();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//功能描述:端口設(shè)置
//建造日期:2008.07.08
//*******************************************************************
void PortInit(void)
 {
     PORTA = 0x00;                                         //
     PORTB = 0x00;                                         //
  
     TRISA = 0x01;                                         //A 口設(shè)置   
     TRISB = 0x00;                                         //B 口設(shè)置
 }

//*******************************************************************
//函數(shù)名稱:IdsInit();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//功能描述:中斷設(shè)置
//建造日期:2008.07.08
//*******************************************************************
void IdsInit(void)
 {
     OPTION = 0x87;                                        //分頻因子
     TMR0 = 0x3d;                                          //定時(shí)初值  
     T0IE = 1;                                             //開啟定時(shí)       
     GIE = 1;                                              //準(zhǔn)許中斷
 }

//*******************************************************************
//函數(shù)名稱:DischargeOut();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//功能描述:電容放電
//建造日期:2008.07.08
//*******************************************************************
void DischargeOut(void)
 {
     InRc = 0;                                             //置低電平
     RcSu = 0;                                             //開始放電

     DelayMs(1);                                           //放電時(shí)間
 }

//*******************************************************************
//函數(shù)名稱:SurveyRc();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):充電時(shí)間
//功能描述:測(cè)量充電時(shí)間
//建造日期:2008.07.08
//*******************************************************************
unsigned char SurveyRc(void)
 {
     unsigned char count = 0;                              //時(shí)間計(jì)數(shù)
     
     DischargeOut();                                       //電容放電
     RcSu = 1;                                             //輸入設(shè)置
    
     while (!InRc) 
      {
       count++;                                            //開始計(jì)時(shí)
       if (count == 100) break;                            //最大限時(shí)  
      }
    
     return count;                                         //返回時(shí)間 
 }

//*******************************************************************
//函數(shù)名稱:DataAdd(*buffer, size);
//輸入?yún)?shù):緩沖區(qū)首址, 大小
//輸出參數(shù):數(shù)據(jù)總和
//功能描述:緩沖區(qū)所有數(shù)據(jù)相加
//建造日期:2008.07.08
//*******************************************************************
unsigned int DataAdd(unsigned char *buffer, unsigned char size)
 {
     unsigned int add;
     unsigned char i;
     
     add = 0;                                              //數(shù)據(jù)清零
 
     for (i = 0; i < size; i++)
      {
       add += buffer[i];                                   //數(shù)據(jù)相加
      }
  
     return add;                                           //返回總和                   
 }

//*******************************************************************
//函數(shù)名稱:DataMax(*buffer, size);
//輸入?yún)?shù):緩沖區(qū)首址, 大小
//輸出參數(shù):數(shù)據(jù)最大值
//功能描述:選出緩沖區(qū)最大值
//建造日期:2008.07.08
//*******************************************************************
unsigned char DataMax(unsigned char *buffer, unsigned char size)
 {
     unsigned char max, i;
     
     max = buffer[0];                                      //假設(shè)最大
     
     for (i = 1; i < size; i++)
      {
       if (max < buffer[i]) max = buffer[i];               //對(duì)比最大 
      }
  
     return max;                                           //最大數(shù)據(jù)                   
 }

//*******************************************************************
//函數(shù)名稱:DataMin(*buffer, size);
//輸入?yún)?shù):緩沖區(qū)首址, 大小
//輸出參數(shù):數(shù)據(jù)最小大值
//功能描述:選出緩沖區(qū)最小值
//建造日期:2008.07.08
//*******************************************************************
unsigned char DataMin(unsigned char *buffer, unsigned char size)
 {
     unsigned char min, i;
     
     min = buffer[0];                                      //假設(shè)最小
     
     for (i = 1; i < size; i++)
      {
       if (min > buffer[i]) min = buffer[i];               //對(duì)比最小 
      }
  
     return min;                                           //最小數(shù)據(jù)
 }

//*******************************************************************
//函數(shù)名稱:DataEqually(idend, isor);
//輸入?yún)?shù):被除數(shù),除數(shù)
//輸出參數(shù):平均值
//功能描述:使所數(shù)據(jù)相等
//建造日期:2008.07.08
//*******************************************************************
unsigned char DataEqually(unsigned int idend, unsigned char isor)
 {
     return (idend / isor);                                //數(shù)據(jù)平均
 }
 
//*******************************************************************
//函數(shù)名稱:FilterData(); 
//輸入?yún)?shù):無(wú) 
//輸出參數(shù):平均值 
//功能描述:取樣平均濾波
//建造日期:2008.07.08
//*******************************************************************
unsigned char FilterData(void)
 {
     unsigned char i, max, min, data[10];
     unsigned int sum;
  
     for (i = 0; i < 10; i++) data[i] = SurveyRc();        //收集數(shù)據(jù)
   
     sum = DataAdd(data, 10);                              //數(shù)據(jù)相加
     max = DataMax(data, 10);                              //取最大值
     min = DataMin(data, 10);                              //取最小值

     return (DataEqually((sum - max - min), 8));           //取平均值             
 }  

//*******************************************************************
//函數(shù)名稱:MonitorRC();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//功能描述:監(jiān)測(cè)電位器
//建造日期:2008.07.08
//*******************************************************************
void MonitorRC(void)
 {   
     static unsigned char value[8]; 
     unsigned char i, update;
     
     update = DataEqually((DataAdd(value, 8)), 8);         //數(shù)據(jù)平均

     if (update != cycle)                                  //數(shù)據(jù)變動(dòng)
      {
       cycle = update;                                     //更新周期
       coune = 0;                                          //計(jì)數(shù)清零 
      }  
    
     for (i = 0; i < 7; i++) value[i] = value[i + 1];      //數(shù)據(jù)左移

     value[7] = FilterData();                              //采集數(shù)據(jù)
 }
 
//*******************************************************************
//函數(shù)名稱:TimeInt();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//功能描述:定時(shí)中斷服務(wù)
//建造日期:2008.07.08
//*******************************************************************
void interrupt TimeInt(void)
 {   
     coune++;                                              //周期遞增
     
     if (coune == cycle)                                   //是否相等
      {
       coune = 0;                                          //周期清零
       PORTB ^= 0x80;                                      //輸出指示
      }  
   
     TMR0 = 0x3d;                                          //定時(shí)初值
     T0IF = 0;                                             //清除標(biāo)志
 }

//*******************************************************************
//函數(shù)名稱:main();
//輸入?yún)?shù):無(wú)
//輸出參數(shù):無(wú)
//功能描述:主要程序
//建造日期:2008.07.08
//*******************************************************************
void main(void)
 {   
     PortInit();                                           //腳位設(shè)置
     IdsInit();                                            //中數(shù)設(shè)置

     while (1)
      {
       MonitorRC();                                        //啟動(dòng)監(jiān)測(cè)
       DelayMs(5);                                         //監(jiān)測(cè)周期
      }  
 }

  • 上一篇: PIC單片機(jī)I/O口單線通訊的實(shí)現(xiàn)
  • 下一篇: 使用PIC單片機(jī)的低功耗的一些探討
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1