您的位置:首页 > 其它

使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统

2016-01-25 11:41 866 查看
使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统
要求:
1、能输出4种花型,并能由人工进行花型的切换。可以使用按键,也可以使用拨动开关来实现切换,方法不限。
2、循环彩灯的循环速度可调。
3、按键要求:
(1)启动/暂停。按动一次启动,再按一次暂停。是一个双态转换键。
(2)花型变化。按一次,立即停止当前花型的显示,转换为下一种花型。4种花型可以循环切换。
(3)速度+。按键一次,速度略加快一点。
(4)速度-。按键一次,速度略减慢一点。
4、在LED显示器上显示相应的花型号。
悬赏分:30 - 离问题结束还有 14 天 21 小时
;==============================================================
上次编写了一个“键控流水灯”,后来不断有网友来电,希望再编写些其它花样的。
做而论道也有了一些设想,正巧有这位网友提出的要求,和做而论道的构思暗合,故此连夜调出个程序,也算是答题吧。
用PROTEUS仿真的画面如下:



图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/91d1fff221a004f50b46e0ef.html
;---------------------------------------------------
控制程序如下:
    ORG 0000H
    JMP START
    ORG 0003H
    JMP X0_INT
    ORG 000BH
    JMP T0_INT
    ORG 0013H
    JMP X1_INT
;---------------------------------
START:
    MOV TMOD, #51H       ;/*01010001 T1计数,T0定时*/
    MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz
    MOV TL0, #LOW (65536 - 50000)
    MOV TH1, #0
    MOV TL1, #0
    SETB TR0
    SETB TR1
    SETB IT0
    SETB IT1
    MOV IE, #10000111B
    MOV IP, #00000101B
    MOV R7, #20
    MOV 30H, #20
    MOV 31H, #0
    MOV 32H, #0
    MOV P2, 31H
    INC P2
    SJMP $
;---------------------------------
T0_INT:          ;50ms执行一次
    MOV TL0, #LOW (65536 - 50000) ;重新写入初始值
    MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz
;------------------
JIA:
    JB   P3.0, JIAN
    DEC 30H          ;加速
    MOV A, 30H
    JNZ XXX          ;不能让它为0
    INC 30H
XXX:
;    JNB P3.0, $
;------------------
JIAN:
    JB   P3.1, XIANSHI
    INC 30H
    MOV A, 30H
    SUBB A, #80
    JC   CCC
    MOV 30H, #80
CCC:
;    JNB P3.1, $
;------------------
XIANSHI:
    DJNZ R7, T0_END
    MOV R7, 30H
    INC 32H
    ANL 32H, #7
;------------------
    MOV A, 31H
    ANL A, #3
    RL   A
    RL   A
    RL   A
    ADD A, 32H
    MOV DPTR, #HUA_Y
    MOVC A, @A+DPTR
    CPL A
    MOV P1, A
;------------------
T0_END:
    RETI
;---------------------------------
X0_INT:          ;设置花型
    INC 31H
    ANL 31H, #3
    MOV P2, 31H
    INC P2
    RETI
;---------------------------------
X1_INT:          ;启动/停止
    CPL TR0
    RETI
;---------------------------------
HUA_Y:
    DB 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
    DB 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
    DB 0x81,0x42,0x24,0x18,0x81,0x42,0x24,0x18
    DB 0x18,0x24,0x42,0x81,0x18,0x24,0x42,0x81
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: