求解答新手在51上用ds1302遇到两个问题
时间:10-02
整理:3721RD
点击:
新手在51上自己做ds1302并看了看例程有两个问题求解答
首先在吧数据读到lds上时所有数据中只有星期的数值与上0x07,其他的有些他们的高位和星期差不多,为啥只有星期与上0x07而且经过实践发现不与上,星期就是乱码
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //时
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //星期
还有一个问题就是ds1302的spi传输例程里他先把时钟信号(sclk)置0再置0使能端(rst)然而为什么不能反过来写呢就控制结果而言是一样的在传输前各信号就位了我也试了试反过来发现就没法传输了
SCLK = 0;
_nop_();
RST = 1;
_nop_();
首先在吧数据读到lds上时所有数据中只有星期的数值与上0x07,其他的有些他们的高位和星期差不多,为啥只有星期与上0x07而且经过实践发现不与上,星期就是乱码
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //时
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //星期
还有一个问题就是ds1302的spi传输例程里他先把时钟信号(sclk)置0再置0使能端(rst)然而为什么不能反过来写呢就控制结果而言是一样的在传输前各信号就位了我也试了试反过来发现就没法传输了
SCLK = 0;
_nop_();
RST = 1;
_nop_();
SPI有几种模式,DS1302可能只支持一种。
星期是按一个公式计算出来的。这个可以看手册
