找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1574|回复: 0
收起左侧

基于DS1302的时钟显示仿真图加代码

[复制链接]
ID:211054 发表于 2017-6-14 10:02 | 显示全部楼层 |阅读模式
基于DS1302的时钟显示,需要学习的同学,可以参考啊
0.png 0.png

单片机源程序如下:
  1. #include<reg51.h>
  2. sbit io=P1^0;
  3. sbit sclk=P1^1;
  4. sbit ce=P1^2;
  5. sbit acc7=ACC^7;
  6. unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  7. unsigned char wei[]={0xfe,0xfd,0xfb,0xf7};
  8. unsigned char d[4];
  9. void writebyte(unsigned char dat)
  10. {
  11.         unsigned char i,temp;
  12.         for(i=8;i>0;i--)
  13.         {
  14.                 sclk=0;
  15.                 temp=dat;
  16.                 io=(bit)(temp & 0x01);
  17.                 dat=dat>>1;
  18.                 sclk=1;
  19.         }
  20. }

  21. unsigned char read1302(unsigned char addr)
  22. {
  23.         unsigned char i,dat=0;
  24.         ce=0;
  25.         sclk=0;
  26.         ce=1;
  27.         writebyte(addr);
  28.         for(i=8;i>0;i--)
  29.         {
  30.                  acc7=io;
  31.                 sclk=1;               
  32.                 ACC>>=1;
  33.                 sclk=0;
  34.         }
  35.         ce=0;
  36.         dat=ACC;
  37.         dat=(dat/16)*10+dat%16;
  38.         return(dat);
  39.        
  40. }
  41. void delay(unsigned char time)
  42. {
  43.         unsigned char i;
  44.         for(i=0;i<time;i++);
  45. }
  46. void display()
  47. {
  48.         unsigned char j;
  49.         for(j=0;j<4;j++)
  50.         {
  51.         P0=led[d[j]];
  52.         if(j==1) P0=led[d[1]]|0x80;
  53.         P2=wei[j];
  54.         delay(10);
  55.         P0=0;
  56.         }
  57. }
  58. void main()
  59. {
  60.         unsigned char minute,hour;

  61.         while(1){
  62.         minute=read1302(0x83);
  63. ……………………

  64. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
1302.rar (57.3 KB, 下载次数: 10)


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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