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

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

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

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

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

汇诚科技

实现功能:

电机转速表设计

使用芯片:

AT89S52

晶振:

11.0592MHZ

波特率:

9600

编译环境:

Keil

作者:

zhangxinchun

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

#include<

reg52.h>

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

intrins.h>

//包含_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;

n;

delay1ms();

判断液晶模块的忙碌状态

返回值:

result。

result=1,忙碌;

result=0,不忙

unsignedcharBusyTest(void)

bitresult;

RS=0;

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

RW=1;

E=1;

//E=1,才允许读写

_nop_();

//空操作

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

result=BF;

//将忙碌标志电平赋给result

E=0;

//将E恢复低电平

returnresult;

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

dictate

voidWriteInstruction(unsignedchardictate)

{

while(BusyTest()==1);

//如果忙就等待

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

RW=0;

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

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

0"

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

P0=dictate;

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

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

//E置高电平

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

指定字符显示的实际地址

x

voidWriteAddress(unsignedcharx)

WriteInstruction(x|0x80);

//显示位置的确定方法规定为"

80H+地址码x"

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

y(为字符常量)

voidWriteData(unsignedchary)

RS=1;

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

P0=y;

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

_nop_();

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

voidLcdInitiate(void)

delay(15);

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

WriteInstruction(0x38);

//显示模式设置:

16×

2显示,5×

7点阵,8位数据接口

delay(5);

//延时5ms ,给硬件一点反应时间

//连续三次,确保初始化成功

WriteInstruction(0x0c);

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

WriteInstruction(0x06);

光标右移,字符不移

WriteInstruction(0x01);

//清屏幕指令,将以前的显示内容清除

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

函数功能:

显示速度提示符

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

voiddisplay_sym(void)

WriteAddress(0x00);

//写显示地址,将在第1行第1列开始显示

WriteData('

v'

);

//将字符常量v写入LCD

='

//将字符常量=写入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列开始显示

r'

//将字符常量r写入LCD

/'

//将字符常量/写入LCD

m'

//将字符常量m写入LCD

i'

//将字符常量i写入LCD

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,重新统计中断次数

//定时器T0高8位重新赋初值

//定时器T0低8位重新赋初值

传感器判断程序

zhangxinchun

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

1、VCC接电源正极

2、GND接电源负极

3、OUT接单片机P2.0口

功能简介:

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

//库文件

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

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

I/O定义

sbitLED=P1^0;

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

sbitOUT=P2^0;

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

主函数

voidmain()

LED=1;

//熄灭P1.0口灯

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

LED=0;

while(!

OUT);

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

3、OUT接单片机P3.2口

4、共阳数码管

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

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

初始定义

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;

t;

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);

P0=seg7code[x];

P2=wei[1];

P0=seg7code[c];

P2=wei[2];

P0=seg7code[v];

P2=wei[3];

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

中断函数外部中断0

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

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

dispcount++;

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

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

{dispcount=0;

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

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

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

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

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