最简单的八路跑马灯

实验1: 最简单的八路跑马灯

本例实验主要用到了延时子程序,clr ,lcall ,ajmp 指令, 通过轮流点亮p1.0 …..P1.7 实现效果。用户可以通过此程序的学习, 初步掌握单片机的IO 端口操作。

练习1: 怎样把延时的时间改为更短, 或者更长?

练习2: 怎样用P0,P2,P3端口来操作?

练习3: 怎样实现不同的跑马花样?

相关原理图:

程序运行照片:

接线方法: 用一条8PIN 的数据排线把CPU 部份的P1口(JP44)连接到八路指示灯部份的JP32 接线图以及运行瞬间的照片(可以看到8路指示灯轮流点亮)

程序流程图:

汇编语言参考程序:

org 0000h ;开始

ajmp loop

org 0080h ;到0030h 处避开00-30的敏感地址

loop:

mov p1,#0ffh ;关闭所有灯

clr p1.0 ;点亮灯p1.0

lcall delay ;延时一段时间?

clr p1.1 ;点亮灯p1.1

lcall delay

clr p1.2 ;点亮灯p1.2

lcall delay

clr p1.3 ;点亮灯p1.3

lcall delay

clr p1.4 ;点亮灯p1.4

lcall delay

clr p1.5 ;点亮灯p1.5

lcall delay

clr p1.6 ;点亮灯p1.6

lcall delay

clr p1.7 ;点亮灯p1.7

lcall delay

AJMP LOOP ;到最开始loop 处重新运行

delay: mov r5,#20 ;延时。

d1: mov r6,#40

d2: mov r7,#248

djnz r7,$

djnz r6,d2

djnz r5,d1

ret

end

c 语言参考程序:

#include //头文件

#define uchar unsigned char //宏定义,为方便编程

#define uint unsigned int

#define LED P1 //宏定义,将P1口定义为LED

uchar led_value[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //定义一数组,内存放跑马灯数据

uchar *p=led_value; //定义指针,指向跑马灯数组首地址

void delay() //延迟函数,与跑马灯跳动频率有关

{

uchar ii,jj;

for(ii=0;ii

for(jj=0;jj

}

void run_led() //跑马灯运行函数

{

while(*p!=0x00)

{

LED=*p; //将数组中数据取出赋给P1口 p++; //预取下一数据

delay(); //延迟

}

p=led_value;

}

char code SST516[3] _at_ 0x003b; //仿真器保留 main() //主函数

{

while(1)

run_led(); //上电即运行跑马灯程序

}

实验1: 最简单的八路跑马灯

本例实验主要用到了延时子程序,clr ,lcall ,ajmp 指令, 通过轮流点亮p1.0 …..P1.7 实现效果。用户可以通过此程序的学习, 初步掌握单片机的IO 端口操作。

练习1: 怎样把延时的时间改为更短, 或者更长?

练习2: 怎样用P0,P2,P3端口来操作?

练习3: 怎样实现不同的跑马花样?

相关原理图:

程序运行照片:

接线方法: 用一条8PIN 的数据排线把CPU 部份的P1口(JP44)连接到八路指示灯部份的JP32 接线图以及运行瞬间的照片(可以看到8路指示灯轮流点亮)

程序流程图:

汇编语言参考程序:

org 0000h ;开始

ajmp loop

org 0080h ;到0030h 处避开00-30的敏感地址

loop:

mov p1,#0ffh ;关闭所有灯

clr p1.0 ;点亮灯p1.0

lcall delay ;延时一段时间?

clr p1.1 ;点亮灯p1.1

lcall delay

clr p1.2 ;点亮灯p1.2

lcall delay

clr p1.3 ;点亮灯p1.3

lcall delay

clr p1.4 ;点亮灯p1.4

lcall delay

clr p1.5 ;点亮灯p1.5

lcall delay

clr p1.6 ;点亮灯p1.6

lcall delay

clr p1.7 ;点亮灯p1.7

lcall delay

AJMP LOOP ;到最开始loop 处重新运行

delay: mov r5,#20 ;延时。

d1: mov r6,#40

d2: mov r7,#248

djnz r7,$

djnz r6,d2

djnz r5,d1

ret

end

c 语言参考程序:

#include //头文件

#define uchar unsigned char //宏定义,为方便编程

#define uint unsigned int

#define LED P1 //宏定义,将P1口定义为LED

uchar led_value[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //定义一数组,内存放跑马灯数据

uchar *p=led_value; //定义指针,指向跑马灯数组首地址

void delay() //延迟函数,与跑马灯跳动频率有关

{

uchar ii,jj;

for(ii=0;ii

for(jj=0;jj

}

void run_led() //跑马灯运行函数

{

while(*p!=0x00)

{

LED=*p; //将数组中数据取出赋给P1口 p++; //预取下一数据

delay(); //延迟

}

p=led_value;

}

char code SST516[3] _at_ 0x003b; //仿真器保留 main() //主函数

{

while(1)

run_led(); //上电即运行跑马灯程序

}


相关文章

  • 三国演义心得
  • [转载]<三国演义>心得(三) <三国演义>很善于写战争,更善于在战争中写人物,它往往是以战争为背景,采用粗线条的勾勒,略貌取神,以最简洁的文字来揭示人物的精神和思想性格. 我们首先来说汜水关关公温酒斩华雄这段.我最 ...查看


  • 游冉庄地道战遗址
  • 游冉庄地道战遗址 "五一"前夕,学校为了加强我们爱国主义教育,组织我们去参观冉庄地道战遗址.同学们在车上有说有笑,一个个精神饱满.天空是那样明净的蓝,路旁的小树不停地向我们招手问好,春天的种子在大地的每一个角落里发芽.经 ...查看


  • 中央电视台无锡影视基地三国城景区导游词
  • 中央电视台无锡影视基地三国城景区 [景区概况]三国城坐落在风景秀丽的太湖之滨."三国城"是中央电视台为拍摄"三国演义"命名兴建,1994 年8月20日正式对外开放,是一座以影视制作为主.兼顾旅游功能的 ...查看


  • 可以调控的跑马灯
  • Hebei Normal University of Science & Technology 单片机原理 及应用课程设计 ( 2013 年至2014学年度第 2 学期) 题 目: 可以调控的走马灯 学 生 姓 名: 院(系.部): ...查看


  • 自学单片机心得体会
  • 自学单片机心得体会 无论是作为一名业余的电子爱好者还是一名电子行业的相关从业人员,掌握单片机技术无疑可以使您如虎添翼,为您的电子小制作或者开发设计电子产品时打开方便的大门! 而且现在学习单片机技术的热潮正在不断升温,电子发烧友网开设了详细的 ...查看


  • 罗炜电子工艺实训报告
  • 院 系:机电工程学院 专业班级:2013级电子信息工程二班 学生姓名:罗 炜 学 号:2013041632 指导教师:江晓玲 李建华 报告时间:2015年4 月25日 电子工艺实训报告 2015年04月20日至2015年04月24日我们进行 ...查看


  • 手工制作大全:简单易作的电动走马灯
  • 家里的一只石英钟走时不准,利用其中的机芯,再加上一些废材料,做成了一只十分有趣的电动走马灯. 过程如下: 1.取出石英钟机芯,打开后盖,将如图所示的三个齿轮全部去掉(中间两个套在一起的齿轮分别是时针.分针),这么做的目的,一是用来减小运行过 ...查看


  • 小兵张嘎阅读汇总
  • <小兵张嘎>阅读题 A.机关枪 B.步枪 C.手枪 5.钱区队长叫什么名字? (B) 一.简答题 1.你觉得嘎子是个怎样的孩子? A.钱云青 B.钱云清 C.钱钟亮 答:我觉得嘎子吃得苦,耐得寒,而且聪明伶俐,乖巧懂事, 性情活 ...查看


  • 10走马灯的奥秘 1
  • 2013 年下学期教学案( 主备教师 学习内容 授课教师 <10 走马灯的奥秘> 知识与技能 使用时间 年级 第 课型 学科) 识字 全期累计编号:第 节 周星期 (2013 年 月 日) 第 节 第 1 课时 学习目标 教学重 ...查看


热门内容