单片机流水灯定时中断程序工程图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验设计
题目:LED流水灯设计
学生:饶嘉琪
学号: 1105049
院(系):机电工程学院
专业:动力工程
指导教师:吉涛
2012年3月20日
1.设计目的:
1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置;
2、掌握PROTEUS软件的安装和配置过程;
3、学会绘制电路原理图;
4、了解装载程序和调试;
5、PROTEUS VSM 与uVision3的联调;
6、用单片机仿真软件,并进行调试;
7、掌握单片机相应的编程步骤,了解走马灯相关的工作流程;
8、熟悉KEIL\PROTEUS等相关软件的使用。
2.任务要求:利用汇编语言(或C语言),实现8个单色LED灯的左、右循环显示,程序中运用定时中断。
3. 硬件电路图:
4.软件程序清单:
ORG 0000H ;起始地址
LJMP MAIN ;转入主函数
ORG 000BH ;定时中断0入口地址
LJMP PE ;转入中断程序
ORG 0100H ;主程序入口
MAIN: ;
MOV TMOD,#01H ;设置定时中断0的工作方式
MOV TL0,#0EFH ;添加初值
MOV TH0,#0D8H ;
SETB EA ;开总中断
SETB ET0 ;开定时中断
SETB TR0 ;开始计时
MOV P0,#00H ;点亮所有灯
MOV R0,#0C8H ;设定定时次数,两百次10ms*200=2s QUAN: ;
MOV A,R0 ;
JNZ QUAN ;
MOV A,#0FEH ;
PAOMA: ;点亮第一个灯
MOV P0,A ;
MOV R0,#32H ;设定定时次数50次。10ms*50=0.5s HJ:
CJNE R0,#00H,HJ ;定时器重复50次,延时0.5秒 RL A ;循环左移进行跑马灯
LJMP PAOMA ;
PE: ;定时器
MOV TL0,#0EFH ;
MOV TH0,#0D8H ;
DEC R0 ;用R0决定定时次数
RETI ;
END
5.分析总结:
本课题单片机控制预计8只LED按2种不同的模式滚动显示,模式选择由K1健控制,显示效果使用8个LED;设置三个按钮,K1为模式健,通过按键调整显示结果,要求有两种模式,即由左向右和由右向左;;K2为加速键,提高走马灯显示效果的速度;K3为减速健,放慢走马灯的显示效果速度。
但是在程序编写时发现若用汇编语言会造成逻辑混乱,课下准备用C语言编写控制方向、速度由五个开关控制的程序。
在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。不能同时有两个端口同为高电平。
中断功能让程序操作更加有效率,也让程序的应用更具有扩展性。观察中断过程,从两个方面来看:一是中断执行所花费的时间;二是中断执行时,主程序的工作状况。本次实验定时中断的最小时间间隔为10ms。
调试过程中问题很多,主要原因是对单片机结构的不熟悉,其次就是程序中的一些问题。实际接线前应该先用protues仿真一下实验结果,确认无误后准备上课时接线。