基于stc89c52的可调电子钟设计内容摘要:

按键函数 此电子时钟共有 4个按键, K K K3与调试有关,按键 K4为 报时按键 K1 功能键:在 24 小时显示模式下,该键被第一次按下后进入秒调整,数码管 显示器上的时间停止走动。 模式,再次按下后进入分调整模式,接着是时调整模式 K 当第四 次按下该键后开始 复位端变高启动一次数据传送工作 写命令字节一位 SCLK 发脉冲 写数据字节一位 SCLK 发脉冲 复位端变低 够八次吗 结束 够八次吗 开始 复位端变高启动一次数据传送工作 写命令字节一位 SCLK 发脉冲 够八次吗 够八次吗 读数据字节一位 SCLK 发脉冲 复位端变低 结束 18 退出。 K2 调整键:在调整模式下,该键每按下一次,相应时间 K加 1 K3 确定 键:在调整模式下,该键被按下后,退出调整模式,并将调整后的时间 写入 DS1302 K4 为报时按键,按下则由语音芯片报出对应的时间。 每按下 K1键,状态改变一次,标记状态从 1改变到 3如图 图 按键状态处理 每按一次键,相应的时间加 1,但是时间是以 BCD码 的 形式存放在 DS1302时钟芯片 上的,如果直接对其进行操作,如秒、 假如秒的初试时间是 00,它在 DS1302 芯片中存放的值为00000000,它的后 4位 则 代表秒的个位,在时钟芯片自动计时 的 时 侯 , 10秒后它的后四位为 10时,它能自动进位 变为 00010000。 但是在调秒 的 状态下按 10次 S2键,我们希望秒变成 00010000,实际上其值 变 为 00001010, 因此我们引入参数分别代表秒的十位和个位。 设计总结 通过本次论文 的 设计,使我加深了对单片 机 知识的认识,并且熟悉了 单片机系统的设计流程。 本次设计功能上基本达标:时钟的显示,调时功能,语音报时功能。 技术在不断进步,机械式 的时钟已经被淘汰,取而代之的是具有高度准确性、 直观性 、无机械装置并且 具有更长的使用寿命等有点的电子时钟。 电子时钟更 加 具 有 人性化,更能提高人们的生活质量,更受人们 的欢迎。 机械时代已经远去,电子时代已经到来,作为新时代的我们,应该提高自身能力,适应新时代的发展。 从这次的论文设计中,我真正的体会到知识的重要性,特别是要理论联系实际,把我们所学的理论和知识运用到实际生活中。 状态 1 设置时间:秒 状态 2 设置时间:时 状态 3 设置时间:分 19 参 考文献 [1] 杨家国.《单片机原理与应用及 C51程序设计》.清华大学出版社. 20207 [2] 周向红.《 51单片机课程设计》 [M] .华中科技 大学出版社. 20201 [3] 阎石.《数字电子线路》 [M] .高等教育出版社. 20207 [4] 周兴华 . 《手把手教你学单片机 C 语言程序设计》 [M].北京:北京航空航天大学出版社,2020年 [5] 张义和 .《例说 51单片机》 [M].北京:人民邮电出版社, 2020年 [6] 孙涵芳 .《单片机原理及应用》 [M].北京航空航天大学出版社, 1996 [7] 黄 正谨 .《综合电子设计与实践》 [M].东南大学出版社, 2020 [8] 谢嘉奎 .《电子线路》 [M].高等教育出版社, 2020 [9] Lee Circuit Designs for Transmittersin Broadband Data Links. IEEE Journal of SolidState Circuits[J]. 2020 [10] Lim Kyoohyun,Park Chanhong,Kim Dalsoo,et lownoise phaselocked loop design by loop bandwidth optimization. IEEE Journal of SolidState Circuits. 2020 [11] Gee Lee,Karina Ng,Edmond of ring oscillator based voltage controlled oscillator. Project Final Report[R]. 2020 Adjustable electric clock Based on the STC89C52 Chen Peng Nanjing University of Information Science amp。 Technology, Binjiang college, Information Engineering Specialty , Nanjing 210044 Abstract With the rapid development of microputer technology in it39。 s promotion , it further improve the performance of modern electronic products. Time is money, time is life, time is victory. Accurate grapes of time and allocation of time is crucial to people. The clock is necessary in our life tools. In this paper, through the use of STC89C52 microcontroller by DS1302 clock chips for reading and writing operation so that forming a single chip electronic clock. Key Words: Microcontroller, STC89C52, Electronic clock. 20 附录 附录一:程序源代码 include //包含单片机寄存器的头文件 include //包含 _nop_()函数定义的头文件 define uchar unsigned char define uint unsigned int sbit SCLK=P1^1。 //位定义 1302 芯片的接口,时钟输出端口定义在 引脚 sbit DATA=P1^0。 //位定义 1302 芯片的接口,数据输出端定义在 引脚 sbit RST=P1^2。 //位定义 1302 芯片的接口,复位端口定义在 引脚 sbit key1=P1^6。 //调时 sbit key2=P1^7。 //调分 启动 sbit key3=P3^0。 sbit key4=P3^1。 sbit busy=P1^3。 //判忙端接 8 脚 sbit SDA=P1^4。 //信号端接 7 脚 sbit RST2=P1^5。 //触发端接 6 脚 void baoshi(unsigned char z)。 void yuyin()。 uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp。 unsigned char m,n,p,t。 unsigned char min,hour。 //开始走秒 uchar code duan_code[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。 //共阳数码管段码表 uchar display_code[]={ 0x00,0x00,0xbf,0x00,0x00,0xbf,0x00,0x00}。 //显示格式,中间两个横杠 uchar bit_code[]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }。 // 21 数码管位选 uchar current_time[7]。 //所读取的日期和时间 //调节标志 /***************************************************** 函数功能:延时若干微秒 入口参数: n ***************************************************/ void delaynus(unsigned char n) { unsigned char i。 for(i=0。 in。 i++)。 } void delayms(uint x) //延时函数 ms 级 { uchar i。 while(x) for(i=0。 i++。 i120)。 } /***************************************************** 函数功能:向 1302 写一个字节数据 入口参数: x ***************************************************/ void Write1302(unsigned char dat) { unsigned char i。 SCLK=0。 //拉低 SCLK,为脉冲上升沿写入数据做好准备 delaynus(2)。 //稍微等待,使硬件做好准备 for(i=0。 i8。 i++) //连续写 8 个二进制位数据 { DATA=datamp。 0x01。 //取出 dat的第 0 位数据写入 1302 低位在前,高位在后 delaynus(2)。 //稍微等待,使硬件做好准备 SCLK=1。 //上升沿写入数据 delaynus(2)。 //稍微等待,使硬件做好准备 SCLK=0。 //重新拉低SCLK,形成脉冲 dat=1。 //将 dat 的各数据位右移 1 位,准备写入下一个数据位 } } /***************************************************** 函数功能:根据命令字,向 1302 写一个字节数据 入口参数: Cmd,储存命令字; dat,储存待写的数据 ***************************************************/ void WriteSet1302(unsigned char Cmd,unsigned char dat) { RST=0。 //禁止数据传递 SCLK=0。 //确保写数居前 SCLK 被拉低 RST=1。 //启动数据传输 delaynus(2)。 //稍微等待,使硬件做好准备 Write1302(Cmd)。 //写入命令字 Write1302(dat)。 //写数据 SCLK=1。 //将时钟电平置于 高电平状态 RST=0。 //禁止数据传递 } /***************************************************** 函数功能:从 1302 读一个字节数据 入口参数: x ***************************************************/ unsigned char Read1302(void) { 22 unsigned char i,dat。 delaynus(2)。 //稍微 等待,使硬件做好准备 for(i=0。 i8。 i++) //连续读 8 个二进制位数据 { dat=1。 if(DATA==1) //如果读出的数据是 1 dat|=0x80。 //将 1 取出,写在dat 的最高位 SCLK=1。 //将 SCLK 置于高电平,为下降沿读出 delaynus(2)。 //稍微等待 SCLK=0。 //拉低 SCLK,形成脉冲下降沿 delaynus(2)。 //稍微等待 } return dat。 //将读出的数据返回 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。