搜档网
当前位置:搜档网 › 单片机课程实验报告-延时子程序

单片机课程实验报告-延时子程序

单片机课程实验报告-延时子程序
单片机课程实验报告-延时子程序

单片机实验报告

单片机实验报告

一、实验目的:

学习P1口的使用方法,学习延时子程序的编写

二、实验要求:

以P1口作为输出口,控制6个发光二极管,模拟交通信号灯的管理。在实验仪上选择两组红、黄、绿指示灯,代表交通信号灯。

设有一个十字路口为东西南北方向,其中东西方向为支路,南北方向为主路。初始状态为4个路口的红灯全亮。之后,南北路口的绿灯亮,东西路口的红灯亮。南北路口方向通车,延时20秒后,南北路口绿灯熄灭,黄灯开始闪烁,闪烁5次后红灯亮。而同时东西方向路口的绿灯亮,东西方向开始通车,延时10秒后,东西路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,在切换到南北路口的绿灯亮,东西路口的红灯亮。之后重复上述过程。

三、实验电路:

四、程序框图:

五、程序清单:

ORG 4000H ;定义程序存放区域的起始地址

START: CLR P1.0 ;红灯亮

LOOP: SETB P1.1

SETB P1.2

CLR P1.5

SETB P1.6

SETB P1.7

ACALL DELAYS

SETB P1.0 ;南北绿灯亮,东西红灯亮

CLR P1.2

ACALL DELAYL2 ;长延时20s

MOV R3,#5 ;南北黄灯闪烁5次,东西红灯亮

YELLOW1: ;南北黄灯亮,东西红灯亮

CLR P1.1

SETB P1.2

ACALL DELAYS ;短延时

;南北黄灯灭,东西红灯亮

SETB P1.1

ACALL DELAYS ;短延时

DJNZ R3,YELLOW1

;南北红灯亮,东西绿灯亮

CLR P1.0

SETB P1.5

CLR P1.7

ACALL DELAYL1 ;长延时10s

MOV R3,#5 ;南北红灯亮,东西黄灯闪烁五次

YELLOW2:

CLR P1.6 ;东西黄灯亮

SETB P1.7

ACALL DELAYS ;短延时

SETB P1.6 ;南北红灯灭,东西黄灯亮

ACALL DELAYS ;短延时

DJNZ R3,YELLOW2

AJMP LOOP ;循环

DELAYL2:MOV R4,#200 ;长延迟20s

DELAY1: MOV R5,#200

DELAY2: MOV R6,#250

DELAY3: DJNZ R6,DELAY3

DJNZ R5,DELAY2

DJNZ R4,DELAY1

RET

DELAYS: MOV R4,#10 ;短延迟1s

DELAY4: MOV R5,#200

DELAY5: MOV R6,#250

DELAY6: DJNZ R6,DELAY6

DJNZ R5,DELAY5

DJNZ R4,DELAY4

RET

DELAYL1:MOV R4,#100 ;长延迟10s

DELAY7: MOV R5,#200

DELAY8: MOV R6,#250

DELAY9: DJNZ R6,DELAY9

DJNZ R5,DELAY8

DJNZ R4,DELAY7

六、LST文件

A51 MACRO ASSEMBLER LED

04/21/2010 16:50:30 PAGE 1

MACRO ASSEMBLER A51 V7.01

OBJECT MODULE PLACED IN LED.OBJ

ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE LED.asm SET(SMALL) DEBUG EP

LOC OBJ LINE SOURCE

0000 1 ORG 0000H

2

3

0000 7590DE 4 START: MOV P1,#11011110B

0003 1155 5 CALL DALY1 ;0.5S

0005 7590DB 6 MOV P1,#11011011B

0008 1133 7 CALL DALY ;20S

000A 7805 8 MOV R0,#5H

000C 74DD 9 LOOP1: MOV A,#11011101B

000E F590 10 MOV P1,A

0010 1155 11 CALL DALY1 ;0.-5S

0012 74DF 12 MOV A,#11011111B

0014 F590 13 MOV P1,A

0016 1155 14 CALL DALY1

0018 D8F2 15 DJNZ R0,LOOP1

001A 747E 16 MOV A,#01111110B

001C F590 17 MOV P1,A

001E 1144 18 CALL DALY2 ;10S

0020 7805 19 MOV R0,#5H

0022 74BE 20 LOOP2: MOV A,#10111110B

0024 F590 21 MOV P1,A

0026 1155 22 CALL DALY1

0028 74FE 23 MOV A,#11111110B

002A F590 24 MOV P1,A

002C 1155 25 CALL DALY1

002E D8F2 26 DJNZ R0,LOOP2

0030 020000 27 LJMP START

28

29 ;20S

0033 7C64 30 DALY:MOV R4,#100

0035 7B64 31 DELAY1:MOV R3,#100

0037 7A14 32 DELAY2:MOV R2,#20

0039 792D 33 DELAY3:MOV R1,#45

003B D9FE 34 DELAY4:DJNZ R1,DELAY4

003D DAFA 35 DJNZ R2,DELAY3

003F DBF6 36 DJNZ R3,DELAY2

0041 DCF2 37 DJNZ R4,DELAY1

0043 22 38 RET

39

40 ;10S

0044 7C64 41 DALY2:MOV R4,#100

0046 7B64 42 DEAY1:MOV R3,#100

0048 7A0A 43 DEAY2:MOV R2,#10

004A 792D 44 DEAY3:MOV R1,#45

004C D9FE 45 DEAY4:DJNZ R1,DEAY4

004E DAFA 46 DJNZ R2,DEAY3

0050 DBF6 47 DJNZ R3,DEAY2

0052 DCF2 48 DJNZ R4,DEAY1

0054 22 49 RET

50

51 ;0.5S

0055 7C64 52 DALY1:MOV R4,#100

0057 7B64 53 DEY1:MOV R3,#100

0059 7A19 54 DEY2:MOV R2,#25

005B DAFE 55 DEY3: DJNZ R2,DEY3

005D DBFA 56 DJNZ R3,DEY2

005F DCF6 57 DJNZ R4,DEY1

0061 22 58 RET

A51 MACRO ASSEMBLER LED 04/22/2010 16:20:30 PAGE 2

59

60 END

A51 MACRO ASSEMBLER LED 04/21/2010 16:50:30 PAGE 3

SYMBOL TABLE LISTING

------ ----- -------

N A M E T Y P E V A L U E ATTRIBUTES

DALY . . . . . . . C ADDR 0033H A

DALY1. . . . . . . C ADDR 0055H A

DALY2. . . . . . . C ADDR 0044H A

DEAY1. . . . . . . C ADDR 0046H A

DEAY2. . . . . . . C ADDR 0048H A

DEAY3. . . . . . . C ADDR 004AH A

DEAY4. . . . . . . C ADDR 004CH A

DELAY1 . . . . . . C ADDR 0035H A

DELAY2 . . . . . . C ADDR 0037H A

DELAY3 . . . . . . C ADDR 0039H A

DELAY4 . . . . . . C ADDR 003BH A

DEY1 . . . . . . . C ADDR 0057H A

DEY2 . . . . . . . C ADDR 0059H A

DEY3 . . . . . . . C ADDR 005BH A

LOOP1. . . . . . . C ADDR 000CH A

LOOP2. . . . . . . C ADDR 0022H A

P1 . . . . . . . . D ADDR 0090H A

START. . . . . . . C ADDR 0000H A

REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S) 七、实验步骤:

(1)根据书中设计流程图编写源程序(见实验程序)(2)用keil软件仿真:

(3)更改参数:

(4)下载:

1.正确连接实验仪与主机的RS-232通信电缆和电源

2.把实验仪的工作模式选择开关切换到LOAD处,复位系统使实验仪工作于下载状态

3.运行DPFlash下载软件

4.把实验仪的工作模式选择开关切换到RUN处,复位系统使实验仪工作观察发光二极管的运行情况。

八、实验结果:

程序能够按照实验要求正常地进行工作,发光二极管能够模拟交通灯交替闪烁。

九、实验感想:

由于之前学习微机原理与接口技术的时候做过类似的模拟交通灯的实验,因此这次的单片机实验对我们而言不再陌生。

由于实验室设备的缘故,很多电脑和试验箱不能很好的通讯,首先用DPFlash软件“测试”一下,看能否在试验箱和电脑之间建立连接。在换过三台电脑之后终于能在试验箱中写入程序。然后便是keil 仿真软件的操作,此类软件的操作过程基本类似,无非是先建立工程,然后载入程序,调试,看有没有警告或错误,然后运行。这个过程中有几点需要注意的地方,比如参数的修改,还有操作过程的先后顺序等。最后就是下载的过程。下载中也有几点记忆深刻,复位功能键很重要,一定要知道什么时候复位,什么时候不能复位;另外就是run、mon、load三种模式的区别,不同的要求要把开关拨到不同的位置。

通过这次实验我对如何对单片机源程序进行调试、仿真、下载和运行有了一定的了解,练习了循环、子程序、P0口的编程方法以及程序的下载和调试方法,更加深入的了解了单片机,为之后的课程设计奠定了基础。

STC12系列单片机C语言的延时程序

STC12系列单片机C语言的延时程序 本举例所用CPU 为STC12C5412 系列12 倍速的单片机,只要修改一下参数值其它系例单片机也通用,适用范围宽。共有三条延时函数说明如下:函数调用 分两级:一级是小于10US 的延时,二级是大于10US 的延时 //====================小于10US 的【用1US 级延时】 ====================//----------微秒级延时---------for(i=X;i>X;i--) 延时时间 =(3+5*X)/12 提示(单位us, X 不能大于255)//================大于10US0;Ms--)for(i=26;i>0;i--);}i=[(延时值-1.75)*12/Ms-15]/4 如想延时60US 则 i=[(60-1.75)*12/6-15]/4=25.375≈26; 修改i 的值=26,再调用上面的【10US 级延时函数】Delay10us(6); 则就精确延时60US;如果想延时64US 可以用这二种函数组合来用: Delay10us(6); for(i=9;i>X;i--) 共延时64US//============== 对于大于20Ms 的可用中断来实现程序运行比较好===============中断用定 时器0, 1Ms 中断:void timer0(void) interrupt 1{ TL0=(0xffff-1000+2)% 0x100;TH0=(0xffff-1000+2)/0x100; //每毫秒执行一次if(DelayMs_1>0) DelayMs_1--;//大于20Ms 延时程序}函数调用void DelayMs(uint a)//延时 a 乘以1(ms)的时间。{ DelayMs_1=a; while(DelayMs_1);}如果延时50Ms 则函数值为DelayMs(50)tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

以89C51单片机为核心可控延时开关(修改)

2009级机电一体化专业综合训练单片机的可控延时开关 学生学号:0904021244 学生姓名:薄东凯 指导教师:张武坤 机电工程系 2011年 11月 10 日

目录 摘要 (3) 关键词 (3) 第一章原理描述 (4) 1.1 方案认证 (4) 1.2 基本电路 (6) 1.2.1 最小硬件系统 (6) 1.2.2 数码管动态显示 (7) 1.3 电源电路原理 (10) 1.4 控制开关电路 (13) 第二章软件部分 (14) 2.1 程序框图 (14) 2.2.1 一般软件的结构 (14) 2.2.2 数码管动态显示 (14) 2.2 按键功能设置 (16) 2.2.1 外部中断服务程序框图 (16) 2.2.2 按键功能简介 (17) 第三章调试完善系统 (18) 3.1 硬件调试 (18) 3.2 软件调试 (19) 第四章收获与体会 (20)

致谢: (22) 参考文献: (23) 附录 附录1:可控延时开关主程序 (24) 附录2:电路总原理图 (29) 附录3:元件清单 (30)

单片机的可控延时开关 石家庄职业技术学院薄东凯0904021244 Shijiazhuang vocational and technical college BoDongKai 0904021244 摘要: 本课题所研究的可控延时开关是以89C51单片机为核心,通过单片机内部的定时来实现控制延时的功能。它是由最小系统,显示电路,键盘电路等硬件电路和现代应用最广泛的单片机软件系统组合在一起的,使其具有一定的智能化,起到了节能和延寿的作用、并且与现有的技术相比,的具有使用方便,结构简单,可靠性高,成本低。 Pick to: The subject of the controllable delay switch is based on 89 C51 microcontroller as the core, the single chip microcomputer to control the timing of internal realize the function of the delay. It is by the smallest system, display circuit, the keyboard circuit hardware circuit and the modern one of the most widely applied single-chip microcomputer software system together, make its have certain intelligent, and played the energy saving and prolong life function, and with the existing technology, compared with the easy to use, simple structure, high reliability and low cost.

触摸延时开关设计

触摸延时开关设计 2014年5月21日

一、设计介绍 楼道触摸延时开关是一种简单、安全、新型的电子节能开关。可广范应用于多层住宅和办公楼室外的走廊、门厅、楼梯间、电梯间、过道等公共场所,也可以在家庭安装。本次设计利用模拟电路与数字电路,以直流稳压电源电路、NE555单稳态电路、和继电器控制电路为核心设计触摸延时开关。需要开灯时,手指触摸开关感应区,电灯自动点亮,延时约一分钟,电灯自动熄灭。设计表明这种开关制作简单,安全节能。 二、设计原理 设计电路如下:

三、单元电路设计及相关参数计算 1、照明灯电路: 照明电路采用100V交流输出,将功率为100W的灯泡之串联。 2、电源电路

电源电路如下: 电子系统的正常运行离不开稳定的电源,多数电路的直流电源是由电网的交流电转换来的。常用小功率直流稳压电源系统由电源变压器、整流电路、滤波电路、稳压电路四部分组成如上图所示整流电路。 本设计采用12V电压为电路供电,为得到12V直流电源,将220V频率为50Hz的交流电输入变压器(变比为11:1),经过整流桥整流得到直流电,通过电阻R1限流及稳压二极管将输出电压维持在12V,为其他电路提供稳定的工作电压。变压器副边输出电压脉冲系数大故应将直流电通过电容滤波。理想情况下交流分量可通过电容C3全部滤除,使输出电压仅为直流电压,一般取RC>(3- 5)T/2 其中T为电源交流电压的周期。要得到稳定的直流电滤波后通过电阻R4限流再经稳压二极管1N963,使输出电压稳定为12V。稳压二极管参数如下表所示

参数计算: 取变压器变比为11:1进行计算 变压器副边电压 U2=220/11=22V 交流电通入整流电路,经过全波整流的电压平均值 020.919.8U U V == 因稳压二极管最大工作电流为40mA,计算电阻4R : 04/40I U R mA =< 得4R >495Ω,取4R =550Ω 3、延时电路

单片机C延时时间怎样计算

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时 应该使用unsigned char作为延时变量。以某晶振为12MHz的单片 机为例,晶振为12M H z即一个机器周期为1u s。一. 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--);

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

标准的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--

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。可以把这一函数

基于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吗。

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.sodocs.net/doc/633474632.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--)

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

单片机一些常用的延时与中断问题及解决方法 延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的问题,本文汇总整理了包含了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 答: 不可能的,是不是你的编译有错的啊

楼道触摸延时开关设计

西北工业大学明德学院 课程设计 课程电子线路课程设计 题目楼道触摸式延时照明灯 院系 班级 组员 指导教师 2010年3 月12 日

目录 一、设计要求 (2) 二、设计目的 (2) 1.熟悉晶闸管的开关作用 (2) 2.掌握桥式整流电路原理 (6) 3.掌握三极管的开关作用 (8) 4.掌握稳压管的作用 (9) 三、设计的具体实现 (10) 1.系统概述 (10) 2.单元电路设计 (11) 3.仿真测试 (13) 四、结论与展望 (16) 五、心得体会及建议 (16) 六、附录 (17) 七、参考文献 (18)

楼道触摸延时开关设计报告 一、设计要求 1.设计一楼道触摸延时开关,其功能是当人用手触摸开关时,照明灯点亮,并延续一段时间后自动熄灭。 2.开关的延时时间约1分钟左右。 二、设计目的 1.熟悉晶闸管的开关作用 (1).晶闸管的开关作用 晶闸管是一种开关组件,广泛的应用在各种电路,以及电子设备中。典型的小电流控制大电流的组件,通过一个电流很小的脉冲触发,当晶闸管处于导通状态时它的电阻变得很小相当于一跟导线。 (2).晶闸管的结构和工作原理 晶闸管是四层三端器件,它有J 1、J 2 、J 3 三个PN结,可以把它 中间的NP分成两部分,构成一个PNP型三极管和一个NPN型三极管的复合管。如图图2-1.1所示: 图2-1.1等效图

图2-1.2 器件符号 当晶闸管承受正向阳极电压时,为使晶闸管导通,必须使承受反向电压的PN 结J 2失去阻挡作用。每个晶体管的集电极电流同时就是另一个晶体管的基极电流。因此是两个互相复合的晶体管电路,当有足够的门极电流Ig 流入时,就会形成强烈的正反馈,造成两晶体管饱和导通。 设PNP 管和NPN 管的集电极电流分别为I C1和I C2,发射极电流相应为Ia 和I k ,电流放大系数相应为α1=I C1/Ia 和α2=I C2/I k ,设流过J 2结的反相漏电流为I CO ,晶闸管的阳极电流等于两管的集电极电流和漏电流的总和: CO k CO C C +I I Ia+α =α+I +I =I I 2121а (1) 若门极电流为Ig ,则晶闸管阴极电流为: g a k I I I += 得出晶闸管阳极电流为: ) (121ααа+-+=g co I I I (2) 硅PNP 管和硅NPN 管相应的电流放大系数α1和α2随其发射

51单片机延时模块程序

51单片机独立模块 一、延时模块 1、for循环延时 void delayms(UINT8 ms) { UINT8 x,y; for(x=ms;x>0;x--) for(y=112;y>0;y--); } 2、while循环延时 void delayms(UINT8 ms) { UINT8 x; while(ms--) for(x=112;x>0;x--); } 3、精确的单片机常用延时函数:(c代码误差0us 12M)(1)、延时0.5ms void delay0.5ms(void) //误差 0us { unsigned char a,b; for(b=71;b>0;b--) for(a=2;a>0;a--); } (2)、延时1ms void delay1ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } (3)、延时2ms void delay2ms(void) //误差 0us { unsigned char a,b; for(b=4;b>0;b--) for(a=248;a>0;a--); _nop_; //if Keil,require use intrins.h } (4)、延时3ms void delay3ms(void) //误差 0us

{ unsigned char a,b; for(b=111;b>0;b--) for(a=12;a>0;a--); } (5)、延时4ms void delay4ms(void) //误差 0us { unsigned char a,b,c; for(c=7;c>0;c--) for(b=8;b>0;b--) for(a=34;a>0;a--); } (6)、延时5ms void delay5ms(void) //误差 0us { unsigned char a,b; for(b=19;b>0;b--) for(a=130;a>0;a--); } (7)、延时10ms void delay10ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } (8)、延时15ms void delay15ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=238;b>0;b--) for(a=30;a>0;a--); } (9)、延时20ms void delay20ms(void) //误差 0us { unsigned char a,b; for(b=215;b>0;b--) for(a=45;a>0;a--); _nop_; //if Keil,require use intrins.h

《声光双控延时开关电路制作》

图1 声光双控延时开关电路制作实验报告 一、目的 进一步加深理解典型光电传感器的工作原理及其应用。学习光敏电阻传感器的应用及其与其它传感器(如声敏传感器——驻极体话筒)是如何配合使用来实现一个更为复杂的控制过程。并让学生学会如何将已学习的关于光电传感器应用到实际的应用领域。初步领会如何根据已给定的条件,根据需要设置电路中相关元器件的参数;如何根据故障现象,依据已学习的理论及专业基础知识和电路原理图进行故障的排除;提高动手能力及实际操作技能。 二、任务和要求 ㈠任务 1.按工厂模式进行元器件的检测和验收。 2.掌握该电路的工作原理。要求具体到每个元器件的作用;能对该电路进行功能模块的划分并画出电路原理框图。 3.按工艺要求进行焊接和组装。 4.对电路进行调试、检测、以及故障排除,最终实现其功能。 5.按要求撰写实训报告。 ㈡要求 如电路图所示。 1.白天 光敏管DG 在光线的照射下,反向电阻变小,IC1D 反相器(11)脚输出高电平,经D1,(1)脚为高电平,IC1A 与非门(3)脚输出低电平,单向可控硅SCR 截止,灯泡LAMP 保持不亮。 2.夜间 光敏管DG 反向电阻变大,IC1D 反相器(11)脚输出低电平,这时D1起到了隔离的作用。 当话筒MIC 接收到脚步等声音时,经C2到IC1C 放大,输出的脉冲信号经C4使(1)脚得到低电平,IC1A 与非门(3)脚输出高电平,单向可控硅SCR 导通,灯泡LAMP 点亮;同时C5开始充电使IC1B 反相器 (4)脚输出低电平,IC1A 与非门(3)脚保持输出高电平,单向可控硅SCR 保持导通,灯泡LAMP 保持点亮。 当C5充电完毕,IC1B 反相器输出变为高电平,IC1A 与非门(3)脚输出低电平,单向可控硅SCR 截止,灯泡LAMP 熄灭。 当话筒MIC 再次接收到脚步等声音时,灯泡点亮延时熄灭(54秒左右),依此循环。 C5充电时间(即灯泡延时时间)由C5、R3的数值决定。R5增大可使声音灵敏度降低。 三、电路图及其工作原理 光敏电阻器是利用半导体光电效应制成的一种特殊电阻 器,对光线十分敏感,它的电阻值能随着外界光照强弱变化而 变化。在无光照射时,它呈高阻状态;当有光照射时,其电阻 值迅速减小。 常见的光敏电阻的外形如图31中的分立器件所示,光敏 电阻器通常由光敏层、玻璃基片(或树脂防潮膜)和电极等组 成。光敏电阻广泛应用于各种自动控制电路(如自动照明灯控 制电路、自动报警电路等)、家用电器(如电视机中的亮度自动调节,照相机中的自动曝光控制等)及各种测量仪器中。 声光控延时开关的电路原理图见图1所示。电路中的主要元器件是使用了数字集成电路cd4011,其内部含有4个独立的与非门vd1~vd4,使电路结构简单,工作可靠性高。 顾名思义,声光控延时开关就是用声音来控制开关的“开启",若干分钟后延时开关“自动关闭"。因此,整个电路的功能就是将声音信号处理后,变为电子开关的开动作。明确了电路的信号流程方向后,即可依据主要元器件将电路划分为若干个单元,由此可画出图2所示的方框图。 结合图2来分析图1。声音信号(脚步声、掌声等)由驻极体话筒b1接收并转换成电信号,经c1耦合到Q1的基极进行电压放大,放大的信号送到与非门(U1A)的1脚,R2、R6是Q1偏置电阻,c2是电源滤波电容。 为了使声光控开关在白天开关断开,即灯不亮,由光敏电阻RL1等元件组成光控电路,R7和RL1组成

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--)

单片机精确毫秒延时函数

单片机精确毫秒延时函数 实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。今天主要介绍软件延时以及单片机精确毫秒延时函数。 单片机的周期介绍在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称为频率。频率是描述周期性循环信号(包括脉冲信号)在单位时间内所出现的脉冲数量多少的计量名称;频率的标准计量单位是Hz(赫)。电脑中的系统时钟就是一个典型的频率相当精确和稳定的脉冲信号发生器。 指令周期:CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 时钟周期:也称为振荡周期,一个时钟周期= 晶振的倒数。对于单片机时钟周期,时钟周期是单片机的基本时间单位,两个振荡周期(时钟周期)组成一个状态周期。 机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、存储器读/写等。 机器周期=6个状态周期=12个时钟周期。 51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12*(1/ 晶振频率)= x s。常用单片机的晶振为11.0592MHz,12MHz,24MHz。其中11.0592MHz 的晶振更容易产生各种标准的波特率,后两种的一个机器周期分别为1 s和2 s,便于精确延时。 单片机精确毫秒延时函数对于需要精确延时的应用场合,需要精确知道延时函数的具体延

触摸式延时开关电路

河南科技学院新科学院 电子课程设计 触摸式延时开关电路 学生姓名:王中起 学号: 2013040103 班级:电子131 指导老师:何俊峰 时间: 2015.5.18-5.31

目录 绪论 (3) 1 触摸式延时开关各单元电路设计 (4) 1.1 触摸式延时开关工作原理 (4) 1.2 电源电路设计 (4) 1.3 桥式整流电路 (5) 1.3.1桥式整流电路的工作原理 (5) 1.3.2 整流二极管参数计算 (5) 1.4 滤波电路 (6) 1.5稳压电路设计 (6) 1.5.1 稳压器简介 (7) 1.6 延时电路设计 (8) 1.6.1设计原理 (8) 1.6.2参数计算 (8) 1.6.3 Q1-2N222A三极管的作用 (9) 1.6.4 NE555定时器简介 (9) 1.7 控制电路 (10) 1.7.1控制电路工作原理 (10) 1.7.2 继电器介绍 (11) 1.8 光控电路 (11) 1.9触摸式延时开关电路图 (12) 2 仿真测试 (12) 2.1系统电路仿真 (12) 2.2直流稳压电路各功能电路仿真测试 (13) 2.3 触摸延时、光控电路仿真 (15) 2.4检查调试 (16) 3 PCB版电路制作 (16) 4.实习心得体会 (19) 附录 (20)

绪论 市场经济的发展,人们对开关的要求越来越高,开关的种类也因此越来越齐全。声控开关、机械开关、光控开关等品种逐步进入生活中。但由于机械开关属于有触点开关元件,它有接触不良、故障率高、使用不便等缺点,且摩擦较大容易损坏;声控开关严重浪费了电力资源,干扰了环境安宁;光控开关是采用光线的强弱来实现对用电器电源自动控制的电子开关,它对光线强弱的要求苛刻。针对以上开关的各种缺点,促使我们寻求更为理想的开关电器设备替代元件,方便人们生活。触摸延时开关是一种新型电子节能开关,可广范应用于多层住宅和办公楼室外的走廊,门厅,楼梯间,电梯间,过道等公共场所,也可以在家庭安装。需要开灯时,手指轻轻触摸开关的感应区,电灯自动开启点亮,延时五分钟,电灯自动关闭熄灭。该操作简单,实用节能,又没有声控开关有声音就亮的弊端。主要由NE555 定时器,直流稳压电路和继电器控制电路组成。具备以下功能特点:节约电能,无触点,无污染,安全可靠。 触摸式延时开关只需轻触一下开关就可控制灯的关和开,还具有延时功能,在一段时间内无人触摸的情况下灯会自动熄灭,这样可以起到节能的作用,所以在室内触摸式延时开关使用比较普遍,使灯光的控制更加方便,得以广泛的应用。 课题要求: 1.通过触摸可以实现100W一下的电灯开关; 2.打开后,延时5min自动关闭; 3.白天实现全天关闭。

开关机延时静音电路

开关机延时静音电路

————————————————————————————————作者:————————————————————————————————日期:

相信大家也看明白上图...因为图上都有标明...HE HE...最左边的是RC延时及放电二极管...中间的是为关机而设置的电路,在此大家可以把它看成一个电源...最右边的是模拟音频信号... 再发一图... 这图是开机后...电路电流流向... 一开机...C1是电容.开机瞬间相当于短路...C1上有二路电流...一路是R1直接流向C1的.另一路是VCC---D2---Q1 E-----Q1 B ---470----C1....因为R1电阻相当大...所以C1上的电流主要是来自第二路电流... 说直接点...这种需要在开机瞬间通电的电路延时时间主要是R2 C1的大小有关...在这电路上应该是可以省掉R1了...因为R1在电路中所起的作用不是太大...(关于R1的作用大家可以讨论下.) 建议R2值要大点会比较好... 在开机后...第二路电流使Q1导通...

Q1导通后...VCC---D2----Q1 E-----Q1 C----D3----R4-----Q2 B----Q1 E----GND... 使Q2导通...Q2导通后...把V1音频信号-----R5-----的信号给短路...实现开机静音.... 在C1充满电后...Q1截止了...这时Q1 C极输出电压为0...随之Q2也截止...Q2 C E极相当于开路...对音频信号通过没有影响... HE HE...开机静音电路分析完了.HE HE.... 现在来分析关机静音电路... 先发一图... 关机第一步...先放掉C1上的电...HE HE...是怎么样做到的...

单片机写延时程序的几种方法

单片机写延时程序的几种方法 1)空操作延時(12MHz) void delay10us() { _NOP_(); _NOP_(); _NOP_(); _NOP_(); _NOP_(); _NOP_(); } 2)循環延時 (12MHz) Void delay500ms() { unsigned char i,j,k; for(i=15;i>;0;i--) for(j=202;j>;0;j--) for(k=81;k>;0;k--); }

延時總時間=[(k*2+3)*j+3]*i+5 k*2+3=165 us 165*j+3=33333 us 33333*i+5=500000 us=500 ms 3)計時器中斷延時(工作方式2) (12MHz) #include; sbit led=P1^0; unsigned int num=0; void main() { TMOD=0x02; TH0=6; TL0=6; EA=1; ET0=1; TR0=1; while(1) { if(num==4000) { num=0;

led=~led; } } } void T0_time() interrupt 1 { num++; } 4)C程序嵌入組合語言延時 #pragma asm …… 組合語言程序段 …… #pragma endasm KEIL軟件仿真測量延時程序延時時間

這是前段事件總結之延時程序、由於不懂組合語言,故NO.4無程序。希望對你有幫助!!! 對於12MHz晶振,機器周期為1uS,在執行該for循環延時程式的時候 Void delay500ms() { unsigned char i,j,k; for(i=15;i>;0;i--) for(j=202;j>;0;j--) for(k=81;k>;0;k--); } 賦值需要1個機器周期,跳轉需要2個機器周期,執行一次for循環的空操作需要2個機器周期,那么,對於第三階循環 for(k=81;k>;0;k--);,從第二階跳轉到第三階需要2機器周期,賦值需要1個機器周期,執行81次則需要2*81個機器周期,執行一次二階for循環的事件為81*2+1+2;執行了220次,則(81*2+3)*220+3,執行15次一階循環,則 [(81*2+3)*220+3]*15,由於不需要從上階跳往下階,則只加賦值的一個機器周期,另外進入該延時子函數和跳出該函數均需要2個機器周期,故

触摸延时开关的工作原理及电路图

触摸延时开关的工作原理及电路图 一、工作原理 触摸式延时开关有一个金属感应片在外面,人一触摸就产生一个信号触发三极管导通,对一个电容充电,电容形成一个电压维持一个场效应管管导通灯泡发光。当把手拿开后,停止对电容充电,过一段时间电容放电完了,场效应管的栅极就成了低电势,进入截止状态,灯泡熄灭。 触摸式延时开关电路虚线右面是普通照明线路,左部是电子开关部分。VD1~VD4、VS 组成开关的主回路,IC组成开关控制回路。平时,VS处于关断状态,灯不亮。VD1~VD4输出220V脉动直流电经R5限流,VD5稳压,C2滤波输出约12V左右的直流电供IC使用。此时LED发光,指示开关位置,便于夜间寻找开关。 IC为双D触发器,只用其中一个D触发器将其接成单稳态电路,稳态时1脚输出低电平,VS关断。当人手触摸一下电极M时,人体泄漏电流经R1、R2分压,其正半周使单稳态电路翻转,1脚输出高电平,经R4加到VS的门极,使VS开通,电灯点亮。这时1脚输出高电平经R3向电容C1充电,使4脚电平逐渐升高直至暂态结束,电路翻回稳态,1脚突变为低电平,VS失去触发电压,交流电过零时即关断,电灯熄灭。 二、按钮触摸开关 按动按钮开灯后,电路能自动延时关灯,电路如图二所示。D1为开关所在的安装位置做指示,D2~D5组成桥式整流,将50Hz的的交流电整流为100Hz的脉动直流电压,按下K1,电流经过R3限流后通过D6为C1充电,同时V1的控制极得到触发电压,V1导通,灯泡点亮。松手后K1自动复位断开,C1开始放电,为V1的控制极继续提供触发电压,V1继续导通,灯泡继续亮,当C1两端电压低于0.7V时,V1控制极失去有效的触发电压,此时V1阳极的脉动电流到0点时,与阴极电压相等而关断,灯泡熄灭,这就是单向可控硅的“过0关断”。调整R2的阻值,使C1有效放电时间达到40~60秒钟最好。图三电路多了一只用三极管组成的反相器,利用C1充电时间做灯泡点亮的延时时间。平时,Q1由R2提供偏压而饱和导通,使V1控制极失去有效触发电压,灯泡熄灭。按下按钮接通K1后,Q1基极为0V,Q1截止,V1控制极得到触发电压而导通,灯泡点亮,接通K1的同时,也为C1提供了放电的闭合回路,C1放电很快完成。松手后,K1复位自动断开,C1在R2限流下开始缓慢充电,此时Q1基极电压小于0.7V而继续截止。当C1两端电压≥0.7V时,Q1开始导通,使V1失去触发电压而过0关断,灯泡熄灭。R2的阻值和C1的容量,决定延时的时间长短。

相关主题