修改版走马灯软件设计.docx

上传人:b****4 文档编号:2975885 上传时间:2022-11-16 格式:DOCX 页数:15 大小:175.21KB
下载 相关 举报
修改版走马灯软件设计.docx_第1页
第1页 / 共15页
修改版走马灯软件设计.docx_第2页
第2页 / 共15页
修改版走马灯软件设计.docx_第3页
第3页 / 共15页
修改版走马灯软件设计.docx_第4页
第4页 / 共15页
修改版走马灯软件设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

修改版走马灯软件设计.docx

《修改版走马灯软件设计.docx》由会员分享,可在线阅读,更多相关《修改版走马灯软件设计.docx(15页珍藏版)》请在冰豆网上搜索。

修改版走马灯软件设计.docx

修改版走马灯软件设计

第一章课题简介

1.1课题简介

跑马灯,顾名思义,就是“会像马儿一样跑动”的小灯,故取名“跑马灯”。

跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由8个LED发光二极管组成.

LED发光二极管与单片机的接口一般可以分为直接式、扫描式与多路复用式三种

本实验采用优领域-电子领域?

E?

X8z?

L?

H?

]?

G直接式:

每个LED发光二极管对应单片机的一个唯一的输出引脚,即单片机的一个输出端口(P0、P1或P2)就能够控制8个LED发光二极管。

当相应引脚输出为低时,电流从VCC流入单片机,LED发光二极管开始发光,发光亮度由匹配的串联电阻控制;当相应引脚输出为高时,没有电流通过LED发光二极管,LED发光二极管熄灭。

1.2课题研究的目的与意义 

3X?

M?

]?

R?

d"Z?

a2`/`0通过本次的课程设计掌握单片机系统设计思路和基本步骤:

掌握AT89C51芯片的使用,掌握LED驱动电路,延时程序和按键处理程序设计。

能熟练使用Protel99SE,Visio等相关软件的使用。

单片机嵌入式系统中的跑马灯就像C语言的“HelloWorld!

”程序一样,虽然简单,却是一个非常经典的例子。

对初学者来说,通过跑马灯系统设计的学习与编程,能很快熟悉单片机的操作方式,了解单片机系统的开发流程,并通过第一个实例增强自己学习单片机系统设计的信心。

下面详细讲解跑马灯电路的设计。

优领域-电子领域?

A(N'U)P?

b)W优领域-电子领域?

第二章软件设计

2、1软件设计实现的功能

1具有走马灯,霓虹灯功能;

2走马灯规律:

自右向左隔两个灯;

3霓虹灯规律:

每隔一秒闪烁一次,隔灯亮灭为一秒;

4走马灯显示个数为8个;

5由走马灯转为霓虹灯由按钮控制;

2、2软件结构模块图

图2.1软件结构模块图

2、3软件编程流程思想

 

图2.2软件编程流程思想

 

中断是指CPU在执行程序的过程中,当出现异常情况或特殊请求时,停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。

中断是单片机实时地处理内部或外部事件的一种内部机制。

当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

第三章软件分析

3.1软件流程总图设计

图3.1软件流程总图设计

 

3.2软件分部程序设计  

3.2.1初始化程序

TIME BIT20H.0;把位地址20H.0赋给变量TIME

DISPLAY BIT20H.1把位地址20H.1赋给变量DISPLAY

ORG0000H;程序开始地址

JMPMAIN;跳转到主程序

MAIN:

MOV SP,#40H;堆栈入口地址40H

MOV TMOD,#01H;T0工作在模式1

MOV TH0,#3CH;给高8位赋初值

MOV TL0, #B0H;给低8位赋初值1

SETB IT0;下降沿有效

SETB TR0;打开定时器T0启动控制位

SETB EX0;开外部中断INT0

SETB ET0;开定时器T0

SETB EA;开中断总允许

CLR TIME;取反直接寻址位TIME

CLR DISPLAY;取反直接寻址位DISPLAY

MOV A, #FEH;给累加器赋初值FEH

LPP:

JNB DISPLAY,LPP00;直接寻址位为0就跳转到LP00处

LCALL SHINE;调用霓虹灯指令

JMP LPP;跳转到LPP处

LPP00:

LCALL WATERLIGHT;调用走马灯指令

  JMP LPP;跳转到LPP处

 

3.2.2延时模块程序编辑

图3.2延时模块流程图

工作模式程序

方式选择

 选择T0的方式1

计数初值的计算

机器周期:

T=12M/6M=2us

则T0的定时初值N=2^16-50000=15536=3CB0H

主程序中关于T0的部分

 MOV TMOD,#01H;T0工作在模式一

 MOV TH0,#3CH;给高8位赋初值

 MOV TL0,#B0H;给低8位赋初值

SETB TR0;打开定时器T0启动控制位

SETB ET0;允许T0中断溢出

SETB EA;打开中断允许总控位

T0的中断入口地址

 ORG000BH;T0的中断入口地址

 JMP T0;跳转到T0处

T0中断服务入口程序

T0:

  CLR TR0;关闭T0启动控制位

     DJNZ R0,LOOP;寄存器减一,不为0则转移到LOOP

     MOV  R0,#0AH;给R0赋初值10;

     SETB  TIME;启动计时

 LOOP:

MOV TH0,#3CH;给高8位赋初值

MOV TL0,#B0H;给低8位赋初值

SETBTRO;打开定时器T0启动控制位

    RETI;中断返回

3.2.3显示功能模块编程

图3.3显示功能模块流程图

主程序部分

MOVSP,#40H;堆栈入口改为40H

SETB IT0;下降沿有效

SETB EX0;开外部中断INT0

SETB EA;打开中断允许总控位

中断入口

ORG0003H;外部中断T0入口地址

JMP INT0;跳到INT0处

中断服务程序

INT0:

CLR  EX0;关闭外部中断

JB  DISPLAY,LOP;如果DISPLAY为位1则跳转到LOP处

MOV A,#0FFH;给累加器赋初值A,FFH

LOP0:

CPL DISPLAY;取反DISPLLAY位

   SETB EX0;开外部中断INT0

  RETI ;中断返回

LOP:

MOV A,#0FEH;给累加器赋初值A,FEH

JMPLOP0

 

3.2.4走马灯模块流程图

图3.4走马灯模块流程图

WATERLIGHT:

  CLR  EX0;关闭外部中断T0

                   MOV P0,A;将累加器的值传送到P0口

                   JNB TIME,$;直接寻址位TIME为0则等待

                  CLR TIME;TIME位清零

                   RL A;将累加器A中值左移一位

                   RL A;将累加器A中的值左移一位

                   SETBEX0;关闭外部中断INT0

                   RET;程序返回

3.2.5霓虹灯模块流程图

图3.5霓虹灯模块流程图

SHINE:

CLR EX0;关闭外部中断INT0

    MOV P0,A;累加器的值传送到P0口

    JNB  TIME,$;直接寻址位TIME为0则等待

    CLR  TIME;TIME位清零

    SETB  EX0;打开外部中断INT0

    RET;程序返回

               

 第四章设计心得体会

 经过多天的努力,终于完成了第一次任务,设计出了走马灯!

也可以说是经过了多天的学习,尽管期间苦难重重,但我还是从中学习了不少新的知识和解决困难的方法,也体验到了自主创作的快乐

对于本次课题的心得体会,我觉得有以下几点:

1、不管做什么事,计划是很重要的。

没有一个完好的计划,做事情就会没有一个好的顺序,做事情会比较乱,很难成功。

而有一个好的计划,不管做什么事都会事半功倍,做事心中有数,明确重点和缓急,不会有疏漏。

这样才能提高成功率。

2、做事要多动脑,选出最好的方法。

一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。

3、要注意细节。

细节决定成败,这句话在这次课题中不仅一次得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。

因此我们不仅仅要有整体意识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。

5、最后,也是最重要的一点,通过这次课题,我们学到了很多有关单片机方面的知识,也对单片机有了更深入的了解。

使我们受益匪浅。

 

第五章附录

附录一硬件图,总程序

5.1硬件图

图5.1硬件图

5.3总程序

TIME BIT20H.0;把位地址20H.0赋给变量TIME

DISPLAY BIT20H.1;把位地址20H.1赋给变量DISPLAY

ORG0000H;程序开始地址

JMPMAIN;跳转到主程序

ORG0003H;INT0的中断入口地址

JMP INT0;跳转到INT0

ORG000BH;T0的中断入口地址

JMP T0;跳转到T0处

MAIN:

MOV SP,#40H;堆栈入口地址40H

   MOV TOMD,#01H;T0工作在模式1

   MOV TH0,#3CH;给高8位赋初值

   MOV TL0, #B0H;给低8位赋初值1

   SETB IT0;下降沿有效

   SETB TR0;打开定时器T0启动控制位

   SETB EX0;开外部中断INT0

   SETB ET0;开定时器T0

   SETB EA;开中断总允许

   CLR TIME;取反直接寻址位TIME

CLR DISPLAY;取反直接寻址位DISPLAY

MOV A, #FEH;给累加器赋初值FEH

LPP:

JNBDISPLAY,LPP00;直接寻址位为0就跳转到LP00处

LCALL SHINE;调用霓虹灯指令

JMP LPP;跳转到LPP处

LPP00:

LCALL WATERLIGHT;调用走马灯指令

   JMP LPP;跳转到LPP处

T0:

   CLR TR0;关闭T0启动控制位

     DJNZ R0,LOOP;寄存器减一,不为0则转移到LOOP

     MOV  R0,#0AH;给R0赋初值10

     SETB  TIME;启动计时

LOOP:

 MOV TH0,#3CH;给高8位赋初值

MOV TL0,#B0H;给低8位赋初值

SETB TRO;打开定时器T0启动控制位

     RETI;中断返回

INT0:

CLR  EX0;关闭外部中断

JB  DISPLAY,LOP;如果DISPLAY为位1则跳转到LOP处

MOV A,#0FFH;给累加器赋初值A,FFH

LOP0:

CPL DISPLAY;取反DISPLLAY位

   SETB EX0;开外部中断INT0

  RETI ;中断返回

LOP:

MOV A,#0FEH;给累加器赋初值A,FEH

JMPLOP0

WATERLIGHT:

  CLR  EX0;关闭外部中断T0

                   MOV P0,A;将累加器的值传送到P0口

                   JNB TIME,$;直接寻址位TIME为0则等待

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1