找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2417|回復(fù): 1
收起左側(cè)

直流電動機(jī)轉(zhuǎn)速控制proteus仿真與代碼 求大神給一個

[復(fù)制鏈接]
ID:190944 發(fā)表于 2017-5-30 18:04 | 顯示全部樓層 |閱讀模式
  • 直流電動機(jī)轉(zhuǎn)速控制proteus仿真與代碼,求大神給一個
回復(fù)

使用道具 舉報

ID:1108162 發(fā)表于 2024-1-7 16:18 | 顯示全部樓層
#include<reg51.h>
#define uchar unsigned char
bit flag;
uchar a=1,t=100;
uchar code tab1[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code tab2[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
sfr   P1M1   = 0X91;
sfr   P1M0   = 0X92;
sfr        P2M1   = 0X95;
sfr        P2M0   = 0X96;
void delay(uchar ms)
{
        uchar j;
        while(ms--)
                for(j=0;j<100;j++);
}

void keyscan()
{
     P1M1 = 0;
     P2M1 = 0;
     P1M0 = 0XFF;
     P2M0 = 0XFF;
        if(P2!=0xff)
        {
                delay(5);
                if(P2!=0xff)
                {
                        switch(P2)
                        {
                                case 0xfe:a=1;break;//正轉(zhuǎn)
                                case 0xfd:a=2;break;//反轉(zhuǎn)
                                case 0xfb:if(t>50)t=t-10;else t=50;break;//加速
                                case 0xf7:if(t<150)t=t+10;else t=150;break;//減速
                                case 0xef:flag=1;break;//開始
                                case 0xdf:flag=0;break;//停止
                        }
                        while(P2!=0xff);
                }
        }
}
void time0_init() //定時器T0初始化
{
        TMOD=0x01;          //設(shè)置定時器0工作方式1
        TH0=(65536-50000)/256;//定時50ms取高八位
        TL0=(65536-50000)%256; //取低八位
        ET0=1; //開定時器0中斷使能
        EA=1;  //開總中斷使能
        TR0=1; //開啟中斷
}

void time0() interrupt 1 //定時器T0入口函數(shù)
{
        TH0=(65536-50000)/256; //定時50ms重新賦初值
        TL0=(65536-50000)%256;
        keyscan();
}
void main()
{
        uchar i;
        time0_init();
        while(1)
        {
                if(flag)
                {
                        if(a==1)
                        {       
                                for(i=0;i<8;i++)
                                {
                                        P1=tab1[i];
                                        delay(t);
                                }
                        }
                        if(a==2)
                        {       
                                for(i=0;i<8;i++)
                                {
                                        P1=tab2[i];
                                        delay(t);
                                }
                        }
                }
                else
                        P1=0x00;
       
        }  
}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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