日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年01月21日(星期二)

正在發(fā)生

2020年01月21日 | 基于STC15單片機(jī)芯片的直流電機(jī)PID控制轉(zhuǎn)速源碼

發(fā)布者:uioo9158 來源: 51hei關(guān)鍵字:STC15單片機(jī)  直流電機(jī)  PID  控制轉(zhuǎn)速 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

STC15W4K56S4單片機(jī)PID控制直流電機(jī)轉(zhuǎn)速

下面是制作出來的實(shí)物圖:

電機(jī)上電運(yùn)行平穩(wěn)

電機(jī)上電運(yùn)行平穩(wěn)

L298N控制電機(jī)轉(zhuǎn)速

L298N控制電機(jī)轉(zhuǎn)速

STC控制板

STC控制板 

單片機(jī)源程序如下:

#include "STC15W4K56S2.h"

#include "Counter1.h"

#include "USART.h"

#include "TIMER.h"

#include "PWM_CONTR.h"

#define u8 unsigned char

#define u16 unsigned int


u16 Speed_Temp=0;

sbit Led=P5^5;

struct _Pid{

         u8 SetSpeed;                  //設(shè)置值

        u8 ActualSpeed;         //實(shí)際值

        int err;

        int err_next;

        int err_last;

        float Kp,Kd,Ki;

}pid;


void Seial_Creat(void);

void Timer_Creat(void);

void PID_Init(void);

u8 PID_Motor(u8 speed, u8 Aurespeed);


void main()

{

        Counter1_config();        

        Seial_Creat();                

        Timer_Creat();

        pwm_Init();

        PID_Init();

        Led=1;

        EA=1;

        while(1);

}

void Seial_Creat(void)

{

          COMx_InitDefine myComx_initdefine;

         myComx_initdefine.UART_Mode=UART_8bit_BRTx;        

         myComx_initdefine.UART_BRT_Use=BRT_Timer2;                

         myComx_initdefine.UART_BaudRate=9600;                        

         myComx_initdefine.Morecommunicate=DISABLE;                

         myComx_initdefine.UART_RxEnable=ENABLE;                

         myComx_initdefine.BaudRateDouble=DISABLE;                

         myComx_initdefine.UART_Interrupt=DISABLE;                

         myComx_initdefine.UART_P_SW=UART1_SW_P30_P31;        

         myComx_initdefine.UART_RXD_TXD_Short=DISABLE;

         USART_Configuration(USART1, &myComx_initdefine);

}

void Timer_Creat(void)

{

        TIM_InitTypeDef myTim_inittypedef;


        myTim_inittypedef.TIM_Mode=TIM_16BitAutoReload;         

        myTim_inittypedef.TIM_Polity=0;                                                

        myTim_inittypedef.TIM_Interrupt=ENABLE;                                

        myTim_inittypedef.TIM_ClkSource=TIM_CLOCK_12T;                

        myTim_inittypedef.TIM_ClkOut=DISABLE;                                 

        myTim_inittypedef.TIM_Value=63900;                                        

        myTim_inittypedef.TIM_Run=ENABLE;                                         //TR0=1

        Timer_Inilize(Timer0,&myTim_inittypedef);

}

/********************* Timer0中斷函數(shù)************************/

void timer0_int (void) interrupt TIMER0_VECTOR

{

        static u8 Count1=0;

        static u8 Count2=0;

        u8 Speed_pwm;

        if(Count1==10)

        {

                TR1=0;

                Count1=0;

                Speed_Temp+=TL1;

                Count2++;

                if(Count2==4)

                {

                         Speed_Temp>>=2;

                        Speed_Temp=(Speed_Temp*50)/40;

                        Speed_pwm=PID_Motor(20, Speed_Temp);

                        pwm_Change(Speed_pwm, 0x80);

                        //pwm_Change(0x80, 0x80);

                        Send1_onedata(0xaa);        //發(fā)個(gè)字節(jié)標(biāo)志位

                        Send1_onedata((u8)Speed_Temp);

                        Send1_onedata(Speed_pwm); 

                        Speed_Temp=0;

                        Count2=0;

                }

                Led=~Led;

                TH1=0;

                TL1=0;

                TR1=1;

        }

        else

        {

                Count1++;

        }

}

void PID_Init(void)

{

         pid.SetSpeed=0;

        pid.ActualSpeed=0;

        pid.err=0;

        pid.err_next=0;

        pid.err_last=0;

        pid.Kp=2;

        pid.Kd=0.2;

        pid.Ki=4;

}

u8 PID_Motor(u8 speed, u8 Aurespeed)

{

        int incrementspeed;

        static u8 speed_value;

        pid.SetSpeed=speed;

        pid.err=pid.SetSpeed-Aurespeed;        

        incrementspeed=pid.Kp*(pid.err-pid.err_next)+pid.Kd*pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);

        speed_value+=incrementspeed;

        pid.err_last=pid.err_next;

        pid.err_next=pid.err;

        return (255-speed_value);

}

關(guān)鍵字:STC15單片機(jī)  直流電機(jī)  PID  控制轉(zhuǎn)速 引用地址:基于STC15單片機(jī)芯片的直流電機(jī)PID控制轉(zhuǎn)速源碼

上一篇:51單片機(jī)IO口模擬UART串口通信
下一篇:51單片機(jī)理通定時(shí)器輸出PWM例程

推薦閱讀

TETRA 是一種最先進(jìn)的PMR 蜂窩通信系統(tǒng),已成功地在全球廣泛部署。隨著TETRA 網(wǎng)絡(luò)的成長,網(wǎng)絡(luò)管理員有時(shí)很難保證網(wǎng)絡(luò)性能滿足專業(yè)用戶的高質(zhì)量要求。在成熟的TETRA 網(wǎng)絡(luò)中,許多人不斷地進(jìn)行網(wǎng)絡(luò)配置。小區(qū)和小區(qū)集群不斷增加后,需要調(diào)整大量定義TETRA 行為的參數(shù)中部分參數(shù)的設(shè)置。如果TETRA 用戶向無線網(wǎng)絡(luò)管理單元提出網(wǎng)絡(luò)性能差,這些問題大部...
2017年3月,“人工智能”首次被寫進(jìn)《政府工作報(bào)告》;7月,國務(wù)院發(fā)布《新一代人工智能發(fā)展規(guī)劃》,人工智能發(fā)展上升至國家戰(zhàn)略;2018年10月31日,中共中央政治局專門就“人工智能發(fā)展現(xiàn)狀和趨勢”舉行第九次集體學(xué)習(xí),這是中央最高領(lǐng)導(dǎo)層首次專門以人工智能為學(xué)習(xí)主題。在這樣的歷史條件下,如何以產(chǎn)業(yè)實(shí)踐推動(dòng)人工智能快速發(fā)展,成為擺在我們面前的重要...
移植環(huán)境硬件平臺(tái):FS2410U-Boot版本:u-boot-1.1.6編譯器:arm-linux-gcc version 3.4.1U-Boot主要目錄結(jié)構(gòu) U-Boot的 stage1代碼通常放在 cpu/……/start.S文件中,它用匯編語言寫成;U-Boot的 stage2代碼通常放在 lib/……/board.c文件中,它用 C語言寫成。步驟1、下載并解壓U-Boot源碼1tar xvf u-boot-1.1.6.tar.bz22、編譯開發(fā)板項(xiàng)目目前U-Boo...
1月20日消息 根據(jù)數(shù)碼閑聊站的消息,華為 Mate X2折疊屏新機(jī)入網(wǎng),屏幕信息、手機(jī)尺寸和電池充電方案現(xiàn)已曝光。數(shù)碼閑聊站表示,華為 Mate X2折疊屏新機(jī)尺寸為161.8×145.8×8.2mm,主屏尺寸為8.01英寸,副屏尺寸為6.45英寸,內(nèi)折設(shè)計(jì)。這款新機(jī)搭載了4400mAh 電池,支持66W 超級閃充。IT之家了解到,根據(jù)之前爆料信息,華為新款 Mate X2可折疊智能...

史海拾趣

問答坊 | AI 解惑

鉑電阻溫度傳感器

鉑電阻溫度傳感器…

查看全部問答∨

TQFP80轉(zhuǎn)IDC80的轉(zhuǎn)接卡PCB文件(可以方便的在實(shí)驗(yàn)板用上)

哥們我在用AT89C51SND1C做實(shí)驗(yàn)的時(shí)候,發(fā)現(xiàn)它(因?yàn)槭荰QFP80的封裝)不好在實(shí)驗(yàn)板上焊接.于是就做了塊TQFP-80轉(zhuǎn)IDC-80的轉(zhuǎn)接卡.有需要的朋友可以下載來用.另外我還有其他的TQFP封裝轉(zhuǎn)IDC的轉(zhuǎn)接卡的PCB圖和實(shí)物,有需要的朋友可以找我.... 晚上補(bǔ)充附件…

查看全部問答∨

MSP430單片機(jī)控制程控濾波器MAX262

輸入時(shí)鐘采用430內(nèi)部DCO輸出的時(shí)鐘MCLK,頻率較低時(shí)使用TimerA?!?

查看全部問答∨

ATMEL 16L制作LED條屏控制卡 點(diǎn)時(shí)間長就全亮花屏是怎么回事?

ATMEL 16L制作LED條屏控制卡 點(diǎn)時(shí)間長就全亮花屏是怎么回事?重新下程序馬上就好使,重新上電也好使,這是怎么回事?是不是EEPROM出現(xiàn)了問題?時(shí)間也對不上了,有誰做過,請指點(diǎn)小弟一下,謝謝!…

查看全部問答∨

我的12864不能顯示,請高手指點(diǎn)

在網(wǎng)上找了好久,就是找不到相關(guān)資料,我的液晶的型號是:QY12864,也不知是用什么驅(qū)動(dòng)芯片的,只是知道是帶中文字庫的,引腳是這樣的: Gnd 、 Vcc 、NC 、RS 、RW、 E 、DB0、 DB1 、DB2、 DB3 、DB4、 DB5 、DB6 、DB7 、PSB 、NC 、/RST、 NC ...…

查看全部問答∨

2440芯片用J-Link調(diào)試,在AXD下怎樣設(shè)置

請問各位高手,2440芯片用J-Link調(diào)試,在AXD下怎樣設(shè)置…

查看全部問答∨

如何把一個(gè)BIN文件加入程序中?

使用的是STM32F103VET6,在顯示屏上要顯示漢字,所以要把HZK16加入到Flash中,以前使用的都是8位機(jī),字庫都是放在外置Flash里,現(xiàn)在看STM32F比較便宜,不想放外存了,請問一句如何把這個(gè)260多KByte的文件加入程序中去 使用的IDE是Keil3.5, ...…

查看全部問答∨

編程出現(xiàn)錯(cuò)誤

Build target \'Target 1\'assembling STARTUP.A51...compiling gg.c...linking...*** ERROR L107: ADDRESS SPACE OVERFLOW    SPACE:   DATA        SEGMENT: _DATA_GROUP_  &n ...…

查看全部問答∨

推薦PCB設(shè)計(jì)軟件EAGLE的中文視屏教程

第一講:EAGLE軟件概述,安裝以及界面介紹。 第二講:EAGLE原理圖編輯器的使用. 第三講:EAGLE PCB編輯器的使用。 第四講:EAGLE元件庫編輯器介紹 第五講:手把手教你創(chuàng)建EAGLE元器件庫。 第六講:手把手教你創(chuàng)建具有多個(gè)Gate的庫文 ...…

查看全部問答∨

嵌入式操作系統(tǒng)哪種好?

      下面就由福州卓躍教育具體介紹以下幾種代表性嵌入式操作系統(tǒng)比較:        (一)   VxWorks        VxWorks操作系統(tǒng)是美國WindRi ...…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved