01 2014 档案

摘要:忙了一天多终于透彻了,自己写的不好使,用别人的逐步分析改成自己的,我写得非常简洁易懂。我总结3点需要注意的地方1.关闭非IIC通信器件,比如我的开发板SDA和SCL也连接了DS1302,造成干扰会没有结果。2.IIC通信的应答,发送端在SCL为0时将SDA置1,等待接收端拉低SDA;接收端在拉低SDA持续一个周期后,应将SDA置1释放总线。主机作为发送端等待应答SDA=1;SCL=1;while(SDA);SCL=0;主机作为接收端,进行应答或不应答SDA=0; //不应答则为1 SCL=1;SCL=0;SDA=1;3.24C02在写入周期完成后还有有内部写入时间Twr,所以可以查... 阅读全文
posted @ 2014-01-22 22:11 ZackCoder 阅读(1096) 评论(0) 推荐(0)
摘要:参考DS1302数据手册,尽管数据手册是英文,但是很有帮助,再结合网上众多的代码写出了下面这个例子,除了涓流充电(trickle charger)功能没使用外,内部的RAM和寄存器功能都使用到了,包括多字节方式(burst mode)。自认为我写的比网上大多数程序清晰,当然已经硬件测试过了。 1 #include 2 3 /*DS1302部分*/ 4 5 //全部为写入地址,读取地址需要+1 6 #define YEAR 0x8c 7 #define MON 0x88 8 #define DATE 0x86 9 #define DAY 0x8a 10 #define H... 阅读全文
posted @ 2014-01-20 23:44 ZackCoder 阅读(734) 评论(0) 推荐(0)
摘要:郭天祥键盘部分的代码真是冗长,难道是为了易懂,但也不是越长越好懂啊,看看我写的。扫描法#include #include sbit we=P2^7;sbit du=P2^6;unsigned char code table[] = {0x3f , 0x06 , 0x5b , 0x4f,0x66 , ... 阅读全文
posted @ 2014-01-16 13:35 ZackCoder 阅读(375) 评论(0) 推荐(0)
摘要:看郭天祥的单片机书中数码管部分,使用 P0=0xff 的方法可以消除段选数据对位选的干扰,另外使用我下面的方法可以达到同样的效果。但即便这样数码管仍有影子,这种状况是,当前数码管有下一个数码管的影子,或者当前数码管有前一个数码管的影子。分析一下产生原因,当我们点亮一个数码管后,总要先将段选或者位选改为下一个数码管的值,而不能同时改变。当先改变段选时,那么当前数码管就会有短暂的时间显示下一个数码管的数字。当先改变位选时,下一个数码管就会有短暂的时间显示当前数码管的数字。那么解决方法是,先将段选置0送入锁存器,改变位选的值为下一个数码管,最后再改变段选值。同理另一种方法是,先将位选赋值 0xff 阅读全文
posted @ 2014-01-15 17:35 ZackCoder 阅读(3070) 评论(0) 推荐(0)
摘要:原理及介绍来自维基百科http://zh.wikipedia.org/wiki/%E9%82%8F%E8%BC%AF%E5%8D%80%E5%A1%8A%E4%BD%8D%E5%9D%80个人用的小程序/*#lba=(#c*H+#h)*S+#s-1#c=#lba/(S*H)#h=(#lba/S)%H#s=(#lba%S)+1#c、#h、#s分别是磁柱、磁头、扇区的编号(起始值0、0、1)#lba是逻辑区块编号(起始值0)H=heads per cylinder,每个磁柱的磁头数S=sectors per track,每磁道的扇区数*/#include int main(void){ in... 阅读全文
posted @ 2014-01-05 16:30 ZackCoder 阅读(1069) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示