全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

用51单片机制作国旗升降系统的程序分析, 存在一些问题,希望大家指教

[复制链接]
2342 1

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
问题一:步进电机转速不够快,而且震动很厉害,调节了很久,没有大的改观。
问题二:
#include <reg51.h>
unsigned int Flag=0;//定义正反ting转标志位
sbit key=P3^3;
sbit yy=P0^0;               //控制语音芯片APR9600播放音乐
unsigned int a;           //与步进电机转动圈数有关
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格

/*****************延时函数***************/                                    
void Delay(unsigned int i)
{
while(--i);
}

/***************** 主函数 ***********************/                                                     
main()
{
        unsigned char i;
        EX1=1;         //外部中断1开
        IT1=1;         //边沿触发
        EA=1;          //全局中断开      
        while(1)
        {
                if(Flag==0)         //停止
                {
                        P1=0;
                }
                if(Flag==1)            //正转
                {
                        a++;
                        yy=0;
                        Delay(100);
                        yy=1;
                        for(i=0;i<4;i++)      //4相
                        {
                                P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格
                                Delay(357);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
                        }
                        if(a==2300){a=0;Flag=0;}
                }

                if(Flag==2)               //反转
                {
                    a++;
                        for(i=0;i<4;i++)      //4相
                        {
                                P1=B_Rotation[i];  //输出对应的相
                                Delay(362);        //改变这个参数可以调整电机转速 ,数字越小,转速越大                               
                        }
                        if(a==2300){a=0;Flag=0;}
                }
        }
}

/************ 中断入口函数 *******************/                                                
void ISR_Key(void) interrupt 2 using 1
{
        Delay(500);
        Flag++;        
        if(Flag==3)
        Flag=0;
}

举报

回复

1 个评论

MCU***  新手上路  发表于 2011-8-13 14:35:43  | 显示全部楼层
yy来触发语音芯片发生,可是没有效果,不明白了
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表