旋转LED灯程序(51单片机)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
飘飞在空中的文字(详情咨询QQ:278540660)
一、实物图
(夜晚可以观测到飘在空中的文字,美!!!)
二、部分代码
/***************************************************************main. c***************************************************/
#include
void main()
{
EX0init();
TIM0init();
Init_DS1302();
while(1)
{
time_set(IRcord[2]);
IRcord[2]=0;
if(time_love==0)
{
if(time_onoff==0)
{
ds1302_read_time();
Dig_time();
}
else
{
Dig_time();
}
}
else
{
Display_love();
}
while(!flag);
flag=0;
}
}
/***************************************************************redco n.h**************************************************/
#define uchar unsigned char
#define uint unsigned int
sbit IR=P3^2;
uchar irtime; //中断次数
uchar IRcord[4]; //记录接收到的四个字节数据
uchar irdata[33]; //接收到的32个二进制bit
uint flag=0;
uchar nums=0;
uint timelate=0;
void TIM0init(void) //定时器0初始化
{
TMOD=0x02; //定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00; //重载值
TL0=0x00; //初始化值(0.255ms一次中断)--晶振频率的十二分之一
ET0=1; //开中断
TR0=1;
}
void EX0init(void)
{
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断0
IT1=1; //指定外部中断1下降沿触发,INT0 (P3.3)
EX1=1; //使能外部中断1
EA = 1; //开总中断
}
void Ircordpro(void) //红外码值处理函数
{
uchar i, j, k;
uchar cord,value;
k=1;
for(i=0;i<4;i++) //处理4个字节
{
for(j=1;j<=8;j++) //处理1个字节8位
{
cord=irdata[k];
if(cord>7) //1.125ms为0 2.25ms为1 0.255*7作为稳定判断值
value|=0x80;
if(j<8)
{
value>>=1;
}
k++;
}
IRcord[i]=value;
value=0;
}
}
void EX1_ISR (void) interrupt 2 //外部中断0服务函数
{
static uchar i; //接收红外信号处理
static bit startflag; //是否开始处理标志位
if(startflag)
{
if(irtime<60&&irtime>=35) //连续发送两个32位数据间隔不可预知性) 尤为重要
{
i=0;
}
irdata[i]=irtime; //存储每个电平的持续时间
irtime=0;
i++;
if(i==33)
{
i=0;
startflag=0;
Ircordpro();
}
}
else
{
startflag=1;
irtime=0;
}
}
void tim0_isr (void) interrupt 1 using 1
{
irtime++;
}
void EX0_ISR (void) interrupt 0
{
flag=1;
nums++;
if(nums>=20)
{
nums=0;
timelate++;
if(timelate>=4)
{
timelate=0;
}
}
}
/***************************************************************DS130 2.h**************************************************/
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar time_buf[7]={0x13,0x01,0x01,0x00,0x00,0x00,0x02};
sbit SCLK=P0^0;
sbit SDA=P0^1;
sbit RST=P0^4;
void delayus(uint t)
{
uint i;
for(i=0;i _nop_(); } void delayms(uint t) { uint x,y;