完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.jpg (86.21 KB, 下载次数: 0) 模拟 2.jpg (14.5 KB, 下载次数: 0) 使用的原件 3.jpg (127.5 KB, 下载次数: 0) 4.jpg (61.96 KB, 下载次数: 0) 5.jpg (58.03 KB, 下载次数: 0) |
|
相关推荐
3个回答
|
|
这么一大串代码贴出来,你觉得你看着都不会觉得累吗
|
|
|
|
#include
#include #define uchar unsigned char #define uint unsigned int uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86, 0x8e,0xff,0xbf, 0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; uchar code smg_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; int time_data[7]={12,4,9,22,15,54,30};//调时用:年,周,月,日,时,分,秒 uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; uchar disp[16]; uchar bz1=0;bz2=0;bz3=0,num,bz=1; ***it io=P1^1; ***it rst=P1^2; ***it clk=P1^0; ***it k1=P1^3; ***it k2=P1^4; ***it k3=P1^5; ***it k4=P1^6; ***it k5=P1^7; ***it led1=P3^7; ***it led2=P3^6; ***it led3=P3^1; /**************************延时函数******************/ void delay(uint t) { uchar tt; while(t--) for(tt=0;tt<110;tt++); } void nop() { _nop_(); _nop_(); _nop_(); _nop_(); } /******************单字节写******************/ void write_byte(uchar dat) { uchar i; for(i=0;i<8;i++) { clk=0; //io=dat&0x01; dat>>=1; io=CY; clk=1; } } /********************写地址与数据****************/ void write(uchar add,uchar dat) { rst=0;nop(); clk=0;nop(); rst=1;nop(); write_byte(add); nop(); write_byte(dat); rst=0;nop(); io=1;clk=1;//释放总线 } /***************************读地址*******************/ uchar read(uchar add) { uchar value,i; rst=0;nop(); clk=0;nop(); rst=1;nop(); write_byte(add); for(i=0;i<8;i++) { value>>=1; clk=0; if(io) value=value|0x80; clk=1; } rst=0;nop(); clk=0;nop(); clk=1;nop(); io=1; return value; } /*************************设置******************/ void set() { char i,a,b; for(i=0;i<7;i++)//进制转换十进制-16 { a=time_data[i]/10; b=time_data[i]%10; time_data[i]=a*16+b; } write(0x8e,0x00);//去出写保护 for(i=0;i<7;i++) { write(write_add[i],time_data[i]); } //write(0x90,0xab);//充电功能 //write(0x8e,0x80);//加上写保护 } /***********************读数据******************/ void readset() { uchar i; for(i=0;i<7;i++) { time_data[i]=read(read_add[i]); } } /**********************数据处理**********************/ void time_pros(void) { if(num==0) { disp[0]=time_data[4]/16;//时,变成十进制数 disp[1]=time_data[4]%16; //disp[2]=17;//显示横杠 disp[2]=time_data[5]/16;//分,变成十进制数 disp[3]=time_data[5]%16; //disp[4]=17; disp[4]=time_data[6]/16;//秒,变成十进制数 disp[5]=time_data[6]%16; disp[6]=2;//秒,变成十进制数 disp[7]=0; disp[8]=time_data[0]/16;//年 disp[9]=time_data[0]%16; disp[10]=time_data[2]/16;//月,变成十进制数 disp[11]=time_data[2]%16; disp[12]=time_data[3]/16;//日,变成十进制数 disp[13]=time_data[3]%16; disp[15]=time_data[1]/16;//周,变成十进制数 disp[14]=time_data[1]%16; } if(num==1) { disp[0]=17;//时,变成十进制数 disp[1]=17; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=time_data[6]/16;//秒,变成十进制数 disp[5]=time_data[6]%16; disp[6]=17;//20 disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==2) { disp[0]=17;//时,变成十进制数 disp[1]=17; //disp[2]=17;//显示横杠 disp[2]=time_data[5]/16;//分,变成十进制数 disp[3]=time_data[5]%16+18; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//秒,变成十进制数 disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==3) { disp[0]=time_data[4]/16;//时,变成十进制数 disp[1]=time_data[4]%16+18; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//秒,变成十进制数 disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==3) { disp[0]=time_data[4]/16;//时,变成十进制数 disp[1]=time_data[4]%16+18; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//20** disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==4) { disp[0]=17;//时,变成十进制数 disp[1]=17; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//20** disp[7]=17; disp[8]=time_data[0]/16;//年 disp[9]=time_data[0]%16; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==5) { disp[0]=17;//时,变成十进制数 disp[1]=17; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//20** disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=time_data[2]/16;//月,变成十进制数 disp[11]=time_data[2]%16; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==6) { disp[0]=17;//时,变成十进制数 disp[1]=17; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//20** disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=time_data[3]/16;//日,变成十进制数 disp[13]=time_data[3]%16; disp[14]=17;//周,变成十进制数 disp[15]=17; } if(num==7) { disp[0]=17;//时,变成十进制数 disp[1]=17; //disp[2]=17;//显示横杠 disp[2]=17;//分,变成十进制数 disp[3]=17; //disp[4]=17; disp[4]=17;//秒,变成十进制数 disp[5]=17; disp[6]=17;//20** disp[7]=17; disp[8]=17;//年 disp[9]=17; disp[10]=17;//月,变成十进制数 disp[11]=17; disp[12]=17;//日,变成十进制数 disp[13]=17; disp[15]=time_data[1]/16;//周,变成十进制数 disp[14]=time_data[1]%16; } } /********************输出显示**********************/ void display() { uchar i; for(i=0;i<16;i++) { P0=smg_du[disp[i]]; P2=(P2+1)%16;delay(1); P0=0x00;//delay(1); } } /*************************按键处理******************/ void key() { if(k1==0) { delay(10); bz1=~bz1; num=0; while(!k1); } if(bz1!=0) { if(k2==0) { delay(10); num++; if(num==8) { num=0; bz1=0; } while(!k2); } } } void tiaojie() { //uchar c,d; if(num==1) //调秒 { if(k3==0) { delay(10); time_data[6]++; if(time_data[6]%16==10) { time_data[6]=time_data[6]+6; } if(time_data[6]/16==6) { time_data[6]=0; } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[6],time_data[6]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[6]--; if(time_data[6]%16==0) { time_data[6]=time_data[6]-7; } if(time_data[6]==1) { time_data[6]=59+5*6; } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[6],time_data[6]); write(0x8e,0x80);//加上写保护 } } if(num==2) //调分 { if(k3==0) { delay(10); time_data[5]++; if(time_data[5]%16==10) { time_data[5]=time_data[5]+6; } if(time_data[5]/16==6) { time_data[5]=0; } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[5],time_data[5]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[5]--; if(time_data[5]%16==0) { time_data[5]=time_data[5]-7; } if(time_data[5]==1) { time_data[5]=59+6*5; } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[6],time_data[6]); write(0x8e,0x80);//加上写保护 } } if(num==3) //调时 { if(k3==0) { delay(10); time_data[4]++; if(time_data[4]%16==10) { time_data[4]=time_data[4]+6; } if(time_data[4]/16==2&&time_data[4]%16==4) { time_data[4]=0; } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[4],time_data[4]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[4]--; if(time_data[4]%16==0) { time_data[4]=time_data[4]-7; } if(time_data[4]==1) { time_data[4]=23+6*2; } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[4],time_data[4]); write(0x8e,0x80);//加上写保护 } } if(num==4) //调年 { if(k3==0) { delay(10); time_data[0]++; if(time_data[0]%16==10) { time_data[0]=time_data[0]+6; } if(time_data[0]/16>9) { time_data[0]=0; } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[0],time_data[0]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[0]--; if(time_data[0]%16==0) { time_data[0]=time_data[0]-7; } if(time_data[0]==0) { time_data[0]=99+6*9; } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[0],time_data[0]); write(0x8e,0x80);//加上写保护 } } if(num==5) //调月 { if(k3==0) { delay(10); time_data[2]++; if(time_data[2]%16==10) { time_data[2]=time_data[2]+6; } if(time_data[2]/16==1&&time_data[2]%16==3) { time_data[2]=1; } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[2],time_data[2]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[2]--; if(time_data[2]==0) { time_data[2]=12; } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[2],time_data[2]); write(0x8e,0x80);//加上写保护 } } if(num==6) //调日 { if(k3==0) { delay(10); time_data[3]++; if(time_data[3]%16==10) { time_data[3]=time_data[3]+6; } if(time_data[3]/16==3&&time_data[3]%16==2&&(time_data[2]==1||time_data[2]==3||time_data[2]==5||time_data[2]==7||time_data[2]==8||time_data[2]==11)) { time_data[3]=0; } if(time_data[3]/16==3&&time_data[3]%16==1&&(time_data[2]==4||time_data[2]==6||time_data[2]==9||time_data[2]==12)) { time_data[3]=1; } if((time_data[0]-time_data[0]/16*6)%4==0&&time_data[2]==2) { if(time_data[3]/16==3&&time_data[3]%16==0) { time_data[3]=1; } } else if (time_data[0]/16%4!=0&&time_data[2]==2) { if(time_data[3]/16==2&&time_data[3]%16==9) { time_data[3]=1; } } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[3],time_data[3]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[3]--; if(time_data[3]==0) { if(time_data[2]==1||time_data[2]==3||time_data[2]==5||time_data[2]==7||time_data[2]==8||time_data[2]==11) { time_data[3]=31; } if(time_data[2]==4||time_data[2]==6||time_data[2]==9||time_data[2]==12) { time_data[3]=30; } if((time_data[0]-time_data[0]/16*6)%4==0&&time_data[2]==2) { time_data[3]=29; } else if (time_data[0]/16%4!=0&&time_data[2]==2) { time_data[3]=28; } } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[3],time_data[3]); write(0x8e,0x80);//加上写保护 } } if(num==7) //调周 { if(k3==0) { delay(10); time_data[1]++; if(time_data[1]>=8) { time_data[1]=1; } while(!k3); write(0x8e,0x00);//去出写保护 write(write_add[1],time_data[1]); write(0x8e,0x80);//加上写保护 } if(k4==0) { delay(10); time_data[1]--; if(time_data[1]==0) { time_data[1]=7; } while(!k4); write(0x8e,0x00);//去出写保护 write(write_add[1],time_data[1]); write(0x8e,0x80);//加上写保护 } } } /*********************主函数****************************/ void main() { //set();//对时 while(1) { key(); tiaojie(); if(bz1!=0) { led1=~led1; } else { readset(); } tiaojie(); time_pros(); display(); } } 这个时钟还显示周,忘了用什么时钟芯片了,回去看看再告诉你 |
|
|
|
我有12864的电子钟散件,需要加:176798246详聊
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12012 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:00 , Processed in 0.869168 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号