霍尔传感器磁性传感器原理图PCB图及例程.docx

上传人:b****3 文档编号:6066764 上传时间:2023-05-09 格式:DOCX 页数:39 大小:1.16MB
下载 相关 举报
霍尔传感器磁性传感器原理图PCB图及例程.docx_第1页
第1页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第2页
第2页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第3页
第3页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第4页
第4页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第5页
第5页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第6页
第6页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第7页
第7页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第8页
第8页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第9页
第9页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第10页
第10页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第11页
第11页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第12页
第12页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第13页
第13页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第14页
第14页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第15页
第15页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第16页
第16页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第17页
第17页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第18页
第18页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第19页
第19页 / 共39页
霍尔传感器磁性传感器原理图PCB图及例程.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

霍尔传感器磁性传感器原理图PCB图及例程.docx

《霍尔传感器磁性传感器原理图PCB图及例程.docx》由会员分享,可在线阅读,更多相关《霍尔传感器磁性传感器原理图PCB图及例程.docx(39页珍藏版)》请在冰点文库上搜索。

霍尔传感器磁性传感器原理图PCB图及例程.docx

霍尔传感器磁性传感器原理图PCB图及例程

霍尔传感器、磁性传感器原理图PCB图及例程

霍尔传感器使用说明书

简要说明:

一、长尺寸:

32mmX宽11mmX高20mm

二、主要芯片:

LM393、3144霍尔传感器

三、工作电压:

直流5伏

四、特点:

1、具有信号输出指示。

2、单路信号输出。

3、输出有效信号为低电平。

4、灵敏度可调(精调)。

5、有磁场切割就有信号输出

6、电路板输出开关量!

(可直接接单片机)

7、可用于电机测速/位置检测等场合

适用场合:

单片机学习、电子竞赛、产品开发、毕业设计。

【图片展示】

if(DOUT==0)//确定浓度高于设定值时,执行条件函数

{

LED=0;//点亮P1.0口灯

}

}

}

}

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

结束

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

【与单片机连接测速参考程序】

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

汇诚科技

实现功能:

电机转速表设计

使用芯片:

AT89S52

晶振:

11.0592MHZ

波特率:

9600

编译环境:

Keil

作者:

zhangxinchun

【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!

#include//包含单片机寄存器的头文件

#include//包含_nop_()函数定义的头文件

sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚

sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚

sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚

sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚

unsignedcharcodedigit[]={"0123456789"};//定义字符数组显示数字

unsignedintv;//储存电机转速

unsignedcharcount;//储存定时器T0中断次数

bitflag;//计满1秒钟标志位

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

函数功能:

延时1ms

(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒

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

voiddelay1ms()

{

unsignedchari,j;

for(i=0;i<10;i++)

for(j=0;j<33;j++)

;

}

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

函数功能:

延时若干毫秒

入口参数:

n

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

voiddelay(unsignedcharn)

{

unsignedchari;

for(i=0;i

delay1ms();

}

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

函数功能:

判断液晶模块的忙碌状态

返回值:

result。

result=1,忙碌;result=0,不忙

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

unsignedcharBusyTest(void)

{

bitresult;

RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态

RW=1;

E=1;//E=1,才允许读写

_nop_();//空操作

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

result=BF;//将忙碌标志电平赋给result

E=0;//将E恢复低电平

returnresult;

}

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

函数功能:

将模式设置指令或显示地址写入液晶模块

入口参数:

dictate

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

voidWriteInstruction(unsignedchardictate)

{

while(BusyTest()==1);//如果忙就等待

RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令

RW=0;

E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置"0"

_nop_();

_nop_();//空操作两个机器周期,给硬件反应时间

P0=dictate;//将数据送入P0口,即写入指令或地址

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=1;//E置高电平

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令

}

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

函数功能:

指定字符显示的实际地址

入口参数:

x

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

voidWriteAddress(unsignedcharx)

{

WriteInstruction(x|0x80);//显示位置的确定方法规定为"80H+地址码x"

}

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

函数功能:

将数据(字符的标准ASCII码)写入液晶模块

入口参数:

y(为字符常量)

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

voidWriteData(unsignedchary)

{

while(BusyTest()==1);

RS=1;//RS为高电平,RW为低电平时,可以写入数据

RW=0;

E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置"0"

P0=y;//将数据送入P0口,即将数据写入液晶模块

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=1;//E置高电平

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令

}

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

函数功能:

对LCD的显示模式进行初始化设置

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

voidLcdInitiate(void)

{

delay(15);//延时15ms,首次写指令时应给LCD一段较长的反应时间

WriteInstruction(0x38);//显示模式设置:

16×2显示,5×7点阵,8位数据接口

delay(5);//延时5ms ,给硬件一点反应时间

WriteInstruction(0x38);

delay(5);

WriteInstruction(0x38);//连续三次,确保初始化成功

delay(5);

WriteInstruction(0x0c);//显示模式设置:

显示开,无光标,光标不闪烁

delay(5);

WriteInstruction(0x06);//显示模式设置:

光标右移,字符不移

delay(5);

WriteInstruction(0x01);//清屏幕指令,将以前的显示内容清除

delay(5);

}

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

函数功能:

显示速度提示符

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

voiddisplay_sym(void)

{

WriteAddress(0x00);//写显示地址,将在第1行第1列开始显示

WriteData('v');//将字符常量v写入LCD

WriteData('=');//将字符常量=写入LCD

}

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

函数功能:

显示速度数值

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

voiddisplay_val(unsignedintx)

{

unsignedchari,j,k,l;//j,k,l分别储存温度的百位、十位和个位

i=x/1000;//取千位

j=(x%1000)/100;//取百位

k=(x%100)/10;//取十位

l=x%10;//取个位

WriteAddress(0x02);//写显示地址,将在第1行第3列开始显示

WriteData(digit[i]);//将千位数字的字符常量写入LCD

WriteData(digit[j]);//将百位数字的字符常量写入LCD

WriteData(digit[k]);//将十位数字的字符常量写入LCD

WriteData(digit[l]);//将个位数字的字符常量写入LCD

}

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

函数功能:

显示速度单位“r/min”

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

voiddisplay_unit(void)

{

WriteAddress(0x06);//写显示地址,将在第2行第7列开始显示

WriteData('r');//将字符常量r写入LCD

WriteData('/');//将字符常量/写入LCD

WriteData('m');//将字符常量m写入LCD

WriteData('i');//将字符常量i写入LCD

WriteData('n');//将字符常量n写入LCD

}

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

函数功能:

主函数

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

voidmain(void)

{

LcdInitiate();//调用LCD初始化函数

TMOD=0x51;//定时器T1工作于计数模式1,定时器T0工作于计时模式1;

TH0=(65536-46083)/256;//定时器T0的高8位设置初值,每50ms产生一次中断

TL0=(65536-46083)%256;//定时器T0的低8位设置初值,每50ms产生一次中断

EA=1;//开总中断

ET0=1;//定时器T0中断允许

TR0=1;//启动定时器T0

count=0;//将T0中断次数初始化为0

display_sym();//显示速度提示符

display_val(0000);//显示器工作正常标志

display_unit();//显示速度单位

while

(1)//无限循环

{

TR1=1;//定时器T1启动

TH1=0;//定时器T1高8位赋初值0

TL1=0;//定时器T1低8位赋初值0

flag=0;//时间还未满1分钟

while(flag==0)//时间未满等待

;

v=(TH1*256+TL1)*60/16;//计算速度,每周产生16个脉冲

display_val(v);//显示速度

}

}

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

函数功能:

定时器T0的中断服务函数

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

voidTime0(void)interrupt1using1//定时器T0的中断编号为1,使用第1组工作寄存器

{

count++;//T0每中断1次,count加1

if(count==20)//若累计满20次,即计满1秒钟

{

flag=1;//计满1秒钟标志位置1

count=0;//清0,重新统计中断次数

}

TH0=(65536-46083)/256;//定时器T0高8位重新赋初值

TL0=(65536-46083)%256;//定时器T0低8位重新赋初值

}

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

结束

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

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

汇诚科技

实现功能:

传感器判断程序

使用芯片:

AT89S52

晶振:

11.0592MHZ

波特率:

9600

编译环境:

Keil

作者:

zhangxinchun

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

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

*************************程序说明************************************

1、VCC接电源正极

2、GND接电源负极

3、OUT接单片机P2.0口

功能简介:

当传感器接收到信号时,传感器输出低电平,单片机IO口P2.0检测到信号后,单片机IO口P1.0输出低电平

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

#include//库文件

#defineucharunsignedchar//宏定义无符号字符型

#defineuintunsignedint//宏定义无符号整型

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

I/O定义

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

sbitLED=P1^0;//定义单片机P1口的第1位(即P1.0)为指示端

sbitOUT=P2^0;//定义单片机P2口的第1位(即P2.0)为传感器输出信号的输入端

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

主函数

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

voidmain()

{

while

(1)//无限循环

{

LED=1;//熄灭P1.0口灯

if(OUT==0)//当传感器检测到磁场时,执行条件函数

{

LED=0;//点亮P1.0口灯

while(!

OUT);

}

}

}

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

结束

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

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

实现功能:

霍尔传感器计数应用仿真程序

使用芯片:

AT89S52

晶振:

11.0592MHZ

波特率:

9600

编译环境:

Keil

作者:

zhangxinchun

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

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

*************************程序说明************************************

1、VCC接电源正极

2、GND接电源负极

3、OUT接单片机P3.2口

4、共阳数码管

功能简介:

当传感器检测到磁场信号时,传感器输出信号由高电平跳变到低电平

输出,单片机IO口P3.2检测到信号后,数码管显示P3.2口输入的计数。

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

#include//库文件

#defineucharunsignedchar//宏定义无符号字符型

#defineuintunsignedint//宏定义无符号整型

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

初始定义

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

codeucharseg7code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码数码管字跟

ucharwei[4]={0XEf,0XDf,0XBf,0X7f};//位的控制端

uintdisplay_date;

uintdispcount;

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

延时函数

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

voiddelay(uchart)

{

uchari,j;

for(i=0;i

{

for(j=13;j>0;j--);

{;

}

}

}

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

显示函数

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

voidLed(intdate)//显示函数

{

/*****************数据转换*****************************/

uintz,x,c,v;

z=date/1000;//求千位

x=date%1000/100;//求百位

c=date%100/10;//求十位

v=date%10;//求个位

P2=0XFF;

P0=seg7code[z];

P2=wei[0];

delay(80);

P2=0XFF;

P0=seg7code[x];

P2=wei[1];

delay(80);

P2=0XFF;

P0=seg7code[c];

P2=wei[2];

delay(80);

P2=0XFF;

P0=seg7code[v];

P2=wei[3];

delay(80);

P2=0XFF;

}

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

中断函数外部中断0

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

voidExtInt0()interrupt0//中断服务程序

{

dispcount++;//每按一次中断按键,计数加一

if(dispcount==9999)//计数范围0-9999

{dispcount=0;}

}

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

主函数

********************

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2