共阳极数码时钟c语言程序,51单片机_DS1302时钟芯片_共阴数码管_时钟实例【中为电子科技工作室】_51单片机ds1302数码管时钟...
该文档包括原理图、源代码,系统的介绍了51单片机和DS1302的应用,显示方式为4位共阴时钟数码管,具有调时功能,原理图和源代码都已验证是可用的。
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
sbit ntds p3 3
sbit ntoe= p3 5
sbit ntst p3 6
sbit ntsh= p3 7
74C595功能引做定义
uchar code ckntSegDot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};/段砖,共例,带DP
uchar code ckntSeg]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/段码,共阴,19
uchar code ckntDig[]=Oxf7, Oxfb, Oxfd, Oxfe, Oxff)
位妈,共阴
uchar second, minute, hour, week, day, month, year
char secondL, second. minute, minute. hour, hour
uint blinkMin, blinkhour
bit isset, issetMin, issethour
==延的函数
void Delay (uint ent)
while(cnt--)
=S1302写字节数==
void Ds1302WriteByte(uchar abc
uchar
recce 1
rtccK =0
nop (
for(i=0;i<8;i++)
Page: 2
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
rtio= abc oxol
/按位与,取最低位
nop
rtcCK I
)
nop (
rtcCK= 0
abc>>=1;
谁备传输次高位
DS1302读字节函数
uchar Ds1302ReadByte o
uchar i read dat
recce= 1
for(i=0;i<8;i+)
rcad dat >>=1
if(rtiO==1
rcad dat=0x80
rtcCK 1
(
nop (
rtcCK =0
nop
)
return read dat
Page: 3
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
===DS1302读数据数
uchar Ds1302Read (uchar read addr)
uchar read dat
rtcc =0
rtcCK =0:
Ds1302WriteByte(read addr)
read dat= Dsl302ReadByteo
rtccK= 1
recce= 0
return read dat
=DS1302写的数===
void Ds1302Writc(uchar write addr, uchar write dat
rtcc= o
rtcCK =0
Ds1302WritcBytc(write addr)
先写地址
Ds1302WriteByte(write dat)
再写数据
rtccK =0
recce =0
=数据转化的数==
void DataTrans o
数据转化,提取BCD码
Page: 41
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
/便于在数码管显示
secondl second oof
second >>=4
second= second oof
minute minute oof
minute >>=4
minute minute oof
hour hour OoF
hour >>=4
hour hour oof
共阴数码管显小函数
void CkntDisplay(uchar segTmp, uchar digTmp)
uchar i, tmp =0x80
for(i=0;i<8;i++)
位码,实际用了4位
ntsh =o
ntds =(digtmp tmp)? 1: 0
提取高位数据
ntsH= l
上开沿有效
di gmp =1
位码数据右移1位,将次高位变为最高位
for(i=0;i<8;i+)
段码,高位在成
Page: 5
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
ntsH =o
ntDs=(segTmp tmp )? 1: 0
/提取高位数据
ntsh=l
上开沿有效
segtmp =1
段妈数据右移1位,将次高位变为最高位
ntsT =0
nop o)
ntst =1
将移位奇存器数据存入存信寄存器中
nop (
上开沿有效
ntSH=0
ntst=0
调餐74bc595的序,以待后用
ntoe =0
使能746c595输出
是示方式数
void Display o
if (isSet == 1)
调整时间时的显示方式
if(is SetMin== 1)
/调整分钟
blinkIng+
调整时间时,次定了分钟的闪烁频率
if(blinkMin <250
/在调整的时间模式下,分的显示
Page: 6
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
CkntDisplay(ckntSeg [minuteL], ckntDig[o])
CkntDisplay(ckntSeg lminutehl, ckntDig[l])
else if((blinkMin >=250)&&(blinkMin< 500))
在调整时间模式下,分钟不显示
CkntDisplay(ckntSeg [minuteL], ckntDig [4])
CkntDisplay(ckntSeg [minute], ckntDig[4])
e⊥se
blinkMin=0
CkntDisplay(ckntSeg lhourl, ckntDig[2])
CkntDisplay(ckntSeg hour], ckntDig[3])
if(isSetHour ==1)
调整小的
blinkHour++
调整的间的,决定了小的的闪烁级率
if(blinkHour 250)
在调整的间模式下,小时显示
CkntDisplay(ckntScg lhourl], ckntDig[2])
CkntDisplay(ckntSeg lhourHl, ckntDigl3)
else if((b1 inhour>=250)&&( blinkhour<500)在调整的问模式下,小的不显示
CkntDisplay(ckntSeg [hourL], ckntDig[4])
CkntDisplay(ckntSeg thourH], ckntDig[4l)
e⊥se
Page: 7
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
blinkhour =0
CkntDisplay(ckntSeg [minute], ckntDig[o)
CkntDisplay (ckntSeg [], ckntDig[l])
else
正常是示模式
/CkntDisplay(ckntSegisecondL ckntDiglo)
//CkntDisplay(ckntseglsecondH/, ckntDigl1/)
CkntDisplay(ckntSeg [minuteL], ckntDig[o])
Delay(100)
延时是调整数码管的显示亮度
CkntDisplay(ckntSeglminuteHl, ckntDigli])
Delay (10o
if((secondL %2)== 0)
判断是否显示欢点
CkntDisplay(cknt Scglot [hour], ckntDig[2])
else
CkntDisplay(cknt Scg hour], ckntDig[2])
Delay (100)
CkntDisplay(ckntscgthourH], ckntDig[3])
盘扫数==
void KeyScan o
Page: 8
E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.c
间加键
if ((upKey== 0)&&(isSet== 1)
Delay(200)
/去抖
if (upkey ==0
if (isSetMin ==1
minute++
if(minute = 10)
minute =0
minutest
if(minute== 10)&&(minute =5))
minute=o
minute =0
else if(isSctHour==1
hourly+
if((hour( 2)&&(hour == 10))
hour =0
h
our++
if((hour ==2)&&(hourL ==5))
Page: 9
共阳极数码时钟c语言程序,51单片机_DS1302时钟芯片_共阴数码管_时钟实例【中为电子科技工作室】_51单片机ds1302数码管时钟...相关推荐
- 单片机交通灯数码管c语言程序,51单片机C语言实现交通灯(红绿灯)源程序.doc
51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /*1.程序目的:使用定 ...
- 6位数码管电子时钟c语言程序,51单片机的六位数码管时钟表仿真及C程序
本帖最后由 liuda 于 2015-1-21 22:38 编辑 Proteus仿真截图 /****************************************************** ...
- 电子时钟单片机c语言程序,51单片机电子时钟C语言程序
本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...
- 数码管c语言程序如何控制,跪求,8255控制数码管,单片机c语言程序;
跪求,8255控制数码管,单片机c语言程序: 答案:3 信息版本:手机版 解决时间 2021-04-29 04:56 已解决 2021-04-28 12:39 8255 PA口--数码管的段选,82 ...
- 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...
51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...
- 数码管显示原理:共阴极和共阳极的区别,静态显示程序。
数码管显示原理:共阴与共阳 LED发光原理是PN结光电二极管将电能转化为光能的结果.当半导体芯片两端加正反向电压时,当电子从n区域注入p区域时,它们与p区的空穴结合并释放能量,这些能量以光子的形式发射 ...
- 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序).doc...
51单片机秒表计时器课程设计报告(含C语言程序) XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计 ...
- 单片机交通灯灯c语言程序,51单片机用C语言实现交通灯(红绿灯)源程序
51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用 ...
- 五十九秒的秒表C语言程序,51单片机秒表计时器课程设计报告(含C语言程序)解读.doc...
XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...
最新文章
- 2-4 zookeeper配置文件介绍,运行zk
- 判断鼠标是否在元素上_能不能从大便上判断出一个人是否患有结肠癌?
- 通过 Transifex 中文化开源软件
- 在TextView中实时显示数据
- 【大数据系列】hadoop单节点安装官方文档翻译
- Netty : netty 4如何解决空轮询bug
- Android 10 正式版本或将于 9 月 3 日推出
- python之日期与时间处理模块及利用pandas处理时间序列数据
- 《深入应用C++11:代码优化与工程级应用》勘误表
- traceroute tracert
- android+3.1.2+imagebutton监听,android Button ImageButton 差别
- matlab中适应度函数怎么编写,matlab常用的几个适应度评价函数
- Android5.0 下拉通知栏快捷开关的添加(必看)
- 【三】多线程 —— 设计模式
- ArcGIS面转中心线
- [ACTF新生赛2020]easyre
- 1. 对输入的数组正序输出
- 抖音美妆账号一条视频涨粉14.2w,合适刚玩短视频的你丨国仁网络
- 仓储模式和传统三层架构多数据库实现
- 实时操作系统(RTOS)
热门文章
- win10下文件夹映射
- c++ 字符串流 sstream
- BUUCTF Misc 被偷走的文件
- VC++, OO ME
- winring0 初始化失败问题
- 阿里云服务器远程连接出现GredSSP的解决办法
- python任务队列框架_Python实现简单多线程任务队列
- vue使用lib-flexible和postcss-px2rem-exclude解决移动端适配问题
- 服务器定时自动备份文件到AWS S3
- [RK3568 Android12] LVDS G121EAN01.3屏幕及触摸ILI2511 调试