- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit rs=P1^0; //以下三个是LCD1602的位
- sbit rw=P1^1;
- sbit E=P1^2;
- sbit sclk=P2^5; //时钟芯片DS1302位
- sbit data_io=P2^6;
- sbit rst=P2^7;
- sbit hwx=P3^2;//红外IR1838定义接口
- //sbit s7=P0^7;
- sbit s0=P3^3;//四个按键
- sbit s1=P3^4;
- sbit s2=P3^5;
- //sbit s3=P0^3;
- sbit buzzer=P2^2;//蜂鸣器
- sbit out2=P2^0;// 继电器 k2
- sbit out3=P2^1;// 继电器 k1
- uchar code table1[]=" 20 / / ";
- unsigned char l_lhj[66],ir_ma; //储存红外键码值
- uchar code table2[]=" : : ";
- uchar code weektable[]="Mon TuesWed ThurFri Sat Sun ";
- uchar code clocktable2[]=" 12:30:30";
- uchar code clocktable1[]="Nao Zhong:";
- uchar shi,fen,miao,month,day,week,year,qbyear=20;
- uchar Nshi=12,Nfen=30,Nmiao=30;
- uchar s0num,s3num,flag,flaga,biaozhi;
- void scan_key(); //键盘扫描函数
- void naozhong(); //键盘设置闹钟
- void didi();
- void shezhinaozhong();
- void delay();
- void scan_hwx(); //红外遥控设置时间
- void naozhong_hwx();//红外遥控设置闹钟
- void delay_ms(uint ms)
- {
- uint i,j;
- for (i=ms;i>0;i--)
- for(j=124;j>0;j--);
- }
- void delay_1s() //延迟大概1s
- {
- uint a,b;
- a=20;b=5000;
- while(a)
- {
- a--;
- while(b)
- {
- b--;
- }
- }
- }
- void write_ds1302 (uchar addr ,uchar shu)//往DS1302写数据
- {
- uchar temp,t;
- rst=0;
- sclk=0;
- rst=1;
- temp=addr;
- for(t=0;t<8;t++)
- {
- if((temp&0x01)==1)
- {
- data_io=1;
- }
- else
- data_io=0;
- sclk=1;
- delay_ms(1);
- sclk=0;
- temp=temp>>1;
- }
- temp=shu;
- for(t=0;t<8;t++)
- {
- if((temp&0x01)==1)
- {
- data_io=1;
- }
- else
- data_io=0;
- sclk=1;
- delay_ms(1);
- sclk=0;
- temp=temp>>1;
- }
- rst=0;
- }
- uchar read_ds1302(uchar addr)//从DS1302读取数据
- {
- uchar temp ,t;
- rst =0;
- sclk=0;
- rst=1;
- temp=addr;
- for(t=0;t<8;t++)
- {
- if (temp&0x01)
- data_io=1;
- else
- data_io=0;
- sclk=1;
- sclk=0;
- temp=temp>>1;
- }
- temp=0;
- for(t=0;t<7;t++)
- {
- if(data_io==1)
- {
- temp=temp|0x80;
- }
- else
- temp=temp&0x7f;
- sclk=1;
- sclk=0;
- temp=temp>>1;
- }
- return temp;
- }
- void write_com (uchar com)//LCD1602的写命令
- {
- P0=com;
- rs=0;
- rw=0;
- E=1;
- delay_ms(1);
- E=0;
- }
- void write_date (uchar date)//LCD1602的写数据
- {
- P0=date;
- rs=1;
- rw=0;
- E=0;
- delay_ms(1);
- E=1;
- delay_ms(1);
- E=0;
- }
- void init()//LCD1602初始化
- {
- uchar i;
- EA=1; //首先开启总中断
- EX1=1; //开启外部中断 1
- IT1=1;
- write_com(0x38);
- delay_ms(2);
- write_com(0x0c);
- delay_ms(2);
- write_com(0x06);
- delay_ms(2);
- write_com(0x80);
- delay_ms(1);
- for(i=0;i<16;i++)
- {
- write_date (table1[i]);
-
- }
- write_com(0xc0);
- delay_ms(1);
- for(i=0;i<12;i++)
- {
- write_date (table2[i]);
-
- }
- write_com(0x80+0x10);
- delay_ms(1);
- for(i=0;i<10;i++)
- {
- write_date (clocktable1[i]);
-
- }
- write_com(0xc0+0x10);
- delay_ms(1);
- for(i=0;i<12;i++)
- {
- write_date (clocktable2[i]);
-
- }
- }
- void write_sfm_10(uchar add,uchar date)//在LCD1602写小时、分、秒
- {
- uchar ten,ge;
- ten=date/10;
- ge=date%10;
- write_com(0xc0+add);
- write_date(0x30+ten);
- write_date(0x30+ge);
- }
- void write_nyr_10(uchar add,uchar date)//写年、月、日
- {
- uchar ten,ge;
- ten=date/10;
- ge=date%10;
- write_com(0x80+add);
- write_date(0x30+ten);
- write_date(0x30+ge);
- }
- void write_week(uchar add,uchar week)//写星期
- {
- uchar ge,i;
- ge=week&0x0f;
- write_com(0x80+add);
- if(ge==1)
- {
-
- for(i=0;i<4;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- if(ge==2)
- {
-
- for(i=4;i<8;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- if(ge==3)
- {
- for(i=8;i<12;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- if(ge==4)
- {
- for(i=12;i<16;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- if(ge==5)
- {
-
- for(i=16;i<20;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- if(ge==6)
- {
-
- for(i=20;i<24;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- if(ge==7)
- {
- for(i=24;i<28;i++)
- {
- write_date(weektable[i]);
- }
-
- }
- }
- void main ()
- {
- init ();
- write_ds1302(0x8e,0x00);//打开写保护
- write_ds1302(0x90,0xa7);
- // 初始化一次后就不用初始化了。
- //write_ds1302(0x80,0x50);//second
- // write_ds1302(0x82,0x59);//minute
- //write_ds1302(0x84,0x23);//hour
- //write_ds1302(0x8a,0x07);//week
- // write_ds1302(0x86,0x23);//day
- // write_ds1302(0x88,0x05);//month
- // write_ds1302(0x8c,0x10);//year
- while(1)
- {
- scan_key();//键盘扫描
- if (flag==0)
- {
- shi=read_ds1302(0x85);//从DS1302读取时间和日期,数据为16进制
- fen=read_ds1302(0x83);
- miao=read_ds1302(0x81);
- day=read_ds1302(0x87);
- month=read_ds1302(0x89);
- year=read_ds1302(0x8d);
- week=read_ds1302(0x8b);
- miao=(miao/16)*10+miao%16;//把16进制转化成10进制
- fen=(fen/16)*10+fen%16;
- shi=(shi/16)*10+shi%16;
- day=(day/16)*10+day%16;
- month=(month/16)*10+month%16;
- year=(year/16)*10+year%16;
- write_sfm_10(10,miao);//显示时间日期
- write_sfm_10(7,fen);
- write_sfm_10(4,shi);
- write_nyr_10(9,day);
- write_nyr_10(6,month);
- write_nyr_10(3,year);
- write_week(12,week);
-
- }
- naozhong();//闹钟功能
- if(shi==Nshi&&fen==Nfen&&miao==Nmiao)
- {
- flaga=1;
- }
- if(flaga==1)
- {
- didi(); //蜂鸣器响
- }
- }
- }
- void delay(void) //空5个指令
- {
- uchar i=13;
- while(i)
- i--;
- }
- void hongwai(void) interrupt 2 //外部中断 1 ,INT1(P3^3)连接红外线接收IC数据脚
- {
- uchar i,j,tmp;
- EX1=0;
- j=33; //传送一组数包括引导码1位,地址码8位加反码8位,指令码8位加反码8位,总共33位
- i=0; //从第一维数组开始
- tmp=100; //加八延时,
- while(tmp)
- {
- tmp--;
- }
- if(hwx)
- { //然后再检测红线接收脚是有数据招收,有继续,没有则退出
- EX1=1;
- return;
- }
- while(j)
- { //循环接收33位数据,为何我们用到66位数组,我们可以不接收高电平时间常数,只接低电平常数就
- //可以判断1或0了,在这里我们都接收,为串口调试软件接收计算波形
- //还有一点要知道,接收波形是反向,在没有接收时端口为高电平
- tmp=0;
- l_lhj[i]=1; //时间量从1开始
- while(!hwx)
- { //检测高低电平的变化
- l_lhj[i]++; //没变继续加1
- delay(); //加入延时,是因为我们采用8位二进来存储,如果不加延时,时间量将计满
- tmp++; //此变量为防止干扰带来的死循环
- if(tmp==250)
- break;
- }
- i++;
- tmp=0;
- l_lhj[i]=1; //时间量从1开始
- while(hwx)
- { //检测高低电平的变化
- l_lhj[i]++; //没变继续加1
- delay(); //同上
- tmp++;
- if(tmp==250)
- break;
- }
- i++;
- j--;
- }
- i=255; //加入循环延时,抗干扰
- while(i){
- tmp=255;
- while(tmp){
- tmp--;
- }
- i--;
- }
- tmp=0;
- for(i=35;i<51;i++,i++){
- tmp>>=1;
- if(l_lhj[i]>30)
- tmp+=0x80;
- }
- ir_ma=tmp;
- scan_hwx();
- // naozhong_hwx();
- if(ir_ma==0x12)
- {
- flaga=0;
- }
- if(ir_ma==0x1b)
- {
- flaga=1;
- }
- buzzer=0;
- delay_1s();
- buzzer=1;
- EX1=1;
- }
- void scan_key() //扫描键盘
- {
- s7=0;
- if(flaga==1) //关闭闹钟
- {
- if(s1==0)
- {
- delay_ms(10);
- if(s1==0)
- {
- while(!s1);
- flaga=0;
- }
- }
- if(s2==0)
- {
- delay_ms(10);
- if(s2==0)
- {
- while(!s2);
- flaga=0;
- }
- }
-
- }
- if(s0==0)
- {
- delay_ms(10);
- if(s0==0)
- {
- buzzer=0;
- while(!s0);
- s0num++;
- buzzer=1;
- if(s0num==1)
- { flag=1;
-
- write_com(0xc0+11);
- write_com(0x0f);
- shi=read_ds1302(0x85);
- fen=read_ds1302(0x83);
- miao=read_ds1302(0x81);
- day=read_ds1302(0x87);
- month=read_ds1302(0x89);
- year=read_ds1302(0x8d);
- week=read_ds1302(0x8b);
- miao=(miao/16)*10+miao%16;
- fen=(fen/16)*10+fen%16;
- shi=(shi/16)*10+shi%16;
- day=(day/16)*10+day%16;
- month=(month/16)*10+month%16;
- year=(year/16)*10+year%16;
- }
- if(s0num==2)
- {
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
- write_com(0x80+12);
- }
- if(s0num==5)
- {
- write_com(0x80+10);
- }
- if(s0num==6)
- {
- write_com(0x80+7);
- }
- if(s0num==7)
- {
- write_com(0x80+4);
- }
- if(s0num==8)
- {
- s0num=0;
- write_com(0x0c);
- miao=(miao/10)*16+miao%10;//10进制转16进制
- fen=(fen/10)*16+fen%10;
- shi=(shi/10)*16+shi%10;
- day=(day/10)*16+day%10;
- month=(month/10)*16+month%10;
- year=(year/10)*16+year%10;
- write_ds1302(0x80,miao);
- write_ds1302(0x82,fen);
- write_ds1302(0x84,shi);
- write_ds1302(0x8a,week);
- write_ds1302(0x86,day);
- write_ds1302(0x88,month);
- write_ds1302(0x8c,year);
- flag=0;
- }
-
- }
-
-
- }
- if(s0num!=0) //减键
- {
- if(s2==0)
- {
- delay_ms(10);
- buzzer=0;
- if(s2==0)
- { while(!s2);
- buzzer=1;
- if(s0num==1)
- {
-
- if(miao==0)
- {
-
- miao=60;
-
- }
- miao--;
-
- write_sfm_10(10,miao);
-
-
- write_com(0xc0+11);
-
- }
- if(s0num==2)
- {
-
- if(fen==0)
- {
- fen=60;
-
- }
- fen--;
- write_sfm_10(7,fen);
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
-
- if(shi==0)
- {
- shi=24;
- }
- shi--;
- write_sfm_10(4,shi);
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
- week--;
- if(week==0)
- {
- week=7;
- }
-
- write_week(12,week);
- write_com(0x80+12);
- }
- if(s0num==5)
- {
- day--;
- if(year%4==0 && year%100!=0 || year%400==0)
- {
- if(month==2)
- {
- if(day==0)
- {
- day=29;
- }
- }
- }
- if((year%4!=0 || year%100==0) && year%400!=0)
- {
- if(month==2)
- {
- if(day==0)
- {
- day=28;
- }
- }
- }
- if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
- {
- if(day==0)
- {
- day=31;
- }
- }
- if(month==4 || month==6 || month==9 || month==11)
- {
- if(day==0)
- {
- day=30;
- }
- }
- write_nyr_10(9,day);
- write_com(0x80+10);
- }
- if(s0num==6)
- {
- month--;
- if(month==0)
- {
- month=12;
- }
-
- write_nyr_10(6,month);
- write_com(0x80+7);
- }
- if(s0num==7)
- {
-
- if(year==0)
- {
- year=100;
- qbyear--;
- write_nyr_10(1,qbyear);
- }
- year--;
- write_nyr_10(3,year);
- write_com(0x80+4);
- }
- }
- }
- }
- if(s0num!=0) //加键
- {
- if(s1==0)
- {
- delay_ms(10);
- buzzer=0;
- if(s1==0)
- { while(!s1);
- buzzer=1;
- if(s0num==1)
- {
-
- miao++;
-
- if(miao==60)
- {
-
- miao=0;
-
- }
- write_sfm_10(10,miao);
- write_com(0xc0+11);
-
- }
- if(s0num==2)
- {
- fen++;
- if(fen==60)
- {
- fen=0;
- }
-
- write_sfm_10(7,fen);
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
- shi++;
- if(shi==24)
- {
- shi=0;
- }
-
- write_sfm_10(4,shi);
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
-
- if(week==7)
- {
- week=0;
- }
- week++;
- write_week(12,week);
- write_com(0x80+12);
- }
- if(s0num==5)
- {
-
- if(year%4==0 && year%100!=0 || year%400==0)
- {
- if(month==2)
- {
- if(day==29)
- {
- day=0;
- }
- }
- }
- if((year%4!=0 || year%100==0) && year%400!=0)
- {
- if(month==2)
- {
- if(day==28)
- {
- day=0;
- }
- }
- }
- if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
- {
- if(day==31)
- {
- day=0;
- }
- }
- if(month==4 || month==6 || month==9 || month==11)
- {
- if(day==30)
- {
- day=0;
- }
- }
-
- day++;
- write_nyr_10(9,day);
- write_com(0x80+10);
- }
- if(s0num==6)
- {
-
- if(month==12)
- {
- month=0;
- }
- month++;
- write_nyr_10(6,month);
- write_com(0x80+7);
- }
- if(s0num==7)
- {
-
- if(year==99)
- {
- year=-1;
- qbyear++;
- write_nyr_10(1,qbyear);
- }
- year++;
- write_nyr_10(3,year);
- write_com(0x80+4);
- }
- }
- }
- }
- }
- void write_sfmnaozhong(uchar add,uchar date) //显示闹钟时间
- {
- uchar ten,ge;
- ten=date/10;
- ge=date%10;
- write_com(0xc0+0x10+add);
- write_date(0x30+ten);
- write_date(0x30+ge);
- }
- void didi()
- {
- buzzer=0;
- delay_ms(50);
- buzzer=1;
- delay_ms(50);
- }
- void naozhong() //设置闹钟时间
- {
- if(s3==0)
- {
- delay_ms(10);
- if(s3==0)
- { uchar i;
- flag=0;
- s3num++;
- buzzer=0;
- while(!s3);
- buzzer=1;
- if(s3num==1)
- {
- for(i=0;i<16;i++)
- {
- write_com (0x18);
-
- }
-
- }
- if(s3num==2)
- {
- write_com (0xc0+0x10+11);
- write_com(0x0f);
-
- }
- if(s3num==3)
- {
- write_com (0xc0+0x10+8);
- }
- if(s3num==4)
- {
- write_com (0xc0+0x10+5);
- }
- if(s3num==5)
- {
- s3num=0;
- for(i=0;i<16;i++)
- {
-
- write_com (0x1c);
-
- }
- write_com(0x0c);
- }
- }
- }
- shezhinaozhong();
- }
- void shezhinaozhong()
- {
- if(s3num!=0)
- {
- if(s2==0)
- {
- delay_ms(10);
- buzzer=0;
- if(s2==0)
- { while(!s2);
- buzzer=1;
- if(s3num==2)
- {
-
- if(Nmiao==0)
- {
- Nmiao=60;
-
-
- }
- Nmiao--;
- write_sfmnaozhong(10,Nmiao);
- write_com(0xc0+0x10+11);
-
- }
- if(s3num==3)
- {
-
- if(Nfen==0)
- {
- Nfen=60;
-
-
- }
- Nfen--;
- write_sfmnaozhong(7,Nfen);
- write_com(0xc0+0x10+8);
- }
- if(s3num==4)
- {
-
- if(Nshi==0)
- {
- Nshi=24;
- }
- Nshi--;
- write_sfmnaozhong(4,Nshi);
- write_com(0xc0+0x10+5);
- }
- }
- }
- }
- if(s3num!=0)
- {
- if(s1==0)
- {
- delay_ms(10);
- buzzer=0;
- if(s1==0)
- { while(!s1);
- buzzer=1;
- if(s3num==2)
- {
- Nmiao++;
- if(Nmiao==60)
- {
- Nmiao=0;
- }
- write_sfmnaozhong(10,Nmiao);
- write_com(0xc0+0x10+11);
-
- }
- if(s3num==3)
- {
- Nfen++;
- if(Nfen==60)
- {
- Nfen=0;
-
- }
- write_sfmnaozhong(7,Nfen);
- write_com(0xc0+0x10+8);
- }
- if(s3num==4)
- {
- Nshi++;
- if(Nshi==24)
- {
- Nshi=0;
- }
- write_sfmnaozhong(4,Nshi);
- write_com(0xc0+0x10+5);
- }
- }
- }
- }
- }
- void scan_hwx()
- {
- if(ir_ma==0x1c)
- {
- flag=1;
-
- shi=read_ds1302(0x85);
- fen=read_ds1302(0x83);
- miao=read_ds1302(0x81);
- day=read_ds1302(0x87);
- month=read_ds1302(0x89);
- year=read_ds1302(0x8d);
- week=read_ds1302(0x8b);
- miao=(miao/16)*10+miao%16;
- fen=(fen/16)*10+fen%16;
- shi=(shi/16)*10+shi%16;
- day=(day/16)*10+day%16;
- month=(month/16)*10+month%16;
- year=(year/16)*10+year%16;
- }
- if((ir_ma==0x0c)&&(flag==1))
- {
- s0num++;
- if(s0num==1)
- {
- write_com(0xc0+11);
- write_com(0x0f);
- }
- if(s0num==2)
- {
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
- write_com(0x80+12);
- }
- if(s0num==5)
- {
- write_com(0x80+10);
- }
- if(s0num==6)
- {
- write_com(0x80+7);
- }
- if(s0num==7)
- {
- write_com(0x80+4);
- s0num=0;
- }
- }
- if((ir_ma==0x05)&&(flag==1))
- {
- s0num--;
- if(s0num==1)
- {
- write_com(0xc0+11);
- write_com(0x0f);
- s0num=8;
- }
- if(s0num==2)
- {
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
- write_com(0x80+12);
- }
- if(s0num==5)
- {
- write_com(0x80+10);
- }
- if(s0num==6)
- {
- write_com(0x80+7);
- }
- if(s0num==7)
- {
- write_com(0x80+4);
- }
-
- }
-
-
- if(s0num!=0) //减键
- {
- if(ir_ma==0x01)
- {
- if(s0num==1)
- {
- if(miao==0)
- {
- miao=60;
- }
- miao--;
- write_sfm_10(10,miao);
- write_com(0xc0+11);
- }
- if(s0num==2)
- {
- if(fen==0)
- {
- fen=60;
- }
- fen--;
- write_sfm_10(7,fen);
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
-
- if(shi==0)
- {
- shi=24;
- }
- shi--;
- write_sfm_10(4,shi);
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
- week--;
- if(week==0)
- {
- week=7;
- }
-
- write_week(12,week);
- write_com(0x80+12);
- }
- if(s0num==5)
- {
- day--;
- if(year%4==0 && year%100!=0 || year%400==0)
- {
- if(month==2)
- {
- if(day==0)
- {
- day=29;
- }
- }
- }
- if((year%4!=0 || year%100==0) && year%400!=0)
- {
- if(month==2)
- {
- if(day==0)
- {
- day=28;
- }
- }
- }
- if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
- {
- if(day==0)
- {
- day=31;
- }
- }
- if(month==4 || month==6 || month==9 || month==11)
- {
- if(day==0)
- {
- day=30;
- }
- }
- write_nyr_10(9,day);
- write_com(0x80+10);
- }
- if(s0num==6)
- {
- month--;
- if(month==0)
- {
- month=12;
- }
-
- write_nyr_10(6,month);
- write_com(0x80+7);
- }
- if(s0num==7)
- {
-
- if(year==0)
- {
- year=100;
- qbyear--;
- write_nyr_10(1,qbyear);
- }
- year--;
- write_nyr_10(3,year);
- write_com(0x80+4);
- }
-
- }
- }
- if(s0num!=0) //加键
- {
- if(ir_ma==0x02)
- {
- if(s0num==1)
- {
-
- miao++;
-
- if(miao==60)
- {
-
- miao=0;
-
- }
- write_sfm_10(10,miao);
-
-
- write_com(0xc0+11);
-
- }
- if(s0num==2)
- {
- fen++;
- if(fen==60)
- {
- fen=0;
- }
-
- write_sfm_10(7,fen);
- write_com(0xc0+8);
- }
- if(s0num==3)
- {
- shi++;
- if(shi==24)
- {
- shi=0;
- }
-
- write_sfm_10(4,shi);
- write_com(0xc0+5);
- }
- if(s0num==4)
- {
-
- if(week==7)
- {
- week=0;
- }
- week++;
- write_week(12,week);
- write_com(0x80+12);
- }
- if(s0num==5)
- {
-
- if(year%4==0 && year%100!=0 || year%400==0)
- {
- if(month==2)
- {
- if(day==29)
- {
- day=0;
- }
- }
- }
- if((year%4!=0 || year%100==0) && year%400!=0)
- {
- if(month==2)
- {
- if(day==28)
- {
- day=0;
- }
- }
- }
- if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
- {
- if(day==31)
- {
- day=0;
- }
- }
- if(month==4 || month==6 || month==9 || month==11)
- {
- if(day==30)
- {
- day=0;
- }
- }
-
- day++;
-
-
- write_nyr_10(9,day);
- write_com(0x80+10);
- }
- if(s0num==6)
- {
-
- if(month==12)
- {
- month=0;
- }
- month++;
- write_nyr_10(6,month);
- write_com(0x80+7);
- }
- if(s0num==7)
- {
-
- if(year==99)
- {
- year=-1;
- qbyear++;
- write_nyr_10(1,qbyear);
- }
- year++;
- write_nyr_10(3,year);
- write_com(0x80+4);
- }
-
- }
- }
- if((s0num!=0)&&(ir_ma==0x04))
- {
- s0num=0;
- write_com(0x0c);
- miao=(miao/10)*16+miao%10;//10进制转16进制
- fen=(fen/10)*16+fen%10;
- shi=(shi/10)*16+shi%10;
- day=(day/10)*16+day%10;
- month=(month/10)*16+month%10;
- year=(year/10)*16+year%10;
- write_ds1302(0x80,miao);
- write_ds1302(0x82,fen);
- write_ds1302(0x84,shi);
- write_ds1302(0x8a,week);
- write_ds1302(0x86,day);
- write_ds1302(0x88,month);
- write_ds1302(0x8c,year);
- flag=0;
- }
- }
- void naozhong_hwx()
- {
- if(ir_ma==0x4c)
- {
- uchar i;
- flag=1;
- biaozhi=1;
-
- for(i=0;i<16;i++)
- {
- write_com (0x18);
-
- }
-
- }
- if((biaozhi==1)&&(ir_ma==0x0c))
- {
- s3num++;
- if(s3num==1)
- {
- write_com (0xc0+0x10+11);
- // write_com(0x0f);
-
- }
- if(s3num==2)
- {
- write_com (0xc0+0x10+8);
- }
- if(s3num==3)
- {
- write_com (0xc0+0x10+5);
- s3num=0;
- }
- }
- if((biaozhi==1)&&(ir_ma==0x05))
- {
- s3num--;
- if(s3num==1)
- {
- write_com (0xc0+0x10+11);
- // write_com(0x0f);
- s3num=4;
-
- }
- if(s3num==2)
- {
- write_com (0xc0+0x10+8);
- }
- if(s3num==3)
- {
- write_com (0xc0+0x10+5);
-
- }
- }
- if(s3num!=0)
- {
- if(ir_ma==0x01)
- {
- if(s3num==1)
- {
-
- if(Nmiao==0)
- {
- Nmiao=60;
-
-
- }
- Nmiao--;
- write_sfmnaozhong(10,Nmiao);
- write_com(0xc0+0x10+11);
-
- }
- if(s3num==2)
- {
-
- if(Nfen==0)
- {
- Nfen=60;
-
-
- }
- Nfen--;
- write_sfmnaozhong(7,Nfen);
- write_com(0xc0+0x10+8);
- }
- if(s3num==3)
- {
-
- if(Nshi==0)
- {
- Nshi=24;
- }
- Nshi--;
- write_sfmnaozhong(4,Nshi);
- write_com(0xc0+0x10+5);
- }
- }
- }
- if(s3num!=0)
- {
- if(ir_ma==0x02)
- {
- if(s3num==1)
- {
- Nmiao++;
- if(Nmiao==60)
- {
- Nmiao=0;
- }
- write_sfmnaozhong(10,Nmiao);
- write_com(0xc0+0x10+11);
-
- }
- if(s3num==2)
- {
- Nfen++;
- if(Nfen==60)
- {
- Nfen=0;
-
- }
- write_sfmnaozhong(7,Nfen);
- write_com(0xc0+0x10+8);
- }
- if(s3num==3)
- {
- Nshi++;
- if(Nshi==24)
- {
- Nshi=0;
- }
- write_sfmnaozhong(4,Nshi);
- write_com(0xc0+0x10+5);
- }
- }
- }
- if((biaozhi==1)&&(ir_ma==0x04))
- {
- uchar i;
- s3num=0;
- for(i=0;i<16;i++)
- {
-
- write_com (0x1c);
-
- }
- // write_com(0x0c);
- biaozhi=0;
- }
- }
复制代码 |