当前位置:文档之家› Keil C51程序设计中几种精确延时方法

Keil C51程序设计中几种精确延时方法

Keil C51程序设计中几种精确延时方法
Keil C51程序设计中几种精确延时方法

Keil C51程序设计中几种精确延时方法

Keil C51程序设计中几种精确延时方法

2009年07月28日星期二下午11:15

延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。

1 使用定时器/计数器实现精确延时

单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。

2 软件延时与时间计算

在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。下面介绍几种软件延时的方法。

2.1 短暂延时

可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。如延时10 μs的延时函数可编写如下:

void Delay10us( ) {

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

}

void Delay40us( ) {

Delay10us( );

Delay10us( );

Delay10us( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

}

void Delay80us( ) {

Delay10us( );

Delay10us( );

Delay10us( );

Delay10us( );

Delay10us( );

Delay10us( );

Delay10us( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

}

Delay10us( )函数中共用了6个_NOP_( )语句,每个语句执行时间为1 μs。主函数调用Delay10us( )时,先执行一个LCALL指令(2 μs),然后执行6个_NOP_( )语句(6 μs),最后执行了一个RET指令(2 μs),所以执行上述函数时共需要10 μs。可以把这一函数当作基本延时函数,在其他函数中调用,即嵌套调用\[4\],以实现较长时间的延时;但需要注意,如在Delay40us( )中直接调用4次Delay10us( )函数,得到的延时时间将是42 μs,而不是40 μs。这是因为执行Delay40us( )时,先执行了一次LCALL指令(2 μs),然后开始执行第一个Delay10us( ),执行完最后一个Delay10us( )时,直接返回到主程序。依此类推,如果是两层嵌套调用,如在Delay80us( )中两次调用Delay40us( ),则也要先执行一次LCALL指令(2 μs),然后执行两次Delay40us( )函数(84 μs),所以,实际延时时间为86 μs。简言之,只有最内层的函数执行RET指令。该指令直接返回到上级函数或主函数。如在Delay80μs( )中直接调用8次Delay10us( ),此时的延时时间为82 μs。通过修改基本延时函数和适当的组合调用,上述方法可以实现不同时间的延时。

2.2 在C51中嵌套汇编程序段实现延时

在C51中通过预处理指令#pragma asm和#pragma endasm可以嵌套汇编语言语句。用户编写的汇编语言紧跟在#pragma asm之后,在#pragma endasm之前结束。

如:#pragma asm

汇编语言程序段

#pragma endasm

延时函数可设置入口参数,可将参数定义为unsigned char、int或long型。根据参数与返回值的传递规则,这时参数和函数返回值位于R7、R7R6、R7R6R5中。在应用时应注意以下几点:

◆#pragma asm、#pragma endasm不允许嵌套使用;

◆在程序的开头应加上预处理指令#pragma asm,在该指令之前只能有注释或其他预处理指令;

◆当使用asm语句时,编译系统并不输出目标模块,而只输出汇编源文件;

◆asm只能用小写字母,如果把asm写成大写,编译系统就把它作为普通变量;

◆#pragma asm、#pragma endasm和asm只能在函数内使用。

将汇编语言与C51结合起来,充分发挥各自的优势,无疑是单片机开发人员的最佳选择。

2.3 使用示波器确定延时时间

利用示波器来测定延时程序执行时间。方法如下:编写一个实现延时的函数,在该函数的开始置某个I/O口线如P1.0为高电平,在函数的最后清P1.0为低电平。在主程序中循环调用该延时函数,通过示波器测量P1.0引脚上的高电平时间即可确定延时函数的执行时间。方法如下:

sbit T_point = P1^0;

void Dly1ms(void) {

unsigned int i,j;

while (1) {

T_point = 1;

for(i=0;i<2;i++){

for(j=0;j<124;j++){;}

}

T_point = 0;

for(i=0;i<1;i++){

for(j=0;j<124;j++){;}

}

}

}

void main (void) {

Dly1ms();

}

把P1.0接入示波器,运行上面的程序,可以看到P1.0输出的波形为周期是3 ms的方波。其中,高电平为2 ms,低电平为1 ms,即for循环结构“for(j=0;j<124;j++) {;}”的执行时间为1 ms。通过改变循环次数,可得到不同时间

的延时。当然,也可以不用for循环而用别的语句实现延时。这里讨论的只是确定延时的方法。

2.4 使用反汇编工具计算延时时间

用Keil C51中的反汇编工具计算延时时间,在反汇编窗口中可用源程序和汇编程序的混合代码或汇编代码显示目标应用程序。为了说明这种方法,还使用“for (i=0;i

C:0x000FE4CLRA//1T

C:0x0010FEMOVR6,A//1T

C:0x0011EEMOVA,R6//1T

C:0x0012C3CLRC//1T

C:0x00139FSUBBA,DlyT //1T

C:0x00145003JNCC:0019//2T

C:0x00160E INCR6//1T

C:0x001780F8SJMPC:0011//2T

可以看出,0x000F~0x0017一共8条语句,分析语句可以发现并不是每条语句都执行DlyT次。核心循环只有0x0011~0x0017共6条语句,总共8个机器周期,第1次循环先执行“CLR A”和“MOV R6,A”两条语句,需要2个机器周期,每循环1次需要8个机器周期,但最后1次循环需要5个机器周期。DlyT次核心循环语句消耗(2+DlyT×8+5)个机器周期,当系统采用12 MHz时,精度为7 μs。

当采用while (DlyT--)循环体时,DlyT的值存放在R7中。相对应的汇编代码如下:

C:0x000FAE07MOVR6, R7//1T

C:0x00111F DECR7//1T

C:0x0012EE MOVA,R6//1T

C:0x001370FAJNZC:000F//2T

循环语句执行的时间为(DlyT+1)×5个机器周期,即这种循环结构的延时精度为5 μs。

通过实验发现,如将while (DlyT--)改为while (--DlyT),经过反汇编后得到如下代码:

C:0x0014DFFE DJNZR7,C:0014//2T

可以看出,这时代码只有1句,共占用2个机器周期,精度达到2 μs,循环体耗时DlyT×2个机器周期;但这时应该注意,DlyT初始值不能为0。

注意:计算时间时还应加上函数调用和函数返回各2个机器周期时间。

单片机精确延时C51

晶振12MHz

一. 500ms延时子程序

程序:

void delay500ms(void)

{

unsigned char i,j,k;

for(i=15;i>0;i--)

for(j=202;j>0;j--)

for(k=81;k>0;k--);

}

产生的汇编:

C:0x0800 7F0F MOV R7,#0x0F

C:0x0802 7ECA MOV R6,#0xCA

C:0x0804 7D51 MOV R5,#0x51

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

计算分析:

程序共有三层循环

一层循环n:R5*2 = 81*2 = 162us DJNZ 2us

二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值1us = 3us 三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值1us = 3us 循环外: 5us 子程序调用2us + 子程序返回2us + R7赋值1us = 5us

延时总时间= 三层循环+ 循环外= 499995+5 = 500000us =500ms

计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5二. 200ms延时子程序

程序:

void delay200ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=132;j>0;j--)

for(k=150;k>0;k--);

}

产生的汇编

C:0x0800 7F05 MOV R7,#0x05 C:0x0802 7E84 MOV R6,#0x84 C:0x0804 7D96 MOV R5,#0x96 C:0x0806 DDFE DJNZ R5,C:0806 C:0x0808 DEFA DJNZ R6,C:0804 C:0x080A DFF6 DJNZ R7,C:0802 C:0x080C 22 RET

三. 10ms延时子程序

程序:

void delay10ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=4;j>0;j--)

for(k=248;k>0;k--);

}

产生的汇编

C:0x0800 7F05 MOV R7,#0x05 C:0x0802 7E04 MOV R6,#0x04 C:0x0804 7DF8 MOV R5,#0xF8 C:0x0806 DDFE DJNZ R5,C:0806 C:0x0808 DEFA DJNZ R6,C:0804 C:0x080A DFF6 DJNZ R7,C:0802 C:0x080C 22 RET

四. 1s延时子程序

程序:

void delay1s(void)

{

unsigned char h,i,j,k;

for(h=5;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}

产生的汇编

C:0x0800 7F05 MOV R7,#0x05 C:0x0802 7E04 MOV R6,#0x04

C:0x0804 7D74 MOV R5,#0x74

C:0x0806 7CD6 MOV R4,#0xD6

C:0x0808 DCFE DJNZ R4,C:0808

C:0x080A DDFA DJNZ R5,C:0806

C:0x080C DEF6 DJNZ R6,C:0804

C:0x080E DFF2 DJNZ R7,C:0802

C:0x0810 22 RET

在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.

基于RC延时电路的延时路灯设计

湖南人文科技学院课程设计报告 课程名称:电子技术课程设计 设计题目:基于RC 延时电路的延时路灯设计系别:通信与控制工程系 专业:通信工程 班级:09级电信二班 姓名:……………………………… 学号:……………………………………起止日期: 2011.6.13~2011.6.25 指导教师: 梁庶来姚毅 教研室主任: 2011年6月23 日

摘要 路灯控制器主要由声控电路、光控电路、延时电路组成。白天的时候,在光控电路(无论有无声音)作用下,电路的开关元件处于断开状态,LED灯不亮。晚上没有声音的时候,在声控电路作用下,电路的开关元件处于断开状态,LED 仍旧不亮;当有声响的时候,电路的开关元件闭合,灯LED形成通路,LED亮,由于延时电路的存在,LED持续亮一段时间后熄灭,持续亮的时间长短由RC积分电路控制。 关键词:声控电路;光控电路;RC积分电路、RC延时电路。

目录 1.引言 (5) 1.1设计目的 (5) 1.2 设计要求 (5) 1.3设计内容 (6) 2.方案论证 (6) 2.1设计方案一 (6) 2.2设计方案二 (7) 2.3方案对比选择 (7) 3.单元电路图 (7) 3.1电源电路 (7) 3.2声控电路 (8) 3.3光控电路 (8) 3.4延时电路 (9) 4.整体电路工作原理分析 (9) 4.1电路原理方框图 (9) 4.2电路工作原理 (9) 5.电路仿真与测试调整 (10) 5.1延时路灯控制电路仿真 (10) 5.2延时路灯控制电路安装与调试 (10) 6.总结与致谢 (11) 参考文献 (12) 附录一:电路原理图与PCB图 (13) 附录三:整机实物图 (14) 附录三:元件清单 (15)

单片机C语言(for)延时计算

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。 一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2 = 81*2 = 162us DJNZ 2us 二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值1us = 3us 三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值1us = 3us 循环外: 5us 子程序调用2us + 子程序返回2us + R7赋值1us = 5us 延时总时间= 三层循环+ 循环外= 499995+5 = 500000us =500ms 计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5 二. 200ms延时子程序 程序: void delay200ms(void) { unsigned char i,j,k;

for(i=5;i>0;i--) for(j=132;j>0;j--) for(k=150;k>0;k--); } 三. 10ms延时子程序程序: void delay10ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } 四. 1s延时子程序 程序: void delay1s(void) { unsigned char h,i,j,k; for(h=5;h>0;h--) for(i=4;i>0;i--) for(j=116;j>0;j--) for(k=214;k>0;k--); }

KeilC51程序设计中几种精确延时方法

Keil C51程序设计中几种精确延时方法 2008-04-03 08:48 实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。 在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。 2 软件延时与时间计算 在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。下面介绍几种软件延时的方法。 2.1 短暂延时 可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。如延时10 μs 的延时函数可编写如下: void Delay10us( ) { _NOP_( ); _NOP_( ); _NOP_( ) _NOP_( );

电工电子课程设计简易声控延时照明灯

题目:___简易声控延时照明灯__ 班级:________________ 学号:__________ :__________________ 指导教师:___________ 时间:

课程设计任务书 教研室主任签字:年月日

目录 一、总体方案与原理说明 (4) 1.1、主要原理说明 (4) 1.2、总体电路原理图 (5) 1.3、总体电路原理相关说明 (6) 二、电路设计……………………………………....................................... .7 2.1、单元电路一——声强监测电路和声强信号处理电路 (7) 2.2、单元电路二——延时控制电路和照明灯开关电路 (8) 2.3、单元电路三——电源电路....................................,..., (10) 三、元件清单............................................................,...,.. (11) 四、参考文献............................................................,, (12) 五、设计心得............................................................,.. (13)

一、总体方案与原理说明 总体方案 1、查阅相关资料,了解简易声控延时照明灯电路的原理与作用。 2、通过文献了解各种简易声控延时照明灯电路设计方案。 3、自行设计一种简易声控延时照明灯电路。 4、使用protel画图软件画出电路图。 5、列出元件清单。 1.1、主要原理说明 简易声控延时照明灯电路的总体框图 简易声控延时照明灯电路的总体框图如图1所示。它是由声强监测电路、声强信号处理电路、延时控制电路、照明灯开关电路和电源电路5部分构成的。 声强监测电路的功能是利用MIC(麦克风)的特性,即当MIC接收到足够的声强时,在该电路产生谐振后输出一个微弱脉冲,从而将声音信号转换为电信号。声强信号处理电路的处理电路的功能是将声强监测电路输出的电信号进行放大和整流,从而得到一个电平信号,为控制电路作准备。延时控制电路的功能是利用555集成电路构成可重复触发的单稳态电路,从而实现照明灯的延时控制。照明灯开关电路的功能是实现控制电路和照明灯电路的强弱电转换。电源电路的功能是为上述所有电路提供直流电源。 延时照明灯的主要电路如下图所示。图中K为拉线开关或墙壁开关,当K闭合后,该延时电路不工作,电灯处于正常的发光状态。当K被关断后,该电压一

延时子程序计算方法

学习MCS-51单片机,如果用软件延时实现时钟,会接触到如下形式的延时子程序:delay:mov R5,#data1 d1:mov R6,#data2 d2:mov R7,#data3 d3:djnz R7,d3 djnz R6,d2 djnz R5,d1 Ret 其精确延时时间公式:t=(2*R5*R6*R7+3*R5*R6+3*R5+3)*T (“*”表示乘法,T表示一个机器周期的时间)近似延时时间公式:t=2*R5*R6*R7 *T 假如data1,data2,data3分别为50,40,248,并假定单片机晶振为12M,一个机器周期为10-6S,则10分钟后,时钟超前量超过1.11秒,24小时后时钟超前159.876秒(约2分40秒)。这都是data1,data2,data3三个数字造成的,精度比较差,建议C描述。

上表中e=-1的行(共11行)满足(2*R5*R6*R7+3*R5*R6+3*R5+3)=999,999 e=1的行(共2行)满足(2*R5*R6*R7+3*R5*R6+3*R5+3)=1,000,001 假如单片机晶振为12M,一个机器周期为10-6S,若要得到精确的延时一秒的子程序,则可以在之程序的Ret返回指令之前加一个机器周期为1的指令(比如nop指令), data1,data2,data3选择e=-1的行。比如选择第一个e=-1行,则精确的延时一秒的子程序可以写成: delay:mov R5,#167 d1:mov R6,#171 d2:mov R7,#16 d3:djnz R7,d3 djnz R6,d2

djnz R5,d1 nop ;注意不要遗漏这一句 Ret 附: #include"iostReam.h" #include"math.h" int x=1,y=1,z=1,a,b,c,d,e(999989),f(0),g(0),i,j,k; void main() { foR(i=1;i<255;i++) { foR(j=1;j<255;j++) { foR(k=1;k<255;k++) { d=x*y*z*2+3*x*y+3*x+3-1000000; if(d==-1) { e=d;a=x;b=y;c=z; f++; cout<<"e="<

声控延时照明灯电路的原理

声控延时照明灯电路的原理 当今世界在以电子信息技术为前提下推动了社会跨跃式的进步,科学技术的飞速发展日新月异带动了各国生产力的大规模提高。由此可见科技已成为各国竞争的核心,尤其是电子信息技术更显得尤为重要,在国民生产各部门电子信息技术得到了广泛的应用。曾经不被人们所重用的如声音,光等如今在电子信息技术方面都得到了广泛的应用,尤其是光能更是人们有待开发的具大的能源宝库。 电子信息技术发展的主要目标是实现高度智能化,在减少以至不需要人为干预下使机器能独立处理各种工作。智能化照明电路也是如此,如我们所熟知的走道照明电路其智能化实现方法是利用了声学?光学?电子学?原理的综合;而马路上的路灯是应用了光学的原理;另一个我们所知的交通系统红绿灯则是采用了电子学中计数器的原理。可见原理不同电路所实现的功能也不尽相同,以下将对其进行逐一分析。 声控照明电路 声音是我们最为熟知的。人与人需要用声音去交流,机器运转发出声音,动物会发出声音等等。然而发此宝贵的资源却被我们忽视了很长时间,如今留给我们的就是怎样合理高效的利用这一资源。以前人们在设计电路时只求一个‘用’字,只要能用就万事大吉了,所以我们常见的电路都有很多开关如照明电路要让它工作我们必须机械地去控制它,这对于当今社会各种各样的智能化建筑如智能办公楼,智能化公寓等是非常不实用的;在这种情况下声音就派上了用场,声控作为智能化电路的一部分是一可缺少的;然而要实现声控也不是一件容易的事,因为声音是一模拟量且非电信号无法在数字电路中使用,所以我们在设计声控电路时就面临怎样把模拟量转化为数字量,把声音信号转化为电信号的问题。要解决这个问题我们可以设计一个类似于‘窃听器’的接收设备专门用来接听声音信号并将声音信号转化为

简易声光控延时照明灯电路课程设计范本

简易声光控延时照明灯电路课程设计 电子技术课程设计

题目: ___简易彩灯控制器电路_ 学生姓名: 专业班级:电子信息工程11-01班 学号: 院(系):电气信息工程学院 指导教师:黄春 完成时间: 06月25日 郑州轻工业学院 课程设计(论文)任务书 题目简易彩灯控制器电路 专业电信工程11-01 学号姓名

主要内容、基本要求、主要参考资料等: 主要内容 1.阅读相关科技文献。 2.学习protel软件的使用。 3.学会整理和总结设计文档报告。 4学习如何查找器件手册及相关参数。 技术要求 1.要求电路能够控制8个以上的彩灯。 2.要求彩灯组成四种以上的花形,每种花形连续循环两次,各种 花形轮流显示。 主要参考资料 1.何小艇,电子系统设计,浙江大学出版社, 6月 2.姚福安,电子电路设计与实践,山东科学技术出版社, 10月 3.王澄非,电路与数字逻辑设计实践,东南大学出版社,1999年10月 4.李银华,电子线路设计指导,北京航空航天大学出版社, 6月 5.康华光,电子技术基础,高教出版社, 完成期限: 06月28日

指导教师签章: 专业负责人签章: 06月21日 简易彩灯控制器电路 摘要 彩灯控制器是用来使彩灯按照一定的形式和规律闪亮,起到烘托节日氛围、吸引公众注意力的作用,它是一种很好的照明娱乐工具,应用前景较为广泛。本设计就是采用电子元件制作的一个简易的具有四种变换花型的彩灯控制器。 本电路系统由四部分组成,分别是: (1)时钟振荡电路,555定时器构成多谐振荡器; (2)分频电路,由四位二进制计数器 74LS161组成,为D触发器提供时钟; (3)状态机电路,由双 D 触发器组成; (4)移位显示电路,由双向移位寄存器 74194 和发光二极管组成,实现花型显示。 彩灯控制器实现方法多种多样,本次设计的这台彩灯控制器主要功能有: (1)能够控制8个以上的彩灯;

基于51单片机的精确延时(微秒级)

声明: *此文章是基于51单片机的微秒级延时函数,采用12MHz晶振。 *此文章共包含4个方面,分别是延时1us,5us,10us和任意微秒。前三个方面是作者学习过程中从书本或网络上面总结的,并非本人所作。但是延时任意微秒函数乃作者原创且亲测无误。欢迎转载。 *此篇文章是作者为方便初学者使用而写的,水平有限,有误之处还望大家多多指正。 *作者:Qtel *2012.4.14 *QQ:97642651 ----------------------------------------------------------------------------------------------------------------------序: 对于某些对时间精度要求较高的程序,用c写延时显得有些力不从心,故需用到汇编程序。本人通过测试,总结了51的精确延时函数(在c语言中嵌入汇编)分享给大家。至于如何在c 中嵌入汇编大家可以去网上查查,这方面的资料很多,且很简单。以12MHz晶振为例,12MHz 晶振的机器周期为1us,所以,执行一条单周期指令所用时间就是1us,如NOP指令。下面具体阐述一下。 ----------------------------------------------------------------------------------------------------------------------1.若要延时1us,则可以调用_nop_();函数,此函数是一个c函数,其相当于一个NOP指令,使用时必须包含头文件“intrins.h”。例如: #include #include void main(void){ P1=0x0; _nop_();//延时1us P1=0xff; } ----------------------------------------------------------------------------------------------------------------------2.延时5us,则可以写一个delay_5us()函数: delay_5us(){ #pragma asm nop #pragma endasm } 这就是一个延时5us的函数,只需要在需要延时5us时调用此函数即可。或许有人会问,只有一个NOP指令,怎么是延时5us呢? 答案是:在调用此函数时,需要一个调用指令,此指令消耗2个周期(即2us);函数执行完毕时要返回主调函数,需要一个返回指令,此指令消耗2个周期(2us)。调用和返回消耗了2us+2us=4us。然后再加上一个NOP指令消耗1us,不就是5us吗。

简易声光控延时照明灯电路

轻工业学院 电子技术课程 设计 题目:简易声光控延时照明灯电路学生:振鹏

专业班级:自动化14-02班学号:541401010224 院(系):电气信息工程学院指导教师:黄春 完成时间:2016年12月18日

轻工业学院 课程设计(论文)任务书 题目简易声光控延时照明灯电路 专业自动化14-02学号541401010224 振鹏 主要容、基本要求、主要参考资料等: 主要容 1.阅读相关科技文献。 2.学习protel软件的使用。 3.学会整理和总结设计文档报告。 4.学习如何查找器件手册及相关参数。 技术要求 1.要求电路能够通过照明灯开关对光线强弱的感应,控制照明灯第一级开关。 2.要求电路能够通过照明灯开关对声强的感应,在第一级开关开通的前提下,控制 照明灯的亮灭。 3.要求电路能够实现照明灯点亮时间t后自动关断,并且时间t可以手动调节。 4.要求电路如果在照明灯点亮期间又有新的声源出现,照明灯应重新通电时间t。 主要参考资料 1.何小艇,电子系统设计,大学,2001年6月 2.福安,电子电路设计与实践,科学技术,2001年10月 3.王澄非,电路与数字逻辑设计实践,东南大学,1999年10月 4.银华,电子线路设计指导,航空航天大学,2005年6月 5.康华光,电子技术基础,高教,2003 完成期限:2016年12月18日 指导教师签章: 专业负责人签章: 2016年12月12日

简易声光控延时照明灯电路 摘要 随着电子技术的发展,尤其是数字技术的发展,用数字电路实现灯的自动发亮节能省电,延长灯的寿命变得越来越重要,而且贴近我们的实际生活,声光控电路已成为人们日常生活必不可少的必需品,不仅是智能化,而且节约能源。 简易声光控延时照明灯电路由光敏传感电路、声敏传感电路、信号调理电路、555延时电路以及电源电路五部分组成。装置为555定时器构成的可重复触发单稳态电路、声敏传感电路的输入装置是咪头、光敏传感电路的输入装置是光敏二极管、信号调理电路是74LS04非门和74HC32或门、电源是由交流220V变12V在经整流后稳压为12V和5V的电源,电路的总体运行环境是在无光条件下声强监测处理电路检测到声音后就会触发555延时电路使之输出高电平继而使之电灯点亮。 关键词声光控光敏传感电路声敏传感电路信号调理电路555延时电路

单片机延时计算

单片机C51延时时间怎样计算? C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int 更优化的代码,在使用时应该使用unsigned char作为延时变量。以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。 一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2 = 81*2 = 162us DJNZ 2us 二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us 三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us 循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us 延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms 计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5 二. 200ms延时子程序

程序: void delay200ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=132;j>0;j--) for(k=150;k>0;k--); } 三. 10ms延时子程序 程序: void delay10ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } 四. 1s延时子程序 程序: void delay1s(void) { unsigned char h,i,j,k;

单片机一些常用的延时与中断问题及解决方法

单片机一些常用的延时与中断问题及解决方法 延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的问题,本文汇总整理了包含了MCS-51系列单片机、MSP430单片机、C51单片机、8051F的单片机、avr单片机、STC89C52、PIC单片机…..在内的各种单片机常见的延时与中断问题及解决方法,希望对单片机新手们,有所帮助! 一、单片机延时问题20问 1、单片机延时程序的延时时间怎么算的? 答:如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。 如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。 2、求个单片机89S51 12M晶振用定时器延时10分钟,控制1个灯就可以 答:可以设50ms中断一次,定时初值,TH0=0x3c、TL0=0xb0。中断20次为1S,10分钟的话,需中断12000次。计12000次后,给一IO口一个低电平(如功率不够,可再加扩展),就可控制灯了。 而且还要看你用什么语言计算了,汇编延时准确,知道单片机工作周期和循环次数即可算出,但不具有可移植性,在不同种类单片机中,汇编不通用。用c的话,由于各种软件执行效率不一样,不会太准,通常用定时器做延时或做一个不准确的延时,延时短的话,在c中使用汇编的nop做延时 3、51单片机C语言for循环延时程序时间计算,设晶振12MHz,即一个机器周期是1us。for(i=0,i<100;i++) for(j=0,j<100;j++) 我觉得时间是100*100*1us=10ms,怎么会是100ms 答: 不可能的,是不是你的编译有错的啊

Keil纯软件延时程序

keil调试延时程序 2007-11-25 22:20 时间的单位换算 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s) 1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s) 1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s) 1秒=1,000,000,000,000 皮秒(ps) 1皮秒=1/1,000,000,000,000秒(s) 参考资料:资料 用定时器延时,有时候显得有点麻烦,我们不如考虑软件精确延时,软件延时无非就是利用for或while多重循环。以前用到延时函数时,都是从网上下载别人写好的延时子程序。延时5ms,400ms,1s,……,这些延时函数的函数名中都清清楚楚地标明了延时的时间,可我一直不知道这些函数是如何编写的,确切地说,是如果根据延时时间来确定循环次数的。如果是纳秒级的延时,可以通过示波器来观察波形,或者反汇编一下,计算一下指令执行时间,但如果延时时间相对较长,示波器便无能为力了。这几天好好看了一下Keil调试,发现Keil 的功能实在是太强大了。利用Keil uVersion的调试就可以写出精确的软件延时程序。以下是我的简单小结,文中所有程序都是在Xtal=11.0592MHZ下测试。 比如我需要一个400ms的延时,随便写了个两重循环,外层循环5次,内层循环暂且设为5000: void Delay400Ms(void){ uchar i=5; unint j; while(i--){ j=5000; //通过keil调试来确定循环次数 while(j--); } } 在main函数中调用Delay400Ms(): void main() {

简易声光控延时照明灯电路设计

电子课程设计 —简易声光控延时照明灯电路设计 学院:电子信息工程学院 专业、班级:电气091501班 姓名:\ 学号: 指导教师:闫晓梅 2014年12月

目录 电子课程设计 (1) 简易声光控延时照明灯电路设计 (3) 一、设计任务与要求 (3) 二、总体框图 (3) 1、总体框图 (3) 2、电路方案的选择(延时电路的选择) (3) 3、电路的基本组成及功能 (4) 三、选择器件 (5) 四、功能模块 (9) 1、电源模块 (9) 2、光控模块 (9) 3、声控模块 (10) 4、延时照明模块 (11) 五、总体设计电路 (11) 1、总体电路图仿真图 (12) 2、各模块间的连接 (12) 3、在模拟、数字实验箱上实验实现 (12) 六、设计心得 (12)

简易声光控延时照明灯电路设计 一、设计任务与要求: 1、设计任务:设计一个简易声光控延时照明灯电路。同时设计一与电路相配合的稳压电源电路。 2、设计功能及要求: (1)具有光控功能,白天光线较亮,即使有声音时路灯也不亮,光线较暗、有声音时路灯点亮。 (2)具有声控功能,晚上光线较暗,有声音时路灯点亮,声音消失后延时照明一段时间t后自动熄灭;并且时间t可以手动调节。 (3)要求电如果在照明灯点亮期间又有新的生源出现,照明灯应重新通电时间t。 (4)采用高亮度LED作为照明光源。 二、总体框图: 1、总体框图: 电路采用声光两级控制照明电路。照明灯开关对光线强弱的感应控制照明灯的第一级开关,对声强的感应控制第二级开关。光信号的感应通过光敏三极管来实现,使得光控电路在光强时输出低电位,光弱时输出高电位。对于声强信号的处理市利用音频集成功率放大器,把声信号变为电信号,通过对声强信号的处理可得一个电平信号,为控制电路准备。延时控制功能通过555定时器构成的单稳态触发电路来实现。将光控电路的输出作为555定时器的复位端输入。将声控输出端作为延时电路的输入,从而可以实现在光线强的情况下,即使有足够强的声信号,照明灯电路也不工作。而在光线弱的情况下,可以通过声信号来控制照明。 2、电路方案的选择(延时电路的选择): 方案一: RC电路延时:由一个电阻和一个电容并联组成的RC延时电路。但输入电压为高时,电容充电,但输入电压为低时电容放电。达到延时目的。 方案二:

用单片机实现延时(自己经验及网上搜集).

标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。 在keil C51中,直接调用库函数: #include // 声明了void _nop_(void; _nop_(; // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。 在选择C51中循环语句时,要注意以下几个问题 第一、定义的C51中循环变量,尽量采用无符号字符型变量。 第二、在FOR循环语句中,尽量采用变量减减来做循环。 第三、在do…while,while语句中,循环体内变量也采用减减方法。 这因为在C51编译器中,对不同的循环方法,采用不同的指令来完成的。 下面举例说明: unsigned char i; for(i=0;i<255;i++; unsigned char i; for(i=255;i>0;i--;

其中,第二个循环语句C51编译后,就用DJNZ指令来完成,相当于如下指令: MOV 09H,#0FFH LOOP: DJNZ 09H,LOOP 指令相当简洁,也很好计算精确的延时时间。 同样对do…while,while循环语句中,也是如此 例: unsigned char n; n=255; do{n--} while(n; 或 n=255; while(n {n--}; 这两个循环语句经过C51编译之后,形成DJNZ来完成的方法, 故其精确时间的计算也很方便。 其三:对于要求精确延时时间更长,这时就要采用循环嵌套的方法来实现,因此,循环嵌套的方法常用于达到ms级的延时。对于循环语句同样可以采用for,do…while,while结构来完成,每个循环体内的变量仍然采用无符号字符变量。 unsigned char i,j for(i=255;i>0;i--

声光控延时照明电路课程设计

目录 摘要 (1) 1 设计方案 (2) 2主要单元电路设计 (3) 2.1感光控制 (3) 2.2检声控制 (4) 2.3电源电路 (5) 2.4延时控制电路 (6) 2.5开关 (6) 2.6简易声光双控延时照明灯电路总原理 (7) 3组成框图 (9) 4 元件清单 (10) 参考文献 (11) 附录 (12) 心得体会 (14) 摘要 该声光双控延时照明灯电路由五部分组成:电源电路、感光电路、检音电路,延时开启电路及开关电路组成。本电路通过光敏电阻和MK对

外界光照和声音感应,经过电路的进一步处理从而实现对照明灯亮灭的控制。感光电路主要是由光敏电阻组成,当有光照时电阻阻值变小;夜晚无光时光敏电阻变大。声控检测功能是通过声音传感器实现的,当传感器接收到声音信号时,在电路产生谐振后产生一个微弱脉冲,从而将声音信号转化为电信号,即可方便及时的打开声控照明装置。白天有光照时,无论外界有没有声响,照明灯都不会点亮;夜晚无光照,当外界有声响时,照明灯点亮时间t后自动关闭,并且时间t可以手动调节.电路还具有在照明灯点亮期间又有新的声源出现,照明灯可重新计算通电时间t的功能。 1设计方案 本设计的声控电路时这样实现的:声音传感器对声强的感应,是在第一级开关开通时来控制照明灯的亮灭。当声音信号通过MK接收后,产生微小的交流信号,在经过三极管放大信号后,流入单向晶闸管的控制极,来实现主回路的导通,从而控制照明灯的点亮。 而光敏电阻对光线强弱的感应,有光照时光敏电阻阻值变小,时光信号变为低电平,当光信号和声音信号同时经过一个与非门,光敏电阻端为低电平,将此门锁住,从而实现控制照明灯第一级开关。 此电路照明灯点亮时间t后可以自动关闭,并且时间t可以手动调节。主要通过可调电阻与电容的充放电来实现延时控制及延时时间t的手动调节。在照明灯点亮期间若有新的声源出现,本电路可以重新计算通电时间t。当照明灯点亮期间,如有新的触发信号,电容快速放电后,又继续充电,从而使照明灯重新实现通电时间t。

C51精确延时

C51中精确延时 C语言最大的缺点就是实时性差,我在网上到看了一些关于延时的讨论,其中有篇文章51单片机Keil C 延时程序的简单研究,作者:InfiniteSpace Studio/isjfk,写得不错,他是用while(--i);产生DJNZ 来实现精确延时,后来有人说如果while里面不能放其它语句,否则也不行,用do-while就可以,具体怎样我没有去试.所有这些都没有给出具体的实例程序来.还看到一些延时的例子多多少少总有点延时差.为此我用for循环写了几个延时的子程序贴上来,希望能对初学者有所帮助.(晶振12MHz,一个机器周期1us.) 在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. 一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); } 产生的汇编: C:0x0800 7F0F MOV R7,#0x0F C:0x0802 7ECA MOV R6,#0xCA C:0x0804 7D51 MOV R5,#0x51 C:0x0806 DDFE DJNZ R5,C:0806 C:0x0808 DEFA DJNZ R6,C:0804 C:0x080A DFF6 DJNZ R7,C:0802 C:0x080C 22 RET 计算分析: 程序共有三层循环 一层循环n:R5*2 = 81*2 = 162us DJNZ 2us 二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值1us = 3us 三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值1us = 3us 循环外: 5us 子程序调用2us + 子程序返回2us + R7赋值1us = 5us 延时总时间= 三层循环+ 循环外= 499995+5 = 500000us =500ms 计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5 二. 200ms延时子程序 程序: void delay200ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=132;j>0;j--)

51单片机的几种精确延时

51单片机的几种精确延时实现延时 51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。 在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC 语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。 2 软件延时与时间计算 在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。下面介绍几种软件延时的方法。 2.1 短暂延时 可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。如延时10 μs的延时函数可编写如下: void Delay10us( ) { _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); } Delay10us( )函数中共用了6个_NOP_( )语句,每个语句执行时间为1 μs。主函数调用Delay10us( )时,先执行一个LCALL指令(2 μs),然后执行6个_NOP_( )语句(6 μs),最后执行了一个RET指令(2 μs),所以执行上述函数时共需要10 μs。可以把这一函数

简易声光控延时照明灯电路

郑州轻工业学院 电子技术课程 设计

题目:简易声光控延时照明灯电路学生姓名:李振鹏 专业班级:自动化14-02班 学号:541401010224 院(系):电气信息工程学院 指导教师:黄春 完成时间:2016年12月18日

郑州轻工业学院 课程设计(论文)任务书 题目简易声光控延时照明灯电路 专业自动化14-02学号541401010224 姓名李振鹏 主要内容、基本要求、主要参考资料等: 主要内容 1.阅读相关科技文献。 2.学习protel软件的使用。 3.学会整理和总结设计文档报告。 4.学习如何查找器件手册及相关参数。 技术要求 1.要求电路能够通过照明灯开关对光线强弱的感应,控制照明灯第一级开关。 2.要求电路能够通过照明灯开关对声强的感应,在第一级开关开通的前提下,控 制照明灯的亮灭。 3.要求电路能够实现照明灯点亮时间t后自动关断,并且时间t可以手动调节。 4.要求电路如果在照明灯点亮期间又有新的声源出现,照明灯应重新通电时间t。主要参考资料 1.何小艇,电子系统设计,浙江大学出版社,2001年6月 2.姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月 3.王澄非,电路与数字逻辑设计实践,东南大学出版社,1999年10月 4.李银华,电子线路设计指导,北京航空航天大学出版社,2005年6月 5.康华光,电子技术基础,高教出版社,2003 完成期限:2016年12月18日 指导教师签章: 专业负责人签章: 2016年12月12日

简易声光控延时照明灯电路 摘要 随着电子技术的发展,尤其是数字技术的发展,用数字电路实现灯的自动发亮节能省电,延长灯的寿命变得越来越重要,而且贴近我们的实际生活,声光控电路已成为人们日常生活必不可少的必需品,不仅是智能化,而且节约能源。 简易声光控延时照明灯电路由光敏传感电路、声敏传感电路、信号调理电路、555延时电路以及电源电路五部分组成。装置为555定时器构成的可重复触发单稳态电路、声敏传感电路的输入装置是咪头、光敏传感电路的输入装置是光敏二极管、信号调理电路是74LS04非门和74HC32或门、电源是由交流220V变12V在经整流后稳压为12V和5V的电源,电路的总体运行环境是在无光条件下声强监测处理电路检测到声音后就会触发555延时电路使之输出高电平继而使之电灯点亮。 关键词声光控光敏传感电路声敏传感电路信号调理电路555延时电路

51单片机精确延时源程序

51单片机精确延时源程序 一、晶振为 11.0592MHz,12T 1、延时 1ms: (1)汇编语言: 代码如下: DELAY1MS: ;误差 -0.651041666667us MOV R6,#04H DL0: MOV R5,#71H DJNZ R5,$ DJNZ R6,DL0 RET (2)C语言: void delay1ms(void) //误差 -0.651041666667us { unsigned char a,b; for(b=4;b>0;b--) for(a=113;a>0;a--); } 2、延时 10MS: (1)汇编语言: DELAY10MS: ;误差 -0.000000000002us MOV R6,#97H DL0: MOV R5,#1DH DJNZ R5,$ DJNZ R6,DL0

RET (2)C语言: void delay10ms(void) //误差 -0.000000000002us { unsigned char a,b; for(b=151;b>0;b--) for(a=29;a>0;a--); } 3、延时 100MS: (1)汇编语言: DELAY100MS: ;误差 -0.000000000021us MOV R7,#23H DL1: MOV R6,#0AH I

棋影淘宝店:https://www.doczj.com/doc/8614160490.html,QQ:149034219 DL0: MOV R5,#82H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 RET (2)C语言: void delay100ms(void) //误差 -0.000000000021us { unsigned char a,b,c; for(c=35;c>0;c--) for(b=10;b>0;b--) for(a=130;a>0;a--); } 4、延时 1S: (1)汇编语言: DELAY1S: ;误差 -0.00000000024us MOV R7,#5FH DL1: MOV R6,#1AH DL0: MOV R5,#0B9H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 RET (2)C语言: void delay1s(void) //误差 -0.00000000024us { unsigned char a,b,c; for(c=95;c>0;c--) for(b=26;b>0;b--)

课程声光双控延时照明灯电路

课程声光双控延时照明灯电路

目录 摘要 (1) 1.设计方案 (2) 2.设计原理 (3) 2.1第一级电路:光控电路 (3) 2.2第二级电路:声控电路 (4) 2.3第三级电路:555可重复触发的单稳态电路.. 5 2.4第四级电路:LED照明灯电路 (6) 2.5 直流稳压电源 (6) 3.元器件选型 (8) 3.1红外线发射管 (8) 3.2红外线接收管 (9) 3.3继电器 (11) 3.3.1 继电器概述 (11) 3.3.2 继电器JRC-21F (12) 3.4驻极体话筒 (13) 3.4.1驻极体话筒概述 (13) 1

3.4.2驻极体话筒与电路的接法 (14) 3.4.3 驻极体话筒极性判别 (15) 3.4.4驻极体话筒灵敏度检测: (15) 3.4.5 驻极体话筒工作原理 (16) 3.4.6 驻极体话筒选配注意 (16) 3.4.6驻极体话筒的种类规格 (17) 3.5电压比较器 (17) 3.5.1工作原理 (17) 3.5.2功能作用 (18) 3.5.3 LM393 (18) 3.6 NE555定时器 (19) 3.7 变压器 (20) 3.8 直流稳压芯片 (21) 心得体会 (22) 参考文献 (24) 附录 (25) 附录1:元器件清单 (25) 表附录1-1 控制电路元器件清单 (25) 1

表附录2-2直流稳压电源中元器件清单26 附录2:声光双控延时照明灯电路全图 (26) 1

1

摘要 随着电子技术的发展,用模拟电路和数字电路设计实现灯的自动开关,既能节能省电,有能延长灯的实际使用时间是非常重要的。灯泡在白天不会点亮,而在夜晚,一旦有声音振动,灯泡就会自动点亮。这种设计可以广泛应用于走廊、楼道招待所等公共场所,给人们的生活、带来极大的方便,得到了广泛的应用。声光控电路是声音和光控制电路工作的电子开关。该电路由电源电路、声控电路、光控电路和延时控制开关电路等组成。本设计以红外发射管作为模拟可见光,红外接收管作为光源传感器,以驻极体话筒作为感应声音的传感器,同时用NE555定时器搭建可重复触发单稳态电路,实现可重复触发LED供电电路工作。 关键词:声控,光控,照明,延时 1

相关主题
文本预览
相关文档 最新文档