单片机控制的花样流水灯实现

  • 格式:doc
  • 大小:86.00 KB
  • 文档页数:5

多样流水灯的实现
摘要:单片机以其卓越的性能应用于各种控制领域,其兼容性强、编程灵活,多种方法可以实现相同的效果,本文以MCS-51为对象,采用三种方法来实现花样流水的效果,从不同的控制程序中来感受单片机灵活编程的魅力。

关键词:单片机汇编语言寄存器
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机。

随着单片机技术的迅速发展单片机被广泛地应用在工业自动化控制、智能仪器仪表、数据采集、通讯以及家用电器等领域。

MCS-51系列单片机品种齐全、兼容性强、软硬件资料丰富等特点,应用范围非常广泛。

本文就以相当普及的MCS-51系列单片机为对象,用汇编语言编写了四种不同的程序,实现了多种花样流水效果。

单片机控制的流水灯硬件电路如下:
图中,R1~R8为LED1~LED8的限流电阻,R11到R18为为LED11~LED18的限流电阻,R9、C3组成单片机的简易上电复位电路;C1、C2、T1组成单片机的时钟电路。

我们控制程序让P1、P2接口输出高低电平,就可以让LED1~LED8、LED11~LED18这16个灯实现花样流水。

图1中的P1.0到P1.7分别照应1灯到8灯,P2.0到P2.7分别照应9灯到16灯。

如下图所示,数字代表灯。

下面程序实现第一组灯(第1个灯和第16个灯)点亮,停止一秒,第一组灯熄灭,然后第二组灯(第2个灯和第15个灯)点亮,停止一秒,第二组灯熄灭……依次向后移动,直至第八组灯(第8个灯和第9个灯)点亮、熄灭,然后再从第一组灯开始,持续循环下去。

1、用位操作类指令实现
下面左侧为主程序,右侧为延时子程序。

KAISHI: ;程序开始
CLR P1.7 ;第1灯亮
CLR P2.0 ;第16灯亮ACALL YANSHI ;调用延时子程序SETB P1.7 ;第1灯灭SETB P2.0 ;第16灯灭
. .
. .
CLR P1.0 ;第8个灯亮CLR P2.7 ;第9个灯亮ACALL YANSHI
SETB P1.0 ;第8灯灭
SETB P2.7 ;第9灯灭
LJMP KAISHI ;返回到开始循环YANSHI: ;延时1S子程序MOV R1,#50
DD0:
MOV R2,#100
DD1:
MOV R3,#100
DJNZ R3,$
DJNZ R2,DD1
DJNZ R1,DD0
RET ;延时子程序结束,
返回到调用处的下一句
2、用移位指令实现
KAISHI: ;程序开始
MOV R4,#7FH ;给左侧的灯赋初始值
MOV R5,#0FEH ;给右侧的灯赋初始值MOV R0,#7 ;循环的次数ZHUYAO:
MOV P1,R4 ;第1个灯亮
MOV P2,R5 ;第16个灯亮ACALL YANSHI ;调用1S延时子程序
子程序同上
MOV A,R4
RR A ;右移一位
MOV R4,A
MOV A,R5
RL A ;左移一位
MOV R5,A
DJNZ R0,ZHUYAO;控制循环次数LJMP KAISHI ;返回程序开始循环
4、用寄存器加上移位指令实现CLR RS1;选用第二组工作寄存

SETB RS0
MOV R1,#7FH ;给寄存器
赋右移初始值SETB RS1 ;选用第三组
工作寄存器SETB RS0
MOV R1,#0FEB ;给寄存器
赋左移初始值KAISHI:CLR RS1
SETB RS0
MOV P1,R1
MOV A,R1
RR A ;右移一位
MOV R1,A
SETB RS1
SETB RS0
MOV P2,R1
MOV A,R1
RL A ;左移一位
MOV R1,A
LCALL YANSHI
LJMP KAISHI
上述四种方法都可以实现16个灯的花样流水,它们各有利弊,第一种方法稍显繁琐,需要对每一位进行操作,容易书写错误,,但一位对照一个灯,比较容易理解。

第三种是直接赋值实现花样流水,程序书写简单、清楚,如要更改灯的数量,修改程序就麻烦了。

第二种方法和第四种方法基本相同,不同的是一个用了移位指令加控制循环次数来实现流水,一个用了当前工作寄存器加移位指令实现流水,比较这两个程序发现第二种方法简单、容易接受,且修改程序方便,可以轻松改变程序来满足需要多少灯的要求,实现不同的流水效果。

本文未讲太多单片机的知识,如果需要,读者可以参考其他书籍。

参考文献:
1、作者:李秀忠.《单片机应用技术》.中国劳动社会保障出版社.2006年
2、作者:初航. 《三菱FX系列PLC编程及应用》电子工业出版社.2011年
3、作者:廖常初.《PLC基础及应用》第二版机械工业出版社.2011年
多样流水灯的实现
单位:安阳市高级技工学校
作者:李东风
时间:2015年11月。