求LED旋转C语言程序,我不会c语言。

求LED旋转C语言程序,我不会c语言。,第1张

#include <reg51.h>//此文件中悔手定义了51的一些特殊功能寄存器

#include <intrins.h>

void delayms(unsigned char ms)

// 延时子程序

{

unsigned char i

while(ms--)

{

for(i = 0i <120i++)

}

}

main()

{

unsigned char LED

LED = 0xfe //0xfe = 1111 1110

while(1)

{

P2 = LED

delayms(250)

LED = LED <<1 //循环右移1位,点碧腔嫌亮下一个LED "<<"为左圆桥移位

if(P2 == 0x00 ) {LED = 0xfe } // 0xfe = 1111 1110

}

}

#include<reg51.h>

#define uchar unsigned char

sbit c10=P1^0

sbit c11=P1^1

sbit c12=P1^2

sbit c13=P1^3

uchar led1,led3

void delay(uchar a)

{

uchar i,j

for(i=0i<ai++)

for(j=0j<120j++)

}

main()

{

uchar keyval=0xff

led1=0xfe

led3=0xf8

while(1)

{

if(c10==0)

{

delay(10)

if(c10==0)

{

while(c10==0)

keyval=0

}

}

if(c11==0)

{

delay(10)

if(c11==0)

{

while(c11==0)

keyval=1

}

}

if(c12==0)

{

delay(10)

if(c12==0)

{

while(c12==0)

keyval=2

}

}

if(c13==0)

{

delay(10)

if(c13==0)

{

while(c13==0)

keyval=3

}

}

switch(keyval)

{

case 0:

P0=led1

led1=(led1<<1)|0x01

if(led1==0xff)led1=0xfe

delay(100)

case 1:

P0=led1

led1=(led1>>1)|0x80

if(led1==0xff)led1=0x7f

delay(100)

case 2:

P0=led3

led3=(led3<<1)|0x01

if((led3&0xf0)==0x30)led3=0x3e

if((led3&0xf0)==0x70)led3=0x7c

if((led3&0xf0)==0xf0)led3=0xf8

break

case 3:

P0=led3

led3=(led3>>1)|0x80

if((led3&0x0f)==0x0c)led3=0x7c

if((led3&0x0f)==0x0e)led3=0x3e

if((led3&0x0f)==0x0f)led3=0x1f

break

default:break

}

}

}

做为刷新的零点。转速不是绝对稳定的,延时不是绝对准确的。无论程序执行到哪里,只要收到信号就会以此为零点开始刷屏,物理位置不会变。

旋转led是由直流电机的高速旋转,带动了若干个LED,由单片机芯片控制LED的亮灭,利用人眼的视觉暂留原理,从此就可以在空中形成各种图案。

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了尘码穗长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的模哗兼容机型推出,今后派卜很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12221973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存