基于Proteus学习单片机系列(七)——实时时钟DS1302
获取更多资源,请关注微信公众号:嵌入式基地
获取项目资源:公众号后台回复:单片机仿真
基于Proteus学习单片机系列(一)——点亮LED
基于Proteus学习单片机系列(二)——驱动数码管
基于Proteus学习单片机系列(三)——按键
基于Proteus学习单片机系列(四)——中断
基于Proteus学习单片机系列(五)——定时器实现电子表
基于Proteus学习单片机系列(六)——I2C总线AT24C04
基于Proteus学习单片机系列(七)——实时时钟DS1302
基于Proteus学习单片机系列(八)——AD转换及其应用--TLC549
基于Proteus学习单片机系列(九)——DA转换及其应用--TLC5615
基于Proteus学习单片机系列(十)——LCD1602
基于Proteus学习单片机系列(十一)——LCD12864
项目下载
点击下载
1.电路图
2.程序
只在这里贴出主函数,其余的请点击上面(点击下载)进行下载,实在太麻烦。
主函数
#include<reg51.h>
#include<ds1302.c>unsigned char flash;
unsigned char cp1,cp2,cp3; //定义变量
sbit P1_0 = P1^0;
code unsigned char seven_seg[13] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0x7f}; //数字0~9的显示方法
code unsigned char scan[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位选数组
bit conv;void send(unsigned int x,unsigned int y) //x表示位选,y表示段选
{P1_0 = 0;P1_0 = 1;P0 = scan[x];P1_0 = 0; //P1.0端口高电平允许存储,P1.0为低电平保存存储P0 = seven_seg[y];
}
void time0_isr(void) interrupt 1 //利用中断对数码管上显示的数据进行刷新
{TH0 = (65536 - 2000) / 256; //TH0重置函数TL0 = (65536 - 2000) % 256; //TL0重置函数cp1++;if(cp1 >= 250) //0.5秒{cp1 = 0;flash = ~flash; //产生闪烁变量cp2++;if(cp2 >= 5){ cp2 = 0;conv = ~conv; //产生交替显示变量 } }if(conv == 1){P0 = 0xff;switch(cp3){case 0: send(0,sec % 10);break; //显示秒个位case 1: send(1,sec / 10);break; //显示秒十位case 2: if(flash)send(2,11); //不显示else send(2,10);break; //显示 -case 3: send(3,min % 10);break; //显示分个位case 4: send(4,min / 10);break; //显示分十位case 5: if(flash)send(5,11); //不显示else send(5,10);break; //显示 -case 6: send(6,hour % 10);break; //显示小时个位case 7: send(7,hour / 10);break; //显示小时十位 }}else{ P0 = 0xff; //消隐switch(cp3){case 0: send(0,date % 10);break; //显示天个位case 1: send(1,date / 10);break; //显示天十位case 2: send(2,month % 10);break; //显示月个位,case 3: send(3,month / 10);break; //显示月十位case 4: send(4,year % 10);break; //显示年个位case 5: send(5,year / 10);break; //显示年十位case 6: send(6,0);break; //显示0case 7: send(7,2);break; //显示2}} cp3++;if(cp3 >= 8)cp3 = 0;
}
void timer0_init(void) //Timer0初始化
{ //方式一TMOD = 0x01; //TH0 预置,65536十六进制低8位。TH0 = (65536 - 2000) / 256; //TL0 预置,65536十六进制低8位。TL0 = (65536 - 2000) % 256;TR0 = 1; //定时器T0开ET0 = 1; //溢出中断控制位T0开EA = 1; //总开关打开
}
void main(void)
{unsigned char i = 46; //举例,比如要调整时间,分钟设定为46分i = DEC_BCD_conv(i);timer0_init();write_ds1302_add_dat(0x8e,0x00); //写操作,可以对DS1302调整write_ds1302_add_dat(0x80,0x30); //写秒,30秒write_ds1302_add_dat(0x82,i); //写分,46分write_ds1302_add_dat(0x84,0x12); //写时,12时write_ds1302_add_dat(0x86,0x28); //写日,28日write_ds1302_add_dat(0x88,0x05); //写月,5月 write_ds1302_add_dat(0x8a,0x03); //写星期,星期三write_ds1302_add_dat(0x8c,0x12); //写年,(20)12年write_ds1302_add_dat(0x8e,0x80); //写保护while(1){get_ds1302_time();}
}
基于Proteus学习单片机系列(七)——实时时钟DS1302相关推荐
- 基于Proteus学习单片机系列(二)——驱动数码管
获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 基于Proteus学习单片机系列(一)--点亮LED 基于Proteus学习单片机系列(二)--驱动数码管 基于P ...
- 基于Proteus学习单片机系列(六)——I2C总线AT24C04
获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 基于Proteus学习单片机系列(一)--点亮LED 基于Proteus学习单片机系列(二)--驱动数码管 基于P ...
- 基于Proteus学习单片机系列(七)——AD转换及其应用--ADC0832
获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 项目下载 点击下载 1.电路图 2.程序 只在这里贴出主函数,其余的请点击上面(点击下载)进行下载,实在太麻烦. ...
- 【STC单片机学习】第十四课:SPI通信-实时时钟DS1302
[朱老师课程总结 侵删] 第一部分.章节目录 1.14.1.RTC有关的背景知识 1.14.2.原理图和接线 1.14.3.数据手册带读 1.14.4.时序图的读法1 1.14.5.编程实践1 1. ...
- 你今天怎么这么好看——基于深度学习的大型现场实时美颜
Photo from BoredPanda 美颜是当下直播甚至是所有形式对外展示的一个必备条件.手机端的美颜就像私人化妆师,能够帮助我们实现各种心仪的效果. 而大型娱乐节目一般都是提前进行录制,然后进 ...
- 实时时钟DS1302实验
实时时钟DS1302实验 实验现象 通过DS1302的读取获取年,月,日,星期,时,分,秒的值,然后串口显示在PC上 通过4个按键设定当前的时间 按键1(设置):按一下进入设置状态,在按下退出设置状态 ...
- Arduino 实时时钟DS1302模块
Arduino 实时时钟DS1302模块 DS1302模块 开发板选择Arduino uno板子 所使用的库:国内镜像地址:https://codechina.csdn.net/mirrors/msp ...
- STM32基于固件库学习笔记(11)RTC实时时钟
实时时钟(RTC) 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx.STM32F102xx和STM32F103xx微控制器. 中容量产品是指闪存存储器容量在64K至128 ...
- arduino uno r3单片机封装图_Arduino提高篇22—实时时钟DS1302
关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 很多电子爱好者都热衷制作电子时钟来练手,这些时钟会使用数码管.点阵屏.LCD液晶屏.OLED屏.TFT屏等显示模块,所使 ...
最新文章
- 混合app用百分比还是rem_一次搞懂前端所有CSS长度单位,px、em、rem、rpx、%....
- easy ui datagrid 中getSelections方法只能获取一行数据
- 韩流音乐爱好者的福音!SM娱乐牵手腾讯音乐
- 将JavaScript和VBScript添加到您的.NET Apps
- mysql 命令 字符集_MySQL的字符集操作命令总结
- 解析:如何在 ASP.NET 中下载文件
- Linux(centos)中rpm命令的运用
- 阿里笔试题:求两个子序列的最大连续子序列
- 大学心理学课本_大学心理学专业用的是什么教材 名字叫什么
- 基统计的方法对进行多因子的探索性数据分析
- 2022IEOC全国赛专业组获奖及晋级成绩公布 全球赛期待继续辉煌
- leetcode 39. Combination Sume (medium)
- android 魅族定位权限,魅族Flyme5.2的权限问题
- linux 内功修炼之一 cpu
- Excel 相同名称或ID的 内容 合并起来 同列不同内容剃加
- Centos7.2/3/4/5镜像(1511,1611,1708,1804),附Centos官网镜像,旧版全镜像链接及仓库下载地址
- 真正补肾黑芝麻秘传做法
- 数学四大思想八大方法_中考数学专题五,四种数学思想方法,第3个比较难掌握...
- PB EXCEL导入
- android自动化测试案例全过程详解,Robot Framework+adb实现Android设备自动化测试案例①——项目介绍...
热门文章
- 帝国Cms7.5后台getshell | (CVE-2018-18086)漏洞复现
- #GNS3,wireshark,CRT的安装
- LSF - 提交GUI应用到LSF无法运行,报错Failed to connect to socket /tmp/dbus-xxxxxxxxx: Connection refused
- 【医疗人工智能论文】使用深度强化学习的腹腔镜机器人辅助训练
- minecraft编程java_第一章 minecraft编程mod
- 旅游地图制作_手把手教你用旅游神器App:谷歌地图
- 可以播放音乐的微信小程序源码(仿Apple音乐)
- 大学生选课抢课如何提高选中概率
- 我对于外包开发的看法
- 聊聊ClickHouse中的低基数LowCardinality类型