旋转LED灯程序(51单片机).doc_第1页
旋转LED灯程序(51单片机).doc_第2页
旋转LED灯程序(51单片机).doc_第3页
旋转LED灯程序(51单片机).doc_第4页
旋转LED灯程序(51单片机).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

飘飞在空中的文字(详情咨询QQ:278540660)一、实物图(夜晚可以观测到飘在空中的文字,美!)二、部分代码/*main.c*/#includevoid main() EX0init(); TIM0init(); Init_DS1302();while(1) time_set(IRcord2);IRcord2=0;if(time_love=0)if(time_onoff=0)ds1302_read_time();Dig_time();elseDig_time();elseDisplay_love();while(!flag);flag=0;/*redcon.h*/#define uchar unsigned char#define uint unsigned int sbit IR=P32; uchar irtime; /中断次数uchar IRcord4; /记录接收到的四个字节数据uchar irdata33; /接收到的32个二进制bituint 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; /使能外部中断0IT1=1; /指定外部中断1下降沿触发,INT0 (P3.3)EX1=1; /使能外部中断1EA = 1; /开总中断void Ircordpro(void) /红外码值处理函数 uchar i, j, k;uchar cord,value;k=1;for(i=0;i4;i+) /处理4个字节for(j=1;j7) /1.125ms为0 2.25ms为1 0.255*7作为稳定判断值value|=0x80;if(j=1;k+;IRcordi=value;value=0; void EX1_ISR (void) interrupt 2 /外部中断0服务函数static uchar i; /接收红外信号处理static bit startflag; /是否开始处理标志位if(startflag) if(irtime=35) /连续发送 两个32位数据间隔不可预知性) 尤为重要i=0;irdatai=irtime; /存储每个电平的持续时间irtime=0;i+;if(i=33)i=0;startflag=0;Ircordpro();else startflag=1;irtime=0;void tim0_isr (void) interrupt 1 using 1irtime+; void EX0_ISR (void) interrupt 0flag=1;nums+;if(nums=20)nums=0;timelate+;if(timelate=4)timelate=0;/*DS1302.h*/#include#include#define uint unsigned int #define uchar unsigned charuchar time_buf7=0x13,0x01,0x01,0x00,0x00,0x00,0x02;sbit SCLK=P00; sbit SDA=P01;sbit RST=P04;void delayus(uint t)uint i;for(i=0;i0;x-)for(y=95;y0;y-);void change_dats()uchar i;uchar temp;for(i=0;i6;i+)temp=time_bufi/16;time_bufi=time_bufi%16+temp*10;void DS1302WriteByte(uchar dat)uchar i;SCLK=0; /初始时钟线置为0delayus(2);for(i=0;i=1; /数据右移一位,准备传输下一位数据uchar DS1302ReadByte()uchar i,dat;delayus(2);for(i=0;i=1; /要返回的数据左移一位if(SDA=1) /当数据线为高时,证明该位数据为 1dat|=0x80; SCLK=1; /拉高时钟线delayus(2);SCLK=0; /制造下降沿delayus(2);return dat; /返回读取出的数据void DS1302Write(uchar cmd, uchar dat)RST=0; /初始 CE线置为 0SCLK=0; /初始时钟线置为0RST=1; /初始 CE置为 1,传输开始DS1302WriteByte(cmd); /传输命令字,要写入的时间/日历地址DS1302WriteByte(dat); /写入要修改的时间/日期SCLK=1; /时钟线拉高RST=0; /读取结束,CE置为0,结束数据的传输uchar DS1302Read(uchar cmd)uchar dat;RST=0; /初始 CE线置为0SCLK=0; /初始时钟线置为0RST=1; /初始 CE置为 1,传输开始DS1302WriteByte(cmd); /传输命令字,要读取的时间/日历地址dat=DS1302ReadByte(); /读取要得到的时间/日期SCLK=1; /时钟线拉高RST=0; /读取结束,CE置为 0,结束数据的传输return dat; /返回得到的时间/日期void Init_DS1302(void)DS1302Write(0x8e,0x00); /写保护关DS1302Write(0x80,time_buf5); /初始秒值为0DS1302Write(0x82,time_buf4); /初始分钟值为 0DS1302Write(0x84,time_buf3); /初始为 24小时模式 初始时间为0点DS1302Write(0x86,time_buf2); /设置日DS1302Write(0x88,time_buf1); /设置月DS1302Write(0x8c,time_buf0); /设置年DS1302Write(0x8a,time_buf6); /设置星期数DS1302Write(0x8e,0x80); /禁止写入change_dats(); void ds1302_read_time()uchar i,temp;time_buf0=DS1302Read(0x8D); /年time_buf1=DS1302Read(0X89); /月time_buf2=DS1302Read(0X87); /日time_buf3=DS1302Read(0X85); /时time_buf4=DS1302Read(0X83); /分time_buf5=(DS1302Read(0X81)&0x7F;/秒time_buf6=DS1302Read(0X8B); /星期for(i=0;i7;i+) /BCD 处理temp=time_bufi/16;time_bufi=time_bufi%16;time_bufi+=temp*10;/*DISPLAY.h*/#include#include#define uint unsigned int #define uchar unsigned charuchar code W=0x81,0xfb,0xf7,0xfb,0x81;uchar code N=0xe1,0xdf,0xdf,0xe1;uchar code R=0x81,0xa7,0xab,0xdd;uchar code I=0xbd,0x81,0xbd;uchar code L=0x81,0xfd,0xfd; uchar code o=0xe3,0xdd,0xe3; uchar code v=0xc7,0xfb,0xfd,0xfb,0xc7;uchar code E=0xe3,0xd5,0xd5,0xe5;uchar code Y=0x9f,0xef,0xf1,0xef,0x9f;uchar code U=0xc3,0xfd,0xfd,0xc3;uchar code num105= 0x83,0x75,0x6d,0x5d,0x83, 0xff,0xbd,0x01,0xfd,0xff, 0xbd,0x79,0x75,0x6d,0x9d,0x7b,0x7d,0x5d,0x2d,0x73, 0xe7,0xd7,0xb7,0x01,0xf7, 0x1b,0x5d,0x5d,0x5d,0x63, 0x83,0x6d,0x6d,0x6d,0x73, 0xbf,0x7f,0x7d,0x41,0x3d, 0x93,0x6d,0x6d,0x6d,0x93, 0x9b,0x6d,0x6d,0x6d,0x83; uchar code wen=0xdf,0xcd,0xd5,0x9b,0xd5,0xcd,0xdf; uchar code er=0xfd,0x83,0xff,0x83,0xfb,0xfd,0xfd;uchar code xin=0xcf,0xb7,0xdb,0xb7,0xcf;uchar set_num=0;uchar time_onoff=0;uchar time_love=0;void change_dath()uchar i;uchar temp;for(i=0;i12)time_buf1=1;else if(set_num=3)time_buf2+;if(time_buf2=32)time_buf2=1;else if(set_num=4)time_buf3+;if(time_buf3=24)time_buf3=0;else if(set_num=5)time_buf4+;if(time_buf4=60)time_buf4=0;else if(set_num=6)time_buf5+;if(time_buf5=60)time_buf5=0;break;case 0x45:if(set_num!=0)if(set_num=1)if(time_buf0=0)time_buf0=20;elsetime_buf0=time_buf0-1;else if(set_num=2)time_buf1=time_buf1-1;if(time_buf1=0)time_buf1=12;else if(set_num=3)if(time_buf2=1)time_buf2=31;else time_buf2=time_buf2-1;else if(set_num=4)if(time_buf3=0)time_buf3=23;elsetime_buf3=time_buf3-1;else if(set_num=5)if(time_buf4=0)time_buf4=59;elsetime_buf4=time_buf4-1;else if(set_num=6)if(time_buf5=0)time_buf5=59;elsetime_buf5=time_buf5-1;break;case 0x07:time_love=1;break;case 0x15:time_love=0;break;/*时钟显示*/void Dig_time()char m;for(m=0;m=4;m+) /显示时十位P2=numtime_buf3/10m;delayms(1);P2=0xff;delayms(1);for(m=0;m=4;m+) /显示时个位P2=numtime_buf3%10m;delayms(1);P2=0xff;delayms(1);P2=0xd7;delayms(1);P2=0xff;delayms(1);for(m=0;m=4;m+) /显示分十位P2=numtime_buf4/10m;delayms(1);P2=0xff;delayms(1);for(m=0;m=4;m+) /显示分个位P2=numtime_buf4%10m;delayms(1);P2=0xff;delayms(1);P2=0xd7;delayms(1);P2=0xff;delayms(1); for(m=0;m=4;m+) /显示秒十位P2=numtime_buf5/10m;delayms(1);P2=0xff;delayms(1);for(m=0;m=4;m+) /显示秒个位 P2=numtime_buf5%10m;delayms(1);P2=0xff;/*i love you*/void Display_love()char i,j;if(timelate=0)for(i=0;i=6;i+) /显示WP2=weni;delayms(1); P2=0xff;delayms(1);for(i=0;i=6;i+) /显示rP2=eri;delayms(1);P2=0xff;delayms(2);if(timelate=0;i-) /显示IP2=Ii;delayms(1); P2=0xff;delayms(2); if(timelate=2)for(i=0;i=0;i-) /显示oP2=oi;delayms(1);P2=0xff;delayms(1);for(i=4;i=0;i-) /显示vP2=vi;delayms(1);P2=0xff;delayms(1);for(i=0;i=3;i+) /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论