51单片机显示时间日期
#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单片机显示时间日期相关推荐
- 8脚51单片机DIY时间显示+闹钟技术分享(一)
@[8脚51单片机DIY时间显示+闹钟技术分享(一) 最近因为家里闹钟被小朋友摔坏了,所以想着买来买去还是没什么新意,不如自己做一个,这样不是更有意义吗? 那就开始吧,想着自己做就可以用最小资源来实现 ...
- 小米手机不亮屏显示时间日期?方法其实很简单,升级MIUI11有惊喜
如今不少人在查看自己手机上的时间时,都不用拿起后按电源键亮屏看时间,之后再按电源键息屏,而是使用了"息屏显示"功能,让手机在息屏状态下也能看到时间日期. 其实这个功能还是非常方便的 ...
- 苹果手机怎么改时间和日期_手机照片显示时间日期怎么设置
朋友圈里常常有人晒照片,可以发现有些人的照片上有拍摄的时间,而自己的手机拍摄照片却没有这一功能.没有这一功能的朋友们肯定都想要知道这一功能如何设置!那么手机照片显示时间日期怎么设置呢?下面就让我来为你 ...
- Android实时显示时间日期(极简)
Android实时显示时间日期 示例图 示例图解析 TextClock时间控件 常用的xml属性及常用方法 示例源代码 .xml文件 .java 示例图 示例图解析 格式 说明 yyyy/MM/dd ...
- 51单片机DS18B20+DS1302+LCD12864实时显示时间日期温度
文章目录 介绍 Proteus仿真运行效果 源程序 主函数 DS1302时钟函数 DS18B20函数 LCD12864(不带字库) sharing函数 mine头文件 介绍 DS18B20采集温度 D ...
- 基于51单片机实现时间显示及闹钟设置
文章目录 一.介绍 二.原理 三.步骤 四.结果 五.结果分析 六.总结 一.介绍 本次为大学中的一次创新实验,当时老师叫我自己拿个单片机去玩,为了赶时间就做了个简单的时间显示和闹钟设置,因为比较简单 ...
- 修改sqlplus中显示时间日期的格式
在数据库里查询数据的时候,我们经常会遇到一些和日期时间格式的问题,比如显示语言,显示格式等.可能数据在数据库里面存放的格式是:YYYY-MM-DD HH24:MI:SS, 但我们查询出来的却是 22- ...
- 华为手机如何调时间显示_华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单...
不知道各位在想要查看时间的时候,是不是从口袋中拿出手机,然后按下锁屏键亮屏查看时间之后再按锁屏键熄屏的呢?但是还有一种更加简单的方法不需要亮屏就可以查看时间日期. 这个功能就是华为手机的"灭 ...
- 华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单
不知道各位在想要查看时间的时候,是不是从口袋中拿出手机,然后按下锁屏键亮屏查看时间之后再按锁屏键熄屏的呢?但是还有一种更加简单的方法不需要亮屏就可以查看时间日期. 这个功能就是华为手机的"灭 ...
- 51单片机定时器电子时钟 LCD1602显示时间日期带闹钟功能
首先直接附上我的文件(懒得在csdn二次编辑了),里面说明文档,和电路图,protues仿真程序,keil程序.https://pan.baidu.com/s/1TC4AxBZJZ8d1Cv-X_dt ...
最新文章
- CCNP学习笔记(6)
- 重温一遍数据结构之单链表(golang版)
- Linux环境用Sendmail架设Mail服务器
- 在 C++中处理错误
- Android获取MAC地址
- 《属灵操练礼赞》读后感
- gcc及doxygen的安装过程
- 在软件工程中有两件难事
- 直线分割平面问题(数学归纳法)
- php整数和浮点数比较,php 浮点数怎么进行比较?
- 维纳滤波python 函数_图像维纳滤波实现(1)
- Duet Display用一根数据线将iPad变身扩展显示器
- 巧用 paypal 实现转账及网上安全支付
- deepin mysql教程_deepin V20 安装 mysql 5.7 教程
- js鼠标单击和双击事件
- matlab 非线性拟合残差,多元非线性拟合求参数及残差分析
- 【资源下载】《Oracle DBA手记》第1篇:DBA工作手记
- 指纹识别-(1)基本知识
- 需求分析-需求调研步骤和方法
- 监控摄像头上滤光片的作用是什么
热门文章
- manjaro踩坑记
- 全球十大农业大数据经典案例
- html两列合并一列,如何将excel中两列数据合并到一列呢
- caj格式文件怎么打开
- 全志A33N切换分支.repo/repo/repo forall -c git checkout exdroid-7.1.1_r23-a33-v7.0rc2.1
- raid5用户mbr还是gpt_对硬盘进行分区时,GPT和MBR有什么区别?
- 882. Reachable Nodes In Subdivided Graph
- Java代码验证社会统一信用代码规则
- ppa什么网_ppa网站-和ppa网站相关的内容-阿里云开发者社区
- 计算机基础知识表格斜线,word表格斜线,教您word表格添加斜线的方法