您当前的位置:五五电子网电子知识电子制作自动控制-单片机用单片机控制一个LED闪烁的实验 正文
用单片机控制一个LED闪烁的实验

用单片机控制一个LED闪烁的实验

点击数:7625 次   录入时间:03-04 11:57:07   整理:http://www.55dianzi.com   自动控制-单片机

  依据单片机的基本工作条件和任务目标,设计单灯闪烁器的电路原理图如下图。

单灯闪烁器的电路原理图

  本电路图使用了八个发光二极管,是为了功能扩展的需要,从而体现单片机产品只需要修改程序就能修改产品功能的灵活性。

  一、程序设计
  
  我们选择图中的LED1作为单灯闪烁的控制目标,也就是我们将看到LED1单独闪烁。在我们编写程序前应该学会用程序流程图来表达我们的程序设计意图,特别是设计复杂程序的时候,更需要这一步骤。

  1.程序流程图设计
  
  程序流程图又称之为程序框图,它是程序开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,能比较直观和清晰地描述过程的控制流程,易于学习掌握。因此,程序流程图是程序开发者最普遍采用的一种工具。

  程序流程图一般采用下面五种符号表示:

  ①起始框②终止框③处理过程框④判断框⑤流程线

   依据实训项目任务目标和流程图编写规则,《单灯闪烁器》程序流程图设计如下图。

单灯闪烁器程序流程图

  2.延时程序设计
  
  分析程序流程图发现,要点亮LED和熄灭LED可以采用指令CLR P1.0和SETB Pl.0实现,延时要用什么指令实现呢?

  51指令系统没有专门的延时指令,需要我们编写一个延时子程序。为了编写延时子程序,先来学习几个相关的知识点:

  (1)振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,与单片机系统的晶体振荡器(晶振)有关,振荡周期等于晶振频率的倒数。

  本系统的晶体振荡器的频率f=12MHz,所以振荡周期的计算公式:

  (2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。
  
  (3)机器周期:一个机器周期包含6个状态周期S1-S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。

  本系统的晶体振荡器的频率f=12MHz,时钟周期=12ms,所以机器周期的计算公式:

  (4)指令周期:它是指CPU完成一条指令操作所需的全部时间。每条指令的执行时间都是由一个或几个机器周期组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。如指令D2:DJNZR6,D2就是条双周期指令,也就是说执行这条指令需要2个机器周期,即需要2μs才可以执行完毕。

  单片机执行一条指令(D2:DJNZ R6.D2)需要2个微秒,如果让单片机执行62500次这条指令,那需要多少时间呢?可以计算得出是62500×2μs=125μS。

  操作码DJNZ的功能是自减1不为零跳转,冒号前面的D2为该条指令的标号,标号是地址的符号化,代表该条指令的地址位置。后面跟了当前工作寄存器R6和该条指令发生跳转时的目标地址D2。

  下面我们来分析下D2:DJNZ R6,D2这条指令的执行过程:

  第一步:把R6的内容减1。

  第二步:判断R6的内容是否为0。

  如果不等于0,就跳转到目标地址D2的地方去执行。因为本条指令的目标地址和标号都是D2,所以单片机将再继续执行一次指令D2:DJNZR6,D2。

  如果R6的内容等于0,就顺序执行下面的指令。

  如果我们设计子程序时,使得单片机重复执行这条指令(D2:DJNZ R6,D2)62500次后才能结束,也就是说单片机需要花125ms的时间来执行该延时子程序,相对于主程序来说本文所要编写的延时子程序的功能是延时125ms,就起到了延时的作用。

  延时子程序设计如下:

  在设计子程序的时候,一般开始的第一条指令一定要加标号,且标号命名的含义要和本子程序的功能相似,这样更方便程序的阅读与编写,如DELAY是延时的意思。子程序一定要以子程序返回指令RET结束。上面的延时子程序要执行250X250=62500次该指令D2:DJNZ R6,D2后才会结束,延时时间差不多是125ms。

  3.单灯闪烁程序设计
  
  结合设计的程序流程图和延时子程序,编写程序如下:

 



www.55dianzi.com

  四、制作步骤
  
  1、利用我们前期做成的单片机最小系统硬件电路,或者按照图1购买元件,焊接成硬件电路,详细资料可以参照本刊前2期的文章。

  2、使用KeilC51μVision2编辑单灯闪烁源程序,编译源代码并生成目标程序代码,再把目标程序代码通过编程器写入到单片机芯片中。

  3、把单片机芯片插到硬件电路的紧锁坐上,并通电观察结果,可以看到LEDl一直不停的闪烁。

  五、产品功能扩展
  
  上面的产品只有一个LED在闪烁,如果想做成一个八路的霓虹灯,只需要修改源程序代码,就可以修改产品功能,我们就把上面的单灯闪烁器程序修改成霓虹灯程序如下:




本文关键字:单片机  自动控制-单片机电子制作 - 自动控制-单片机