完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 zmin21 于 2013-7-26 08:29 编辑
#include #include #define uchar unsigned char #define uint unsingned int ***it wela=P2^7; ***it dula=P2^6; ***it tclk=P2^5; 时钟 ***it tio=P2^4; io ***it trst=P2^3; 复位 //***it acc0=ACC^0; //***it acc7=ACC^7; uchar code duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 uchar code wei[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //数码管各位的码表 void delay(uchar z) { uchar x; for(x=z;x>0;x--); } void ds1302_write(uchar byte) { uchar i,dat; dat=byte; tclk=0; delay(2); for(i=0;i<8;i++) {tio=dat&0x01; tclk=1; delay(2); tclk=0; dat>>=1; } } uchar ds1302_read(void) { uchar i,dat; delay(2); for(i==0;i<8;i++) {dat=dat>>1; if(tio=1) dat=dat|0x80; tclk=1; delay(2); tclk=0; delay(2); } return(dat); } void wr1302(uchar add,uchar data1) { trst=0; tclk=0; trst=1; delay(2); ds1302_write(add); ds1302_write(data1); tclk=1; trst=0; } uchar rd1302(uchar add) { uchar data2; trst=0; tclk=0; trst=1; ds1302_write(add); data2=ds1302_read(); tclk=1; trst=0; return(data2); } void ds1302_init(void) { uchar flag; flag= rd1302(0x81); if(flag&0x80) { wr1302(0x8e,0x00);//关保护寄存器 wr1302(0x90,0xa5);//卷电流充电 wr1302(0x80,((55/10)<<4|(55%10)));//秒 wr1302(0x82,((19/10)<<4|(19%10)));//分 wr1302(0x84,((10/10)<<4|(10%10)));//时 wr1302(0x8e,0x80);//开保护寄存器 } } void display_led(uchar date,uchar num) { P0=wei[num]; wela=1; wela=0; P0=duan[date]; dula=1; dula=0; delay(50); } void main() { uchar sec,sec1,sec2; uchar min,min1,min2; uchar hour,hour1,hour2; ds1302_init(); delay(4); while(1) { sec=rd1302(0x81); sec1=(sec&0x0f); sec2=(sec>>4); min=rd1302(0x83); min1=min&0x0f; min2=(min>>4); hour=rd1302(0x85); hour1=hour&0x0f; hour2=(hour>>4); display_led(sec1,5); display_led(sec2,4); display_led(min1,3); display_led(min2,2); display_led(hour1,1); display_led(hour1,0); } } 这是所有程序, 愿大神指导指导,小弟刚学不久,本来很有激情的,一下子被1302打击了,求激励! 新人,可惜只有6个E币,全送了
评分
|
||
相关推荐
9个回答
|
||
回帖奖励 +1 分积分
顶一个 看看大神来解决
|
|
|
|
void ds1302_write(uchar byte)
{ uchar i,dat; ACC=byte; tclk=0; delay(2); for(i=0;i<8;i++) {tio=dat&0x01; tclk=1; delay(2); tclk=0; dat>>=1; } } 上面的ACC改为dat试试! 评分
|
||
|
||
是数码管显示的问题呢,还是读1302数据错误的问题?
|
|
|
|
刚才也查到资料说C里面用ACC不对,改了,还是不行,努力调试中,不过仍然全0 |
|
|
|
我试了数码管,显示没问题,我觉得是程序问题吧,没读出来1302数据,可惜我看不出来程序错误,看了好多遍了 |
|
|
|
那个ACC啊,修改的时候忘了,谢谢提醒! 现在不是全0,能走了,不过不是预期的走法,继续调试!加油! |
|
|
|
|
|
|
|
改了,现在的问题是1,初始化不出来,2,秒钟跳数,并且会显示76,84之类的不可能出现的秒数 |
|
|
|
谢谢大家的关心,我已经调试出来了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12039 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 12:05 , Processed in 0.793838 second(s), Total 96, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号