找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6193|回复: 7
收起左侧

DS1307设计数字时钟(proteus仿真+单片机程序)

  [复制链接]
ID:579078 发表于 2020-5-27 13:47 | 显示全部楼层 |阅读模式
     设计一个由6LED数码管作为显示器,以AT89C51单片机作为主控器,以DS1307作为时钟芯片,能进行“时分秒”以及“年月日”变换显示的一个具有较高精度,并且可以自动校准时间的实时数字时钟。

本设计具体实现采用了一块DS1307芯片、六个BCD码数码管、51单片机和其他元件构成。设计的数字时钟可以完成00:00:00到23:59:59显示时、分、秒,并且可以自动切换闪烁显示年、月、日计时功能。通过利用Proteus软件,仿真实现设计的数字时钟显示。

附件含Proteus仿真及程序

整体电路仿真图

整体电路仿真图


单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit sda=P1^1;
  6. sbit scl=P1^0;
  7. void delay();
  8. void delay1();
  9. void start();
  10. void stop();
  11. uchar read(uchar address0,uchar wordaddress,uchar address1);
  12. uchar year=0,month=0,date=0,hour=0,minute=0,second=0;
  13. void main()
  14. {          

  15.         while(1)
  16.         {        second=read(0xd0,0x00,0xd1);
  17.                 minute=read(0xd0,0x01,0xd1);
  18.                 hour=read(0xd0,0x02,0xd1);       
  19.                 date=read(0xd0,0x04,0xd1);          
  20.                 month=read(0xd0,0x05,0xd1);
  21.                 year=read(0xd0,0x06,0xd1);
  22.                         P0=hour;
  23.                         P2=minute;
  24.                         P3=second;
  25.             delay1();
  26.                         P0=year;
  27.                         P2=month;
  28.                         P3=date;       
  29.             delay1();
  30. }
  31. }
  32. void delay1()
  33. {               
  34.         uint i,j;
  35.         for(i=0;i<1000;i++)
  36.         for(j=0;j<125;j++);
  37.         }
  38. void start()
  39. {
  40.         scl=1;
  41.         delay();
  42.         sda=1;
  43.         delay();       
  44.         sda=0;
  45.         delay();
  46. }
  47. void delay()
  48. {        uchar i=125;
  49.         while(i>0)
  50.         i--;       
  51. }

  52. void stop()
  53. {
  54.         scl=1;
  55.         delay();
  56.         sda=0;
  57.         delay();
  58.         sda=1;
  59.         delay();
  60. }
  61. uchar read(uchar address0,uchar wordaddress,uchar address1)
  62. {
  63.         uchar a,a0,i,n,data1;
  64.         start();
  65.         for(n=0;n<3;n++)
  66.         {
  67.                 if(n==0)a0=address0;
  68.         else if(n==1)a0=wordaddress;
  69.         else if(n==2)
  70.                 {
  71.                 start();
  72.                 a0=address1;
  73.                 }
  74.         for(i=0;i<8;i++)
  75.                 {
  76.                 scl=0;
  77.                 delay();
  78.                 a=a0;
  79.                 a=a&0x80;
  80.                 if(a==0x80)
  81.                         sda=1;
  82.                 else
  83.                         sda=0;                
  84.                 delay();
  85.                 scl=1;        
  86.                 delay();
  87.                 scl=0;
  88.                 delay();
  89.                 a0=a0<<1;
  90.                 }
  91.         sda=1;
  92.         delay();
  93.         scl=1;
  94.         delay();
  95.         scl=0;
  96.         }
  97.         for(i=0;i<8;i++)
  98.         {
  99.                 data1=data1<<1;
  100.                 sda=1;
  101.                 delay();
  102.                 scl=0;
  103.                 delay();
  104.                 scl=1;
  105.                 delay();
  106.                 if(sda==1)
  107.                         data1|=0x01;  
  108.         }
  109.         scl=0;            
  110.         delay();
  111.         sda=1;
  112.         delay();
  113.         stop();
  114.         return data1;
  115. }
复制代码
51hei.png
所有资料51hei提供下载:
数字时钟.rar (93.68 KB, 下载次数: 188)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:767225 发表于 2020-6-2 11:27 | 显示全部楼层
程序图没错
回复

使用道具 举报

ID:767371 发表于 2020-6-2 11:51 | 显示全部楼层
如果要具备定时启闹功能,怎么搞一下
回复

使用道具 举报

ID:748788 发表于 2020-7-25 14:48 | 显示全部楼层
不错,可以仿真,有原程序,方便学习,谢谢
ClipBoard.jpg

回复

使用道具 举报

ID:833749 发表于 2020-12-31 15:26 来自手机 | 显示全部楼层
爱科技51 发表于 2020-6-2 11:51
如果要具备定时启闹功能,怎么搞一下

同求,有方法没
回复

使用道具 举报

ID:833749 发表于 2021-1-3 18:28 来自手机 | 显示全部楼层
有加定时启闹功能的吗
回复

使用道具 举报

ID:1057281 发表于 2022-12-13 11:33 | 显示全部楼层
怎么显示年月日
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表