#include<reg52.h>
#include<max7219.h>
#include<DS1302.h>sbit p10=P1^0;bit flag=0;      //调整控制标记
bit flagh=1;     //时间日期切换标记
uchar temp[7];   //调整前的时间
uchar curtime1[8],curtime2[8]; //调整后的时间显示模式
uchar tab1[]={30,40,11,31,8,2,14};  //DS1302初始化时间
uchar xingqi;                    //读取的星期
uchar code tab2[]={0xff,0xf9,0xA4,0xb0,0x99,0x92,0x82,0xf8};    //显示星期的共阴极LEDuchar   tab4[11]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x01};     //显示时间与日期LED数码管显示代码void delay2(void)
{int i,j;for(i=0; i<=10; i++);for(j=0; j<=2; j++);
}void  main(void){   uchar i,temp0[8];  P3=0xff;Init_7219();                           //初始化MAX7219set_rtc(tab1);                          //初始化DS1302//  init_DS1302();temp0[2]=10;                //固定位置显示“-”符号temp0[5]=10;while(1){  get_1302();                  //读取时间保存在temp中if(p10==0)                     //判断按键释放按下delay2();if( p10==0 ){flagh=0;      }if((flagh==1))                        //时间与日期显示切换标记{temp0[0]=temp[0]/16;temp0[1]=temp[0]%16;temp0[3]=temp[1]/16;temp0[4]=temp[1]%16;temp0[6]=temp[2]/16;temp0[7]=temp[2]%16;}else{   flagh=1;                     //正常显示时间,按下p10口键,显示日期temp0[0]=temp[3]/16;temp0[1]=temp[3]%16;temp0[3]=temp[4]/16;temp0[4]=temp[4]%16;temp0[6]=temp[6]/16;temp0[7]=temp[6]%16;       }for(i=0;i<8;i++){            Write_7219(i+1,tab4[temp0[i]]); }}}
#include<reg52.h>#include<max7219.h>/*-------------------------------------------------此函数是向MAX7219写数据(操作字或者显示数据)address是内部寄存器的地址;dat是操作字或者显示的数据
-------------------------------------------------*/
void Write_7219(uchar address,uchar dat)
{    uchar i;ACC=address;LOAD=0;                  //拉低片选线,选中器件//发送地址for (i=0;i<8;i++)    //移位循环8次              {   CLK=0;               //清零时钟总线DIN=A7;            //每次取最高位 送max7219  CLK=1;              //时钟上升沿,发送地址   address<<=1;             //左移一位      }//发送数据ACC=dat;for (i=0;i<8;i++)               {   CLK=0;DIN=A7;  CLK=1;                //时钟上升沿,发送数据dat<<=1; }LOAD=1;                    //发送结束,上升沿锁存数据
}
/*-------------------------------------------------这个是MAX7219的初始化程序DECODE_MODE  0x09   //译码控制寄存器INTENSITY    0x0A   //亮度控制寄存器SCAN_LIMIT   0x0B   //扫描界限寄存器SHUT_DOWN    0x0C   //关断模式寄存器DISPLAY_TEST 0x0F   //测试控制寄存器
-------------------------------------------------*/
void Init_7219(void)
{ Write_7219(SHUT_DOWN,0x01);           //开启正常工作模式(0xX1)Write_7219(DISPLAY_TEST,0x00);        //选择工作模式(0xX0)Write_7219(DECODE_MODE,0x00);           //选用不译码模式Write_7219(SCAN_LIMIT,0x07);           //8只LED全用Write_7219(INTENSITY,0x04);            //设置初始亮度
}/*
void mul_write_7219( uchar *point)          //写多个数据
{uchar i;for (i=0;i<8;i++){Write_7219(i+1,*point);point++;        }}
*/
void set_rtc(uchar tab[])
{   uchar ucaddr=0x80;             //向时间寄存器中写初始时间的初始地址uchar a,i;write_1302(0x8e,0x00);         //,初始化里有去除写保护for(i=0;i<7;i++) { a=tab[i]/10;             //将十进制数转换为BCD码tab[i]=tab[i]%10;tab[i]=tab[i]+a*16;write_1302(ucaddr,tab[i]);ucaddr+=2;}
//  write_1302(0x8e,0x80);          //添加写保护
}/*-------------------------------------------------这个函数是将1302的时间寄存器中的数据多字节一起读出,放到curtime数组里{0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};   从时间寄存器中读数据的初始地址将读出的数据放到数组curtime中
-------------------------------------------------*/
void get_1302()                 //将1302的时间寄存器中的数据多字节一起读出,放到curtime数组里
{   uchar ucaddr=0x81;         //从时间寄存器中读数据的初始地址uchar i=0;//for(i=0;i<7;i++)while(i<7){temp[i]=read_1302(ucaddr);ucaddr+=2;i++;}
}
void init_DS1302(void)          //分别初始化,没用循环语句
{
write_1302(0x80,0x30);
write_1302(0x82,0x25);
write_1302(0x84,0x01);
write_1302(0x86,0x25);
write_1302(0x88,0x02);
write_1302(0x8A,0x04);
write_1302(0x8c,0x14);
write_1302(0x8e,0x0);  //去写保护}

51单片机显示时间日期相关推荐

  1. 8脚51单片机DIY时间显示+闹钟技术分享(一)

    @[8脚51单片机DIY时间显示+闹钟技术分享(一) 最近因为家里闹钟被小朋友摔坏了,所以想着买来买去还是没什么新意,不如自己做一个,这样不是更有意义吗? 那就开始吧,想着自己做就可以用最小资源来实现 ...

  2. 小米手机不亮屏显示时间日期?方法其实很简单,升级MIUI11有惊喜

    如今不少人在查看自己手机上的时间时,都不用拿起后按电源键亮屏看时间,之后再按电源键息屏,而是使用了"息屏显示"功能,让手机在息屏状态下也能看到时间日期. 其实这个功能还是非常方便的 ...

  3. 苹果手机怎么改时间和日期_手机照片显示时间日期怎么设置

    朋友圈里常常有人晒照片,可以发现有些人的照片上有拍摄的时间,而自己的手机拍摄照片却没有这一功能.没有这一功能的朋友们肯定都想要知道这一功能如何设置!那么手机照片显示时间日期怎么设置呢?下面就让我来为你 ...

  4. Android实时显示时间日期(极简)

    Android实时显示时间日期 示例图 示例图解析 TextClock时间控件 常用的xml属性及常用方法 示例源代码 .xml文件 .java 示例图 示例图解析 格式 说明 yyyy/MM/dd ...

  5. 51单片机DS18B20+DS1302+LCD12864实时显示时间日期温度

    文章目录 介绍 Proteus仿真运行效果 源程序 主函数 DS1302时钟函数 DS18B20函数 LCD12864(不带字库) sharing函数 mine头文件 介绍 DS18B20采集温度 D ...

  6. 基于51单片机实现时间显示及闹钟设置

    文章目录 一.介绍 二.原理 三.步骤 四.结果 五.结果分析 六.总结 一.介绍 本次为大学中的一次创新实验,当时老师叫我自己拿个单片机去玩,为了赶时间就做了个简单的时间显示和闹钟设置,因为比较简单 ...

  7. 修改sqlplus中显示时间日期的格式

    在数据库里查询数据的时候,我们经常会遇到一些和日期时间格式的问题,比如显示语言,显示格式等.可能数据在数据库里面存放的格式是:YYYY-MM-DD HH24:MI:SS, 但我们查询出来的却是 22- ...

  8. 华为手机如何调时间显示_华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单...

    不知道各位在想要查看时间的时候,是不是从口袋中拿出手机,然后按下锁屏键亮屏查看时间之后再按锁屏键熄屏的呢?但是还有一种更加简单的方法不需要亮屏就可以查看时间日期. 这个功能就是华为手机的"灭 ...

  9. 华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单

    不知道各位在想要查看时间的时候,是不是从口袋中拿出手机,然后按下锁屏键亮屏查看时间之后再按锁屏键熄屏的呢?但是还有一种更加简单的方法不需要亮屏就可以查看时间日期. 这个功能就是华为手机的"灭 ...

  10. 51单片机定时器电子时钟 LCD1602显示时间日期带闹钟功能

    首先直接附上我的文件(懒得在csdn二次编辑了),里面说明文档,和电路图,protues仿真程序,keil程序.https://pan.baidu.com/s/1TC4AxBZJZ8d1Cv-X_dt ...

最新文章

  1. CCNP学习笔记(6)
  2. 重温一遍数据结构之单链表(golang版)
  3. Linux环境用Sendmail架设Mail服务器
  4. 在 C++中处理错误
  5. Android获取MAC地址
  6. 《属灵操练礼赞》读后感
  7. gcc及doxygen的安装过程
  8. 在软件工程中有两件难事
  9. 直线分割平面问题(数学归纳法)
  10. php整数和浮点数比较,php 浮点数怎么进行比较?
  11. 维纳滤波python 函数_图像维纳滤波实现(1)
  12. Duet Display用一根数据线将iPad变身扩展显示器
  13. 巧用 paypal 实现转账及网上安全支付
  14. deepin mysql教程_deepin V20 安装 mysql 5.7 教程
  15. js鼠标单击和双击事件
  16. matlab 非线性拟合残差,多元非线性拟合求参数及残差分析
  17. 【资源下载】《Oracle DBA手记》第1篇:DBA工作手记
  18. 指纹识别-(1)基本知识
  19. 需求分析-需求调研步骤和方法
  20. 监控摄像头上滤光片的作用是什么

热门文章

  1. manjaro踩坑记
  2. 全球十大农业大数据经典案例
  3. html两列合并一列,如何将excel中两列数据合并到一列呢
  4. caj格式文件怎么打开
  5. 全志A33N切换分支.repo/repo/repo forall -c git checkout exdroid-7.1.1_r23-a33-v7.0rc2.1
  6. raid5用户mbr还是gpt_对硬盘进行分区时,GPT和MBR有什么区别?
  7. 882. Reachable Nodes In Subdivided Graph
  8. Java代码验证社会统一信用代码规则
  9. ppa什么网_ppa网站-和ppa网站相关的内容-阿里云开发者社区
  10. 计算机基础知识表格斜线,word表格斜线,教您word表格添加斜线的方法