51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环相关的知识,希望对你有一定的参考价值。

八个灯从左到右依次点亮,然后又从右到左依次点亮,之后重复这个过程

参考技术A #include<reg51.h>

unsigned char ledtab[]=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe
void delay(unsigned char a)

unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);

main()

unsigned char i;
while(1)

for(i=0;i<8;i++)P0=ledtab[i];delay(100);
for(i=0;i<8;i++)P0=ledtab[7-i];delay(100);

本回答被提问者采纳
参考技术B #include<reg51.h>
#include<intrins.h>
void delay(int x)

int a,b;
for(a=0;a<x;a++)

for(b=0;b<120;b++)
;


void main()

while(1)

unsigned char i;
for(i=0;i<8;i++)

P2=_crol_(0x01,i);
delay(150);


参考技术C 参考:

http://hi.baidu.com/do_sermon/item/e69c66d832d426e3795daa82

核心动画从左到右

【中文标题】核心动画从左到右【英文标题】:Core animation from left to right 【发布时间】:2013-01-16 00:17:55 【问题描述】:

我正在构建一个 IOS 应用程序。

我正在尝试做以下核心动画

文本 1 出现在中心 然后通过让文本 2 从左到右移动以替换文本 1 来替换文本 2 然后让文本 3 从左向右移动以替换文本 2 然后让文本 4 从左向右移动以替换文本 3。

每个文本基本上都是跳进去替换文本1、2、3。所以每个文本都冲进去替换前面的文本。 我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

您好,您可以使用 UIView 的 animateWithDuration:delay:options:animations:completion 方法来执行这些动画。只需将它们嵌套在完成块中即可将它们链接在一起。我认为它们仅适用于 iOS 3.2 及更高版本。

UILabel *labelText2;  // Can be set up in Interface Builder, linked as IBOutlet
CGRect rectLabel2 = labelText2.frame;
rectLabel2.center = labelText2.superview.center;

[UIView animateWithDuration:1.0f delay:0.0f options:nil animations:^()
  labelText2.frame = rectLabel2;  // Animates labelText2 to the center of its container view
 completion:^(BOOL finished) 

  // Continue with other animation using another UIView animateWithDuration block...
  UILabel *labelText3; // Setup in Interface Builder on the left outside of the container view
  CGrect rectLabel3 = labelText3.frame;
  rectLabel3.center = labelText3.superview.center;

  [UIView animateWithDuration:1.0f delay:0.0f options:nil animations:^()
    labelText3.frame = rectLabel3;

   completion:^(BOOL finishedInside) 
    // Nest in Label4, Label5 etc...
  ];
];

更多信息在这里 http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/animatingviews/animatingviews.html

【讨论】:

阻止在 iOS 4.0 中引入,但现在谁支持低于 4.3 的版本?【参考方案2】:

您没有提及您使用的是 UILabels 还是 CATextLayers。这是使用 CATextLayers 的一种方法:

首先创建要设置动画的图层并将其添加到图层树中。我在 viewDidLoad 中做到了:

- (void)viewDidLoad

  [super viewDidLoad];

  _strings = @[@"Hello world", @"Goodbye cruel world", @"Hello again", @"And again, goodbye!"];

  _textLayer = [CATextLayer layer];
  [_textLayer setString:[_strings objectAtIndex:0]];
  [_textLayer setBounds:CGRectMake(0.0f, 0.0f, 400.0f, 50.0f)];
  [_textLayer setPosition:[[self view] center]];
  [_textLayer setForegroundColor:[[UIColor orangeColor] CGColor]];
  [_textLayer setAlignmentMode:kCAAlignmentCenter];

  [[[self view] layer] addSublayer:_textLayer];

然后,将按钮连接到此插座。对于文本层的“字符串”属性的每次更改,您都会看到从左到右的推送动画。

- (IBAction)didTapChangeText:(id)sender

  NSInteger index = arc4random() % [_strings count];

  CATransition *transition = [CATransition animation];
  [transition setType:kCATransitionPush];
  [transition setSubtype:kCATransitionFromLeft];

  // Tell Core Animation which property you want to use the
  // transition animation for. In this case 'string'
  [_textLayer addAnimation:transition forKey:@"string"];

  // Trigger the animation by setting the string property
  [_textLayer setString:[_strings objectAtIndex:index]];

根据您的描述,这应该可以满足您的需求。

【讨论】:

以上是关于51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环的主要内容,如果未能解决你的问题,请参考以下文章

STM32 用c语言控制4个LED灯从左向右无限流动

如何点亮一个LED灯

视频动画 | 什么是鸡尾酒排序?

核心动画从左到右

STM32点亮小灯的程序和方法

江科大51单片机入门学习笔记合集