设计与开发

单片机测速程序 用单片机设计的测速表源程序

小编 2024-10-22 设计与开发 23 0

用单片机设计的测速表源程序

测量转速,使用霍尔传感器,被测轴安装有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程序编程时,要完成一套有用的程序的编写,不是一蹴而就的,需要反复试验和修改。编程时自己程序编写思路流畅,编完后调试也很好,但是到了现场可能程序...然...

未来机器人战舰会具备哪些主流技术?

如图,美军在海上展开“海上猎人”无人艇测试,一个海上无人战舰的雏形,似乎有模有样,已然形成。仔细扒拉一下美国海军无人机器,还有水下无人潜航器,战舰可携...霸...

猜你喜欢