#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系列的单片机一般不具备自编程能力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)