一个简单的单片机led流水灯程序序,控制一个LED 的亮灭,

求助,单片机流水灯,按键按下不松手,led0至led7依次点亮,松开手后又一个个灭,是c语言的,注_百度知道
求助,单片机流水灯,按键按下不松手,led0至led7依次点亮,松开手后又一个个灭,是c语言的,注
单片机流水灯,按键只有一个,松开手后又一个个灭,注意是按住和松开,按键按下不松手,是c语言的,led0至led7依次点亮求助,现在不会写按键按下和松开
提问者采纳
能说说如何实现吗,不管LED亮到那个位置,只要松手(按键弹起时马上就在那里退回熄灭)
如果能实现一定采纳
肯定可以的哟
你会写键盘扫描的程序吗
你会的话自己就可以搞定
只会判断按下,但松开就不行了,我想要的功能是按键按下灯就从P0口的第一位类加亮到第七位,其中不管亮到第几位,只要我一松手灯就从那里退着灭,大概就是这意思
假如按下是高电平,那么松开就是低电平
检测电平的高低就可以啊
首页得按下才能检测松开,也就是检测松开是在按下的前提下进行的
我这里是按下是低电平的,如果检测到是按下了,就执行亮灯,但我现在是松开了灯还在亮,我要的是松开按键就从当前亮着的位置退回去,我是新手有个实例我好明白点
松开你就设置成高电平就是
估计你没做处理
就拿上面的代码说说看吧,采纳了你还能和我聊天吗?
我采纳,你能给个例子吗
好,现在采纳你
有空就发个实例过来吧
把你的程序发我
好的,稍等
你这是几个灯啊
在再次确认是否有键按下的那个if里写一个while,里面判断键是否松开,如果松开就做相应处理
如果有更好的方法能实现上面的功能也行,先谢谢你啦~~
不好意思,刚才吃饭去了,
但是在哪写while,那我按下的代码能运行不,是这样写吗while(!key)这样吗?
灯是8个的,我在表里写了一个全灭的0xff这个
我现在工作没时间试,下班了再试,不懂再问你
按下你只做了松开处理
没有做按下动作处理
你之前的代码p0=table[i]跑哪去了
While(key)不用感叹号
因为松开时key=1
我是见之前搞不成,又用别人的这段代码改了
能帮我改下不,还是不太明白
我现在用的手机,不好改代码
嗯,这功能我是赶着用的,如果你有空记得帮下忙哦
我怎么试都是按下有效,松开的都不见执行得到的
你都工作了,再还学这?
是工作上用到的一个小产品
什么产品?
你这名字像我女友的名字,紫轩,挺像的
是啊,就是一个开关器,一按住就按顺序开八个灯间隔是一秒钟
放开就退着关回来,我搞了几天都是能开不能关
批量生产吗
一秒钟亮一个,一直亮完八个灯,放开手退着关就这样
我帮你好吧
收费,哈哈
也不是批量,是配给客户的
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
其他2条回答
}}你测试一下吧int i=0;i;
delay(10);&
delay(100);8;i++)
if(key==0)
for(i=0;i&
while(key==0);i&if(key==0){
delay(10);
delay(100);i++)
P0=0x01&i;&8,不能通过
我测试了,现在是按下按键灯就全亮然后是以一个灯灭的方式跑到右边的,我想实现的是key按下,P0口的灯上电时是全灭的,然后亮一个再加亮一个一直加亮到最后的灯,还有一点比如说key在按下的状态亮到第5个灯,key突然松开手(意思是按键弹起的意思),就从第5个灯退着灭,反正是亮到哪都行只要一松开手就退回灭
什么单片机,STC还是Arduino?
STC我不大会,对不起了
嗯,没关系
流水灯的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁> 控制LED灯的定时亮灭
控制LED灯的定时亮灭
在电子工程世界为您找到如下关于“控制LED灯的定时亮灭”的新闻
控制LED灯的定时亮灭资料下载
控制LED灯的定时亮灭,单片机定时器的使用。通过定时,控制LED亮灭...
SH101.C 最简单片机系统的测试程序,端口的电平操作。 SH102.C 控制LED灯的亮灭 SH103.C 控制LED灯的定时亮灭,单片机定时器的使用。 SH104.C 通过按键控制LED灯的亮灭,中断的使用。 105 芯片和电路介绍 不提供程序。SH106.C 串口的简单测试程序。...
SH101.C 最简单片机系统的测试程序,端口的电平操作。SH102.C 控制LED灯的亮灭SH103.C 控制LED灯的定时亮灭,单片机定时器的使用。SH104.C 通过按键控制LED灯的亮灭,中断的使用。105 芯片和电路介绍SH106.C 串口的简单测试程序。...
实验内容:1.闪烁的LED实验内容:应用凌阳单片机控制一个LED灯不断闪烁。实验目的:熟悉单片机编程,学习通过IO引脚输出数据。2.由按键控制的LED实验要求:设计电路,完成用按键控制一个LED的亮与灭。实验目的:进一步熟悉单片机编程,学习IO的输入。3.定时闪烁的LED实验内容:设计程序,分别控制LED以1Hz、2Hz的速度闪烁。实验目的:学习定时器的使用。4.自制电子时钟实验内容:设计电路及...
控制LED灯的定时亮灭相关帖子
不同方式实现流水灯:LED1至LED8每隔N个依次亮灭,并循环,N=0,1,2,3;
2、八个LED灯在实现流水灯的同时,实现呼吸灯功能:LED1至LED8每隔N个依次亮灭,并循环,N=0,1,2,3;同时每个灯的亮度是渐变的(先渐亮再渐灭)。
3、在实现2中功能的时候,用电容触摸按键来控制呼吸频率,做到左快右慢。
4、在液晶屏上显示LED流水呼吸灯的相关信息。
求帮忙,谢谢...
处理模块:实现算法、控制等功能(如F7无法完成、再进行其它扩展)3.5 路灯系统方案 (方案设计人:智能小区组员&&检查人:智能小区组长)工作原理:有人路过发出声音,传感器接受到信号,发出高电平,给单片机做输入信号。单片机收到信号然后控制LED亮灭。方案设想:给单片机提供一个时钟源,白天的时候不亮,天色一点点变晚,灯通过PWM变换灯的亮度。如果灯附近有人,那么灯就更亮些(必须满足...
,不需要额外的仿真器?
是的,IAP15W4K58S4本身就是仿真器, 这单片机能够直接用Keil 进行单步硬件仿真,不需要额外的仿真器。
《51单片机轻松入门-基于STC15W4K系列》内容节选:定时器0的基本运用,使用自动重装方式。
例3.1 用定时器T0实现P0.0引脚LED亮30ms灭30ms方式闪烁(使用查询方式),使用单片机内部R/C时钟,频率22.1184MHz...
; && && && && && && & //红灯,绿灯同时灭
大概是for循环语句出错,谁能告诉我哪里错了?
MSP430G2553控制LED灯闪烁 亮,灭 ,亮&&之间,要有个时间延时的 ,否则肉眼傻傻看不清闪动...
*fuction:control the led /turn on & turn off*控制字为cmd,arg为控制哪个灯的亮灭取值范围为0-1:cmd为IOCTL_GPIO_ON时亮,cmd为IOCTL_GPIO_OFF为灭* arg appointed which led wile be turn on or off,it can be 0 and...
》第 253 页,通用定时器一章。为了深入了解 STM32 的通用定时器,下面我们先介绍一下与我们这章实验密切相关的几个函数的配置、调用。8.2实验说明:在本实验中,主要使用STM32F107的TIM4和LED5,程序下载运行后,LED5以1s时间间隔亮灭闪烁。主要跳线帽:JP4和JP7都接在2-3上8.3硬件说明:本实验主要涉及的硬件LED灯,8.4程序说明:本实验配置主要是TIM的配置,主要是...
= LED1_OFF_MS;
& && &&&/* 现在引脚电平为高,LED是灭的 */
& && &&&/* 亮灯 */
& && &&nbsp...
& && && & 有机会接触了一下TI的物联网的产品,关于家庭照明的东西,在这里给大家分享一下。这个主要是通过手机客户端或者通过云端来远程控制灯板的颜色、亮灭、饱和度等一些功能。因为TI提供了全部的代码,所以开发者可以发会自己的想象力,添加自己喜欢的功能。整个模块是基于ZigBee协议的和TCP/IP协议的。
这篇文章介绍的是使用...
流程与代码自行车炫彩风火轮开发应用笔记(4)代码分析与效果自行车炫彩风火轮开发应用笔记(5)总结与展望瑞萨R7F0C80212开发自行车风火轮手记瑞萨R7F0C80212开发自行车风火轮手记2不足论远程门禁系统1远程门禁系统2远程门禁系统3远程门禁系统(最终版)新手共同进步——瑞萨集成开发环境搭建新手共同进步——瑞萨驱动以及固件更新LED亮灭问题板子是否已经损坏?新手共同进步——CODE...
修改占空比的方式呈现呼吸灯效果。2.1. PWM控制LED的呼吸灯设计PWM采用计时+比较,可以设置成不同周期和不同占空比的输出。 这样LED就呈现不同的亮度。如果控制成渐亮渐灭,仿佛人的呼吸一样,肺部一胀一缩,称之为呼吸灯。LPCXpresso1549板载一个三色LED,共阳极,阴极分别连接到MCU的PIO0_3, PIO0_25, PIO1_1三个引脚。
图 21&&nbsp...
控制LED灯的定时亮灭视频
控制LED灯的定时亮灭创意
本周热门资源推荐第19节:依次逐个点亮后逐个熄灭LED的跑马灯程序
15:20:54&&&来源:eefocus &&
上一节讲了把74HC595驱动程序翻译成类似IO口直接驱动的方式。这节在上一节的驱动程序基础上,开始讲。我的跑马灯程序看似简单而且重复,其实蕴含着鸿哥的大智慧。它是基于鸿哥的switch状态机思想,领略到了它的简单和精髓,以后任何所谓复杂的工程项目,都不再复杂。要教会大家一个知识点:通过本跑马灯程序,加深理解鸿哥所有实战项目中switch状态机的思想精髓。
具体内容,请看源代码讲解。
(1)硬件平台:基于朱兆祺51单片机学习板。
(2)实现功能:第1个至第8个灯,先依次逐个亮,再依次逐个灭。第9至第16个LED灯一直灭。
(3)源代码讲解如下:
#include "REG52.H"
#define const_time_level_01_08 &200 &//第1个至第8个LED跑马灯的速度延时时间
void initial_myself(); & &
void initial_peripheral();
void delay_short(unsigned int uiDelayShort);&
void delay_long(unsigned int uiDelaylong);
void _flicker_01_08(); // 第1个至第8个LED的跑马灯程序,逐个亮,逐个灭.
void hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);
void led_update(); &//LED更新函数
void T0_time(); &//定时中断函数
sbit hc595_sh_dr=P2^3; & &
sbit hc595_st_dr=P2^4; &
sbit hc595_ds_dr=P2^5; &
unsigned char ucLed_dr1=0; & //代表16个灯的亮灭状态,0代表灭,1代表亮
unsigned char ucLed_dr2=0;
unsigned char ucLed_dr3=0;
unsigned char ucLed_dr4=0;
unsigned char ucLed_dr5=0;
unsigned char ucLed_dr6=0;
unsigned char ucLed_dr7=0;
unsigned char ucLed_dr8=0;
unsigned char ucLed_dr9=0;
unsigned char ucLed_dr10=0;
unsigned char ucLed_dr11=0;
unsigned char ucLed_dr12=0;
unsigned char ucLed_dr13=0;
unsigned char ucLed_dr14=0;
unsigned char ucLed_dr15=0;
unsigned char ucLed_dr16=0;
unsigned char ucLed_update=0; &//刷新变量。每次更改LED灯的状态都要更新一次。
unsigned char ucLedStep_01_08=0; //第1个至第8个LED跑马灯的步骤变量
unsigned int &uiTimeCnt_01_08=0; //第1个至第8个LED跑马灯的统计定时中断次数的延时计数器
unsigned char ucLedStatus16_09=0; & //代表底层74HC595输出状态的中间变量
unsigned char ucLedStatus08_01=0; & //代表底层74HC595输出状态的中间变量
void main()&
& &initial_myself(); &
& &delay_long(100); &&
& &initial_peripheral();&
& &while(1) &&
& & & led_flicker_01_08(); // 第1个至第8个LED的跑马灯程序,逐个亮,逐个灭.
& & & & & led_update(); &//LED更新函数
void led_update() &//LED更新函数
& &if(ucLed_update==1)
& & & &ucLed_update=0; & //及时清零,让它产生只更新一次的效果,避免一直更新。
& & & &if(ucLed_dr1==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x01;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr2==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x02;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr3==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x04;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr4==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x08;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0xf7;
& & & & & &}
& & & &if(ucLed_dr5==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x10;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr6==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x20;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr7==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x40;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr8==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x80;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0x7f;
& & & & & &}
& & & &if(ucLed_dr9==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x01;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr10==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x02;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr11==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x04;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr12==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x08;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0xf7;
& & & & & &}
& & & &if(ucLed_dr13==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x10;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr14==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x20;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr15==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x40;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr16==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x80;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0x7f;
& & & & & &}
& & & &hc595_drive(ucLedStatus16_09,ucLedStatus08_01); &//74HC595底层驱动函数
void hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01)
& &unsigned char ucTempD
& &hc595_sh_dr=0;
& &hc595_st_dr=0;
& &ucTempData=ucLedStatusTemp16_09; &//先送高8位
& &for(i=0;i<8;i++)
& & & & &if(ucTempData>=0x80)hc595_ds_dr=1;
& & & & &else hc595_ds_dr=0;
& & & & &hc595_sh_dr=0; & & //SH引脚的上升沿把数据送入寄存器
& & & & &delay_short(15);&
& & & & &hc595_sh_dr=1;
& & & & &delay_short(15);&
& & & & &ucTempData=ucTempData<<1;
& &ucTempData=ucLedStatusTemp08_01; &//再先送低8位
& &for(i=0;i<8;i++)
& & & & &if(ucTempData>=0x80)hc595_ds_dr=1;
& & & & &else hc595_ds_dr=0;
& & & & &hc595_sh_dr=0; & & //SH引脚的上升沿把数据送入寄存器
& & & & &delay_short(15);&
& & & & &hc595_sh_dr=1;
& & & & &delay_short(15);&
& & & & &ucTempData=ucTempData<<1;
& &hc595_st_dr=0; &//ST引脚把两个寄存器的数据更新输出到74HC595的输出引脚上并且锁存起来
& &delay_short(15);&
& &hc595_st_dr=1;
& &delay_short(15);&
& &hc595_sh_dr=0; & &//拉低,抗干扰就增强
& &hc595_st_dr=0;
& &hc595_ds_dr=0;
/* 注释一:
* 以下程序,看似简单而且重复,其实蕴含着鸿哥的大智慧。
* 它是基于鸿哥的switch状态机思想,领略到了它的简单和精髓,
* 以后任何所谓复杂的工程项目,都不再复杂。
void led_flicker_01_08() //第1个至第8个LED的跑马灯程序,逐个亮,逐个灭.
& switch(ucLedStep_01_08)
& & &case 0:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr1=1; &//第1个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=1; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 1:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr2=1; &//第2个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=2; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 2:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr3=1; &//第3个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=3; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 3:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr4=1; &//第4个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=4; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 4:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr5=1; &//第5个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=5; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 5:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr6=1; &//第6个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=6; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 6:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr7=1; &//第7个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=7; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 7:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr8=1; &//第8个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=8; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 8:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr8=0; &//第8个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=9; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 9:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr7=0; &//第7个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=10; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 10:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr6=0; &//第6个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=11; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 11:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr5=0; &//第5个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=12; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 12:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr4=0; &//第4个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=13; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 13:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr3=0; &//第3个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=14; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 14:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr2=0; &//第2个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=15; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 15:
& & & & & &if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr1=0; &//第1个灭
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=0; //返回到最开始处,重新开始新的一次循环。
& & & & & &}
& & & & & &
void T0_time() interrupt 1
& TF0=0; &//清除中断标志
& TR0=0; //关中断
& if(uiTimeCnt_01_08<0xffff) &//设定这个条件,防止uiTimeCnt超范围。
& & & uiTimeCnt_01_08++; &//累加定时中断的次数,
& TH0=0xf8; & //重装初始值()=f
& TL0=0x2f;
& TR0=1; &//开中断
void delay_short(unsigned int uiDelayShort)&
& &for(i=0;i<uiDelaySi++)
& & &; & //一个分号相当于执行一条空语句
void delay_long(unsigned int uiDelayLong)
& &for(i=0;i<uiDelayLi++)
& & & for(j=0;j<500;j++) &//内嵌循环的空指令数量
& & & & & {
& & & & & & &; //一个分号相当于执行一条空语句
& & & & & }
void initial_myself() &//第一区 初始化单片机
& TMOD=0x01; &//设置定时器0为工作方式1
& TH0=0xf8; & //重装初始值()=f
& TL0=0x2f;
void initial_peripheral() //第二区 初始化外围
& EA=1; & & //开总中断
& ET0=1; & &//允许定时中断
& TR0=1; & &//启动定时中断
总结陈词:
这节讲了在第1个至第8个LED灯中,先依次逐个亮再依次逐个灭的跑马灯程序。下一节我们略作修改,继续做跑马灯的程序,要求在第9个至第16个LED灯中,依次逐个亮灯并且每次只能亮一个灯(其它的都灭),依次循环,我们该如何编写程序?欲知详情,请听下回分解-----依次逐个亮灯并且每次只能亮一个灯的跑马灯程序。
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
逐个点亮相关资源
逐个熄灭相关资源
LED相关资源
跑马灯程序相关资源
编辑:什么鱼
本文引用地址:
本周热门资源推荐
EEWORLD独家单片机实验三
流水灯实验_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机实验三
流水灯实验
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 led流水灯 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信