霍尔传感器磁性传感器原理图PCB图及例程.docx
- 文档编号:5570772
- 上传时间:2022-12-27
- 格式:DOCX
- 页数:37
- 大小:1.17MB
霍尔传感器磁性传感器原理图PCB图及例程.docx
《霍尔传感器磁性传感器原理图PCB图及例程.docx》由会员分享,可在线阅读,更多相关《霍尔传感器磁性传感器原理图PCB图及例程.docx(37页珍藏版)》请在冰豆网上搜索。
霍尔传感器磁性传感器原理图PCB图及例程
霍尔传感器使用说明书
简要说明:
一、长尺寸:
32mmX宽11mmX高20mmﻫ二、主要芯片:
LM393、3144霍尔传感器
三、工作电压:
直流5伏ﻫ四、特点:
1、具有信号输出指示。
ﻫ2、单路信号输出。
3、输出有效信号为低电平。
4、灵敏度可调(精调)。
5、有磁场切割就有信号输出
6、电路板输出开关量!
(可直接接单片机)
7、可用于电机测速/位置检测等场合ﻫ
适用场合:
单片机学习、电子竞赛、产品开发、毕业设计。
。
。
【图片展示】
【与单片机连接测试程序】
/********************************************************************
汇诚科技
实现功能:
此版配套测试程序
使用芯片:
AT89S52
晶振:
11.0592MHZ
波特率:
9600
编译环境:
Keil
作者:
zhangxinchun
淘宝店:
汇诚科技
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/
/********************************************************************
说明:
1、当测量浓度大于设定浓度时,单片机IO口输出低电平
*********************************************************************/
#include
#defineucharunsignedchar//宏定义无符号字符型
#defineuint unsignedint//宏定义无符号整型
/********************************************************************
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 sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P2^1;//读写选择位,将RW位定义为P2.1引脚 sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚 sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚 unsignedcharcodedigit[ ]={"0123456789"}; //定义字符数组显示数字 unsignedintv;//储存电机转速 unsignedcharcount; //储存定时器T0中断次数 bit flag; //计满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) { unsigned chari; for(i=0;i<n;i++) delay1ms(); } /***************************************************** 函数功能: 判断液晶模块的忙碌状态 返回值: result。 result=1,忙碌;result=0,不忙 ***************************************************/ unsignedcharBusyTest(void) { bit result; ﻩRS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; //E=1,才允许读写 _nop_(); //空操作 _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间ﻩ result=BF; //将忙碌标志电平赋给result E=0; //将E恢复低电平 returnresult; } /***************************************************** 函数功能: 将模式设置指令或显示地址写入液晶模块 入口参数: dictate ***************************************************/ void WriteInstruction (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(unsigned char x) { WriteInstruction(x|0x80);//显示位置的确定方法规定为"80H+地址码x" } /***************************************************** 函数功能: 将数据(字符的标准ASCII码)写入液晶模块 入口参数: y(为字符常量) ***************************************************/ voidWriteData(unsignedchar y) { 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(unsigned intx) { 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 )interrupt 1using 1//定时器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<reg52.h> //库文件 #defineucharunsignedchar//宏定义无符号字符型 #defineuintunsignedint//宏定义无符号整型 /******************************************************************** I/O定义 *********************************************************************/ sbit LED=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 *********************************************************************/ /******************************************************************** *************************程序说明**********************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 霍尔 传感器 磁性 原理图 PCB 例程