返回列表 发帖
大家互相学习!

TOP

谢谢楼主分享,学习了

TOP

控制器3.doc (1.88 MB) 6轴步进电机控制器简单说明

TOP

参考的另一个方案编程:
XMTD-8000.pdf (214.66 KB)

TOP

请潘峰注意,下面发上的是参考别人的1轴控制器的相关设定步骤:


我们的控制器是4轴,参考后尽快提出一个合理的编程步骤出来,我们进行讨论,有问题及时反馈。

TOP

不至于吧?在我印象中拉闸限电都是限乡下的电!
I CAN

TOP

就是板子没回来,说是工厂拉闸限电,要耽误时间了。我都快要骂了!!!!

TOP

很漂亮奥!

TOP

外盒制作已经完成,上几张实物图,呵呵~

DSCN2673.JPG (29.29 KB)

DSCN2673.JPG

DSCN2674.JPG (30.89 KB)

DSCN2674.JPG

DSCN2675.JPG (30.91 KB)

DSCN2675.JPG

DSCN2677.JPG (28.01 KB)

DSCN2677.JPG

DSCN2678.JPG (30.94 KB)

DSCN2678.JPG

DSCN2679.JPG (30.72 KB)

DSCN2679.JPG

DSCN2680.JPG (30.49 KB)

DSCN2680.JPG

I CAN

TOP

受教了!谢谢!

TOP

个人认为滴答定时器可以做,但是要采用查询方式或者DMA方式,不能用中断方式。

TOP

JARRY博士的提法比较专业,我前期做的时候用的是STM32中的滴答定时器来做,定时器来实现对延时函数的方式,状态机的方案我也在探讨。

TOP

回复 49# panfeng88111


不知道你的Delay(10)是怎么实现的,如果是采用for循环或者while循环来做的,那么,CPU的利用率大大降低,大部分时间都在wait。建议采用有限状态机模型实现Delay函数,让CPU尽可能高效的工作。具体实现方式可以咨询andylee。

TOP

我的  Protel  用不了了  好郁闷  突然就用不了了   怎么 搞呀

TOP

我也是这么认为滴!

TOP

这个函数应该库里面包含了。

TOP

本帖最后由 panfeng881112 于 2010-11-5 14:39 编辑

各位大侠们!下面这几句代码是我在main里面一段代码,它可以通过按键调整数值并显示在数码管上。

while(1)
{
      if(GET_SET)    //按键GET_SET被按下
      {
           Delay(10);
           if(GET_SET)    //再次确认GET_SET被按下(去抖动)
                pan1=1;  
      }
      while(pan1==1)
      {
           SET_up('p','1','0',A[0],A[1],A[2],A[3],A[4],0XDF);    //电机1的初始速度
           SET_down('P','1','1',A[5],A[6],A[7],A[8],A[9],0XDF);   //电机1的加减速度
           if(GET_LFL)        //按键GET_LFL被按下
           {
                 Delay(10);
                if(GET_LFL)
                {
                      i++;
                      if(i==10)
                      i=0;
                }
           }
           if(GET_DWN)          //按键GET_DWN被按下
           {
                 Delay(10);
                 if(GET_DWN)
                {
                     A++;
                     if(A>'9')
                          A='0';
                }   
           }
           if(GET_UP)         //
按键GET_UP被按下
           {
                Delay(10);
                if(GET_UP)
                {
                     A--;
                     if(A<'0')
                          A='9';
                }   
           }
           if(GET_SET)         //
按键GET_SET被按下

           {
                Delay(10);
                if(GET_SET)
                {
                     velocity1=atoi(A);  //
将字符数组A转化为整形数
                     pan1=2;   
                }
           }  
      }
......
}

现在有个问题拿出来分享一下,希望大家一起解决一下:
就是 velocity1=atoi(A);  这一句里的atoi()函数不知道在这种环境中(Keil uVision3)可不可以用。

它的功能是将字符数组转化为整形数。
我编译时是没有错误的。

TOP

开源控制器1.1V说明Microsoft Word 文档 10.11.3.zip (287.46 KB) 回复 50# 小叶子


   控制器的说明书 硬件部分的暂时定下这么多  软件预留 大概能实现的功能已经在这里面全部说明了
珩源工控感谢所有朋友的支持

TOP

开源控制器1.1V说明Microsoft Word 文档 (2).rar (644.92 KB)
内部使用说明书  请参加明年挑战杯的同学一定要下来看  方瑞敏等人要看

TOP

本帖最后由 panfeng881112 于 2010-11-1 20:55 编辑

这两个是调用上面的SET_led()函数实现控制16位数码管(同时)显示字符的方法。
这里是利用了人的视觉反应时间来实现的“同时”,并不是真正的同时。(未调试)

void SET_up(char a1,char a2,char a3,char a4,char a5,char a6,char a7,char a8,u8 p)    //  在数码管上排显示一串字符  
{                                                                                        //   对于SER_up()里的参数p
                                                                                         //   p有8位 0000 0000  每一位的值确定相
       SET_led(1,a1,p&0X80);                                                //    对应的一个数码管小数点是否点亮
        Delay(10);                                                                  //   为0时点亮对应的小数点
       SET_led(2,a2,p&0X40);                                                //   为1时熄灭对应的小数点
        Delay(10);                                                                  //
       SET_led(3,a3,p&0X20);                                                //
        Delay(10);                                                                 //
       SET_led(4,a4,p&0X10);                                                //
        Delay(10);                                                                 //
       SET_led(5,a5,p&0X08);                                                //
        Delay(10);                                                                 //
       SET_led(6,a6,p&0X04);                                                //
        Delay(10);                                                                 //
       SET_led(7,a7,p&0X02);                                                //
        Delay(10);                                                                  //
       SET_led(8,a8,p&0X01);                                                //
        Delay(10);           
}                                                                                                                                                                                       
void SET_down(char a1,char a2,char a3,char a4,char a5,char a6,char a7,char a8,u8 p)    //  在数码管下排显示一串字符  
{
       SET_led(9,a1,p&0X80);
        Delay(10);
       SET_led(10,a2,p&0X40);
        Delay(10);
       SET_led(11,a3,p&0X20);
        Delay(10);
       SET_led(12,a4,p&0X10);
        Delay(10);
       SET_led(13,a5,p&0X08);
        Delay(10);
       SET_led(14,a6,p&0X04);
        Delay(10);
       SET_led(15,a7,p&0X02);
        Delay(10);
       SET_led(16,a8,p&0X01);
        Delay(10);
}

在调用这两个函数来实现16位数码管显示时,需要增加它们的实现次数。

例如:
while(1)
{
       SET_up(*******);
       SET_down(******);
}

或者:
for(i=0;i<100;i++)
{
       SET_up(*******);
       SET_down(******);
}
否则显示次数太少会看不到效果

TOP

这个的是利用昨天晚上发的宏定义写的函数(未调试

void SET_led(int n,char m,int p)   //第n个数码管 显示m  p为0时小数点亮,否则不亮
{
       ALLOFF;
       switch(n)
       {
              case 1 :CHOICE1_1;break;
              case 2 :CHOICE1_2;break;
              case 3 :CHOICE1_3;break;
              case 4 :CHOICE1_4;break;
              case 5 :CHOICE1_5;break;
              case 6 :CHOICE1_6;break;
              case 7 :CHOICE1_7;break;
              case 8 :CHOICE1_8;break;
              case 9 :CHOICE2_1;break;
              case 10:CHOICE2_2;break;
              case 11:CHOICE2_3;break;
              case 12:CHOICE2_4;break;
              case 13:CHOICE2_5;break;
              case 14:CHOICE2_6;break;
              case 15:CHOICE2_7;break;
              case 16:CHOICE2_8;break;
              default : ALLON;      
       }
       switch(m)
       {   
              case '0':SET_0;break;
              case '1':SET_1;break;
              case '2':SET_2;break;
              case '3':SET_3;break;
              case '4':SET_4;break;
              case '5':SET_5;break;
              case '6':SET_6;break;
              case '7':SET_7;break;
              case '8':SET_8;break;
              case '9':SET_9;break;
              case 'A':SET_A;break;
              case 'B':SET_B;break;
              case 'C':SET_C;break;
              case 'D':SET_D;break;
              case 'E':SET_E;break;
              case 'F':SET_F;break;
              case 'P':SET_P;break;
              default : ALLON;
       }
       switch(p)
       {
              case 0 : D15_ON;break;
              default : D15_OFF;
       }   
}

这个函数只能让驱动一个数码管显示某一个字符
若要让16个数码管都工作的话则需要调用该函数另写一个函数

TOP

前面板的设计 我觉得 应该在做出一个按键 复位键可以试着在那五个键的旁边  具体的  方式我还是回去再做吧  样子可能会有一定的改变 我试试

TOP

回复 45# whj


    确实如此。下版液晶方案要考虑更多些

TOP

感觉复位键可是另行设置,在前面板  或侧面  可能会很不方便

TOP

本帖最后由 panfeng881112 于 2010-11-1 08:35 编辑

昨天就发现这4句没有写上去,想编辑补上去来着,结果超过了20分钟不能再进行编辑了,呵呵~~

在这里补上


#define CHOICE1_ALL         {CHOICE1_1_ON;CHOICE1_2_ON;CHOICE1_3_ON;CHOICE1_4_ON;CHOICE1_5_ON;CHOICE1_6_ON;CHOICE1_7_ON;CHOICE1_8_ON;}           //点亮上排数码管

#define CHOICE1_NOCE         {CHOICE1_1_OFF;CHOICE1_2_OFF;CHOICE1_3_OFF;CHOICE1_4_OFF;CHOICE1_5_OFF;CHOICE1_6_OFF;CHOICE1_7_OFF;CHOICE1_8_OFF;}    //下灭上排数码管

#define CHOICE2_ALL         {CHOICE2_1_ON;CHOICE2_2_ON;CHOICE2_3_ON;CHOICE2_4_ON;CHOICE2_5_ON;CHOICE2_6_ON;CHOICE2_7_ON;CHOICE2_8_ON;}        //点亮下排数码管

#define CHOICE2_NOCE         {CHOICE2_1_OFF;CHOICE2_2_OFF;CHOICE2_3_OFF;CHOICE2_4_OFF;CHOICE2_5_OFF;CHOICE2_6_OFF;CHOICE2_7_OFF;CHOICE2_8_OFF;}      //熄灭下排数码管

TOP

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-5-6 12:57, Processed in 1.083317 second(s), 6 queries, Gzip enabled.