完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #define uchar unsigned char #define uint unsigned int ***it rest=P3^5;//ds1302-5 ***it dates=P3^6;//ds1302-6 ***it sclk=P3^7;//ds1302-7 ***it acc0=ACC^0; ***it acc7=ACC^7; //595端口 ***it SD=P2^2; ***it SCK=P2^1; ***it RCK=P2^3; uchar nian,yue,ri,shi,fen,miao,xingqi; uint day1; bit b1,b2,b3,b4,b5,time_bz,power_bz; uchar disp_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //595串入并出 void WR1_595(uchar num1) { uchar date; uchar b; date=num1; for(b=0;b<=7;b++) { if((date&0x80)==0x80) //最高位为1,则向SDATA_595发送1 SD=1; //发出数据的最高位 else SD=0; date<<=1; //左移位 SCK=0; _nop_(); _nop_(); SCK=1; //产生上升沿 } } /*写操作*/ void delay() { uchar n; for(n=0;n<10;n++); } void write(uchar da) { uchar i; ACC=da; for(i=8;i>0;i--) { dates=acc0; sclk=0; sclk=1; ACC>>=1; } } /*读操作*/ uchar read() { uchar i; for(i=0;i<8;i++) { ACC>>=1; sclk=1; sclk=0; acc7=dates; } return(ACC); } /*写数据*/ void write_time(uchar address,uchar date) { rest=0; sclk=0; rest=1; write(address); write(date); rest=0; sclk=1; } /*读数据*/ uchar read_time(uchar address) { uchar temp; rest=0; sclk=0; rest=1; write(address); temp=read(); rest=0; sclk=1; dates=0; //必须加上 return (temp); } /*=======================================*/ void write_tt1(uchar address,uchar time)//写时间 { uchar temp1,temp2; temp1=time/10; temp2=time%10; time=(temp1<<4)|temp2; write_time(address,time); } /*==============================*/ uchar read_tt1(uchar addr) { uchar temp; temp=read_time(addr); temp=temp/16*10+temp%16; return temp; } void write_tt() { write_time(0x8e,0x00); //WP=0 写操作 write_tt1(0x80,0x01); //0x80是写秒数据 write_tt1(0x82,0x01); //0x82是写分数据 write_tt1(0x84,0x01); //0x82是写时数据 write_tt1(0x86,0x01); //0x82是写日数据 write_tt1(0x88,0x01); //0x82是写月数据 write_tt1(0x8a,0x01); //0x8a是写星期数据 write_tt1(0x8c,0x01); //0x82是写年数据 write_time(0x8e,0x80); //WP=1 写保护 } void read_tt() //读时间 { fen=read_tt1(0x83); shi=read_tt1(0x85); ri=read_tt1(0x87); yue=read_tt1(0x89); nian=read_tt1(0x8d); xingqi=read_tt1(0x8b); miao=read_tt1(0x81); if(miao>59) { if((miao&0x80)&&(miao&0x7f)<60) { write_time(0x8e,0x00); //WP=0 写操作 write_tt1(0x80,miao&0x7f);//0x80是写秒数据 write_time(0x8e,0x80); //WP=1 写保护 } else { if(fen<59) fen+=1; write_time(0x8e,0x00); //WP=0 写操作 write_tt1(0x80,0x00);//0x80是写秒数据 write_tt1(0x82,fen);//0x80是写分数据 write_time(0x8e,0x80); //WP=1 写保护 } } if(shi==0&&fen==0&&miao==0&&time_bz==0) { time_bz=1; day1=day1+1; } if(shi!=0&&fen!=0&&miao!=0) time_bz=0; } void display() { RCK=0; WR1_595(disp_code[2]); WR1_595(disp_code[0]); //WR1_595(disp_code[nian]); WR1_595(disp_code[nian]); //WR1_595(disp_code[yue]); WR1_595(disp_code[yue]); //WR1_595(disp_code[ri]); WR1_595(disp_code[ri]); //WR1_595(disp_code[shi]); WR1_595(disp_code[shi]); //WR1_595(disp_code[fen]); WR1_595(disp_code[fen]); WR1_595(disp_code[miao]); RCK=1; } void main() { while(1) { write_tt(); read_tt(); display(); delay(); } } |
|
相关推荐
3个回答
|
|
DS1302加595芯片 大哥们看看那一部分不对,不胜感激
|
|
|
|
哦哦哦。。。最讨厌看程序
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
1075 浏览 0 评论
1129 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
499 浏览 0 评论
stm32f407+ksz8863rlli概率性ping不通
1211 浏览 1 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
586 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11392 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-3 19:45 , Processed in 0.486176 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号