多功能电子钟创新设计说明书(编辑修改稿)内容摘要:

lshi=1。 an++。 if(an==1) { Write_ds1302(Write_second,0x80)。 //先暂停时钟秒 u2=Read_ds1302(Read_second )。 u2=((u2amp。 0x70)4)*10+(u2amp。 0x0F)。 write_sfm(6,u2)。 lcd_w(0x80+0x40+7)。 lcd_w(0x38)。 lcd_w(0x0f)。 //显示功能开,有光标 } if(an==2) { u1=Read_ds1302(Read_minute)。 u1=((u1amp。 0x70)4)*10+(u1amp。 0x0F)。 write_sfm(3,u1)。 lcd_w(0x80+0x40+4)。 //显示分 lcd_w(0x38)。 lcd_w(0x0f)。 //显示功能开,有光标 } if(an==3) { u0=Read_ds1302(Read_hour)。 u0=((u0amp。 0x70)4)*10+(u0amp。 0x0F)。 write_sfm(0,u0)。 lcd_w(0x80+0x40+1)。 //显示时 lcd_w(0x38)。 lcd_w(0x0f)。 //显示功能开,有光 标 } if(an==4) { n3=Read_ds1302(Read_day)。 n3=((n3amp。 0x70)4)*10+(n3amp。 0x0F)。 write_sfm1(8,n3)。 lcd_w(0x80+9)。 //显示日 lcd_w(0x38)。 lcd_w(0x0f)。 //显示功能开,有光标 } if(an==5) { n2=Read_ds1302(Read_month)。 n2=((n2amp。 0x70)4)*10+(n2amp。 0x0F)。 write_sfm1(5,n2)。 lcd_w(0x80+6)。 //显示月 lcd_w(0x38)。 lcd_w(0x0f)。 //显示功能开,有光标 } if(an==6) { n1=Read_ds1302(Read_year)。 n1=((n1amp。 0x70)4)*10+(n1amp。 0x0F)。 write_sfm1(2,n1)。 lcd_w(0x80+3)。 //显示年 lcd_w(0x38)。 lcd_w(0x0f)。 //显示功能开,有光标 } if(an==7) { lshi=0。 an=0。 Write_ds1302(Write_second,0x00)。 //从新开启时钟 lcd_w(0x38)。 lcd_w(0x0c)。 n=1。 } } } switch(an) { case 1:if(ID2==0) {delay(4)。 if(ID2==0) { while(!ID2)。 asm(NOP)。 jia_key(Write_second,Read_second,6,1)。 asm(NOP)。 } } if(ID3==0) //秒的减 { delay(4)。 if(ID3==0) { while(!ID3)。 asm(NOP)。 jia_key(Write_second,Read_second,6,0)。 asm(NOP)。 } } break。 case 2 :if(ID2==0) //分的加 { delay(4)。 if(ID2==0) {while(!ID2)。 asm(NOP)。 jia_key(Write_minute ,Read_minute,3,1)。 asm(NOP)。 } } if(ID3==0) //分的减 { delay(4)。 if(ID3==0) { while(!ID3)。 asm(NOP)。 jia_key(Write_minute ,Read_minute,3,0)。 asm(NOP)。 } } break。 case 3 :if(ID2==0) //时的加 { delay(4)。 if(ID2==0) { while(!ID2)。 asm(NOP)。 hjia_key(Write_hour,Read_hour,0,1)。 asm(NOP)。 } } if(ID3==0) //小时的减 { delay(4)。 if(ID3==0) { while(!ID3)。 asm(NOP)。 hjia_key(Write_hour,Read_hour,0,0)。 asm(NOP)。 } } break。 case 4: if(ID2==0) //日的加 { delay(4)。 if(ID2==0) { while(!ID2)。 asm(NOP)。 rjia_key(Write_day,Read_day,8,1)。 asm(NOP)。 } } if (ID3==0) //日的减 { delay(4)。 if(ID3==0) { while(!ID3)。 asm(NOP)。 rjia_key(Write_day,Read_day,8,0)。 asm(NOP)。 } } break。 case 5: if(ID2==0) //月的加 { delay(4)。 if(ID2==0) { while(!ID2)。 asm(NOP)。 yjia_key(Write_month ,Read_month,5,1)。 asm(NOP)。 } } if(ID3==0) //月的减 { delay(4)。 if(ID3==0) { while(!ID3)。 asm(NOP)。 yjia_key(Write_month ,Read_month,5,0)。 asm(NOP)。 } } break。 case 6:if(ID2==0) //年的加 { delay(4)。 if(ID2==0) { while(!ID2)。 asm(NOP)。 njia_key(Write_year,Read_year,2,1)。 asm(NOP)。 } } if(ID3==0) //年的减 { delay(4)。 if(ID3==0) { while(!ID3)。 asm(NOP)。 njia_key(Write_year,Read_year,2,0)。 _asm(NOP)。 } } break。 } } while(lshi==1)。 asm(NOP)。 return(n)。 return(n)。 } void Write_ds1302(char addr,char dat) { char i。 PC_DDR |=0xFF。 PC_CR1 |=0xFF。 PC_CR2 |=0X00。 ce = 0。 //先复位 sclk = 0。 //清零,保持 io 口的低电平,以待数据的写入 ce = 1。 //置 1,开始写数据 //发送地址 for(i =0。 i8。 i++) { dio= addramp。 0x01。 //将一位 bcd 码的数据送给 io 口 addr=addr 1。 //右移一位 sclk =1。 //产生上升沿,发送数据 sclk =0。 } //发送数据 for(i=0。 i8。 i++) { dio= datamp。 0x01。 //将一位 bcd 码的地址数据送给 io 口 dat =dat1。 sclk=1。 //产生上升沿,发送数据 delay(1)。 sclk=0。 } ce = 0。 } //读操作 // int Read_ds1302(char addr) { char i。 char k。 char dat。 da_od=0。 da_CR1=0。 da_CR2=0。 ce=0。 sclk=0。 ce=1。 //发送地址 for(i=0。 i8。 i++) { sclk=0。 delay(10)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。