向高手请教一个单片机算法问题

作者&投稿:晨屈 (若有异议请与网页底部的电邮联系)
关于单片机算法的问题~

很简单的算式,没有什么好研究的。

每八个脉冲,代表 45cm。每一个脉冲,代表 45 / 8 (cm)。

设 n 为脉冲数,则:长度(cm) = n * 45 / 8。

设 cm 为厘米数,那么,每来一个新脉冲,厘米数就加上 45 / 8,
即:cm +=5.625。
(或用脉冲数来计算:cm = n * 45 / 8。)

在累计 cm 的过程中,如果发现 cm 大于 100,就说明已经攒够了 1 米。

当 cm 累计到了 200,300,..500,这就判断可以出,已经到了 2米,3米,..5米。

按照这种计算方法,精度可达《厘米》的级别。

在1602上显示的都是字符格式,你必须把每个位的数字取出来,然后加上48之后 才能送显。这样就能和ASCII码对应上了。

把PWM经过3级RC电路滤波之后,再用运放跟随一下,得到的就是平稳的直流电了,而且其电压幅度和占空比成正比,将这直流电压输入单片机的ADC,ADC转换得到的数值运算一下就是占空比信息,比你用IO端口去控制测量简单多了。



弄一个定时器T,假设T的中断周期时间为1ms(越小精度越高,但CPU占用率也高)。
在中断程序里,检测IO,用两个变量CONTH,CONTL。
当IO为高时,CONTH++;B=CONTL;CONTL=0;
当IO为低时,CONTL++;A=CONTH;CONTH=0;
那么A就是一个周期内高电平时间,B为低电平时间
周期T=A+B
占空比=A/T

如果电机转速高的话,单片机直接采集方波占空比来计算的话精度不够高的,用Ad比较好些。你描述的好像是开环控制,Pwm方波来自于控制器外部?

我想这个可以用单片机检测高电平与低电平的次数,一般检测一个周期或者多个周期。用他们的比值来计算。


请教单片机高手一个简单的问题
1,先把LPC1114的PIO10的寄存器设置为:GPIO输出,寄存器地址在datasheet有专门讲的,你也可以在DEMO板的代码中找到。注意:每一个GPIO对应一个寄存器,一定要找到该地址。2,然后你在main函数里这样写就好了。while(1){ PIO1.0=0;delay(1000ms);PIO1.0=1;delay(1000ms);} 这样D1灯就会每1秒闪...

请教一个有关单片机算法问题
您是想获得每5ms就计算一次,出一次数,结果发现算法执行的时间比间隔还要长,根本做不到5ms出一个数?这个没办法,优化算法或者改动需求,或者用更牛的CPU,比如STM32F4 series或者动用DSP。如果不管算法执行时间的话,如同别人所说,用定时器中断,算法在定时器中断函数里跑。进中断函数之后就把定时器...

请教一个单片机的问题
改成判断下降沿就可以了啊.给你个程序.但我觉得还不够好,你的CL()函数还改下,不要用CL(void)了,传个标示进去吧,可以实现按一下亮,再按下灭.自己改吧:)void keyscan_falling(){ flag=0;if(P3==0xFF)flag=1;\/\/delay(1); \/\/去抖(可选)if(flag&&(P3==0xFD))cl();} void ...

请教一个C51单片机的问题
TTL负载就是指以TTL电压为额定电压的元器件(TTL电压一般是指3.8V到5V电压,以及0-0.3V的电压),比如额定电压为5V的数码管,那么这个数码管就是TTL负载。P0口有8个脚,而且内部是CMOS电路,虽然它可以带8个TTL负载,实际要加上拉电阻。说白了或则笼统的说,TTL负载就是额定电压不超过5V的负载。...

请教一个单片机和CPLD芯片的问题
单片机可以理解成简单的计算机,可以在上面运行简单的程序。CPLD可以理解成较大规模的逻辑电路,具体逻辑可以指定。

请教各位高手一个51单片机中断无法进入问题
因为第一次进入中断子程序后,执行到这条:CJNE A ,#0000H , CUN1 就跳到CUN1:执行。以后,程序始终没有执行RETI这条指令,所以不可能第二次再进入中断。

请教一个简单的单片机电路设计
发光二极管按照点阵方式排列既可以,通过点阵方式连接编程控制点亮,否则单片机管脚不够用,也可以用三极管放大电流串联,不过100多个LED个人感觉不怎么好。发声装置要编程,查一下每个音调频率,然后组合成音乐即可,主要还是要编程。开关接单片机的外部中断,图案的亮灭只要在程序中控制就好,当音调改变时候给LED...

请教c51单片机,c语言编程,关于指示灯定时闪烁的
用定时中断控制闪烁。时间间隔则由主程序,根据按键次数来变更。程序可见:http:\/\/hi.baidu.com\/%D7%F6%B6%F8%C2%DB%B5%C0\/blog\/item\/d92cc98651bfef3bc75cc387.html 仿真实验截图如下:

请教一个单片机型号的问题
Atmel现在出了AVR32,算是32位单片机。ARM,其中ARM7,9,10是公开的32位处理器内核,很多公司都有基于ARM的单片机产品。目前国内应用最广泛的所三星和菲利普。TI现在已经把TMS320C2000系列的DSP划拨到单片机的行列,而且新出的Piccolo系列的产品从价格上已经与单片机相差无几,也可以算是32位单片机的一种...

[请教高手]单片机怎么实现产生随机数?
给你一个超强例子: 欢迎到卡卡空间: http:\/\/hi.baidu.com\/woodking 主 题: 线性叠加伪随机数函数 ; 关 键 词: 随机数,8位单片机,random,8 bit mcu ; 参考资料: 1.<> ; by Bruce Clark, 7 Jun 2004 ; 2.<> ; by Donald Knuth ; 8位单片机很多地方需要随机数,比如游戏的洗牌,可...

赣州市18252648046: 向高手请教一个单片机算法问题 -
任枝柳酚: 弄一个定时器T,假设T的中断周期时间为1ms(越小精度越高,但CPU占用率也高).在中断程序里,检测IO,用两个变量CONTH,CONTL.当IO为高时,CONTH++;B=CONTL;CONTL=0;当IO为低时,CONTL++;A=CONTH;CONTH=0;那么A就是一个周期内高电平时间,B为低电平时间周期T=A+B占空比=A/T

赣州市18252648046: 单片机中的PID算法 -
任枝柳酚: PID算法 下面对控制点所采用的PID控制算法进行说明. 控制点目前包含三种比较简单的PID控制算法,分别是:增量式算法,位置式算法,微分先行. 这三种PID算法虽然简单,但各有特点,基本上能满足一般控制的大多数要求. 1) PID增量...

赣州市18252648046: 请教一个有关单片机算法问题 -
任枝柳酚: 您是想获得每5ms就计算一次,出一次数,结果发现算法执行的时间比间隔还要长,根本做不到5ms出一个数?这个没办法,优化算法或者改动需求,或者用更牛的CPU,比如STM32F4 series或者动用DSP. 如果不管算法执行时间的话,如同别人所说,用定时器中断,算法在定时器中断函数里跑.进中断函数之后就把定时器和中断都关掉,算法执行完,在出中断函数之前,再把定时器初始化了,重新打开定时器和中断.

赣州市18252648046: 我是单片机入门菜鸟,想请教单片机高手一个问题! -
任枝柳酚: sfr P1=ox90; sfr 是指定一个字节;sbit P1_1=ox91; sbit 是指定一个位.它们不是一回事,别放在一起讨论.再去看看单片机的书,仔细看看“位地址”.看明白了硬件,再来钻研软件.

赣州市18252648046: 关于单片机算法的问题
任枝柳酚: 怎么也精确不了,编码器分辨率太低,照着1米1000个脉冲就精确了,要不然这个怎么也不好精确. 软件能做的,就是 n赋个初值1 dd是当前输入值 m是计的米数 m赋值0 if(8*n/45<dd*100) { n=n+1; m=n-1;} 这样就可以了!

赣州市18252648046: 请教单片机高手一个简单的问题 -
任枝柳酚: 1,先把LPC1114的PIO10的寄存器设置为:GPIO输出,寄存器地址在datasheet有专门讲的,你也可以在DEMO板的代码中找到.注意:每一个GPIO对应一个寄存器,一定要找到该地址.2,然后你在main函数里这样写就好了.while(1){PIO1.0=0;delay(1000ms);PIO1.0=1;delay(1000ms);}这样D1灯就会每1秒闪一次!

赣州市18252648046: PID控制算法,单片机实现的办法里面感觉有2个比较为难的问题,希望高手提示一下 -
任枝柳酚: 最短多长时间达到目标值,是由执行机构来决定的.但如果控制软件做不好就会增加控制时间.在稳态附近剧烈的震荡是由于PID参数不合适或电路有问题造成的. 首先要排除电路上的问题,例如测量转速如果是用数字方法测试时要确保不能有...

赣州市18252648046: 单片机汇编程序一个很奇怪的问题,请高手指点 -
任枝柳酚: 这里指令 是相同的 关键是执行 减法指令时的 C 为1还是 C 为0SUBB A,#10 ; A=10 C=0 为A=A-10-1 结果 A=0FFH C=1 SU...

赣州市18252648046: 单片机编程问题,请高手回答,紧急~ -
任枝柳酚: 你好!很高兴能替你解决这个问题,但从硬件上看你所接的只是缓冲器而不是反向器吧!少了一个圈嘛!但一字节的数据可能需要三个数码管来显示哦!0-256嘛!这样的话那我就只显示最低位吧,或假设20H数据小于10吧.那我就用C来写一个...

赣州市18252648046: 51单片机减法的问题,高手帮忙啊 -
任枝柳酚: 先算出10001的16进制数:2711H MOV R2,#11H ;低8位 MOV R3,#27H ;高8位 CLR C ;清CY位的内容,减法时需要用它来算借位 MOV A,R0 ;送R0的值到A SUBB A,R2 ;低8位进行减运算,值送A,如果需要借位,CY位置1 MOV R0,A ;将A中的结果送回R0 MOV A,R1 ;送R1的值到A SUBB A,R3 ;高8位进行减运算,值送A,如果CY位为1,自动减1 MOV R1,A ;将A中的结果送回R1 SJMP $ ;结束

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网