观赏价值。通过对一些相关书籍资料的查阅及网上各种作品和代码的浏览,对各种实现代码的比较和优化,总结出本程序,以较优秀的代码实现各种可控的“跑马灯”功能。Р硬件系统部分包括显示部分、按键控制部分和控制芯片。Р系统框图如下:Р图1.1 系统框图Р第二章硬件电路设计Р本设计使用89C2051芯片作为控制芯片,利用P1口连接8个发光二极管,通过P3接口连接按键S作控制开关的输入,控制开关连接INTO中断,通关按键触发中断响应控制“跑马灯”的亮灭,以达到显示效果。开始时所有灯全亮,按下按键S时开始跑马灯,再按下按键S时停止,再按下S时继续,并设计多种亮暗组合。Р硬件电路连接图如下:Р图2.1 硬件电路连接图Р第三章程序部分设计Р程序设计思路:开始时跑马灯全亮,接着读取按键状态,当按键没有闭合时,一直在此查询按键状态;当有按键真正闭合后,开始读程序存储器,调出I/O值送给P1口,实习一次LED状态改变。然后再检查按键状态,若无闭合,继续读程序存储器;否则,在此循环,直到按键再次按下才读程序存储器。Р主程序的流程图如下:Р初始化РR0送AР查表取数送P0口РR0送A Р送P2口Р?Р查表取数送P2口РR0加1,调用延时РR0=90?Р NРR0加1Р?Р YР图3.1 主程序流程图Р主程序源代码如下:Р S EQU P3.2Р ORG 0000HР LJMP STARTР ORG 0030HР START:MOV P1,#00H ;初始化P1口,LED全亮Р CLR 00H ;清标志位00HР X2:JB S,X1Р LCALL DEL10 ;延时10MS的消抖Р X1:JB S,X2Р JNB S,$ ;等待按键松开Р MOV A,#00HР LOOP:JB 00H,X3 ;判断00H位Р MOV R2,AР MOV DPTR,#TABР MOVC A,@A+DPTR Р INC R2