用单片机设计的测速表源程序
测量转速,使用霍尔传感器,被测轴安装有12只磁钢,即转轴每转一周,产生12个脉冲,要求将转速值(转/分)显示在数码管上。
程序如下:
DISPBUFEQU5AH ;显示缓冲区从5AH开始
SecCounEQU59H
SpCounEQU57H;速度计时器单元57H和58H,高位在前(57H单元中)
CountEQU56H;显示时的计数器
SpCalcbit00h;要求计算速度的标志
HiddenEQU16;消隐码
ORG0000H
AJMPSTART
ORG1BH
JMPTIMER1;定时中断1入口
ORG30H
START:MOVSP,#5FH;设置堆栈
MOVP1,#0FFH
MOVP0,#0FFH
MOVP2,#0FFH;初始化,所有显示器、LED灭
MOVTMOD,#00010101B;定时器T1工作于方式1,定时器0工作方式1MOVTH1,#HIGH(65536-4000)
MOVTL1,#LOW(65536-4000)
SETBTR1
SETBET1;开定时器1中断
SETBEA
LOOP:JNBSpCalc,LOOP;如果未要求计算,转本身循环
;标号: MULD 功能:双字节二进制无符号数乘法
;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MOVR2,SpCoun
MOVR3,SpCoun+1
MOVR6,#0
MOVR7,#5;测得的数值是每秒计数值,转为每分转速(每一转测12次,故乘5而非60)
CALLMULD
;标号: HB2 功能:双字节十六进制整数转换成双字节BCD码整数
;入口条件:待转换的双字节十六进制整数在R6、R7中。
;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
;影响资源:PSW、A、R2~R7 堆栈需求: 2字节
MOVA,R4
MOVR6,A
MOVA,R5
MOVR7,A;将乘得的结果送R6R准备转换,这里结果不可能超过2字节
CALLHB2
CBCD:
MOVDISPBUF,R3;最高位
MOVA,R4;
ANLA,#0F0H;去掉低4位
SWAPA;将高4位切换到低4位
MOVDISPBUF+1,A
MOVA,R4
ANLA,#0FH
MOVDISPBUF+2,A
MOVA,R5
ANLA,#0F0H
SWAPA
MOVDISPBUF+3,A
MOVA,R5
ANLA,#0FH
MOVDISPBUF+4,A
CLRSpCalc;清计算标志
JMPLOOP
;主程序到此结束
TIMER1:PUSHACC;ACC入栈
PUSHPSW;PSW入栈
SETBRS0;工作区1
JNBTR0,SETTR0;如果T0未运行,则开启T0
JMPGO1
SETTR0:
SETBTR0
GO1:
INCSecCoun;秒计数器加1
MOVA,SecCoun
CJNEA,#251,Go2;如果未到1s则转
CLRTR0;1s到了,则停止T0的运行
MOVSpCoun,TH0
MOVSpCoun+1,TL0;读取计数值
CLRA
MOVTH0,A
MOVTL0,A;清计数器
SETBSpCalc;要求主程序计算速度
MOVSecCoun,#0;清秒计数器
Go2:
INCCOUNT ;用于显示的计数器
MOVA,COUNT
CLRC
SUBBA,#6
JZN1
JMPN2
N1:MOVCOUNT,#0
N2:MOVA,#DISPBUF
ADDA,COUNT
MOVR0,A;指向当前要显示的显示缓冲区
MOVA,@R0;取第一个待显示数
MOVDPTR,#DISPTAB;字形表首地址
MOVCA,@A+DPTR ;取字形码
MOVP0,A;将字形码送P0位(段口)
MOVA,COUNT
MOVDPTR,#BitTab;字位表首地址
MOVCA,@A+DPTR
ORLP2,#11111100B
ANLP2,A
MOVTH1,#HIGH(65536-4000)
MOVTL1,#LOW(65536-4000)
POPPSW
POPACC
RETI
BitTab:DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
……其他数学运算程序(略)
51单片机直流电机测速Proteus仿真
今天准备分享的仿真是基于51单片机的直流电机测速Proteus仿真。仿真是在Proteus7.7软件下创建的,有需要的小伙伴下载后可以使用比7.7高的版本打开仿真源文件。
接下来上仿真静态图。
仿真电路图
老规矩首先还是分析一下电路。该仿真使用L298来驱动直流电机。L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是其输出电流增大,功率增强。其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,步进电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制步进电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N的实物图是长这个样子的。
L298N
从仿真中具有电机驱动芯片可以看出来,这个仿真不但可以测速,还可以控制电机的转速。那剩下的部分就是人机交互接口了。显示部分使用的是PG160128A,液晶显示点阵是160X128的,可以显示更加丰富的内容。仿真中的输入设备为4X4矩阵键盘。剩下的就是虚拟示波器等测量工具。仿真电路很简单,接下来运行仿真看一下动态效果。
动态仿真
上电以后显示屏上介绍了该如何操作仿真进行测量。
显示器显示内容
仿真驱动部分
仿真可以控制电机正反转及PWM调速。这一部分使用的是单片机的P1.0和P1.1引脚。其中P1.0引脚主要作用是控制直流电机的正反转。仿真中P1.0引脚与L298的一个输入端口相连,同时该引脚经过反相器后去另外一个输入引脚相连,与输入引脚相对应的输出引脚直接与电机的电源相连,这样通过改变P1.0的状态就可以实现直流电机正反转的控制。而P1.1脚L298的A通道使能端口相连,该仿真中通过对P1.1引脚进行通断控制实现直流电机的调速。
仿真中将直流电机的脉冲输出端口与单片机的P3.4引脚相连,该引脚是定时器0的外部输入引脚。显示软件部分是使用定时器0完成的计数功能。仿真测得的转速与实际转速还是比较接近的。整理来说仿真效果还是不错的,仿真运行也是比较流畅的。
最后贴一下程序截图。程序使用的是KEIL C51UV2创建的工程,可以使用高一点的版本打开。主要包括两个部分,一个是主程序部分,一个是显示驱动部分。程序比较简单,不复杂,但是注释部分较少,有需要的小伙伴可以下载参考。
部分程序
如果有需要该仿真和程序的朋友可私信。该仿真源于网络。
相关问答
基于 单片机 的霍尔 测速 系统设计?1.定时器定时时间不够1s。可改为:一次定时50ms,中断20次2.关于转速计算问题:如果测速齿轮上贴2个霍尔片或测速齿轮上设置2个齿,则转速计算都要除以21.定时...
Proteus 单片机 控制直流电机 测速 部分74LS386编码电机motor-encoder?90度的脉冲,每旋转一圈输出多少个脉冲可...可以参考之前我的回答:proteusmotor-encoder有五根线,左右两侧两根线接电源。下面三根线,左右两侧两根线输出相位...
光栅尺如何与 单片机 连接?你说的开关型霍尔传感器吧?要看传感器输出电压幅值,如果电压较低,采用比较器放大到单片机电源电压,如果电压较高,采用分压电阻分压至单片机电源电压,如果高...
杏耀登陆线路 测速 1下载_杏耀登陆线路 测速 1游戏平台APPv6.0.1...杏耀登陆线路测速1安卓版手机软件下载,提供【杏耀登陆线路测速1】软件免费下载到安卓手机:《杏耀登陆线路测速1》累计玩家已达2亿,集结庆典超稀有福利整月送!…
我一朋友想要咨询一下律师关于基于 单片机 的超速报警是什么意...超速报警软件包含了GPS测速、超速报警、语音报速、记录行进轨迹、查看历史轨迹、记录出行时间、记录出行里程等功能。超速报警软件包含了GPS测速、...
pwm控制电机转速,怎样能够计算出电机的理论转速值呢?谢谢了?首先要知道,无人机使用的pwm值在500-2500之间,而常用的值在1000-2000之间。一般遥控器的输出也都在1000–2000左右,而每个遥控器生产厂家又有微小的差异,比...
在线的童鞋 有人知道不,迁安编程联系方式,编程专不专业??[回答]传统的同步编程是一种请求响应模型,调用一个方法,等待其响应返回.异步编程就是要重新考虑是否需要响应的问题,也就是缩小需要响应的地方。因为越快...
太阳能灯遥控器上的auto是什么开关_车坛1、随机设置同时照明、分时照明、分时计时等多种工作模式,具有负载过流、短路保护。2、基于单片机的太阳能路灯控制器的设计可以实现12V和24V电池的...
怎样才能学好电气编程?学习PLC程序编程时,要完成一套有用的程序的编写,不是一蹴而就的,需要反复试验和修改。编程时自己程序编写思路流畅,编完后调试也很好,但是到了现场可能程序...然...
未来机器人战舰会具备哪些主流技术?如图,美军在海上展开“海上猎人”无人艇测试,一个海上无人战舰的雏形,似乎有模有样,已然形成。仔细扒拉一下美国海军无人机器,还有水下无人潜航器,战舰可携...霸...