返回列表 发帖
控制器运行过程(单电机版)

  
   开机 数码管显示 上排 无/或全亮 下排 无/或全亮     指示灯显示  不亮         
1: 按set键,数码管显示 上排P.SPPS  下排001000         初始速度
      按up键,调数值,按turn键,数码管移位。
      按set键,确定并进入下一个设定项2 。
      按bac键, 退出。
2: 数码管显示 上排 P.SEC 下排 000001               运行段数
      按up键,调数值,按turn键,数码管移位。
      按set键,确定并进入下一个设定项3 。
      按bac键, 返回上一项。
3: 数码管显示 上排 P.S01SD 下排 001000          第一段的最大速度
      按up键,调数值,按turn键,数码管移位。
      按set键, 上排 P.S01PU 下排 001000            第一段运行的脉冲数
      按up键,调数值,按turn键,数码管移位。
      按set键, 上排 P.S01AS 下排 000001            第一段运行的方向(0~1)
      按up键,调数值,按turn键,数码管移位。
      按set键, 上排 P.S02SD 下排 001000            第二段的最大速度
      按up键,调数值,按turn键,数码管移位。
      按set键, 上排 P.S02PU 下排 001000            第二段运行的脉冲数
      按up键,调数值,按turn键,数码管移位。
      按set键, 上排 P.S02AS 下排 000001            第二段运行的方向(0~1)
      按up键,调数值,按turn键,数码管移位。
                .                                                      .              
                .                                                      .              
                .                                                      .              
      按set键,确定并进入下一个设定项4 。
      按bac键, 返回上一项。
4: 数码管显示 上排 P. ACCE 下排 000000         加减速度(0~9个选项)
      按up键,调数值,按turn键,数码管移位。
      按set键,数值正确时(即为0~9)确定并进入下一个设定项5,否则重新设置该项即进入设定项4。
      按bac键,返回上一个设定项。
     5: 数码管显示 上排 P.SEC_S 下排 000001         循环起始段号(0~最大段号)
      按up键,调数值,按turn键,数码管移位。
     按set键,数值正确时(即为0~最大段号)确定并进入下一个设定项6,否则重新设置该项即进入设定项5。
     按bac键,返回上一个设定项。
6: 数码管显示 上排 P.SEC_O 下排 000001        循环结束段号(0~最大段号)
     按up键,调数值,按turn键,数码管移位。
     按set键,数值正确时(即为0~最大段号)确定并进入下一个设定项7,否则重新设置该项即进入设定项6。
     按bac键,返回上一个设定项。
7: 数码管显示 上排 P.CCN 下排 000001          循环次数
     按up键,调数值,按turn键,数码管移位。
     按set键,确定并退出。
     按bac键,返回上一个设定项。

8:数码管显示 无/或全亮。
     按ent键,确定并开始运行 指示灯亮。
     数码管显示状态1 上排   S.1****     下排  ******   
     按turn键 数码管显示状态2 上排 S.1**** 下排  ******
     再按turn键 返回数码管显示状态1上排   S.1****     下排  ******



数码管  6*2=12位
按键 set  up  turn  bac  ent
指示灯  led1

TOP

本帖最后由 panfeng881112 于 2010-10-8 13:29 编辑

显示代码功能说明
P.SPPS
001000
设置初始速度
默认1000
P.SEC
000001
设置运行段数
默认1
P.S**SD
001000
设置第n段最大速度
默认1000
P.S**PU
001000
设置第n段运行脉冲数
默认1000
P.S**AS
000001
设置第n段运行方向
默认为1
P. ACCE
000000
设置加减速度
默认为0
P.SEC_S
000001
设置循环起始段号
默认为1
P.SEC_O
000001
设置循环结束段号
默认为1
P.CCN
000001
设置循环次数
默认为1
S.1****
******(状态1)
显示运行状态S. 1(电机1)*(方向)***(当前段号)
运行脉冲数
S.1****
******(状态2)
显示运行状态S. 1(电机1)*(方向)***(当前段号)
当前运行速度


欢迎各位朋友献计献策!提供建议!

TOP

复位键在面板和主板之间么?这样的话,在调试的时候复位键会不会被面板挡住了按不到?

TOP

对于stm32系列的代码编写
我们用的是这个2.0的库

STM32固件库V2.0(适合参考).pdf (2.79 MB)

TOP

本帖最后由 panfeng881112 于 2010-10-31 20:07 编辑

这是控制器的9个灯的控制宏定义(未调试版
/* 9个led灯 */
#define CH2_ON                GPIO_ResetBits(GPIOA, GPIO_Pin_12)         //PA口输出低电平     led灯 CH2点亮
#define CH2_OFF                GPIO_SetBits(GPIOA, GPIO_Pin_12)           //PA口输出高电平     led灯 CH2熄灭
#define YH2_ON                GPIO_ResetBits(GPIOA, GPIO_Pin_11)
#define YH2_OFF                GPIO_SetBits(GPIOCA GPIO_Pin_11)
#define CH1_ON                GPIO_ResetBits(GPIOA, GPIO_Pin_10)
#define CH1_OFF                GPIO_SetBits(GPIOA, GPIO_Pin_10)
#define YH1_ON                GPIO_ResetBits(GPIOA, GPIO_Pin_9)
#define YH1_OFF                GPIO_SetBits(GPIOA, GPIO_Pin_9)
#define HND_ON                GPIO_ResetBits(GPIOC, GPIO_Pin_9)
#define HND_OFF                GPIO_SetBits(GPIOC,GPIO_Pin_9)
#define AUT_ON                GPIO_ResetBits(GPIOC, GPIO_Pin_8)
#define AUT_OFF                GPIO_SetBits(GPIOC, GPIO_Pin_8)
#define DC_ON                GPIO_ResetBits(GPIOC, GPIO_Pin_2)
#define DC_OFF                GPIO_SetBits(GPIOC, GPIO_Pin_2)
#define INA_ON                GPIO_ResetBits(GPIOC, GPIO_Pin_3)
#define INA_OFF                GPIO_SetBits(GPIOC, GPIO_Pin_3)
#define OUT_ON                GPIO_ResetBits(GPIOC, GPIO_Pin_4)
#define OUT_OFF                GPIO_SetBits(GPIOC, GPIO_Pin_4)

就是控制9个led灯对应的io口的高低电平从而控制led灯是否点亮
我们的控制器这里是低电平是点亮led灯

TOP

本帖最后由 panfeng881112 于 2010-10-31 20:08 编辑

这个是获取5路按键信息的宏定义(未调试版

/* 5路按键 */
#define GET_SET  (!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))   //读PB13口的电平  再取反赋给GET_SET  
#define GET_ENT  (!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14))
#define GET_LFL  (!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15))   
#define GET_DWN  (!GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_8))
#define GET_UP  (!GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_9))
当GET_*的值是1时,说明相对应的按键被按下了;为0时,相对应按键没有被按下。

TOP

本帖最后由 panfeng881112 于 2010-10-31 20:43 编辑

下面是数码管的相关宏定义(未调试
/*数码管亮灭使能 */
#define CHOICE1_1_ON GPIO_ResetBits(GPIOD, GPIO_Pin_3)
#define CHOICE1_2_ON GPIO_ResetBits(GPIOD, GPIO_Pin_4)
#define CHOICE1_3_ON GPIO_ResetBits(GPIOD, GPIO_Pin_5)
#define CHOICE1_4_ON GPIO_ResetBits(GPIOD, GPIO_Pin_6)
#define CHOICE1_5_ON GPIO_ResetBits(GPIOD, GPIO_Pin_7)
#define CHOICE1_6_ON GPIO_ResetBits(GPIOB, GPIO_Pin_5)
#define CHOICE1_7_ON GPIO_ResetBits(GPIOB, GPIO_Pin_9)
#define CHOICE1_8_ON GPIO_ResetBits(GPIOE, GPIO_Pin_0)

#define CHOICE2_1_ON GPIO_ResetBits(GPIOE, GPIO_Pin_4)
#define CHOICE2_2_ON GPIO_ResetBits(GPIOE, GPIO_Pin_3)
#define CHOICE2_3_ON GPIO_ResetBits(GPIOE, GPIO_Pin_2)
#define CHOICE2_4_ON GPIO_ResetBits(GPIOE, GPIO_Pin_1)
#define CHOICE2_5_ON GPIO_ResetBits(GPIOC, GPIO_Pin_1)
#define CHOICE2_6_ON GPIO_ResetBits(GPIOC, GPIO_Pin_0)
#define CHOICE2_7_ON GPIO_ResetBits(GPIOE, GPIO_Pin_6)
#define CHOICE2_8_ON GPIO_ResetBits(GPIOE, GPIO_Pin_5)

#define CHOICE1_1_OFF GPIO_SetBits(GPIOD, GPIO_Pin_3)
#define CHOICE1_2_OFF GPIO_SetBits(GPIOD, GPIO_Pin_4)
#define CHOICE1_3_OFF GPIO_SetBits(GPIOD, GPIO_Pin_5)
#define CHOICE1_4_OFF GPIO_SetBits(GPIOD, GPIO_Pin_6)
#define CHOICE1_5_OFF GPIO_SetBits(GPIOD, GPIO_Pin_7)
#define CHOICE1_6_OFF GPIO_SetBits(GPIOB, GPIO_Pin_5)
#define CHOICE1_7_OFF GPIO_SetBits(GPIOB, GPIO_Pin_9)
#define CHOICE1_8_OFF GPIO_SetBits(GPIOE, GPIO_Pin_0)

#define CHOICE2_1_OFF GPIO_SetBits(GPIOE, GPIO_Pin_4)
#define CHOICE2_2_OFF GPIO_SetBits(GPIOE, GPIO_Pin_3)
#define CHOICE2_3_OFF GPIO_SetBits(GPIOE, GPIO_Pin_2)
#define CHOICE2_4_OFF GPIO_SetBits(GPIOE, GPIO_Pin_1)
#define CHOICE2_5_OFF GPIO_SetBits(GPIOC, GPIO_Pin_1)
#define CHOICE2_6_OFF GPIO_SetBits(GPIOC, GPIO_Pin_0)
#define CHOICE2_7_OFF GPIO_SetBits(GPIOE, GPIO_Pin_6)
#define CHOICE2_8_OFF GPIO_SetBits(GPIOE, GPIO_Pin_5)

/*分别的控制点亮那一个数码管或是全亮全灭使能*/
#define CHOICE1_1   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_1_ON ;} //选择上排的第一个数码管亮,其他的都不亮。
#define CHOICE1_2   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_2_ON ;}//选择上排的第二个数码管亮,其他的都不亮。
#define CHOICE1_3   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_3_ON ;}//选择上排的第三个数码管亮,其他的都不亮。
#define CHOICE1_4   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_4_ON ;}//选择上排的第四个数码管亮,其他的都不亮。
#define CHOICE1_5   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_5_ON ;}//选择上排的第五个数码管亮,其他的都不亮。
#define CHOICE1_6   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_6_ON ;}//选择上排的第六个数码管亮,其他的都不亮。
#define CHOICE1_7   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_7_ON ;}//选择上排的第七个数码管亮,其他的都不亮。
#define CHOICE1_8   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE1_8_ON ;}//选择上排的第八个数码管亮,其他的都不亮。

#define CHOICE2_1   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_1_ON ;}//选择下排的第一个数码管亮,其他的都不亮。
#define CHOICE2_2   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_2_ON ;}//选择下排的第二个数码管亮,其他的都不亮。
#define CHOICE2_3   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_3_ON ;}//
#define CHOICE2_4   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_4_ON ;}//
#define CHOICE2_5   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_5_ON ;}//
#define CHOICE2_6   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_6_ON ;}//
#define CHOICE2_7   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_7_ON ;}//
#define CHOICE2_8   {CHOICE1_NOCE;CHOICE2_NOCE;CHOICE2_8_ON ;}//

/*数码管每段亮灭宏定义*/
#define D12_ON    GPIO_ResetBits(GPIOD, GPIO_Pin_12)
#define C6_ON      GPIO_ResetBits(GPIOC, GPIO_Pin_6)
#define D15_ON    GPIO_ResetBits(GPIOD, GPIO_Pin_15)   //这一位是数码管中的小数点
#define D11_ON    GPIO_ResetBits(GPIOD, GPIO_Pin_11)
#define D10_ON    GPIO_ResetBits(GPIOD, GPIO_Pin_10)
#define D14_ON    GPIO_ResetBits(GPIOD, GPIO_Pin_14)
#define D13_ON    GPIO_ResetBits(GPIOD, GPIO_Pin_13)
#define C7_ON      GPIO_ResetBits(GPIOC, GPIO_Pin_7)

#define D12_OFF   GPIO_SetBits(GPIOD, GPIO_Pin_12)
#define C6_OFF     GPIO_SetBits(GPIOC, GPIO_Pin_6)
#define D15_OFF   GPIO_SetBits(GPIOD, GPIO_Pin_15)
#define D11_OFF   GPIO_SetBits(GPIOD, GPIO_Pin_11)
#define D10_OFF   GPIO_SetBits(GPIOD, GPIO_Pin_10)
#define D14_OFF   GPIO_SetBits(GPIOD, GPIO_Pin_14)
#define D13_OFF   GPIO_SetBits(GPIOD, GPIO_Pin_13)
#define C7_OFF     GPIO_SetBits(GPIOC, GPIO_Pin_7)

/***************************
         
         
         
            _________
           |     PD10    |
   PD11 |                | PD12
           |                |
           |_________|
           | PC7          |
  PD13 |                 | PC6
           |                |
           |_________|  O   PD15
             PD14
              


**************************/

/*数码管显示不同的字符*/
#define ALLON   {D12_ON;  C6_ON;  D15_ON;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_ON;}     
#define ALLOFF  {D12_OFF; C6_OFF; D15_OFF; D11_OFF; D10_OFF; D14_OFF; D13_OFF; C7_OFF;}

#define SET_0   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_OFF;}   //数码管显示0
#define SET_1   {D12_ON;  C6_ON;  D15_OFF;  D11_OFF; D10_OFF; D14_OFF; D13_OFF; C7_OFF;}
#define SET_2   {D12_ON;  C6_OFF; D15_OFF;  D11_OFF; D10_ON;  D14_ON;  D13_ON;  C7_ON;}
#define SET_3   {D12_ON;  C6_ON;  D15_OFF;  D11_OFF; D10_ON;  D14_ON;  D13_OFF; C7_ON;}
#define SET_4   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_OFF; D14_OFF; D13_OFF; C7_ON;}
#define SET_5   {D12_OFF; C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_OFF; C7_ON;}
#define SET_6   {D12_OFF; C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_ON;}
#define SET_7   {D12_ON;  C6_ON;  D15_OFF;  D11_OFF; D10_ON;  D14_OFF; D13_OFF; C7_OFF;}
#define SET_8   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_ON;}
#define SET_9   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_OFF; C7_ON;}

#define SET_A   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_OFF; D13_ON;  C7_ON;}//数码管显示A
#define SET_B   {D12_OFF; C6_ON;  D15_OFF;  D11_ON;  D10_OFF; D14_ON;  D13_ON;  C7_ON;}
#define SET_C   {D12_OFF; C6_OFF; D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_OFF;}
#define SET_D   {D12_ON;  C6_ON;  D15_OFF;  D11_OFF; D10_OFF; D14_ON;  D13_ON;  C7_ON;}
#define SET_E   {D12_OFF; C6_OFF; D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_ON;}
#define SET_F   {D12_OFF; C6_OFF; D15_OFF;  D11_ON;  D10_ON;  D14_OFF; D13_ON;  C7_ON;}
#define SET_G   {D12_OFF; C6_ON;  D15_OFF;  D11_ON;  D10_ON;  D14_ON;  D13_ON;  C7_OFF;}
#define SET_H   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_OFF; D14_OFF; D13_ON;  C7_ON;}
#define SET_L   {D12_OFF; C6_OFF; D15_OFF;  D11_ON;  D10_OFF; D14_ON;  D13_ON;  C7_OFF;}
#define SET_U   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_OFF; D14_ON;  D13_ON;  C7_OFF;}
#define SET_Y   {D12_ON;  C6_ON;  D15_OFF;  D11_ON;  D10_OFF; D14_ON;  D13_OFF; C7_ON;}
#define SET_J   {D12_ON;  C6_ON;  D15_OFF;  D11_OFF; D10_OFF; D14_ON;  D13_ON;  C7_OFF;}
#define SET_P   {D12_ON;  C6_OFF; D15_OFF;  D11_ON;  D10_ON;  D14_OFF; D13_ON;  C7_ON;}

TOP

上面的数码管显示字符是所有的数码管同时显示同一个字符,如果要控制某一位数码管单独显示一个字符的话,就SET_*和CHOICE1_*  /  CHOICE2_*来配合使用了。这一功能将会在我们后面的函数里面实现。

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

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

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

本帖最后由 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

本帖最后由 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

我也是这么认为滴!

TOP

受教了!谢谢!

TOP

很漂亮奥!

TOP

大家互相学习!

TOP

返回列表

最新关注 关闭


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

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


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

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

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

GMT+8, 2024-4-25 21:36, Processed in 1.061552 second(s), 7 queries, Gzip enabled.