51单片机DS1302数字时钟

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned intsbit RST = P1^0;
sbit IO = P1^1;
sbit SCLK = P1^2;sbit HC595_SER = P2^7;      //b     8    d    c    e    e    f    8    f    e
sbit HC595_RCLK = P2^5;     //11    8    13   12   14   14   16   8    16   14
sbit HC595_SRCLK = P2^6;    //1011  1000 1101 1100 1110 1110 1111 1000 1111 1110
//unsigned char code led_dian[]={0xbF,0x86,0xdB,0xcF,0xe6,0xeD,0xfD,0x87,0xfF,0xeF};
unsigned char code led_duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char hour,hour1,hour2;
unsigned char min,min1,min2;
unsigned char sec,sec1,sec2;void Delay_Ms(uchar q)
{uchar p;while(q--){for(p=0;p<113;p++);}
}
//数据发送子程序void send_595(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){if(dat&0x80)HC595_SER = 1;elseHC595_SER = 0;HC595_SRCLK = 0;HC595_SRCLK = 1;dat = dat<<1;}
}
//
void write_byte(uchar date)
{uchar i;SCLK = 0;for(i=0;i<8;i++){SCLK = 0;IO = date & 0x01;SCLK = 1;date >>= 1;}
}
//
void write_ds1302(uchar addr,uchar date)
{uchar num;RST = 0;SCLK = 0;RST = 1;write_byte(addr);num = (date/10<<4)|(date%10);write_byte(num);RST = 0;SCLK = 1;
}
//
uchar read_byte()
{uchar i;uchar dat = 0x00;for(i=0;i<8;i++){SCLK = 0;dat >>= 1;if(IO){dat |= 0X80;}SCLK = 1;SCLK = 0;}return dat;
}
//
uchar read_ds1302(uchar addr)
{uchar dat;uchar dat1;uchar dat2;RST = 0;SCLK = 0;RST = 1;write_byte(addr);dat = read_byte();RST = 0;SCLK = 1;dat1 = dat/16;dat2 = dat%16;dat = dat1*10+dat2;  //转换为10进制return dat;
}
//
void init_ds1302()   //偶数
{write_ds1302(0x8e,0x00);//未写入年月日和星期write_ds1302(0x84,23);  //时write_ds1302(0x82,59);  //分write_ds1302(0x80,50);  //秒write_ds1302(0x8e,0x80);
}
//
void get_time()       //奇数
{write_ds1302(0x8e,0x00); //未读取年月日和星期hour = read_ds1302(0x85); //时min = read_ds1302(0x83);  //分sec = read_ds1302(0x81);  //秒write_ds1302(0x8e,0x80);
}void main()
{init_ds1302();Delay_Ms(5);while(1){get_time();hour1 = hour/10;hour2 = hour%10;min1 = min/10;min2 = min%10;sec1 = sec/10;sec2 = sec%10;send_595(0xfe);send_595(led_duan[hour1]);HC595_RCLK = 0;     //0->1 上升沿发送。HC595_RCLK = 1;     send_595(0xfd);send_595(led_duan[hour2]);HC595_RCLK = 0;HC595_RCLK = 1;send_595(0xfb);send_595(0x40);HC595_RCLK = 0;HC595_RCLK = 1;send_595(0xf7);send_595(led_duan[min1]);HC595_RCLK = 0;HC595_RCLK = 1;send_595(0xef);send_595(led_duan[min2]);HC595_RCLK = 0;HC595_RCLK = 1;send_595(0xdf);send_595(0x40);HC595_RCLK = 0;HC595_RCLK = 1;send_595(0xbf);send_595(led_duan[sec1]);HC595_RCLK = 0;HC595_RCLK = 1;send_595(0x7f);send_595(led_duan[sec2]);HC595_RCLK = 0;HC595_RCLK = 1;}
}

个人见解,感谢阅读。

51单片机DS1302数字时钟相关推荐

  1. 基于51单片机的数字时钟(万年历)

    具体实现功能 系统由STC89C52单片机+DS1302时钟芯片+按键模块+LCD1602显示+电源构成. 具体功能: 1.可以显示年.月.日.时.分.秒.星期.农历: 2.按键可以设置闹钟及报警: ...

  2. 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计

    1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...

  3. 51单片机入门——数字时钟

    文章目录 1. 前言 1.1. 设计要求 2. 硬件原理 2.1. 时钟信号(晶振) 2.2. 按键开关 2.3. 数码管显示 3. 原理图 3.1. 仿真原理图 3.2. AD原理图 3.3. PC ...

  4. 51单片机的数字时钟系统【含仿真+程序+报告+原理图】

    1.主要功能 该系统由AT89C51单片机+DS1302时钟模块+按键模块+LCD显示模块构成. 利用51单片机实现电子时钟的功能.使用DS1302芯片作为计时设备,用LCD1602作为显示设备,按键 ...

  5. 4.7 51单片机-DS1302 实时时钟芯片

    4.7 DS1302 实时时钟芯片 4.7.1 原理图介绍 图4-7-1 图4-7-2 驱动DS1302之前,实验板上需要将JP595跳线帽和J11跳线帽断开.JP1302跳线帽接上. 4.7.2 D ...

  6. 51单片机DS1302实时时钟

    一.DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片.它可以对年.月.日.周.时.分.秒进行计时,且具有闰年补偿等多种功能.        RTC( ...

  7. 设计分享|基于51单片机的数字时钟(汇编)

    具体实现功能 具体功能: 上电后滚动显示年.月.日.时.分,最后进入秒计时,通过四个按键可对时间进行设置操作. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS8位微控制器,具有 8K 在系 ...

  8. 告别电子小白,8个优选DS1302数字时钟方案大合辑

    数字时钟是一个在主屏幕显示数字时间和日期的 android 桌面插件.是一款朴实简约的时钟 widget,能展示时间,触摸激活闹钟和日历,并且字体颜色都可以进行设置,界面看起来十分的简洁大方,有iPh ...

  9. 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器

    目录 项目:基于51单片机ds1302时钟.ds18b20的恒温器 功能说明: 运行流程: 效果展示: 供电方式: 用途: 提高: 附: ​                              ...

最新文章

  1. cactiez----监控windows主机 server 2008 r2
  2. SQL SERVER占用服务器内存过高的解决方案
  3. hdu4810 Cn中取i异或和
  4. Visual Studio Code 前端调试不完全指南
  5. 高可用性的HDFS—Hadoop分布式文件系统深度实践
  6. Mosquitto安装及使用简介
  7. 又一款5G手机获进网许可 开售在即 你会尝鲜吗?
  8. 清除Linux和window等系统的DNS缓存的命令
  9. 用python画漂亮图-零基础用 Python 画图表,让你的论文更美观
  10. 域名访问html乱码,显示地址和域名解析时出现乱码
  11. NYOJ759 你知道这个规律吗
  12. Python笔试面试题
  13. Linux绚丽屏保xscreensaver安装
  14. 常见出血性疾病的实验诊断题库【1】
  15. 微信java tools_微信开发工具包(weixin-java-tools)
  16. Java实验:教练和运动员案例
  17. 【经验】如何学习插画的构图?插画构图的基本原则!
  18. 一寸照片多大?你知道一寸照片的尺寸吗?
  19. 李国庆:建议被降级降薪员工主动辞职,网友炸了
  20. 数字政务是推动公共服务和社会治理精细化、智能化的重要载体

热门文章

  1. 住宅负资产和未来房价走势以及人民币走势
  2. cmd中粘贴的快捷键
  3. 【ANSYS命令流】加载与求解技术(六):载荷步的设置选项命令
  4. 题目75:若两个素数之差为2,则该对素数称为双胞胎数,如3,5就是一对双胞胎数。编写程序,实现如下功能:输入n的值,统计显示n以内的所有双胞胎数。
  5. c++心形编码_c语言心形告白代码实现
  6. Linux九阴真经之九阴白骨爪残卷13(LVM的备份还原,恢复最新状态)
  7. scrollTo和scrollTo.js
  8. c语言中百分号ld是什么意思,URL 中的百分号的麻烦
  9. ENSP-企业网/校园网ipv6设计-(千万不要选的课题)
  10. Solidworks二次开发-3D坐标转2D坐标