找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6458|回復(fù): 12
收起左側(cè)

霍爾傳感器 51單片機(jī)轉(zhuǎn)速表

  [復(fù)制鏈接]
ID:113276 發(fā)表于 2016-4-10 21:38 | 顯示全部樓層 |閱讀模式
//本程序采用1秒定時(shí)方法對(duì)1秒內(nèi)脈沖進(jìn)行計(jì)數(shù),以此計(jì)數(shù)轉(zhuǎn)速,本程序經(jīng)測(cè)試正常,用霍爾元件進(jìn)行速度傳感!
//本程序 采用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;//時(shí)間循環(huán)次數(shù)//50ms中斷一次
uint temp1,n2;
uchar n,n3;
//uint table[6];
//------------------------------------------------------------
bit r_busy() //測(cè)試忙狀態(tài)
{
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)// 寫顯示位置   地址數(shù)據(jù)
{
w_cmd(pos +0x82) ;      //顯示第一行或第二行,第一行0x80
}
//------------------------------------------------------------
void w_pos1(uchar pos)// 寫顯示位置   地址數(shù)據(jù)
{
w_cmd(pos +0xc1) ;      //顯示第一行或第二行,第一行0x80
}
//------------------------------------------------------------
void w_dat(uchar dat)// 寫數(shù)據(jù)
{
while(r_busy());
rs=1;
rw=0;
en=0;
P0=dat;
en=1;
en=0;
}
//------------------------------------------------------------
void delay(uchar ms) // 延時(shí)子程序
{      
uchar i ;
while(ms--)
{
   for(i=0;i<250;i++) ;
}
}
//------------------------------------------------------------
dis_dat()//數(shù)據(jù)轉(zhuǎn)換
{
   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)//判斷是否次數(shù)為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);//設(shè)定輸入模式,地址遞加
delay(15);
w_cmd(0x38);//功能設(shè)置,數(shù)據(jù)長(zhǎng)度8位,雙列字形,1:5*10字形
delay(15);
w_cmd(0x0f);//開(kāi)顯示,關(guān)閉光標(biāo)字符不閃爍
delay(15);
}
//------------------------------------------------------------
void timer0_inti(void)//定時(shí)器TO中斷初始化
{
  TMOD=0X11;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
EA=1;
ET0=1;
PX0=1;//  中斷0高優(yōu)先級(jí)
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(); //數(shù)據(jù)轉(zhuǎn)換
         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;
   
}


回復(fù)

使用道具 舉報(bào)

ID:118210 發(fā)表于 2016-5-3 19:17 | 顯示全部樓層
有沒(méi)有原理圖??
回復(fù)

使用道具 舉報(bào)

ID:160752 發(fā)表于 2017-1-14 16:08 | 顯示全部樓層
只有程序,沒(méi)原理圖么
回復(fù)

使用道具 舉報(bào)

ID:44165 發(fā)表于 2018-3-5 15:37 | 顯示全部樓層
學(xué)習(xí)學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

ID:287805 發(fā)表于 2018-3-5 15:48 | 顯示全部樓層
很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:287854 發(fā)表于 2018-3-5 17:25 | 顯示全部樓層
層次不清晰    不過(guò)還挺好的! 點(diǎn)贊
回復(fù)

使用道具 舉報(bào)

ID:330988 發(fā)表于 2018-5-16 09:33 | 顯示全部樓層
有原理圖嗎
回復(fù)

使用道具 舉報(bào)

ID:330988 發(fā)表于 2018-5-16 09:33 | 顯示全部樓層
有原理圖嗎
回復(fù)

使用道具 舉報(bào)

ID:66287 發(fā)表于 2018-7-26 08:04 | 顯示全部樓層
寫的非常不錯(cuò),頂一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:572846 發(fā)表于 2019-6-26 19:44 | 顯示全部樓層
可以的非常不錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:492633 發(fā)表于 2024-12-7 16:59 | 顯示全部樓層
路書光 發(fā)表于 2017-1-14 16:08
只有程序,沒(méi)原理圖么

看程序就知道原理圖了,這個(gè)又不復(fù)雜
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表