永发信息网

DS1302向单片机提供完整的一个时间信息要几个字节?

答案:4  悬赏:40  手机版
解决时间 2021-12-25 10:09
DS1302的原理已经知道,但请问如果要向单片机类似AT89C52提供完整的一次时间信息(即从年到秒都要)需要几个字节?

望高手回答。
最佳答案
你看看DataSheet。它的寄存器从 一个字节存一个内容。
那么 年 月 日 时分秒 需要6个字节的时间信息
全部回答
一楼说的是对的,应该是六个字节,传输一次,需要传输一个字节,这一个字节包含一个时间信息,可以是年,也可是秒,年的话不是4位,是两位,最大99,所以全部信息应该是6个字节的,一楼是对的。
#include #define uchar unsigned char #define uint unsigned int #define keyboard p2 #define locationcs p1 #define dispseg p0 unsigned char code segcode[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40}; // 共阴段码 unsigned char code location[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; // 共阴位选码 uchar index = 0; // 显示缓冲区指针 uchar hour = 0; // 小时变量 uchar min = 0; // 分钟变量 uchar sec = 0; // 秒钟变量 uint timer = 0; // 中断次数计数变量 uchar dispbuf[] = {0, 0, 0x40, 0, 0, 0x40, 0, 0}; // 8个数码管对应的显示缓冲区,显示格式:时-分-秒 uchar keycode; // 按键码高位 uint delaykey; // 按键延时变量 void init(); void dispbufupdate(); void disposekeys(); void main(void) { init(); // 初始化 while(1) { if(keycode != 0) // 如果有按键码就处理按键 { disposekeys(); keycode = 0; // 处理完按键码清零 } } } void dispbufupdate() { dispbuf[0] = segcode[sec % 10]; // 秒个位 dispbuf[1] = segcode[sec / 10]; // 秒十位 dispbuf[3] = segcode[min % 10]; dispbuf[4] = segcode[min / 10]; dispbuf[6] = segcode[hour % 10]; dispbuf[7] = segcode[hour / 10]; } void disposekeys() { switch(keycode) { case 0x77: hour++; if(hour == 24)hour = 0; break; case 0x7b: if(hour == 0) hour = 24; hour--; break; case 0xb7: min++; if(min == 60) min = 0; break; case 0xbb: if(min == 0) min = 60; min--; break; default: break; } delaykey = 300; // 延时变量赋值,300次定时中断后(300/1200 = 0.25秒)如果不松键则会连续产生键值,时间变量会连续加或连续减,直到松键 } void init() { tmod = 0x01; // 定义定时器0为16位定时器 th0 = -3; // 11059200 = 12*256*3*1200,晶振12分频后是:921600机器周期/秒, // 设置定时器每3*256个机器周期中断1次,中断1200次就是一秒钟。 // tl0因初值为0,加到256=0,相当于自动重装了,所以不用定义了,既节约了时间又走时准确。 et0 = 1; // 允许t0中断 ea = 1; // 开总中断 tr0 = 1; // 启动t0 dispbufupdate(); // 显示初始值 } void intt0() interrupt 1 { th0 = -3; // 重装定时器初值 locationcs = 0xff; // 清位选消隐 dispseg = dispbuf[index]; // 输出显示内容 locationcs = location[index++]; // 选择显示位置 index &= 7; // 等效于if(index == 8)index = 0; 循环指向8个显示位置 if(delaykey == 0) // 上次中断没检测到按键则需扫描按键 { keyboard = 0x0f; if(keyboard != 0x0f) // 若有按键发生,则 keyboard 低4位不全为1 { delaykey = 6; // 设置按键消颤延时时间,6/1200 = 5毫秒 } } else { delaykey--; // 延时时间未到,延时变量减一 if(delaykey == 0) // 按键延时时间到,可以取键值了 { keyboard = 0x0f; if(keyboard != 0x0f) // 若延时后仍检测到按键,则为有效按键 { keycode = keyboard; // 取按键“行”地址 keyboard = 0xf0; // 取按键“列”地址 keycode |= keyboard;// 按键“行”“列”地址相或 = 有效键值 } } } timer++; // 中断次数计数 if(timer == 1200) // 1200次为1秒 { timer = 0; sec++; if(sec == 60) // 时间进位处理 { min++; sec = 0; if(min == 60) { hour++; min = 0; if(hour == 24) { hour = 0; } } } dispbufupdate(); } }
年月日时分秒每个2字节 星期1字节 总共13字节
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
室外网络线断了怎么接?
把他们收起来放好了英语怎么说
做蛋糕没有玉米油怎么办
伟大诗人雪莱说“伟大的诗篇即永远喷出智慧和
想知道: 揭阳市 从潮汕机场到马牙汽车站怎么
快递送到农村吗
墓碑刻名字是否得有后人的名字
剪报贴在什么东西上
上古卷轴5里最好的武器装备是什么系列的?比
张华把400元钱存入银行,存整取5年,年利率是
为什么网吧耳机声音比家里耳机声音大?
电灯发明者
云台设置怎么设置
不盛感激是什么意思
为改善学生的营养状况,中央财政从2011年秋季
推荐资讯
一个正方体的棱长是a,所以这个正方体的体积
园林设计主要用什么制图软件?
金明区开封河大民生学院1号餐厅6号我想知道这
谁知道以前有部电视剧,女主角是个宫女,男主
三国里面张飞的老婆叫什么名字?
微博卡包券怎么使用
2006年5月31 日,在每吨汽油价格不变的情况下
硅晶圆是什么及如何制造
快速发展的互联网丰富了人们的文化生活,成为
我家狗狗在啃骨头的时候嘴巴被刮破了,血一直
一辆行驶中的汽车在某一分钟内速度的变化情况
建安区许昌市农村商业银行(柏庄分理处)地址有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?