标题: 霍尔传感器问题 [打印本页]

作者: yzq123    时间: 2017-7-23 14:47
标题: 霍尔传感器问题
#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit LCD_RS=P2^7;
sbit LCD_RW=P2^6;
sbit LCD_EN=P2^5;

sbit sensor0=P3^2;
sbit sensor1=P3^3;

uchar a;
uint b,c;
uchar flag;
void Delay(uint z);
void write_com(uchar com);
void write_data(uchar dat);
void lcd_init();
void init();
void delay100us(void) ;  //?? 0us
void main()
{
         init();
         lcd_init();
   while(1)
         {
          if(flag==1)
                {
                flag=0;
                 TR1=0;
                                       
                 c=TH1*256+TL1;
                 TH1=0;
     TL1=0;        
                 TR1=1;
                 write_com(0xc0);
                 write_data(c/1000+0x30);
                 write_data(c%1000/100+0x30);
                 write_data(c%100/10+0x30);
                 write_data(c%10+0x30);       
   /*  
     TH0=0;
     TL0=0;                       
                        */

                }


         }
}

void init()
{
   TMOD=0x51;
   TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         TH1=0;
         TL1=0;
   TR0=1;
         TR1=1;
   ET0=1;
       
//  IT1=1;
//        EX1=1;
        EA=1;
       
}
void delay(uint z)
{
        uint x,y;
   for(x=z;x>0;x--)
         for(y=110;y>0;y--);
}
void write_com(uchar com)
{
        LCD_RW=0;
        LCD_RS=0;
        P0=com;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}
void write_data(uchar dat)
{
        LCD_RW=0;
        LCD_RS=1;
        P0=dat;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}
void lcd_init()
{
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
void timer0() interrupt 1
{
   TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         a++;
         if(a==20)
         {
                a=0;
         flag=1;
         }
}

霍尔传感器测速程序,每一秒计算脉冲数,一个轮上有5个磁铁,可转一圈测出二十几个,有大神知道怎么回事吗,求解答


作者: yzq123    时间: 2017-7-23 14:51
自己顶一下 有人吗
作者: yzq123    时间: 2017-7-23 15:08
补充一下 我用的1T单片机
作者: yzq123    时间: 2017-7-23 15:58
没有人回答吗
作者: yzq123    时间: 2017-7-23 16:33
审核个帖子这么慢吗
作者: yzq123    时间: 2017-7-23 17:50
有人知道为什么吗
作者: cjjcjj1    时间: 2017-7-23 18:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: yzq123    时间: 2017-7-23 20:00
你好 pwm调的小 差不多一圈 但我用的IT单片机 12T的就没事 你知道该怎么改吗
作者: yzq123    时间: 2017-7-24 14:07
cjjcjj1 发表于 2017-7-23 18:43
你好!那你一秒钟轮子转动了多少圈?


你好 pwm调的小 差不多一圈 但我用的IT单片机 12T的就没事 你知道该怎么改吗
作者: wulin    时间: 2017-7-24 17:33
yzq123 发表于 2017-7-24 14:07
你好 pwm调的小 差不多一圈 但我用的IT单片机 12T的就没事 你知道该怎么改吗

如果这个程序在I2T单片机运行正常,可能是你的delay延时程序出问题,根据经验:

void delay(uint k)          //1ms延时程序(12MHz 1T)
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=892;j>0;j--);
}
作者: yzq123    时间: 2017-7-24 18:30
wulin 发表于 2017-7-24 17:33
如果这个程序在I2T单片机运行正常,可能是你的delay延时程序出问题,根据经验:

void delay(uint k)          ...

液晶显示是正常的 但是计数器显示加的数多了
作者: hangyu0215    时间: 2017-7-24 20:31
会不会是电机磁场干扰




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1