⑴ 只用一个单片机可以识别光栅尺的位移和方向么
是的,可以识别,但是由于单片机的中断采集速率较低(<10khz),所以,采集的速度不高,光栅尺不可移动太快了,否则处理不了太多的事务;其位移肯定是没有问题的,方向就判别A\B两相哪相先动作就知道了。
⑵ 单片机怎么检测上升沿与下降沿
您是问硬件的方式?还是软件的方式?
如果是硬件的方式,那么,各种单片机很不相清败同,需要具体看它的资料。
一般来说,某些引脚,例如:外中断引脚、定时器的计数触发引脚、捕获引脚等等,都可以用来检测上升沿与下降沿。
以捕获(有的单片机资料如80196,将它称作“高速输入”)引脚为例:
捕获引脚可以与某个定时器相关羡正睁联,在捕获引脚上遇到上升沿或下降沿时,硬件就自动记录下当时定时器的读数,并产生中断请求。您可以在中断服务程序中做所需的相应操作。
至于是上升沿捕获,还是下降沿捕获,还是二者都能捕获,可以由用户自己选择配置。
如果是用软件的方式来检测,那道理就简单了。用兄岁查询方式:只要将要检测的信号接到某个输入端口的某个位,在程序中反复读取该位的输入,一旦遇到“上次是0此次是1”的情况,就说明检测到了上升沿,遇到“上次是1此次是0”的情况,就说明检测到了下降沿。
⑶ 单片机根据输出数据的低位在前还是高位在前去和判断移位方向
嗯大概明白你的意思,低位在前就左移,高位在前就右移。
⑷ 用51单片机汇编语言检测上升沿和下降沿
这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别io端口上升沿和下降沿中断,且方式不止一种。
sbit
io_inp=p2^1;输入端
bit
old_bit;输入端电平记忆
unsigned
char
low_high;上升下降沿标志,0=无变化,1=上升沿,2、下降沿
void
io_rest(void)
{
if(old_bit=!io_inp)
{
old_bit=io_inp;
if(io_inp=1)
low_high=1;
else
low_high=2;
}
}
void
main(void)
{
old_bit=io_inp=p2^1;
while(1)
{
low_high=0;
io_rest(void);
//在此应用
}
}
(4)单片机怎样判断轴向位移扩展阅读:
直接使用肢猛汇编指令编写单片机程序,对硬件的控制更加直接,可以直接操作物理地址,寄存器,端口等;历坦桥其它更高级的语言(如:C语言)对硬件的控制是依赖于类库来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。
C语言只是为了方便编写,与机器打交道的信山其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。