智能车制作

标题: 独立键盘和矩阵键盘的问题 [打印本页]

作者: 伤痕我心    时间: 2013-7-27 20:47
标题: 独立键盘和矩阵键盘的问题
是否可以用键盘的一个键,实现控制电机的运动与关闭?
我的程序如下:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
void PWM_Init(void)

{
   PWMPOL=0X20;      //***选择通道的极性****
   
   PWMCAE=0X20;      //***选择对齐方式*****
   
   PWMCLK=0X20;
   PWMPRCLK=0X00;    //*****  确定通道5的时钟   *****  
   PWMSCLA=0X80;                                                                  //   ****************************************
                                                                                  //**********     用PWM5控制使电机工作  ******
   PWMCTL=0X00;      //*****   不级联   ******                                    //   ****************************************
   
   PWMPER5=128;      //*****   确定通道5的通道周期为128  *******
   
   PWMDTY5=0;      //*****   确定通道5的占空比为0  *****
   
   PWME=0X20;        //*****   通道5使能   ****
   
}
void delay(){
  int i=1000;
  while(i--);
}

void main(void)
{
  /* put your own code here */
   
  for(;;)
{
     
     if(PTT_PTT4==0)
     {
       delay();
      if(PTT_PTT4==0)
       {
          PWMDTY5=40;
           PWM_Init();
        }
      
      
      if(PTT_PTT4==0)
       {
        delay();
         if(PTT_PTT4==0)
        {
           PWMDTY5=0;
           PWM_Init();
        }
      }
}
   
这里用的是独立键盘的KEY3,谢谢大家了,求解啊!
     

作者: 米饭伯爵    时间: 2013-7-27 22:09
你的第一次按下按键后,付给了一次占空比50,然后初始化PWM,但是在初始化里占空比被付为0,所以执行完占空比仍然为0,没有用了,是不是这样不能用的
作者: 伤痕我心    时间: 2013-7-28 09:11
if(PTT_PTT4==0)
       {
          PWMDTY5=40;
           PWM_Init();
        }
第一个if改成这样可以独立运行,但是还是不能做到一个按键控制电机的两种状态
作者: ℡单身旅行    时间: 2013-7-28 17:30
第一:你的程序中没有松手检测的程序
第二:传值的时候应该用形参的方式给PWMDTY,否则你的函数调用中,PEMDTY依然是初始化函数里的值。。。。。
作者: 伤痕我心    时间: 2013-7-30 10:30
℡单身旅行 发表于 2013-7-28 17:30
第一:你的程序中没有松手检测的程序
第二:传值的时候应该用形参的方式给PWMDTY,否则你的函数调用中,PE ...

   松手检测?我刚开始学几天,这个不懂,能否给我个参考?谢谢了!
作者: ℡单身旅行    时间: 2013-7-30 11:03
伤痕我心 发表于 2013-7-30 10:30
松手检测?我刚开始学几天,这个不懂,能否给我个参考?谢谢了!

比如你的这个程序   for(;;)
{
     
     if(PTT_PTT4==0)
     {
       delay();
      if(PTT_PTT4==0)
       {
          PWMDTY5=40;
           PWM_Init();
        }
要在 PWM_Init();   后面加上while(PTT_PTT4==0 );就是for(;;)
{
     
     if(PTT_PTT4==0)
     {
       delay();
      if(PTT_PTT4==0)
       {
          PWMDTY5=40;
           PWM_Init();          while( !PTT_PTT4); //当按下按键,PTT4=0;while语句永远真,程序就卡在这里,当松开按键,语句位假,就跳出了
        }

松手检测就是这个意思   矩阵键盘原理类似。。。。。我以为是新手,有什么错误请指出

作者: 伤痕我心    时间: 2013-7-31 16:05
℡单身旅行 发表于 2013-7-30 11:03
比如你的这个程序   for(;;)
{
     

谢谢啊,这个程序的思想,在其他的程序中也用到过,Thank you very much !
作者: ℡单身旅行    时间: 2013-7-31 16:06
伤痕我心 发表于 2013-7-31 16:05
谢谢啊,这个程序的思想,在其他的程序中也用到过,Thank you very much !

不客气,互相学习嘛、、、、





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2