‘壹’ 51单片机C语言程序中延时函数delay的原理是什么
原理:只是执行一些所谓的“无实际意义的指令”,如缩放或执行一个int自加,简单地说,就像高中数学中的“乘法原理”一样,很容易迅速增加上面提到的“无意义指令”的数量
关于大小的值:如果是在C语言中,该值不仅与水晶振动、单片机本身的速度,但也与C的编译器,所以,虽然这个值可以精确计算,但大多数情况下,程序员是经验值。
当然,如果你在汇编中编程,情况就不同了,因为每条指令使用一定数量的机器周期,你当然可以根据所有指令使用的总时间来计算特定延迟的总时间。
(1)51单片机为什么要延迟扩展阅读:
定义延迟XMS毫秒的延迟函数
Voiddelay(unsignedintXMS)//XMS表示需要延迟的毫秒数
{
无符号intx,y;
For(x=XMS;X0;X-)
For(y=110;Y”0;Y-);
}
使用:
VoidDelay10us(ucharMs)
{
Uchar数据我;
(;女士“0;------Ms)
对于(I = 26)我> 0;我-);
}
I=[(延迟值-1.75)*12/ms-15]/4
‘贰’ 为什么51单片机要等待几秒才可以正常工作
任何单片机在工作之前都要有个复位过程,复位对单片机来说,是程序还没有开始执行,是在做准备工作。一般的复位只需要5ms的时间。而进行复位只需要将rst引脚加上高电平就可以了。
检查下RST引脚电路,
‘叁’ 用51单片机实现中断,为什么在中断函数中要加延迟,不加连接P3^2和地就不停止,而是产生了延迟的效果
单片机里有个有趣的现象不知道你注意了没有,当你按下一个键的时候,led屏上什么都没有了。
当你持续按住一个键,整个单片机就像断电了一样(或者叫短路了)
所以,按键一般都需要延迟(还有一个作用是防止按键抖动)
还有,代码里没有指定TMOD的值,这个习惯不好
‘肆’ 为什么我的51单片机蜂鸣器程序需要加延时才响呢
这得看你的蜂鸣器是有源还是无源,如果是无源的蜂鸣器需要经过变频控制才会发声,对于有源的蜂鸣器则直接输出高低电平就可以。
注意,这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。
而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。
两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚郡朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。
迸一步判断有源蜂鸣器和无源蜂鸣器,还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 "+"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。