实用制作:电机转速计数器
该电路由AT89C51单片机,CD4511*3为BCD-七段锁存/译码/驱动器,LED共阴数码管,磁敏霍尔元件组成。
电路工作原理:该电路用磁敏元件作为传感器,在无外磁场时,磁敏传感器的输出端OUT输出+4.35V(1电平),当电机转动一圈时,势将带动小磁铁N从磁敏传感器上掠过一次,由于传感器在外加磁场的作用下,输出+0.05V(0电平),INT0在程序中设为边沿触发,这一瞬间变化量将通过INT0送至AT89C51,产生一次中断,使累加器A自动加1,计数一次.电机每转动一圈,产生一次中断,累加器加1,当软件计数器T0定时1S时,把缓冲区的计数值经过BCD调整后送LED显示,LED显示的数值既当前电机每秒钟转速。由于采用软件定时.定时误差值将比常规硬件定时器小得多。
CD4511是BCD-七段LED锁存/译码/驱动器,在LE为低电平时,将加在A,B,C,D输入的数据译成显示器的字段驱动信号,经限流电阻到数码管的字段控制线上。当LE为高电平时,驱动信号被锁存在CD4511的输出端,实现静态显示。因CD4511输出为高电平,应选用共阴极数码管。LCD为工作指示灯,在调试时很有用。本电路的调试分软件和硬件两部分。本人见意先调试硬件传感器是否工作,从LCD的显示就可以看出来.而LED显示部分就要借助软件调试了。请参考ts.asm,该程序可通过仿真器单步执行,如果LED输出显示不是789,那么硬件上一定有问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,请仔细检察。当确信硬件无误后,便可录入main.asm程序清单,仿真调试通过后,就可将程序写到AT89C51中了。至此,该电路
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
完成.其能在0~999转/s范围内对电机转进行正确计数,在很大程度上满足了现实生产中的需要,电路稍为改动一下,还可以扩展为脉冲频率计等,不过这要你自己动脑肋了。
如:调试程序 ts.asm
ORG 0000H
START: MOV R0,#89H
MOV R1,#07H
MOV A,R0
ORL A,#0F0H
MOV P1,A
CLR P1.7
SETB P1.7
MOV A,R0
SWAP A
ORL A,#0F0H
MOV P1,A
CLR P1.6
SETB P1.6
MOV A,R1
ORL A,#0F0H
MOV P1,A
CLR P1.5
SETB P1.5
END
;电机转速计数器程序清单:main.asm
ORG 0000H
LJMP MAIN
ORG 0003H ;INT0中断入口
LJMP js ;INT0=0时--->计数子程序
ORG 000BH ;T0中断入口
LJMP ct ;T0=50ms,--->tc,50ms*20,显示子程序
;***********************************************
MAIN: MOV A,#0H ;初始化INT0
MOV R0,A
MOV R1,A
SETB EX0 ;开外部中断INT0
SETB IT0 ;边沿触发
MOV TMOD,#01H ;T0工作方式1
MOV TL0,#0B0H ;T0低8位初值
MOV TH0,#3CH ;T0高8位初值
MOV IE,#82H ;T0开中断,并开总中断,即SETB EA
SETB TR0 ;启动T0,开始计数!!
MOV R5,#20 ;软件计数器初值,作用即50ms*20
HALT: SJMP $ ;等待中断发生
;************************************************
JS: MOV A ,R0 ;------>INT0中断服务子程序,INT0=0时,
ADD A,#01h
MOV R0,A
MOV A,R1
ADDC A,#00h
MOV R1,A
RETI
;**************************************
CT: DJNZ R5,NEXT ;----->T0中断服务子程序,INC & DISPLAY
CLR EA ;关中断
ACALL BCD
MOV A,R4 ;取低位---->送数码管LCD3
ORL A,#0F0H
MOV P1,A ;将低位数送CD4511
CLR P1.7 ;LE=0,锁存打开.对应的数码管显示
SETB P1.7 ;LE=1,锁存该位
;*****************
MOV A,R4 ;取次低位---->送数码管LCD2
SWAP A
ORL A,#0F0H
MOV P1,A ;将次低位数送CD4511
CLR P1.6 ;LE=0,锁存打开,对应数码管显示
SETB P1.6 ;LE=1,锁存该位
;****************
MOV A,R3 ;取高位数---->送数码管LCD1
ORL A,#0F0H
MOV P1,A ;将高位数送CD4511
CLR P1.5 ;LE=0,锁存打开,对应数码管显示
SETB P1.5 ;LE=1,锁存该位
MOV R5,#20 ;重新赋值
MOV R0,#00H ;R0清0
MOV R1,#00H ;R1清0
SETB EA ;开中断
NEXT: MOV TL0,#0B0H ;重新装初值
MOV TH0,#3CH
RETI
;*********************************
BCD: CLR A
MOV R4,A
MOV R3,A
MOV R7,#10H
LP0: CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
MOV A,R4
ADDC A,R4
DA A ;二-十进制调整
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
DJNZ R7,LP0
RET
;************************************
END