分享一個(gè)51單片機(jī)做的紅外遙控電子時(shí)鐘:
0.png (12.07 KB, 下載次數(shù): 142)
下載附件
2017-7-29 02:20 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit fmq=P3^6; //蜂鳴器
- sbit key=P1^4; //鬧鐘鳴叫取消鍵
- bit irflag,alarmflag,clockflag; //irflag-紅外解碼成功標(biāo)志 alarmflag-進(jìn)入鬧鐘設(shè)置標(biāo)志 clockflag-鬧鐘開關(guān)標(biāo)志
- uchar ircode[4];//紅外解碼數(shù)據(jù)數(shù)組
- uchar code redcode[]="0123456789ABCDEF"; //紅外解碼數(shù)據(jù)使用的字符
- uchar code discode1[]={"DAY:"};
- uchar code discode2[]={"TIME:"};
- uchar code alarmcode1[]="SET ALARM TIME";
- uchar code alarmon[]="ON " ;
- uchar code alarmoff[]="OFF";
- uchar num; //記錄按鍵次數(shù)的變量,用來(lái)判斷是否輸入了2個(gè)數(shù)字,如果輸入了兩個(gè)數(shù)字就移動(dòng)光標(biāo)到第一位
- uchar setflag=0; //時(shí)鐘設(shè)置項(xiàng)變量,用來(lái)區(qū)分設(shè)置的是時(shí)鐘的時(shí) 分 秒 日 月 年
- uchar hour,minute,h,l,i; //全局變量 DS1302時(shí)鐘的小時(shí),分鐘數(shù)據(jù),用來(lái)在定時(shí)器中和鬧鐘的數(shù)據(jù)比對(duì)判斷是否鬧鈴時(shí)間已到,
- //h-調(diào)整時(shí)間數(shù)據(jù)時(shí)輸入數(shù)據(jù)的高位 l-調(diào)整時(shí)間數(shù)據(jù)時(shí)輸入數(shù)據(jù)的地位
- void delayms(uint xms) //普通延時(shí)
- {
- uint m;
- uchar n;
- for(m=0;m<xms;m++)
- for(n=0;n<129;n++);
- }
- void delayus() //微秒級(jí)延時(shí)
- {
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- void delay882(void) //紅外解碼時(shí)延時(shí)800毫秒
- {
- uchar a,b;
- for(b=8;b>0;b--)
- for(a=49;a>0;a--);
- }
- void delay1000(void) //紅外解碼時(shí)延時(shí)1000毫秒
- {
- uchar a,b;
- for(b=102;b>0;b--)
- for(a=3;a>0;a--);
- }
- void delay2400(void) //紅外解碼時(shí)延時(shí)2400毫秒
- {
- uchar a,b;
- for(b=96;b>0;b--)
- for(a=10;a>0;a--);
- }
- void beep() //蜂鳴器鳴叫
- {
- uchar n;
- for(n=0;n<100;n++)
- {
- fmq=0;
- delayms(1);
- fmq=1;
- delayms(1);
- }
- }
- void ring() //鬧鈴響
- {
- uchar n;
- for(n=0;n<100;n++)
- {
- fmq=0;
- delayms(1);
- fmq=1;
- delayms(1);
- fmq=0;
- delayms(5);
- fmq=1;
- delayms(5);
- }
- }
- //DS1602液晶顯示部分
- sbit rs=P2^0;
- sbit rw=P2^1;
- sbit e=P2^2;
- sbit bf=P0^7;
- bit ds1602state() //取液晶的忙碌狀態(tài)
- {
- bit flg;
- rs=0;
- rw=1;
- e=1;
- delayus();
- flg=bf;
- delayus();
- e=0;
- return flg;
- }
- void ds1602order(uchar dat) //寫入液晶的命令
- {
- while(ds1602state());
- rs=0;
- rw=0;
- e=0;
- delayus();
- P0=dat;
- delayus();
- e=1;
- delayus();
- e=0;
- }
- void ds1602data(uchar dat) //寫入液晶的數(shù)據(jù)
- {
- while(ds1602state());
- rs=1;
- rw=0;
- e=0;
- delayus();
- P0=dat;
- delayus();
- e=1;
- delayus();
- e=0;
- }
- void ds1602address(uchar dat) //寫入液晶的地址
- {
- ds1602order(0x80|dat);
- }
- void ds1602init() //液晶初始化
- {
- delayms(15);
- ds1602order(0x38);
- delayms(5);
- ds1602order(0x0c);
- delayms(5);
- ds1602order(0x06);
- delayms(5);
- ds1602order(0x01);
- delayms(5);
- }
- //DS18B20程序
- sbit dq=P3^3;
- uchar wendu; //DS18B20溫度保存變量
- bit ds18b20init() //DS18B20初始化
- {
- bit flg;
- uchar n;
- dq=1;
- for(n=0;n<2;n++);
- dq=0;
- for(n=0;n<200;n++);
- dq=1;
- for(n=0;n<10;n++);
- flg=dq;
- for(n=0;n<100;n++);
- return flg;
- }
- void ds18b20write(uchar dat) //DS18B20寫入數(shù)據(jù)
- {
- uchar n,m;
- for(n=0;n<8;n++)
- {
- dq=1;
- _nop_();
- dq=0;
- _nop_();
- dq=dat&0x01;
- for(m=0;m<30;m++);
- dq=1;
- for(m=0;m<2;m++);
- dat>>=1;
- }
- }
- uchar ds18b20read() //DS18B20讀出數(shù)據(jù)
- {
- uchar n,m,dat;
- for(n=0;n<8;n++)
- {
- dq=1;
- _nop_();
- dq=0;
- _nop_();
- dq=1;
- for(m=0;m<2;m++);
- dat=dat>>1;
- if(dq==1)
- dat|=0x80;
- dq=1;
- for(m=0;m<2;m++);
- }
- return dat;
- }
- void ds18b20wendu() //DS18B20溫度轉(zhuǎn)換 沒(méi)有對(duì)負(fù)溫度進(jìn)行相關(guān)的判斷和操作
- {
- uchar wenduh,wendul;
- ds18b20init();
- ds18b20write(0xcc);
- ds18b20write(0x44);
- ds18b20init();
- ds18b20write(0xcc);
- ds18b20write(0xbe);
- wendul=ds18b20read();
- wenduh=ds18b20read();
- wendu=(wendul>>4)|(wenduh<<4);
- }
- //DS1302時(shí)鐘程序
- sbit scl=P1^0;
- sbit sd=P1^1;
- sbit rst=P1^2;
- uchar code discode3[]={"0123456789"}; //DS1302時(shí)鐘顯示使用的字符數(shù)據(jù)
- void ds1302write(uchar dat) //DS1302寫數(shù)據(jù)
- {
- uchar n;
- scl=0;
- for(n=0;n<8;n++)
- {
- sd=dat&0x01;
- delayus();
- scl=1;
- delayus();
- scl=0;
- delayus();
- dat>>=1;
- }
- }
- uchar ds1302read() //DS1302讀數(shù)據(jù)
- {
- uchar dat,n;
- for(n=0;n<8;n++)
- {
- dat>>=1;
- if(sd==1)
- dat|=0x80;
- scl=1;
- delayus();
- scl=0;
- delayus();
- }
- return dat;
- }
- void ds1302writedata(uchar add,uchar dat) //DS1302寫入指定地址數(shù)據(jù)
- {
- rst=0;
- scl=0;
- rst=1;
- ds1302write(add);
- ds1302write(dat);
- scl=1;
- rst=0;
- }
- uchar ds1302readdata(uchar add) //DS1302讀出指定地址數(shù)據(jù)
- {
- uchar dat;
- rst=0;
- scl=0;
- rst=1;
- ds1302write(add);
- dat=ds1302read();
- scl=1;
- rst=0;
- return dat;
- }
- void ds1302init() //DS1302寫入初始數(shù)據(jù)
- {
- if(ds1302readdata(0x81)&0x80)
- {
- ds1302writedata(0x8e,0x00);
- ds1302writedata(0x80,0x00);
- ds1302writedata(0x82,0x25);
- ds1302writedata(0x84,0x12);
- ds1302writedata(0x86,0x02);
- ds1302writedata(0x88,0x04);
- ds1302writedata(0x8a,0x02);
- ds1302writedata(0x8c,0x13);
- ds1302writedata(0x8e,0x80);
- ds1302writedata(0x90,0xa5);
- }
- }
- void ds1302disp() //DS1302時(shí)鐘數(shù)據(jù)顯示
- {
- uchar secondh,secondl,minuteh,minutel,hourh,hourl,dayh,dayl,monthh,monthl,week,yearh,yearl; //時(shí)鐘數(shù)據(jù)的相關(guān)高位和地位
- hour=ds1302readdata(0x85);
- minute=ds1302readdata(0x83);
- secondh=ds1302readdata(0x81)>>4; //DS1302秒數(shù)據(jù)的高位
- secondl=ds1302readdata(0x81)&0x0f; //DS1302秒數(shù)據(jù)的低位
- minuteh=minute>>4;
- minutel=minute&0x0f;
- hourh=hour>>4;
- hourl=hour&0x0f;
- dayh=ds1302readdata(0x87)>>4;
- dayl=ds1302readdata(0x87)&0x0f;
- monthh=ds1302readdata(0x89)>>4;
- monthl=ds1302readdata(0x89)&0x0f;
- yearh=ds1302readdata(0x8d)>>4;
- yearl=ds1302readdata(0x8d)&0x0f;
- week=ds1302readdata(0x8b)&0x0f;
- ds1602address(0x04);
- ds1602data('2');
- ds1602data('0');
- ds1602data(discode3[yearh]);
- ds1602data(discode3[yearl]);
- ds1602data('-');
- ds1602data(discode3[monthh]);
- ds1602data(discode3[monthl]);
- ds1602data('-');
- ds1602data(discode3[dayh]);
- ds1602data(discode3[dayl]);
- ds1602data(' ');
- ds1602data(discode3[week]);
- ds1602address(0x45);
- ds1602data(discode3[hourh]);
- ds1602data(discode3[hourl]);
- ds1602data(':');
- ds1602data(discode3[minuteh]);
- ds1602data(discode3[minutel]);
- ds1602data(':');
- ds1602data(discode3[secondh]);
- ds1602data(discode3[secondl]);
- ds1602data(' ');
- ds1602data(discode3[wendu/10]);
- ds1602data(discode3[wendu%10]);
- }
- //24c08讀寫程序
- sbit sclk=P3^4;
- sbit sda=P3^5;
- uchar alarmcode[4]; //24c08中保存的鬧鐘數(shù)據(jù),alarmcode[0]-鬧鐘數(shù)據(jù)的小時(shí) alarmcode[1]-鬧鐘數(shù)據(jù)的分鐘 alarmcode[2]-鬧鐘數(shù)據(jù)的秒
- //alarmcode[3]-鬧鐘開關(guān)標(biāo)志 (0為鬧鐘關(guān)閉,1為鬧鐘開啟)
- void iic24c08start() //24c08啟動(dòng)
- {
- sda=1;
- sclk=1;
- delayus();
- sda=0;
- sclk=0;
- delayus();
- }
- void iic24c08stop() //24c08停止
- {
- sda=0;
- sclk=1;
- delayus();
- sda=1;
- delayus();
- }
- void iic24c08answer() //24c08應(yīng)答
- {
- uchar n;
- sclk=1;
- delayus();
- while((sda==1)&&(n<255))
- n++;
- sclk=0;
- delayus();
- }
- void iic24c08write(uchar dat) //24c08寫數(shù)據(jù)
- {
- uchar n;
- for(n=0;n<8;n++)
- {
- sda=dat&0x80;
- delayus();
- sclk=1;
- delayus();
- sclk=0;
- delayus();
- dat<<=1;
- }
- }
- uchar iic24c08read() //24c08讀數(shù)據(jù)
- {
- uchar n,dat;
- for(n=0;n<8;n++)
- {
- sclk=1;
- dat<<=1;
- if(sda==1)
- dat|=0x01;
- delayus();
- sclk=1;
- delayus();
- sclk=0;
- delayus();
- }
- return dat;
- }
- void iic24c08writeadd(uchar add,uchar dat) //24c08寫指定地址數(shù)據(jù)
- {
- iic24c08start();
- iic24c08write(0xa0);
- iic24c08answer();
- iic24c08write(add);
- iic24c08answer();
- iic24c08write(dat);
- iic24c08answer();
- iic24c08stop();
- delayms(15);
- }
- uchar iic24c08readadd(uchar add) //24c08讀指定地址數(shù)據(jù)
- {
- uchar dat;
- iic24c08start();
- iic24c08write(0xa0);
- iic24c08answer();
- iic24c08write(add);
- iic24c08answer();
- iic24c08start();
- iic24c08write(0xa1);
- iic24c08answer();
- dat=iic24c08read();
- iic24c08stop();
- return dat;
- }
- //紅外解碼程序
- sbit ir=P3^2;
- void decode()
- {
- uchar u,m;
- while(ir==0);
- delay2400();
- if(ir==1) //延時(shí)2.4ms后如果是高電平則是新碼
- {
- delay2400(); //延時(shí)4.8ms避開4.5ms的高電平
- for(u=0;u<4;u++)
- {
- for(m=0;m<8;m++)
- {
- while(ir==0); //等待地址碼第1位高電平到來(lái)
- delay882(); //延時(shí)882ms判斷此時(shí)引腳電平
- if(ir==0)
- {
- ircode[u]>>=1;
- ircode[u]=ircode[u]&0x7f;
- }
- else if(ir==1)
- {
- delay1000();
- ircode[u]>>=1;
- ircode[u]=ircode[u]|0x80;
- }
- } //1位數(shù)據(jù)接收結(jié)束
- } //32位二進(jìn)制碼接收結(jié)束
- }
- if(ircode[2]==~ircode[3])
- { irflag=1;
-
- }
- }
- //外部中斷0和定時(shí)器0初始化
- void timeinit()
- {
- EA=1;
- EX0=1;
- IT0=1;
- ET0=1;
- TMOD=0X01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TR0=0;
- }
- void main()
- {
- uchar n; //計(jì)數(shù)次數(shù)變量
- timeinit();
- ds1602init();
- ds1602address(0x00);
- while(discode1[n]!='\0') //在DS1602寫入字符 DATE
- {
- ds1602data(discode1[n]);
- n++;
- }
- n=0;
- ds1602address(0x40);
- while(discode2[n]!='\0') //在DS1602寫入字符 TIME
- {
- ds1602data(discode2[n]);
- n++;
- }
- ds1302init();
- n=0;
- for(n=0;n<4;n++)
- {
- alarmcode[n]=iic24c08readadd(n);
- }
- clockflag=(bit)alarmcode[3];
- if(clockflag)
- {
- TR0=1;
- }
- while(1)
- {
- if(setflag==0&&alarmflag==0)
- {
- ds18b20wendu();
- ds1302disp();
- }
- if(irflag==1) //紅外解碼成功后通過(guò)switch函數(shù)匹配紅外碼對(duì)應(yīng)的操作
- {
- switch(ircode[2])
- {
- case 0x45: //設(shè)置時(shí)鐘的年 光標(biāo)在年數(shù)據(jù)第一位上閃爍
- if(alarmflag==0) //如果已經(jīng)進(jìn)入了鬧鐘設(shè)置界面,按此紅外碼無(wú)效
- {
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x06);
- delayms(5);
- setflag=1;
- h=ds1302readdata(0x8d)>>4;
- l=ds1302readdata(0x8d)&0x0f;
- beep();
- }
- break;
- case 0x46: //設(shè)置時(shí)鐘的月 光標(biāo)在月數(shù)據(jù)第一位上閃爍
- if(alarmflag==0)
- {
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x09);
- delayms(5);
- setflag=2;
- h=ds1302readdata(0x89)>>4;
- l=ds1302readdata(0x89)&0x0f;
- beep();
- }
- break;
- case 0x47: //設(shè)置時(shí)鐘的日 光標(biāo)在日數(shù)據(jù)第一位上閃爍
- if(alarmflag==0)
- {
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x0c);
- delayms(5);
- setflag=3;
- h=ds1302readdata(0x87)>>4;
- l=ds1302readdata(0x87)&0x0f;
- beep();
- }
- break;
- case 0x44://設(shè)置時(shí)鐘的星期 光標(biāo)在星期數(shù)據(jù)第一位上閃爍
- if(alarmflag==0)
- {
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x0f);
- delayms(5);
- setflag=4;
- h=ds1302readdata(0x8b)>>4;
- l=ds1302readdata(0x8b)&0x0f;
- beep();
- }
- break;
-
- case 0x40: //設(shè)置時(shí)鐘的小時(shí) 光標(biāo)在小時(shí)數(shù)據(jù)第一位上閃爍
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x45);
- if(alarmflag==0) //設(shè)置時(shí)鐘小時(shí)數(shù)據(jù) (alarmflag=1時(shí)表示已經(jīng)進(jìn)入鬧鐘設(shè)置界面)
- {
- setflag=5;
- h=ds1302readdata(0x85)>>4;
- l=ds1302readdata(0x85)&0x0f;
- beep();
- }
- else //設(shè)置鬧鐘小時(shí)
- {
- setflag=8;
- h=alarmcode[0]>>4;
- l=alarmcode[0]&0x0f;
- beep();
- }
- break;
- case 0x43: //設(shè)置時(shí)鐘的分 光標(biāo)在分?jǐn)?shù)據(jù)第一位上閃爍
-
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x48);
- delayms(5);
- if(alarmflag==0)
- {
- setflag=6;
- h=ds1302readdata(0x83)>>4;
- l=ds1302readdata(0x83)&0x0f;
- beep();
- }
- else
- {
- setflag=9;
- h=alarmcode[1]>>4;
- l=alarmcode[1]&0x0f;
- beep();
- }
- break;
- case 0x07: //設(shè)置時(shí)鐘的秒 光標(biāo)在秒數(shù)據(jù)第一位上閃爍
- num=0;
- ds1602order(0x0f);
- delayms(5);
- ds1602address(0x4b);
- delayms(5);
- if(alarmflag==0)
- {
- setflag=7;
- h=ds1302readdata(0x81)>>4;
- l=ds1302readdata(0x81)&0x0f;
- beep();
- }
- else
- {
- setflag=10;
- h=alarmcode[2]>>4;
- l=alarmcode[2]&0x0f;
- beep();
- }
- break;
- case 0x19: //進(jìn)入鬧鐘設(shè)置界面
- alarmflag=1;
- setflag=0;
- for(n=0;n<4;n++) //從24c08中讀取鬧鐘數(shù)據(jù)以便在下面顯示
- {
- alarmcode[n]=iic24c08readadd(n);
- }
- clockflag=(bit)alarmcode[3];
- beep();
- ds1602order(0x01);
- delayms(5);
- ds1602order(0xc);
- ds1602address(0x01);
- n=0;
- while(alarmcode1[n]!='\0') //在DS1602顯示字符SET ALARM TIME
- {
- ds1602data(alarmcode1[n]);
- n++;
- }
- n=0;
- if(alarmcode[3]==0) //根據(jù)24c08中鬧鐘開關(guān)數(shù)據(jù)顯示相應(yīng)的字符ON OFF
- {
- ds1602address(0x41);
- while(alarmoff[n]!='\0')
- {
- ds1602data(alarmoff[n]);
- n++;
- }
- }
- else
- {
- ds1602address(0x41);
- while(alarmon[n]!='\0')
- {
- ds1602data(alarmon[n]);
- n++;
- }
- }
- ds1602address(0x45);
- ds1602data(discode3[alarmcode[0]>>4]);
- ds1602data(discode3[alarmcode[0]&0x0f]);
- ds1602data(':');
- ds1602data(discode3[alarmcode[1]>>4]);
- ds1602data(discode3[alarmcode[1]&0x0f]);
- ds1602data(':');
- ds1602data(discode3[alarmcode[2]>>4]);
- ds1602data(discode3[alarmcode[2]&0x0f]);
- ds1602address(0x40);
- break;
- case 0x0d: //鬧鐘開關(guān)設(shè)置
- if(alarmflag==1)
- {
- beep();
- ds1602order(0x0c);
- clockflag=~clockflag;
- if(clockflag==0)
- {
- ds1602address(0x41);
- n=0;
- while(alarmoff[n]!='\0')
- {
- ds1602data(alarmoff[n]);
- n++;
- }
- iic24c08writeadd(0x03,0x00);
- TR0=0;
- }
- else
- {
- ds1602address(0x41);
- n=0;
- while(alarmon[n]!='\0')
- {
- ds1602data(alarmon[n]);
- n++;
- }
- iic24c08writeadd(0x03,0x01);
- TR0=1;
- for(n=0;n<4;n++)
- {
- alarmcode[n]=iic24c08readadd(n);
- }
- }
-
- }
- break;
- case 0x16: //輸入字符0
- if(setflag!=0)
- {
- num++; //輸入次數(shù)加1
- ds1602data('0');
- switch(num) //匹配輸入次數(shù)
- {
- case 1: h=0; break; //高位數(shù)據(jù)
- case 2: num=0; l=0; ds1602order(0x10);delayms(5); ds1602order(0x10); delayms(5);break; //低位數(shù)據(jù)
- }
- beep();
- }
- break;
- case 0x0c:
- if(setflag!=0)
- {
- num++;
- ds1602data('1');
- switch(num)
- {
- case 1: h=1; break;
- case 2: num=0;l=1;ds1602order(0x10);delayms(5); ds1602order(0x10);delayms(5); break;
- }
- beep();
-
- }
- break;
- case 0x18:
- if(setflag!=0)
- {
- num++;
- ds1602data('2');
- switch(num)
- {
- case 1: h=2; break;
- case 2: num=0; l=2;ds1602order(0x10);delayms(5); ds1602order(0x10);delayms(5); break;
- }
- beep();
- }
- break;
-
- case 0X5E:
- if(setflag!=0)
- {
- num++;
- ds1602data('3');
- switch(num)
- {
- case 1: h=3; break;
- case 2: num=0; l=3;ds1602order(0x10); delayms(5); ds1602order(0x10); delayms(5);break;
- }
- beep();
- }
- break;
-
- case 0X08:
- if(setflag!=0)
- {
- num++;
- ds1602data('4');
-
- switch(num)
- {
- case 1: h=4; break;
- case 2: num=0; l=4; ds1602order(0x10);delayms(5); ds1602order(0x10);delayms(5); break;
- }
- beep();
- }
- break;
-
- case 0X1C:
- if(setflag!=0)
- {
- num++;
- ds1602data('5');
- switch(num)
- {
- case 1: h=5; break;
- case 2: num=0; l=5; ds1602order(0x10); delayms(5); ds1602order(0x10);delayms(5); break;
- }
- beep();
- }
- break;
-
- case 0X5A:
- if(setflag!=0)
- {
- num++;
- ds1602data('6');
-
- switch(num)
- {
- case 1: h=6; break;
- case 2: num=0; l=6; ds1602order(0x10); delayms(5); ds1602order(0x10); delayms(5);break;
- }
- beep();
- }
- break;
-
- case 0X42:
- if(setflag!=0)
- {
- num++;
- ds1602data('7');
-
- switch(num)
- {
- case 1: h=7; break;
- case 2: num=0; l=7; ds1602order(0x10); delayms(5); ds1602order(0x10);delayms(5); break;
- }
- beep();
- }
- break;
-
- case 0X52:
- if(setflag!=0)
- {
- num++;
- ds1602data('8');
-
- switch(num)
- {
- case 1: h=8; break;
- case 2: num=0; l=8; ds1602order(0x10); delayms(5); ds1602order(0x10);delayms(5); break;
- }
- beep();
- }
- break;
-
- case 0X4A:
- if(setflag!=0)
- {
- num++;
- ds1602data('9');
-
- switch(num)
- {
- case 1: h=9; break;
- case 2: num=0; l=9; ds1602order(0x10);delayms(5); ds1602order(0x10); delayms(5);break;
- }
- beep();
- }
- break;
- case 0X15: //取消返回碼
- setflag=0;
- irflag=0;
- if(alarmflag==1) //如果進(jìn)入過(guò)鬧鐘設(shè)置界面,需要重新寫入DS1302的初始字符數(shù)據(jù)
- {
- alarmflag=0;
- n=0;
- ds1602address(0x00);
- while(discode1[n]!='\0')
- {
- ds1602data(discode1[n]);
- n++;
- }
- n=0;
- ds1602address(0x40);
- while(discode2[n]!='\0')
- {
- ds1602data(discode2[n]);
- n++;
- }
- }
- beep();
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
紅外遙控設(shè)置電子時(shí)鐘帶溫度和鬧鐘.rar
(57.67 KB, 下載次數(shù): 44)
2017-7-29 02:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|