电子钟课程设计多功能电子钟_第1页
电子钟课程设计多功能电子钟_第2页
电子钟课程设计多功能电子钟_第3页
电子钟课程设计多功能电子钟_第4页
电子钟课程设计多功能电子钟_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内蒙古科技大学智能仪表综合训练设计说明书题 目:多功能电子钟学生姓名:赵晓红学 号:0967112235专 业:测控技术与仪器班 级:2009-2指导教师:肖俊生摘要随着电子科学技术的不断发展,许多电子产品给人们的生活带来了根本性改变,多功能电子钟是人们生活中必不可少的产品,为人们的生活带来极大的方便。本次设计是根据多功能数字电子钟的特点,使用STC89C52单片机芯片控制电路以及DS1302时钟芯片产生实时时钟/日历,利用4位LED数码管显示时间信息,通过4个独立按键实现时间信息的切换和调整功能。设计的软件程序利用Keil编辑实现、电子钟的系统的仿真通过proteus和protelDXP绘制

2、电路原理图及PCB电路板,软件硬件实物的调试。关键词:电子钟;STC89C52;DS1302;74LS164;LED显示;目 录第一章 前言3第二章 总体方案设计42.1总体设计思路42.2系统基本方案设计和论证4单片机STC89C524时钟芯片DS130242.2.3 LED数码管显示方案确定42.3设计最终方案5第三章 硬件设计63.1电子钟总体硬件框图63.2 STC89C5263.2.1 STC89C52芯片介绍63.2.2 STC89C52单片机的复位电路73.2.3 STC89C52单片机的晶振电路73.3 DS1302时钟电路83.3.1 DS1302芯片介绍83.3.2 DS1

3、302工作原理83.3.3 DS1302 连接电路图93.4 74LS164共阴极数码管驱动芯片93.4.1 74LS164芯片功能及工作原理93.4.2 74LS164驱动数码管103.5时钟显示校正电路103.6蜂鸣电路11第四章 软件设计124.1编译语言的选择124.2语言编辑软件Keil简介124.3程序设计12主程序模块124.3.2 DS1302时钟模块13按键调整模块144.3.4 74LS164驱动数码管显示模块14第五章 总结15参考文献16附录1 多功能电子钟硬件原理图及PCB电路板17附录2 多功能电子钟C程序18第一章 前言单片机技术已经广泛应用于工业控制、智能化仪器

4、仪表、家用电器,甚至电子玩具等各个领域。它具有体积小、功能多可靠性高、价格低廉、使用方便、系统设计灵活等优点,不仅成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行业的技术改革和产品的更新换代,应用前景广阔。在单片机模块中最常见的就是电子钟,它采用数字电路实现对时、分、秒数字显示的计时装置,与机械时钟相比具有更高的准确性和直观性。现在市面上还有各种时钟芯片通过简单的串行通信与单片机进行通信能够实时提供时间信息,使电子钟被广泛应用于社会的各个领域,给人们的生活、学习、工作、娱乐带来极大的方便。多功能数字电子钟可以设置定时自动报警、定时自动闹铃、测试温

5、度、时间程序自动控制、甚至各种电气设备的自动启用等功能,这样的多功能数字电子钟会使我们的生活更加方便,所以对多功能数字电子钟的研究有很重要的现实意义。在这次电子钟的设计过程中将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,培养了综合分析和设计电路,写程序、调试硬件电路的能力。第二章 总体方案设计2.1总体设计思路本设计就是应用单片机强大的控制功能制作而成的多功能数字电子钟,该多功能数字电子钟通过4位LED数码管和4位独立按键实现年、月、日、时和分的显示以及时间显示的切换、时间修改调整。本设计采用的是STC89C52单片机。计时芯片采用时钟芯片DS1302,该芯片通过简单的串行

6、通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时、分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。显示采用LED静态显示,显示驱动芯片74LS164为8位串入并出的移位寄存器。2.2系统基本方案设计和论证单片机STC89C52STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)。主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定时/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UAR

7、T串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设置睡眠和唤醒功能。时钟芯片DS1302采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高。计算机可通过中断或查询方式读取计时数据并进行显示,因此计时功能的实现无需占用CPU的时间。 LED数码管显示方案确定方案一:静态显示。静态显示,即当显示器显示某一字符时,相应的发光二极管恒定导通或截止。在静态显示系统中,每位显示器都应有各自的锁存器、译码器与驱动器,显示驱动电路具有输出锁存功能,用以锁存各自待显示数字

8、的BCD码或反码。因此,静态显示系统在每一次显示输出后能够保持显示不变,仅在待显数字需要改变时,才更新其数字显示器中锁存的内容。这种显示占用很少的CPU时间,显示数据稳定可靠。方案二:动态显示。动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。在动态显示系统中,微处理器或控制器应定时地对各个显示器进行扫描,显示器件分时轮流工作,每次只能使一个器件显示,但由于人的视觉暂留现象,仍感觉所有的器件都在同时显示。在LED数码管轮流工作时,为了防止出现闪烁现象,LED数码管刷新频率必须大于25Hz,即同一LED数码管相临两次点亮时间间隔要小于40ms。显示器的亮度与导通

9、电流、点亮时间及间隔时间的比例有关,调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。在本次设计中,我们只用了4位LED数码管,所需I/O口不多,整体电路不是很复杂,从占用CPU时间少和显示稳定的角度出发,选择方案一。2.3设计最终方案本次设计采用STC89C52作为主控制系统, DS1302提供时钟,利用74LS164驱动4位数码管静态显示,4位独立按键对时间显示功能进行切换和调整。该设计包括硬件电路原理的实现方案设计、软件程序编辑的实现、电子钟正常工作的流程图及原理图、硬件实物的调试和系统的仿真。第三章 硬件设计3.1电子钟总体硬件框图该电子钟的设计采用STC89C52

10、作为主控制系统, DS1302提供时钟,利用74LS164驱动4位数码管静态显示,4位独立按键对时间显示功能进行切换和调整,蜂鸣电路实现闹钟功能,整体硬件框图如图3.1所示。图3.1多功能电子钟系统硬件电路组成框图3.2 STC89C52 STC89C52芯片介绍STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。芯片拥有灵巧的8 位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32位I/O 口线,看门狗定时器,内置4KB EEPR

11、OM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz。图3.2为STC89C52的引脚功能图。图3.2 STC89C52引脚功能图 STC89C52单片机的复位电路任何单片机在开始工作前,都必须进行一次复位过程,使单片机处于一种确定的状态。当在STC89C52单片机的RST引脚引入

12、高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就可以实现单片机的复位,如图3.3所示。图3.3复位电路3.2.3 STC89C52单片机的晶振电路单片机工作的过程中各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序,单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准,89C52的时钟产生方式有两种,一种是内部时钟方式,一种是外部时钟方式。外部时钟方式是把外部已有的时钟信号引入到单片机内,此方式常用于多片89C52单片机同时工作,以便于各单片机的同步

13、,这种方式适宜用来使单片机的时钟与外部信号保持同步。一般要求外部信号高电平的持续时间大于20ns.且为频率低于12MHz的方波。为了尽量降低功耗,所以采用内部时钟方式,连接方式如图3.4所示。图3.4晶振电路在89C52单片机的内部有一个震荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振)就构成了自激振荡器并在单片机内部产生时钟脉冲信号,图中电容C1和C2的作用是稳定频率,电容值一般为30pF,晶振选择的是11.0592MHz。3.3 DS1302时钟电路 DS1302芯片介绍DS1302时钟芯片可以工作于24小时模式或AM/PM的12小时模式。其内部包含了10个时钟寄存

14、器和31字节RAM,这些寄存器和RAM用来存放各种时间数据。在使用时,可以对芯片的当前时间进行设定。DS1302能在非常低的功耗下工作。DS1302时钟芯片的主要性能有实时时钟记录计秒、分钟、小时、日、月和年;31字节RAM存储时间数据;2.05.0V供电;采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据;8针DIP封装和SOIC封装;兼容TTL电平。 DS1302工作原理DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc

15、10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电

16、平。I/O为串行数据输入输出端(双向),SCLK为时钟输入端。图3.5为DS1302引脚图。图3.5 DS1302引脚封装图 DS1302 连接电路图DS1302外部连接电路如下图所示。图3.6 DS1302连接图3.4 74LS164共阴极数码管驱动芯片3.4.1 74LS164芯片功能及工作原理74LS164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。74LS164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把

17、不用的输入端接高电平,一定不要悬空。 时钟(CP)每次由低变高时,数据右移一位,输入到 Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。图3.7为74LS164引脚图。图3.7 74LS164引脚功能图3.4.2 74LS164驱动数码管静态数码管显示电路由四只74LS164、四只共阴极LED数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。 其中第1、2脚为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输

18、入信号时可并接。第8脚为时钟输入端,每一个时钟信号的上升沿加到S端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hga各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,再来一个脉冲,第一个脉冲就会从最高位移出。四只74LS164首尾相连,每只74LS164的并行输出作为LED数码管显示的段码。具体的连接如图3.8所示。图3.8 74LS164驱动数码管静态显示接线图3.5时钟

19、显示校正电路利用按键开关来校正时钟显示的数字。当按钮按下时,将在相应的端口输入一个低电平,通过相应的程序来改变时钟显示。其中K1按键开关用来选择要修改的数字;K2按键用来增加所选数字的数值;K3按键用来减少所选数字的数值,K4按键用来切换显示时间。图3.9为按键电路。图3.9 按键电路3.6蜂鸣电路单片机在复位后的个I/O口是高电平,此时三极管是截止的,编写程序使选定的I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴的响声实现闹钟功能。电路连接如图3.10所示。图3.10 蜂鸣电路连接图第四章 软件设计在硬件电路设计的基础上,本设计中的软件主要采用Ke

20、il编译器进行编写,该程序主要包括三个方面的内容:一是DS1302从单片机中读取数据进行计数,二是利用按键对时间进行调整,三是74LS164驱动LED数码管显示时间。软件总体设计主要包括主程序设计和各个子程序的设计。画出主程序及每一子程序的流程图,编写程序。软件编写的主体思路是将系统按功能模块化划分,然后根据模块要实现的功能写各个子程序。最后,将各程序模块连接成一个完整的程序。4.1编译语言的选择对于单片机的开发应用中,C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易

21、于移植。基于C语言和汇编语言的优缺点,采用C语言编写。4.2语言编辑软件Keil简介Keil C51软件是针对51系列兼容单片机的C语言软件开发系统,其集成开发环境为Keil C Version。Keil C Version提供了包括C51编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。Keil与Proteus有联合调试的功能,构建一个智能仪器仪表的虚拟开发平台。4.3程序设计4.3.1主程序模块主程序实现的功能:与硬件相结合实现显示时间,调整时间的各个功能。在主程序的软件设计中,首先对定时器T0、74LS164等进行初始化,对定时时间及中断方式的进行设置,然后调

22、用按键浏览函数,对按键进行检测,再对相应的按键操作写入和读出DS1302的值并且调用不同的显示函数,最后调用铃声函数如此循环往复。图4.1为主程序的流程图。图4.1主程序流程图4.3.2 DS1302时钟模块图4.2显示DS1302的实时时间流程。根据此流程框图,不难采集实时时间。图4.2 DS1302子程序流程图4.3.3按键调整模块判断有无键按下,没有继续等待,有键信号是延时等待去抖,如果仍有按键信号,则进行按键处理,实现显示或调整功能,没有的话等待,再判断。按键检测程序流程图如图4.3所示。图4.3 按键检测程序流程图4.3.4 74LS164驱动数码管显示模块单片机向74LS164传送

23、数据,由74LS164按串入并出方式接受和发送数据。164向LED发送数据,发送了LED就显示,否则就继续等待。接着判断LED是否显示完全,如果显示完全就返回等待下一次数据发送,否则等待164送入新数据。74LS164驱动LED显示子程序如图4.4所示。图4.4显示子程序流程图第五章 总结该多功能电子钟通过单片机STC89C52做CPU进行核心控制,基于时钟芯片DS1302产生时间,利用74LS164驱动的LED进行静态显示、键盘来修改时间的一个多功能的电子钟。LED能够对年、月、日、时、分进行计时、显示及调整。通过本次设计使我对STC89C52、时钟芯片DS1302、74LS164的各个引脚

24、及功能都有所了解。在本次课程设计中,使我们学到了很多很多,不仅巩固了以前学过的很多课本知识,如数电、模电、智能仪器、单片机和C语言等,而且学习使用了很多专业软件,如:protelDXP、Keil、proteus等软件的使用。在实践过程中,培养了思考问题、解决问题的能力。总之,这次智能仪器课程设计过程中艰难带着喜悦,让我有了很大的收获,让自己清晰地认识到自己有哪些不足,哪些地方需要去弥补,也让自己学到了很多新的知识。它让我们把理论设计和工程实践相结合、巩固了我们的基础知识和培养了我们的创新意识等方面,这次课程设计全面的培养了学生的整体素质。这次课程设计所学到的东西在我们今后的学习和工作当中都会有

25、很大的帮助!参考文献1 张友德,涂时亮,赵志英.单片微型机原理、应用与实验(C51版)M.上海:复旦大学出版社,20102 潘永雄.新编单片机原理与应用M西安:西安电子科技大学出版社,20073 李广弟.单片机基础M. 北京:北京航空航天大学出版社,20014 谭浩强.C程序设计(第二版)M.北京:清华大学出版社,19995 尹勇.Vision2单片机应用程序开发指南M.北京:科学出版社,20056 贾振国,许琳.智能化仪器仪表原理及应用:基于Proteus及C51程序设计语言M.北京:中国水利水电出版社,20117 沙占友.单片机外围电路设计M.北京:电子工业出版社,20048 张元良.智能

26、仪表设计实用技术及实例M.北京:机械工业出版社,20089 霍亮生.电子技术基础M.北京:清华大学出版社,200610 夏宽理.程序设计M.上海:复旦大学出版社,200011 周润景.Proteus在MCS-51&ARM7系统中的应用百例M.北京:电子工业出版社,2007附录1 多功能电子钟硬件原理图及PCB电路板ProtelDXP原理图:ProtelDXP绘制的PCB板:附录2 多功能电子钟C程序#include#define uint unsigned int#define uchar unsigned charsbit DAT=P10;sbit CLK=P11;sbit io=P33;s

27、bit sclk=P34;sbit rst=P35;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit key_out=P17; uchar miao,fen,shi,nian,shiji=0x20,yue,ri,week,s1num,flag,shu;uchar naos=0x07,naof=0x30,naom=0x00,qw=0;uchar time7;/uchar code led_tab16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,/ 0x7f,0x6f,0x77,0x7c,0x39,0x5e

28、,0x79,0x71; /led段码uchar code led_tab16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0;uchar showbuf04=0x3f,0x3f,0x3f,0x3f; /时间 显示缓存uchar showbuf14=0x3f,0x3f,0x3f,0x3f; /日期 显示缓存uchar showbuf24=0x3f,0x3f,0x3f,0x3f; uchar showbuf34=0x3f,0x3f,0x3f,0x3f; uchar disflag=0; /显示标志,用于指示显示日期或时间bit miaosha

29、n;void delay_ms(int z)int x,y; for(x=z;x0;x-) for(y=150;y0;y-); void write_byte(uchar dat)/写1字节数据到1302,低位在前。uchar i;for(i=0;i1;sclk=0;sclk=1; sclk=0;uchar read_byte()/从DS1302中读1字节数据,读出时高位在前。uchar i,dat;for(i=0;i1;if(io)dat=dat|0x80;sclk=1;sclk=0; sclk=0;return(dat);void write_ds1302(uchar add,uchar

30、dat)/向DS1302的add地址中写入dat数据rst=0;sclk=0;rst=1;write_byte(add);write_byte(dat);sclk=0;rst=0;uchar read_ds1302(uchar add)/从DS1302的add地址中读出数据uchar time;rst=0;sclk=0;rst=1;write_byte(add);time=read_byte();sclk=0;rst=0;/temp=time/16;/temp1=time%16;/由于DS1302中数据时BCD码,因此需要数据的转换/time=temp*10+temp1; /将数据转换为十进制

31、数据,便于在数码管中显示return(time);void init_1302()/时间初始化函数,不进行初始化DS1302不能正常工作write_ds1302(0x8e,0x00);write_ds1302(0x8c,time0);/写入年数据write_ds1302(0x88,time1);/写入月数据write_ds1302(0x86,time2);/写入日数据write_ds1302(0x84,time3);/写入时数据write_ds1302(0x82,time4);/写入分数据write_ds1302(0x80,time5);/写入秒数据write_ds1302(0x8a,time

32、6);/写入星期数据write_ds1302(0x90,0xab);/通过实验证实只有在涓流充电寄存器中写入0xabwrite_ds1302(0x8e,0x80);/既使能两个二极管接入8K电阻才能正常使用后备电源。void read_time()/时间读取函数miao=read_ds1302(0x81);fen=read_ds1302(0x83);shi=read_ds1302(0x85);week=read_ds1302(0x8b);ri=read_ds1302(0x87);yue=read_ds1302(0x89);nian=read_ds1302(0x8d);time0=nian;ti

33、me1=yue;time2=ri;time3=shi;time4=fen;time5=miao;time6=week; void write164_byte(uchar date)uchar i;for(i=0;i8;i+)CLK=0;DAT=date&0x80;CLK=1;date=1;CLK=0;void show(uchar *p) /刷新显示uchar i;for(i=0;i4;i+) write164_byte(pi);void keyscan() /键盘检测函数,用于时间的调节uchar ys,yg,mou,rg,rs,tian,fg,fs,sg,ss,sf,ff,nig,nis,

34、tempfen,tempshi,tempri,tempyue,tempnian;if(k1=0)delay_ms(1);if(k1=0)while(!k1);s1num+;flag=1;if(s1num=3)init_1302();flag=0;s1num=0;if(s1num!=0)if(k2=0)delay_ms(1);if(k2=0)while(!k2); switch(disflag) case 0: switch(s1num) case 1:tempfen=(fen/16)*10)+(fen%16); /BCD转换成数字 tempfen+; if(tempfen=60) tempfe

35、n=0; fs=tempfen/10; fg=tempfen%10; ff=(fs4)&0xf0)|(fg&0x0f); /转换成BCD码 time4=ff; time5=0; write_ds1302(0x8e,0x00); /使寄存器可写 write_ds1302(0x82,ff); /写入寄存器 write_ds1302(0x8e,0x80);/使寄存器不可写 break; case 2: tempshi=(shi/16)*10)+(shi%16); tempshi+; if(tempshi=24) tempshi=0; ss=tempshi/10; sg=tempshi%10; sf=

36、(ss4)&0xf0)|(sg&0x0f); time3=sf; write_ds1302(0x8e,0x00); write_ds1302(0x84,sf); write_ds1302(0x8e,0x80);break; break; case 1: switch(s1num) case 1:tempri=(ri/16)*10)+(ri%16); tempri+; if(tempri=32) tempri=1; rs=tempri/10; rg=tempri%10; tian=(rs4)&0xf0)|(rg&0x0f); time2=tian; write_ds1302(0x8e,0x00)

37、; write_ds1302(0x86,tian); write_ds1302(0x8e,0x80); break; case 2:tempyue=(yue/16)*10)+(yue%16); tempyue+; if(tempyue=13) tempyue=1; ys=tempyue/10; yg=tempyue%10; mou=(ys99) tempnian=0; nis=tempnian/10; nig=tempnian%10; tempnian=(nis99) tempnian=0; nis=tempnian/10; nig=tempnian%10; shiji=(nis4)&0xf0

38、)|(nig&0x0f); break;break; case 3 : switch(s1num) case 1:tempnian=(naof/16)*10)+(naof%16); tempnian+; if(tempnian=60) tempnian=0; nis=tempnian/10; nig=tempnian%10; naof=(nis4)&0xf0)|(nig&0x0f); break; case 2:tempnian=(naos/16)*10)+(naos%16); tempnian+; if(tempnian=24) tempnian=0; nis=tempnian/10; ni

39、g=tempnian%10; naos=(nis4)&0xf0)|(nig&0x0f); break;break; if(k3=0)delay_ms(1);if(k3=0)while(!k3); switch(disflag) case 0: switch(s1num) case 1:tempfen=(fen/16)*10)+(fen%16); tempfen-; if(tempfen=-1) tempfen=59; fs=tempfen/10; fg=tempfen%10; ff=(fs4)&0xf0)|(fg&0x0f); time4=ff; time5=0; write_ds1302(0

40、x8e,0x00); write_ds1302(0x82,ff); write_ds1302(0x8e,0x80); break; case 2:tempshi=(shi/16)*10)+(shi%16); tempshi-; if(tempshi=-1) tempshi=23; ss=tempshi/10; sg=tempshi%10; sf=(ss4)&0xf0)|(sg&0x0f); time3=sf; write_ds1302(0x8e,0x00); write_ds1302(0x84,sf); write_ds1302(0x8e,0x80); break; case 1: switc

41、h(s1num) case 1:tempri=(ri/16)*10)+(ri%16); tempri-; if(tempri=0) tempri=31; rs=tempri/10; rg=tempri%10; tian=(rs4)&0xf0)|(rg&0x0f); time2=tian; write_ds1302(0x8e,0x00); write_ds1302(0x86,tian); write_ds1302(0x8e,0x80); break; case 2:tempyue=(yue/16)*10)+(yue%16); tempyue-; if(tempyue=0) tempyue=12; ys=tempyue/10; yg=tempyue%10; mou=(ys4)&0xf0)|(yg&0x0f); time1=mou; time0=0x10; time6=0x01; write_ds1302(0x8e,0x00); write_ds1302(0x88,mou); write_ds1302(0x8e,0x80);break;break; case 2: switch(s1num) case 1:tempnian=(nian/16)*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论