欢迎来到天天文库
浏览记录
ID:18487605
大小:259.50 KB
页数:25页
时间:2018-09-18
《数字电子钟的设计new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、引言:本设计通过对一个能实现按键开关可调整时、分、秒,定时报警的24小时制的时间系统的设计学习。详细叙述了51单片机应用中的定时中断原理、数码管显示原理、动态扫描显示原理等,进一步学习、应用单片机C语言系统的实现了各种功能。从而使自身明白使用单片机汇编语言和C语言之间的效率、整体性问题。该系统由AT89C51、独立式按键、二极管、LED数码管、蜂鸣器等部分构成,能实现24小时制时、分、秒的时钟显示,18B20温度、能实现时钟简单的功能。同时也可进行时、分、秒的校准、定时报警和LED二极管流水灯显示。本系统主要是和实际生
2、活的数字钟结合起来,可用1功能键进入时间校准等。可用3个带有不同按键分别对时钟的时、分、秒进行校准。每个按键伴有不同的声响以示区别。1设计方案1.1软件实现数字时钟原理为:利用定时器0与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。1.2采用美国
3、DALLAS公司的专用时钟芯片DS1302该芯片主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。其内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。251.3最终方案选
4、择鉴于以上两种方案,时钟芯片DS1302具有更多的优点,本设计采用方案二完成数字时钟的功能。2硬件详细设计2.1主板电路系统整体硬件电路包括温度显示电路,上下限报警调整电路,单片机主板电路等,如图1所示。图1中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。25图1单片机数字钟硬件系统的总体设计框图2.2显示电路显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比
5、较少,只用p3口的RXD,和TXD,串口的发送和接收,四只数码管采用74LS164右移寄存器驱动,显示比较清晰。显示电路如图2所示。图2温度显示电路2软件设计3.1程序主要模块数字钟的模块主要包括:时钟模块,温度模块,显示模块,键盘模块,报警模块六大模块组成。图3列出了主要模块的关系。25数字时钟温度模块时钟模块温度显示时间计算温度报警显示日期图3模块关系图3.2主程序流程主程序的主要工作是:初始化DS1302时钟芯片和DS18B20温度芯片,以及单片机的初始工作状态,然后进入读取时间和温度的流程,用户课根据按键的功能
6、进行选择其工作状态。主程序流程如图4所示。25开始初始化Y有按键N需要响应NY松开键Y扫描计数加1按键处理松开键处理N图4主程序流程图3.3DS1302时钟芯片程序分析DS1302数据读取函数分析,程序源码如下所示:unsignedchari;unsignedchartemp=0;for(i=8;i>0;i--){25temp=temp>>1;}在控制指令字输入后的下一个SCLK时钟的上升沿时,紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302数据写入函
7、数分析,程序源码如下所示:unsignedchari;for(i=8;i>0;i--){ds1302_io=(bit)(byte1&0x01);//先进最低位ds1302_clk=1;}if(ds1302_io)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。3.4数据显示与刷新更新显示涉及到两个操作:发数据和改片选信号。但实践发现,代码中无论是先改片选信号还是先发数据信号,都会出现重影(即相邻两位显示差不多)这也是动态扫描引起的。实践先该片选,则前一位的数据会在下一
8、位显示一段时间;先发数据,则后一位的数据会在前一位显示一段时间。因而出现重影。解决这个问题的办法是先进行一个消影操作,然后再发片选,最后发数据。这样就很好地解决了重影问题。这样做的关键在于,在极短的一段时间内让显示器都不亮,等一切准备工作都做好了以后再发数据,只要显示频率足够快,是看不出显示器有闪烁的,这段显示程序代码如下:P1=
此文档下载收益归作者所有