实例讲解,51单片机常用延时控制子程序
单片机中常用的延时控制方式有两种。一种是采用编程的方式达到延时的目的,另一种方法则是通过单片机中的两个定时器T0和T1进行计时达到延时的目的。
本例通过具体实例说明单片机的两种延时控制方式在实际中的应用。
采用编程方式延时控制
通过编程使单片机分别产生约10ms和约0.5s的延时。单片机的晶振频率为12MHz。因为单片机的晶振频率为12MHz,所以单片机1个机器周期的时间为1μs。
2.控制程序
(1)10ms延时程序。
此程序的实际延时时间为:1+(1+2×250+2)×20=10.061ms
(2)0.5s延时程序。
此程序实际延时时间为:251×66×5×6+66×5×2+5×2+1×2+5×6+66×5×6=499662μs=0.49662s。
采用定时器延时控制
1.问题的提出
利用单片机定时器使之产生10h的延时控制。
2.控制程序
说明:程序中用“;程序开始******”符号表示程序开始,用“;程序结束******”符号表示程序结束,用“;-------------”表示将程序中各阶段程序分隔开,以便程序的条理性和直观性,这些符号均可以同时输入到Keil μVision3软件中进行编译。以下各例程序均同。
单片机小制作,智能触摸延时开关
功能设计
图1.1 电路原理图
本智能开关的电路如图1.1所示,设计了两种工作模式,分别为静态模式和工作模式。静态模式下,红、绿、黄LED指示灯亮,点阵屏和节能灯都是熄灭状态;工作模式下,相应的LED指示灯熄灭,点阵屏和节能灯开启。
为了使用方便,本智能开关设计了3个触摸按键(见图1.2)。
图1.2 实际效果图(LED下方为触摸式开关,节能灯以220U指示灯代替)
绿键:在静态模式(上电即进入静态模式)下,触摸此键即进入工作模式,绿色指示灯熄灭,节能灯和点阵屏开启,延时1min后转入静态模式。
黄键:在静态模式下,触摸此键则进入工作模式,黄色指示灯熄灭,节能灯和点阵屏开启,延时2min后转入静态模式。
红键:在静态模式下,触摸此键则进入工作模式,红色指示灯熄灭,节能灯和点阵屏开启,延时4min后转入静态模式。
材料准备
表1.1 元器件清单
制作过程
1.测试点阵的行列引脚。因为点阵引脚排列不规则,所以我们需要先测其引脚,然后记录在纸上。注意,每一排引脚有行也有列,一定要耐心测试。
2.将排孔、铜线、LED焊接在万用板上。固定好之后,将点阵屏插到排孔上。注意I/O接口线要平行排列,且上端要做成按钮式,既美观大方又容易触发。
3.将余下的电子元器件焊接在另外一块板上。注意,元器件布局要以连线不交插、美观大方作为两个基本点。还要注意,继电器要远离单片机,防止其干扰单片机电路。
4.按照电路图将元器件连接起来,这个工作很是烦琐,一定要有耐心。注意尽量不要使导线交叉,点阵连接最好用不同颜色的排线连接。
5.用铜柱将两块板子固定在一起。至此,开关的硬件已完工。
软件设计
程序包括主程序、初始化程序、触摸键检测子程序、提醒显示子程序、定时器0溢出中断子程序。
初始化程序除了对继电器、3个LED指示灯、点阵屏进行设置外,还必须将P0置1设为高阻输入状态,这是实现触摸功能的前提。
触摸键检测子程序的任务是根据触摸键操作来执行相应的处理程序,例如,触摸了绿指示灯的触摸按键,接下来单片机要执行4个任务:(1)打开定时器中断;(2)打开继电器,开启节能灯;(3)熄灭绿指示灯;(4)调用提醒显示子程序。注意,触摸键检测子程序需检测单片机引脚高电平,跟普通按键正好相反,当然消抖延时也是必不可少的。
提醒显示子程序的任务是显示所在位置的楼层数。
定时器中断的任务是延时一段时间,然后关掉定时器中断、继电器及提醒显示子程序,打开对应指示灯。定时器延时时间的到来需用中断次数和标志位相与作为判定条件。
另外,要提醒大家几点,调试的时候应该根据出现的现象分析程序哪一部分有问题,程序尽量条理清晰、模块化,以节省调试时间。切记不要使用交流电源,那样对触摸键的干扰会很大。编程部分难度不大,我相信,只要用心编写,耐心调试,把错误一步一步改正过来,大家会很快享受到电子制作带给我们的快乐。
相关问答
单片机 用中断和定时怎么 延时 ?1.软件延时利用多个指令的执行来延时,累加每个指令的运行时间,来计算出延时的总时间。一般写成一个延时函数。如,以下是10ms软件延时。delay_10ms(){int...
单片机 延迟1秒怎么设置?单片机延迟1秒可以设置定时器,在定时器中断函数里进行计数,具体实现取决于单片机型号和使用的开发环境。因为单片机需要精确计时,通过定时器和中断可以实现更...
定时器 T0工作方,已知 单片机 系统晶振频率为6mhz,若要求定时值为50ms时, 定时器 T0工作方式1?12M晶振机器周期是1us,6M的话就是2us,定时器工作方式1为16位定时,50ms=50000us=25000个机器周期,那么初值TH0=(65536-25000)/256;TL0=(65536-...
52 单片机延时 咋写?52单片机延时可以使用循环计数的方式实现。具体步骤如下:1.首先,明确延时的时间要求,例如延时100毫秒。2.接下来,根据单片机的主频确定每个机器周期的时间...
32 单片机 怎么设置20毫秒的 延时 ?要实现20毫秒的延时,可以使用定时器来实现。首先需要配置定时器的时钟源和分频系数,使得定时器的时钟频率为1MHz。然后设置定时器的计数值为20000(即20毫秒的...
如何使用51 单片机 的 定时器 写一个精确 延时 1ms的 延时 子函数。 ...要是精确延时的话,最好用汇编程序,每一条指令都能算出时间,哈给你一个例子#includevoidInitTimer0(void){TMOD=0x01;TH0=0x0FC;TL0=0x18;EA=1...
求一个51 单片机 定时闹钟程序。要C语言。能够调时间 - hL0lQS...我来发一个C语言211351单片机时钟程序,希望5261能帮到你/*程序功能:4102带定时闹铃时钟*//*-------...
单片机延时 程序的作用?这个原因还是蛮多的,分同的情况,单片机的处理速度是很快的,有的时候为了让我们便于观察需要加入延时,例如一个指示灯的亮灭,如果不加入延时是看不出来的,再...
单片机 怎么设置LED点阵亮的时间长度?要设置LED点阵亮的时间长度,可以通过控制单片机的IO口输出信号来实现。首先,需要确定所使用的单片机型号和开发环境,然后编写相应的程序代码。在程序中,可以...
stc15f2k60s2 单片机 有几个 定时器 ?"stc15f2k60s2单片机有4个定时器。1.stc15f2k60s2单片机包含4个定时器,分别是定时器0(T0)、定时器1(T1)、定时器2(T2)和定时器3(T3)。2.这些定时...