欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

基于51單片機(jī)控制直流電機(jī)轉(zhuǎn)速的程序,模擬量轉(zhuǎn)為數(shù)字量

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:759419 發(fā)表于 2021-2-6 13:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/**************************************************************/
/*    文件名: AD0809.c                                        */
/*    功能描述: AD采樣實(shí)驗(yàn),結(jié)果通過(guò)串口送PC顯示(脫機(jī)運(yùn)行)    */
/*              結(jié)果送內(nèi)部數(shù)據(jù)區(qū)30H,共16個(gè)(SoftIce調(diào)試)      */
/**************************************************************/
#include <reg51.h>
//#include "SST89x5x4.h"
#include "Absacc.h"

#define T_value     (unsigned char)0xFE                // T周期值
#define T1_value    (unsigned char)0x20                // T周期中高電平周期T1值
#define TH0_value   (unsigned char)0xFE                // 定時(shí)器T0計(jì)數(shù)值(高)10
#define TL0_value   (unsigned char)0x9B                // 定時(shí)器T0計(jì)數(shù)值(低)

unsigned char   V_Set;

float Kp=0;
float Ki=0;
float Sum= 0 ;

#define STARTAD    XBYTE[0x7F00]
#define ADRESULT   XBYTE[0x7F08]

sbit ADBUSY  = P3^3;

void Delay()
{
        unsigned char i;
        for(i=0; i<100; i++);
}

unsigned char AD0809(void)
{
        unsigned char result;
        STARTAD = 0;                        //啟動(dòng)AD
        while(ADBUSY == 1);                //等待轉(zhuǎn)換結(jié)束
        Delay();
        result = ADRESULT;
        return result;                        //返回轉(zhuǎn)換結(jié)果
}


sbit DRV = P1^7;
unsigned char T_Count;                        // 延時(shí)次數(shù)
//unsigned char ADV;                //變量
//unsigned char Tx;


void init_tim0()                                // 定時(shí)器0初始化,定時(shí)基數(shù)
{
        TMOD = 0x01;
        TH0 = TH0_value;
        TL0 = TL0_value;
        TR0 = 1;       
        ET0 = 1;
        EA = 1;
}
void init_tim1()                                // 定時(shí)器1初始化,定時(shí)基數(shù)
{
        TMOD |= 0x50;
        TH1 = 0;
        TL1 = 0;
        TR1 = 1;
//        ET0 = 1;
}


void int_tim0() interrupt 1
{
         
        TH0 = TH0_value;
        TL0 = TL0_value;
    T_Count++;
}

float PID_Control (float get)          //PID控制算法
{
        float err ;
        err         = V_Set -  get;       
        Sum +=  err;       
        return (Kp*err + Ki * Sum   )  ;
       

}

void main(void)
{


        short V_get,OUT;
        Kp =1;
        Ki =1;
        DRV = 1;
        V_Set=0;
        init_tim0();
        init_tim1();        
        T_Count = 0;
//        Tx = ADV;
        while(1)
        {
//
                
//                Delay();
                V_get = TH1<<8|TL1;
            V_Set = AD0809();       
                OUT= PID_Control(V_get);
                  if(T_Count<V_Set)
                {
                        DRV =0;
//                        Tx = T_value - Tx;         
//                        T_Count = Tx;
             }
                else {  DRV =1;}
        if(T_Count==0xFE)
                {T_Count=0x00;}
        }


}


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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