
霍尔计数实验指导书.doc
8页霍尔接近开关计数实验指导书 一、 实验目的1. 在理论学习的基础上,深入体会霍尔传感器的应用;2. 体会小作品制作过程 二、 实验原理 霍尔元件是一种基于霍尔效应的磁传感器,已发展成一个品种多样的磁传感器产品族,并已得到广泛的应用按照霍尔器件的功能可将它们分为:霍尔线性器件和霍尔开关器件前者输出模拟量,后者输出数字量,其特性如图1所示a)线性型 (b)开关型图1. 霍尔集成电路的输出特性 如图2所示,在一块通电的半导体薄片上,加上和片子表面垂直的磁场B,在薄片的横向两侧会出现一个电压,如图2中的VH,这种现象就是霍尔效应图2.霍尔效应原理图这种现象的产生,是因为通电半导体片中的载流子在磁场产生的洛仑兹力的作用下,分别向片子横向两侧偏转和积聚,因而形成一个电场,称作霍尔电场霍尔电场产生的电场力和洛仑兹力相反,它阻碍载流子继续堆积,直到霍尔电场力和洛仑兹力相等这时,片子两侧建立起一个稳定的电压,这就是霍尔电压 本实验中使用型号为NJK-5002的NPN,常开霍尔接近开关。
其电气连接图如图3所示当检测到磁场时,信号输出线有信号输出,没有磁场时,信号消失,这样会有一下降沿,经降压处理后可作为外部中断输入,进行计数本实验中,信号处理部分仅用电阻分压即可图3. NJK-5002型霍尔接近开关电气连接图 单片机引脚功能见图6中电路74LS04和7805引脚图如图4;四位共阴极二极管管脚如图5所示 图4.霍尔开关示意图、74LS04和7805引脚图图5.四位共阴极二极管管脚图三、 实验仪器与设备1. 10k欧姆电阻 5个2. 680欧姆电阻 1个3. 510欧姆电阻 2个4. 12V直流电源插座 1个5. 拔动开关 1个6. 47uf电容 2个7. 0.1uf电容 1个8. 30皮电容 1个9. 7805稳压芯片 1个10. 发光二极管 1个11. 常开按钮 1个12. 11.0592M晶振 1个13. AT89S52单片机 1个14. 74LS04非门芯片 1片15. 但片机插座及非门插座 各1个16. 四位数码管 1个17. 万能板 1片18. 引脚插座及导线 若干19. 电脑、单片机开发板及相应开发软件 四、 实验步骤1. 按需求绘制电路原理图,如图6所示。
图6.霍尔计数电路原理图2. 购买需要的元器件 本实验中所买数码管为共阴极二极管3. 按原理图焊接电路 在图6中,信号处理和电源指示部分没有画出信号处理部分用电阻分压即可;电源指示电路把一个电阻的发光二极管串在一起,接到7805的输出管脚上4. 检测电路检测硬件部分,特别注意是否有虚焊、短路或焊错的地方5. 编程,调试在编程过程中,注意功能从简单到复杂,不断改正五、 程序1. 个位计数程序本程序已经调试好,但最大计数量只有9,也即只有个位计数功能 FIRST EQU 21H ;定义个位 ORG 0000H ;程序从0地址开始 LJMP START ;跳到STRAT处执行 ORG 0003H ;INT0中断向量 LJMP INT_0 ;跳至INT_0处执行START: SETB EA ;开中断 SETB IT0 ;中断0允许P3.2口 SETB EX0 ;负跳变触发CLEAR: ;初始化显示0000 MOV FIRST,#0SHOW: ;显示子程序 MOV DPTR,#TAB ;DPTR指向编码表位置 MOV A,FIRST ;将FIRST的内容复制到ACC MOVC A,@A+DPTR ;根据ACC的值取出编码表中的编码 MOV P2,A ;由P2口输出ACC的内容 clr p0.1 ;清空p0.1 clr p0.2 ; 清空p0.2 clr p0.0 ; 清空p0.0 setb P0.3 ;置位P0.3 LCALL DELAY ;调用延时子程序 LJMP SHOW ;调用显示子程序INT_0: ;中断子程序 CLR EA INC FIRST ;FIRST的内容加1 MOV A,FIRST ;将FIRST的内容复制到ACC EXIT: ;跳出中断子程序 SETB EA RETI ;返回主程序DELAY: ;延时子程序 MOV R7,#1 ;R1加载1次数D1: MOV R6,#250 ;R6加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1执行R7次 RET ;返回主程序TAB: ;编码表 DB 0x3F,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ;编码 END ;程序结束2. 四位计数程序。
本程序能执行计数到千位,最大计数量为9999但因时间关系,暂未调试成功/***********************************************//*名称:4位数码管中断计数器程序(INT_0负触发) /*功能:10000进制计数器,P2口为数码管数据线;P0.0-P0.3为位选线 /***********************************************/ FIRST EQU 21H ;定义个位 SECOND EQU 22H ;定义十位 THIRD EQU 23H ;定义百位 FOURTH EQU 24H ;定义千位 ORG 0000H ;程序从0地址开始 LJMP START ;跳到STRAT处执行 ORG 0003H ;INT0中断向量 LJMP INT_0 ;跳至INT_0处执行START: SETB EA ;开中断 SETB IT0 ;中断0允许P3.2口 SETB EX0 ;负跳变触发CLEAR: ;初始化显示0000 MOV FIRST,#0 MOV SECOND,#0 MOV THIRD,#0 MOV FOURTH,#0 ;将0复制到以R0为地址的寄存器SHOW: ;显示子程序 MOV DPTR,#TAB ;DPTR指向编码表位置 MOV A,FIRST ;将FIRST的内容复制到ACC MOVC A,@A+DPTR ;根据ACC的值取出编码表中的编码 MOV P2,A ;由P2口输出ACC的内容 setb P0.3 ;置位P0.3 LCALL DELAY ;调用延时子程序 clr P0.3 ;清零P0.3 /*显示个位*/ MOV DPTR,#TAB ;DPTR指向编码表位置 MOV A,SECOND ;将SECOND的内容复制到ACC MOVC A,@A+DPTR ;根据ACC的值取出编码表中的编码 MOV P2,A ;由P2口输出ACC的内容setb P0.2 ;置位P0.2 LCALL DELAY ;调用延时子程序 clr P0.2 ;清零P0.2/*显示十位*/ MOV DPTR,#TAB ;DPTR指向编码表位置 MOV A,THIRD ;将THIRD的内容复制到ACC MOVC A,@A+DPTR ;根据ACC的值取出编码表中的编码 MOV P2,A ;由P2口输出ACC的内容 setb P0.1 ;置位P0.1 LCALL DELAY ;调用延时子程序 clr P0.1 ;清零P0.1/*显示百位*/; MOV DPTR,#TAB ;DPTR指向编码表位置 MOV A,FOURTH ;将FOURTH的内容复制到ACC MOVC A,@A+DPTR ;根据ACC的值取出编码表中的编码 MOV P2,A ;由P2口输出ACC的内容setb P0.0 ;置位P0.0 LCALL DELAY ;调用延时子程序 clr P0.0 ;清零P0.0/*显示千位*/ LJMP SHOW ;调用显示子程序INT_0: ;中断子程序 CLR EA INC FIRST ;FIRST的内容加1 MOV A,FIRST ;将FIRST的内容复制到ACC CJNE A,#10,EXIT ;如果A不等于10,则跳至L1处执行 MOV FIRST,#00H ;将0复制到FIRST INC SECOND ;将SECOND的内容加1 MOV A,SECOND ;将SECOND的。
