加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
STC89C52RC驱动无刷电机电调程序,请大神帮忙改改。以及电路问题。
胖喵可不胖2015/06/11电子技术 IP:北京
问题是这样的。我想用STC89C52RC给电调油门输入PWM波。进而驱动无刷电机。我看了些资料,找了些例子,然而还是不太懂。舵机代码是这样的。
Markdown
#include <reg51.h> #define uchar unsigned char #define uint unsigned int    /* 变量定义 */ uchar key_stime_counter,hight_votage=15,timeT_counter; bit key_stime_ok;    /* 引脚定义 */ sbit control_signal=P0^0; sbit turn_left=P3^4; sbit turn_right=P3^5;    /***************************************************************** 名称:定时器0初始化 功能:20ms定时,11.0592M晶振 初值=65536-11059200*0.02/12=65536-18432=47104=0xB800   20ms 初值=65536-11059200*0.0001/12=65536-92.16=64430=0xFFA3 0.1ms *****************************************************************/ void TimerInit() {         control_signal=0;     TMOD=0x01;                               //设置定时器0为工作方式1     EA=1;                                   //开总中断     ET0=1;                                   //定时器0中断允许     TH0 = 0xFF;                        //定时器装初值     TL0 = 0xA3;     TR0=1;          //启动定时器0                                 }    /********************************************** 定时器0中断服务函数 ***********************************************/ void timer0(void) interrupt 1 using 0 {     TH0=0xFF;     TL0=0xA3; //定时器0重新装入数值    if (++key_stime_counter>=200) {     key_stime_counter=0;     control_signal=1;     key_stime_ok = 1;               // 20ms到     timeT_counter=0; }    if (key_stime_ok&&(++timeT_counter>=hight_votage)) {     key_stime_ok=0;     timeT_counter=0;     control_signal=0;              // hight_votage*0.1ms到 } }    /********************************************* 名称:键盘扫描 功能:在按键稳定期内判断键值,并返回键值 **********************************************/ uchar keyscan(void) {     static char key_state = 0;     static char key_value = 0;     uchar key_press, key_return = 0;     key_press = turn_left & turn_right;     //读按键I/O电平                    switch (key_state)     {         case 0 :     // 按键初始态             if (key_press==0) key_state = 1; // 键被按下,但需要确认是否是干扰             break;         case 1 :     // 按键确认态             if (key_press==0)//如有键按下则不是干扰,判断键值             {                                   if(turn_left==0)               //判断是哪一个按键被按下                 {                     key_value=1;       //按键较多时可采用switch选择结构                 }                 else if(turn_right==0)                 {                     key_value=2;                }                 else                 {                    key_value=0;                     key_state = 2; // 状态转换到键释放态                 }             }             else             {                 key_state = 0; // 按键已抬起,属于干扰,转换到按键初始态             }             break;         case 2 :             if (key_press==1)             {                 key_return=key_value;//按键释放后再输出键值,如果按下键就输出则可省略key_value                 key_value=0;                 key_state = 0; //如果按键释放,转换到按键初始态             }             break;     }     return key_return; //返回键值 }    /********************************************* 名称:按键处理 功能: **********************************************/ void key_operation(void) {         switch (keyscan())      //根据键值不同,执行不同的内容     {         case 1:             hight_votage -= 1;             if(hight_votage < 5)             {                 hight_votage = 5;             }             break;         case 2:             hight_votage += 1;             if(hight_votage > 25)             {                 hight_votage = 25;             }             break;         default :             break;     } }       //LED显示函数 void diplay() {     if(hight_votage>=5&&hight_votage<=7) p1="0xFD;  " 1灯亮,舵机接近或到达右转极限位置     if(hight_votage>7&&hight_votage<=10) p1="0xFB;  " 2灯亮     if(hight_votage>10&&hight_votage<=13) p1="0xF7;  //3灯亮"     if(hight_votage>13&&hight_votage<=16) p1="0xEF;  //4灯亮,舵机到达中间位置"     if(hight_votage>16&&hight_votage<=19) p1="0xDF;  //5灯亮"     if(hight_votage>19&&hight_votage<=22) p1="0xBF;  //6灯亮"     if(hight_votage>22&&hight_votage<=25) p1="0x7F;  //7灯亮,舵机接近或到达左转极限位置" }    *主程序* void main(void) {     timerinit();     while(1)     {         key_operation();         diplay();     } }< code></=25)></=22)></=19)></=16)></=13)></=10)></=7)></reg51.h>
来自:电子信息 / 电子技术
12
新版本公告
~~空空如也
胖喵可不胖 作者
10年0个月前 IP:北京
772799
1:这个按钮是哪两个引脚?是P34和P35吗?P00为方波输出?
2:怎样把显示部分改成用1602显示?
3:已经按键的电路怎么做?直接接地是否可以?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
胖喵可不胖作者
10年0个月前 IP:北京
772940
冷场~[s::L]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
不死野人
10年0个月前 IP:广东
773010
默默点个赞
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hansd
10年0个月前 IP:浙江
773321
代码没看,楼主确定不是电调油门保护了?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
月下孤狼
10年0个月前 IP:四川
773353
为什么不用STC12C5A60s2?这个带推挽模式输出,适合驱动MOS管。
89C52是过时的STC产品,官网都不推荐使用
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
胖喵可不胖作者
10年0个月前 IP:北京
773413
引用 hansd:
代码没看,楼主确定不是电调油门保护了?
电调认为输入油门过大。所以进入编程模式了。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
胖喵可不胖作者
10年0个月前 IP:北京
773414
引用 月下孤狼:
为什么不用STC12C5A60s2?这个带推挽模式输出,适合驱动MOS管。
89C52是过时的STC产品,官网都不推荐使用
哦哦,谢谢。只是我手里的52有现成的最小系统板,已经烧录器都有,所以就先用这个了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
胖喵可不胖作者
10年0个月前 IP:北京
773415
引用 仓生木品:
对电调不熟
1602显示的代码可以参考一下
/*-----------------------------------------------
  名称:LCD1602
  编写:shifang
  日期:2009.5
  修改...
谢谢。我改改用。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
仓生木品
10年0个月前 修改于 10年0个月前 IP:湖南
773523
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
胖喵可不胖作者
10年0个月前 IP:北京
773544
引用 仓生木品:
【PERIAN作品】51单片机自制8通道2.4G遥控器简明教程!!!
推荐楼主看一下这个教程。
谢谢层主~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
osfg
10年0个月前 IP:广东
773558
引用 wjd_213:
哦哦,谢谢。只是我手里的52有现成的最小系统板,已经烧录器都有,所以就先用这个了。
别用死特惨了,贵又不稳
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
胖喵可不胖
机友 笔友
文章
20
回复
229
学术分
0
2013/05/06注册,3年7个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的