两个led灯循环左移

//两个led灯循环左移

#include<reg52.h>
#include<intrins.h>
unsigned char temp;
void delay(unsigned int z); // 延时子程序

void main()
{

temp=0xfa;				  //led  1,3
P2=temp;
 
 while(1)
 {
  delay(1000);   
  temp = _crol_(temp,1);  //循环左移1位,点亮下一个LED
  P2 = temp;
}

}

void delay(unsigned int z) // 延时子程序
{
unsigned int x,y;
for(x = z; x >0; x–)
for(y = 110; y >0; y–);
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于单片机的LED流水设计 设计任务 1掌握MCS-51系列8051、8255的最小电路及外围扩展电路的设计方法 2了解单片机数据转换功能及工作过程 3设计LED流水系统,实现8个LED霓虹的左、右循环显示 4完成主要功能模块的硬件电路设计 5用proteus软件完成原理电路图的绘制 一 设计方法 本课题使用AT89C51单片机时无须外扩存储器。因此,本流水实际上就是一个带有八个 发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必 要的软件组成的单个单片机。 如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相 反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1 ~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水功能,我们只 要将发光二极管LED1~LED8依次点亮、熄灭,8只LED便会一亮一暗的做流水了。 由 于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的 时候应该延时一段时间,否则我们就看不到"流水"效果了。 二 方案论证与比较 2.1循环移位法 在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面 我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给P1口送一 个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高 位移动,然后再输出至P1口,这样就实现"流水"效果啦。由于8051系列单片机的指令中 只有对累加器ACC中数据左移右移的指令,因此实际编程中我们应把需移动的数据先放 到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现"流水" 效果。具体编程如下所示,程序结构确实简单了很多。 2.2查表法 上面的两个程序都是比较简单的流水程序,"流水"花样只能实现单一的"从左到右" 流方式。运用查表法所编写的流水程序,能够实现任意方式流水,而且流水花样无限 ,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心 所欲的流水效果。我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中 ,然后通过查表指令"MOVC A,@A+DPTR"把数据取到累加器A中,然后再送到P1口进行显 示。具体源程序如下,TAB标号处的数据表可以根据实现效果的要求任意修改。 2.3位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每 一个位输出高低电平,从而来控制相应LED的亮灭。 本次实验我们采用的是查表法和循环移位法,这两个方法要比位控法要复杂些,但是程 序要简略的多 三 硬件设计 1单片机时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序 电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进 行工作。 在MCS- 51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯 片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器 。 此电路采用12MHz的石英晶体。时钟电路如下图: 2复位电路 电阻的作用是用于上电复位的,VCC以上电,由于电容两端电压不能突变,所以RST上为 高电平,然后电容放电,RST就为低电平了,还可以用手动复位,此电路应用自动复位。 3工作电路 工作电路就是根据总的电路的指令,来反应工作情况。本电路的流水电路具体的如下 : 根据各个模块的功能及他们的信号传输,连接电路如下: 四 软件设计 汇编语言和C语言的特点及选择 本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环 节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。机硬件,程序可读性 和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵 活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序 设计自由度大,有很好的可重用性,可移植性等特点。在本设计中采用C语言编写软件程 序。 C语言程序设计 特殊功能寄存器P0一共八位,因此P0寄存器可一次存放一字节数据,寄存器的每位的输 出对应P0.0~P0.7引脚,其中P0.0为P0的低位引脚,P0.7为高位引脚。P0引脚输出高低电 平与寄存器P0存放数据一致,如程序中,P0 = 0x01时,则只有P0.0输出高电平,其它引 脚输出低电平。为了实现流水效果,程序设计让P0的八个引脚依次输出高电平即可。 如先让P0 = 0x01,LED1点亮,然后让P0 = 0x02,LED2点亮,依次往下操作,P0 = 0x8
目 录 一、前 言…………………………………………………………… (1) 1.1课题简介………………………………………………………… (1) 1.2设计目的…………………………………………………………… (1) 二、总体设计……………………………………………………………(2) 2.1设计思路…………………………………………………………… (2) 2.2原件清单…………………………………………………………… (2) 三、硬件设计…………………………………………………………… (3) 3.1AT89C51…………………………………………………………… (3) 3.2系统框图 ……………………………………………………………(5) 3.3程序框图 ……………………………………………………………(5)四、软件设计……………………………………………………………(5) 4.1硬件设计…………………………………………………………… (6) 4.2单片机时钟电………………………………………………………(6) 4.3复位电路 ……………………………………………………………(6)4.4控制电路 ……………………………………………………………(7) 4.5工作电路 ……………………………………………………………(7) 五、软件调试……………………………………………………………(8) 5.1设计要求 ……………………………………………………………(8) 5.2软件的流程图………………………………………………………(9) 5.3程序设计 ……………………………………………………………(9) 六、软件调试……………………………………………………………(11) 七、心得体会……………………………………………………………(12) 八、参考文献……………………………………………………………(13) 第一章 前言 1.1 课题简介 单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处 理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时 器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转 换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。  目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导 弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过 程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统, 录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开 单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理 及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪表上的应用 :,例如精密的测量设备 2.在工业控制中的应用 :用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管 理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 3.在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、 列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等 。 5.单片机在医用设备领域中的应用 :例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 6.在各种大型电器中的模块化应用 :如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理) ,就需要复杂的类似于计算机的原理。 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算 器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统以采用 MCS- 51系列单片机Intel8051为中心器件来设计LED流水系统,实现8个LED霓虹的左、右 循环显示,并实现循环的速度可调。 1.2 设计目的 1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤, 培养综合设计与调试能力。 2.掌握汇编语言程序设计方法。 3.培养实践技能,提高分析和解决实际问题的能力。 1.3 设计任务及要求 1.彩用8个发光二极管代替。 2.电路具有控制彩点亮右移左移、全亮及全灭等功能(用按键切换彩状态) 3、彩两点移动时间间隔为0.5秒。 二 、总体设计思路 2.1设计思路 本课题使用AT89C51单片机时无须外扩存储器。因此,本流水实际上就是一个带有 八个发光二极管的单片机最小应用系统,即为由发光二极
好的,我来回答你的问题。 首先,我需要声明一下,我是一个自然语言生成模型,不具备编程能力,但我可以提供一些思路和代码示例供参考。 针对你的问题,我可以提供一份汇编语言的代码示例,实现在程序启动时,八个流水循环,同时两个LED显示F0字符。 下面是代码示例: ``` ORG 0H ; 程序从地址0开始执行 MOV P0, #00H ; P0口置0 MOV P1, #0F0H ; P1口置F0 LOOP: MOV A, #01H ; 将A寄存器置1 ACALL DELAY ; 调用延时函数 MOV P0, A ; P0口输出A的值 RL A ; A寄存器左移一位 MOV P0, A ; P0口输出A的值 ACALL DELAY ; 调用延时函数 MOV A, #02H ; 将A寄存器置2 ACALL DELAY ; 调用延时函数 MOV P0, A ; P0口输出A的值 RL A ; A寄存器左移一位 MOV P0, A ; P0口输出A的值 ACALL DELAY ; 调用延时函数 MOV A, #04H ; 将A寄存器置4 ACALL DELAY ; 调用延时函数 MOV P0, A ; P0口输出A的值 RL A ; A寄存器左移一位 MOV P0, A ; P0口输出A的值 ACALL DELAY ; 调用延时函数 MOV A, #08H ; 将A寄存器置8 ACALL DELAY ; 调用延时函数 MOV P0, A ; P0口输出A的值 RL A ; A寄存器左移一位 MOV P0, A ; P0口输出A的值 ACALL DELAY ; 调用延时函数 SJMP LOOP ; 跳转到LOOP标号处 ; 延时函数 DELAY: MOV R0, #30H ; 将R0寄存器置30H DELAY_LOOP1: MOV R1, #30H ; 将R1寄存器置30H DELAY_LOOP2: DJNZ R1, DELAY_LOOP2 ; R1寄存器自减1,如果不为0则跳转到DELAY_LOOP2标号处 DJNZ R0, DELAY_LOOP1 ; R0寄存器自减1,如果不为0则跳转到DELAY_LOOP1标号处 RET ; 返回 ``` 上面的代码中,使用P0口控制八个流水循环,同时使用P1口控制两个LED显示F0字符。延时函数使用R0、R1寄存器实现,可以根据需要调整延时时间。 希望这份代码示例可以帮助到你。如果有任何问题,欢迎继续向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值