找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4862|回复: 11
收起左侧

霍尔传感器 51单片机转速表

  [复制链接]
ID:113276 发表于 2016-4-10 21:38 | 显示全部楼层 |阅读模式
//本程序采用1秒定时方法对1秒内脉冲进行计数,以此计数转速,本程序经测试正常,用霍尔元件进行速度传感!
//本程序 采用1602液晶作为显示!
//李干云
源程序如下
#include <AT89X52.h>
#include <intrins.h>
#define uint  unsigned int
#define uchar unsigned char
sbit d_led=P1^7;
sbit rs = P3^5 ;
sbit rw = P3^6 ;
sbit en = P3^7 ;
uchar   time[3];
uchar   dis_buf[24];
uchar pos_d;
uchar dis_d;
uchar dl=20;//时间循环次数//50ms中断一次
uint temp1,n2;
uchar n,n3;
//uint table[6];
//------------------------------------------------------------
bit r_busy() //测试忙状态
{
bit busy;
rs=0;
rw=1;
en=1;
//busy=(bit)(P0&0x80);
if((P0&0X80)==0X80) busy=0;else busy=0;
en=0;
return busy;
}
//------------------------------------------------------------
void w_cmd(cmd)// 写命令
{
rs=0;
rw=0;
en=0;
P0=cmd;
en=1;
en=0;
}
//------------------------------------------------------------
void w_pos(uchar pos)// 写显示位置   地址数据
{
w_cmd(pos +0x82) ;      //显示第一行或第二行,第一行0x80
}
//------------------------------------------------------------
void w_pos1(uchar pos)// 写显示位置   地址数据
{
w_cmd(pos +0xc1) ;      //显示第一行或第二行,第一行0x80
}
//------------------------------------------------------------
void w_dat(uchar dat)// 写数据
{
while(r_busy());
rs=1;
rw=0;
en=0;
P0=dat;
en=1;
en=0;
}
//------------------------------------------------------------
void delay(uchar ms) // 延时子程序
{      
uchar i ;
while(ms--)
{
   for(i=0;i<250;i++) ;
}
}
//------------------------------------------------------------
dis_dat()//数据转换
{
   dis_buf[0]='<'; //显示t
   dis_buf[1]='L'; //i  
   dis_buf[2]='i'; // m
   dis_buf[3]='a';  //e  
   dis_buf[4]='h';
   dis_buf[5]='u';
   dis_buf[6]='i';
   dis_buf[7]='.';
   dis_buf[8]='M';
   dis_buf[9]='C';
   dis_buf[10]='U';
   dis_buf[11]='>';
   dis_buf[12]='I';
   dis_buf[13]='S';
   dis_buf[14]=' ';
   dis_buf[15]=((temp1/10000)+0x30);  
   dis_buf[16]=((temp1/1000%10)+0x30);   
   dis_buf[17]=((temp1/100%10)+0x30);
   dis_buf[18]= ((temp1/10%10)+0x30);
   dis_buf[19]=((temp1%10)+0x30);
   dis_buf[20]=' ';  
   dis_buf[21]='P';
   dis_buf[22]='P';
   dis_buf[23]='M';  
   

   
   
        
   }
//------------------------------------------------------------
void timer0 (void) interrupt 1 //using 3
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
   
if(dl--==0)//判断是否次数为20
{
   dl=20;
   d_led=!d_led;
if ((++time[0])>59)
{
time[1]++;
time[0]=0;
}
else if (time[1]>59)
{
time[2]++;
time[1]=0;
}
else if (time[2]>23)
{
time[2]=0;
time[1]=0;
    time[0]=0;
    }
              
}
   else ; //跳出中断
}
//------------------------------------------------------------
void lcd_inti(void)//lcd初始化
{
delay(15);
w_cmd(0x01);//清屏
delay(15);
w_cmd(0x09);//设定输入模式,地址递加
delay(15);
w_cmd(0x38);//功能设置,数据长度8位,双列字形,1:5*10字形
delay(15);
w_cmd(0x0f);//开显示,关闭光标字符不闪烁
delay(15);
}
//------------------------------------------------------------
void timer0_inti(void)//定时器TO中断初始化
{
  TMOD=0X11;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
EA=1;
ET0=1;
PX0=1;//  中断0高优先级
IT0=1;
EX0=1;

}
//------------------------------------------------------------
main()
{
time[0]=0;      //sec
time[1]=11;      //min
time[2]=14;      //hour
lcd_inti();
timer0_inti();
//TH0=15;TL0=160;
TH0=0;TL0=0;
while(1)
{

for(pos_d=0;pos_d<=23;pos_d++)
{
      if(pos_d<=11) w_pos(pos_d); //写地址
      
   
       else
       { dis_dat(); //数据转换
         w_pos1(pos_d-11);
         
       }
       dis_d=dis_buf[pos_d];
       w_dat(dis_d);
       delay(1);
   
}
}
}
void time0(void) interrupt 1 using 2
{

   TH0=(65536-49550)/256;
   TL0=(65536-49550)%256;
   n3++;
   if(n3==20)
    { P1_6=0;
      temp1=n2*60;n2=0;n3=0;TR0=0;
   
    }

}

void int0_srv(void) interrupt 0 using 1 //外部中断0
{
  n2++; TR0=1;
   
}


回复

使用道具 举报

ID:118210 发表于 2016-5-3 19:17 | 显示全部楼层
有没有原理图??
回复

使用道具 举报

ID:160752 发表于 2017-1-14 16:08 | 显示全部楼层
只有程序,没原理图么
回复

使用道具 举报

ID:44165 发表于 2018-3-5 15:37 | 显示全部楼层
学习学习!
回复

使用道具 举报

ID:287805 发表于 2018-3-5 15:48 | 显示全部楼层
很不错
回复

使用道具 举报

ID:287854 发表于 2018-3-5 17:25 | 显示全部楼层
层次不清晰    不过还挺好的! 点赞
回复

使用道具 举报

ID:330988 发表于 2018-5-16 09:33 | 显示全部楼层
有原理图吗
回复

使用道具 举报

ID:330988 发表于 2018-5-16 09:33 | 显示全部楼层
有原理图吗
回复

使用道具 举报

ID:66287 发表于 2018-7-26 08:04 | 显示全部楼层
写的非常不错,顶一个
回复

使用道具 举报

ID:572846 发表于 2019-6-26 19:44 | 显示全部楼层
可以的非常不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表