霍尔传感器磁性传感器原理图PCB图及例程.docx
- 文档编号:9992774
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:40
- 大小:1.16MB
霍尔传感器磁性传感器原理图PCB图及例程.docx
《霍尔传感器磁性传感器原理图PCB图及例程.docx》由会员分享,可在线阅读,更多相关《霍尔传感器磁性传感器原理图PCB图及例程.docx(40页珍藏版)》请在冰豆网上搜索。
霍尔传感器磁性传感器原理图PCB图及例程
霍尔传感器使用说明书
简要说明:
一、长尺寸:
32mmX宽11mmX高20mm
二、主要芯片:
LM393、3144霍尔传感器
三、工作电压:
直流5伏
四、特点:
1、具有信号输出指示。
2、单路信号输出。
3、输出有效信号为低电平。
4、灵敏度可调(精调)。
5、有磁场切割就有信号输出
6、电路板输出开关量!
(可直接接单片机)
7、可用于电机测速/位置检测等场合
适用场合:
单片机学习、电子竞赛、产品开发、毕业设计。
。
。
【图片展示】
【与单片机连接测试程序】
/********************************************************************
汇诚科技
实现功能:
此版配套测试程序
使用芯片:
AT89S52
晶振:
11.0592MHZ
波特率:
9600
编译环境:
Keil
作者:
zhangxinchun
淘宝店:
汇诚科技
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/
/********************************************************************
说明:
1、当测量浓度大于设定浓度时,单片机IO口输出低电平
*********************************************************************/
#include
#defineucharunsignedchar//宏定义无符号字符型
#defineuintunsignedint//宏定义无符号整型
/********************************************************************
I/O定义
*********************************************************************/
sbitLED=P1^0;//定义单片机P1口的第1位(即P1.0)为指示端
sbitDOUT=P2^0;//定义单片机P2口的第1位(即P2.0)为传感器的输入端
/********************************************************************
延时函数
*********************************************************************/
voiddelay()//延时程序
{
ucharm,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
主函数
*********************************************************************/
voidmain()
{
while
(1)//无限循环
{
LED=1;//熄灭P1.0口灯
if(DOUT==0)//当浓度高于设定值时,执行条件函数
{
delay();//延时抗干扰
if(DOUT==0)//确定浓度高于设定值时,执行条件函数
{
LED=0;//点亮P1.0口灯
}
}
}
}
/********************************************************************
结束
*********************************************************************/
【与单片机连接测速参考程序】
/********************************************************************
汇诚科技
实现功能:
电机转速表设计
使用芯片:
AT89S52
晶振:
11.0592MHZ
波特率:
9600
编译环境:
Keil
作者:
zhangxinchun
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
#include
#include
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};//显示段码数码管字跟 uch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 霍尔 传感器 磁性 原理图 PCB 例程