该文档包括原理图、源代码,系统的介绍了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数码管时钟...相关推荐

  1. 单片机交通灯数码管c语言程序,51单片机C语言实现交通灯(红绿灯)源程序.doc

    51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /*1.程序目的:使用定 ...

  2. 6位数码管电子时钟c语言程序,51单片机的六位数码管时钟表仿真及C程序

    本帖最后由 liuda 于 2015-1-21 22:38 编辑 Proteus仿真截图 /****************************************************** ...

  3. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序

    本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...

  4. 数码管c语言程序如何控制,跪求,8255控制数码管,单片机c语言程序;

    跪求,8255控制数码管,单片机c语言程序: 答案:3  信息版本:手机版 解决时间 2021-04-29 04:56 已解决 2021-04-28 12:39 8255 PA口--数码管的段选,82 ...

  5. 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...

    51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...

  6. 数码管显示原理:共阴极和共阳极的区别,静态显示程序。

    数码管显示原理:共阴与共阳 LED发光原理是PN结光电二极管将电能转化为光能的结果.当半导体芯片两端加正反向电压时,当电子从n区域注入p区域时,它们与p区的空穴结合并释放能量,这些能量以光子的形式发射 ...

  7. 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序).doc...

    51单片机秒表计时器课程设计报告(含C语言程序) XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计 ...

  8. 单片机交通灯灯c语言程序,51单片机用C语言实现交通灯(红绿灯)源程序

    51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用 ...

  9. 五十九秒的秒表C语言程序,51单片机秒表计时器课程设计报告(含C语言程序)解读.doc...

    XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...

最新文章

  1. 2-4 zookeeper配置文件介绍,运行zk
  2. 判断鼠标是否在元素上_能不能从大便上判断出一个人是否患有结肠癌?
  3. 通过 Transifex 中文化开源软件
  4. 在TextView中实时显示数据
  5. 【大数据系列】hadoop单节点安装官方文档翻译
  6. Netty : netty 4如何解决空轮询bug
  7. Android 10 正式版本或将于 9 月 3 日推出
  8. python之日期与时间处理模块及利用pandas处理时间序列数据
  9. 《深入应用C++11:代码优化与工程级应用》勘误表
  10. traceroute tracert
  11. android+3.1.2+imagebutton监听,android Button ImageButton 差别
  12. matlab中适应度函数怎么编写,matlab常用的几个适应度评价函数
  13. Android5.0 下拉通知栏快捷开关的添加(必看)
  14. 【三】多线程 —— 设计模式
  15. ArcGIS面转中心线
  16. [ACTF新生赛2020]easyre
  17. 1. 对输入的数组正序输出
  18. 抖音美妆账号一条视频涨粉14.2w,合适刚玩短视频的你丨国仁网络
  19. 仓储模式和传统三层架构多数据库实现
  20. 实时操作系统(RTOS)

热门文章

  1. win10下文件夹映射
  2. c++ 字符串流 sstream
  3. BUUCTF Misc 被偷走的文件
  4. VC++, OO ME
  5. winring0 初始化失败问题
  6. 阿里云服务器远程连接出现GredSSP的解决办法
  7. python任务队列框架_Python实现简单多线程任务队列
  8. vue使用lib-flexible和postcss-px2rem-exclude解决移动端适配问题
  9. 服务器定时自动备份文件到AWS S3
  10. [RK3568 Android12] LVDS G121EAN01.3屏幕及触摸ILI2511 调试