您好~大家,感谢您抽出时间首先阅读我的帖子。
我突然出现了一个旋转的数字时钟。我迫不及待地想和大家分享我的快乐和经验。希望它能给你们带来一些帮助。
起初,我找到一个纸板作为刻度盘,用通孔画发光二极管的位置,然后把发光二极管放到纸板上,连接电源线。 整个刻度盘都已完成!还有,为了识别夜晚的时间状态,我每五个LED就会添加一个红色LED。 为了改善外观,我发现了一盒漂亮的巧克力作为外皮。 该线路建立在通用板上,由柔性导线连接。 它之所以被命名为“旋转数字时钟” ,是因为它连接了一个环形上的LED,LED每秒钟就会移除一个座椅。 此外,时钟的数字显示按数字进行充电,以便可以节省LED的数量和线路的复杂性。
设计包括硬件的建筑和软件的编程设计。请查看以下图片:
我用DS1302作为系统的计时核心,我自己认为这款芯片--DS1302质量很好,非常适合这里。这是DS1302的数据表: http://www.kynix.com/uploadfiles/pdf8827/DS1302S.pdf。1302。
下一步。我处理DS1302的写入和读取程序。这是编程代码:
- // DS1302写入函数,向DS1302的指定地址写入一个字节的数据。
- void write_ds1302(uchar cmd,uchar indata)
- {
- SCLK=0;
- 重置=1;
- write_byte(cmd);
- write_byte(indata);
- SCLK=0;
- 重置=0;
- }
- // DS1302读取函数,从DS1302的指定地址读取一个字节的数据。
- uchar read_ds1302 (uchar地址)
- {
- Uchar backdata;
- SCLK=0;
- 重置=1;
- write_byte(addr); //先写地址
- backdata=read_byte(); //然后读数据
- SCLK=0;
- 重置=0;
- 返回(回溯数据);
- }
- //读取时间函数,负责读取当前时间,并将读取的时间转换为10进制数
- void Get_Time()
- {
- uchar sec, min, hour; //定义秒、分和小时变量
- write_ds1302 (0x8e,0x00); //控制命令,wP=0,允许写操作
- write_ds1302 (0x90,0xa0); //涓流充电控制
- sec=read_ds1302(0x81); //读取秒
- min=read_ds1302 (0x83); //读取分
- hour=read_ds1302(0x85); //读取时
- Time_buf[0]=sec/16*10+sec%16; //将读取到的16进制数转化为10进制
- Time_buf[1]=min/16*10+min%16; //将读取到的16进制数转化为10进制
- Time_buf[2]=hour/16*10+hour%16;//将读取到的16进制数转化为10进制
- }
最后,四路数字射线管被用作晶体管驱动的显示元件--9012。
我很高兴它在决赛中发挥了良好的效果!
答:我的时钟不仅有LED指示的双闹钟功能,还有时间校正功能。 此外,电流由调节电源供电,这有利于环保。




