数字式电子钟设计.docx
- 文档编号:831360
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:13
- 大小:309.95KB
数字式电子钟设计.docx
《数字式电子钟设计.docx》由会员分享,可在线阅读,更多相关《数字式电子钟设计.docx(13页珍藏版)》请在冰豆网上搜索。
数字式电子钟设计
单片机数字时钟设计
摘要
单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。
基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。
本设计使用12MHZ晶振与单片机AT89C52相连接,以AT89C52芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用74HC244驱动电路,实现在6个LED数码管上显示日期、时间、定时、闹铃,通过6个按键实现设置日期、进行调时、设定闹铃、倒计时等功能,在实现各功能时数码管进行相应显示,闹铃或定时时间到时蜂鸣器响,按下闹铃键或定时键时,声音停止。
软件部分用C语言实现,分为显示、延迟、调时、闹铃、定时、调整日期等部分。
通过软硬件结合达到最终目的。
关键词:
电子钟;单片机;动态扫描;C语言
单片机数字时钟设计
1引言
单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点。
因此,它应用广泛前景美好,它的实用性大大地提高了我对毕业设计的兴趣。
数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。
数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。
不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
而且是控制的核心部分。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。
这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于功能扩充,精确度高等特点。
2整体设计思路及其方案的选择
整体设计思路
首先由单片机的定时器P3口在一定的时间里产生一个中断,这时单片机由这个中断信号进行判断处理,然后由液晶显示进行时间的显示。
按键输入部分的输入信号也通过单片机处理,然后由液晶显示其需要显示的结果。
及其方案的选择
方案一:
利用时钟芯片给单片机输入时钟信号
芯片信号:
PCF8583。
此芯片可以对时钟、闹钟、日历进行调整,且精准度比较高,可以精准到1/100秒。
方案优点:
走时精度高,编程时无需考虑各部分运行时的时间干扰,
方案缺点:
硬件电路要稍微复杂点,软件编程时要加部分芯片的程序。
方案二:
直接利用单片机本身的定时器中断进行时间的走时
方式0:
不推荐
方式1:
16位计数器,常用
方式2:
自动重装初值的8位定时/计数器
方式3:
T0相当于两个独立的8位定时/计数器
方案优点:
不需要其它芯片就可以进行时钟的走时,并且精准度可以到1/100秒。
方案缺点:
精准度越高误差越大
方案三:
利用程序的延时进行时钟的走时
用for循环for(j=148;j>0;j--);延时一毫秒来确定时间
方案优点:
简单、经济,软件稍微简单
方案缺点:
走时不精准,且在时间的走时过程中不确定因素太多
综上信息,我选择方案二,因为方案无需在硬件上添加一块时钟芯片,软件上也无需添加一段时钟芯片的启动程序,软件、硬件的调试都要稍微简单点,虽然精准度要比方案一的差,但是我不需要那么高的精准度,所以我觉得方案二比较适合。
3主要元件的使用方法
下面就本次设计中用到的主要元件的所有功能进行简单的介绍,包括AT89C52单片机、74HC244芯片、DS18B20液晶显示特性和用法
3.1AT89C52单片机
单片机的结构如下:
图3.1.1单片机引脚图
在使用时VCC接电源电压,GND接地。
P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。
XTAL1和XTAL2接复位电路。
这些可以在硬件设计部分体现出来。
3.274HC244驱动器
74HC244芯片的功能
如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。
74HC244芯片的引脚排列如图1所示。
74HC244芯片的引脚
74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。
当1/OE和2/OE都为低电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,输出呈高阻态。
图1
3.3DS18B02液晶显示
4电路设计
4.1整体设计
此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:
显示电路用六个数码管分别显示小时、分钟和秒,通过动态扫描进行显示,从而避免了译码器的使用,使电路更加简单。
单片机采用AT89C52系列,这种单片机应用简单,适合电子钟设计。
电路的总体设计框架如下:
图4.1.1电路模块图
4.2分块设计
这部分介绍各模块电路的设计方法和成果,主要分为:
输入部分、输出部分、复位和晶振电路。
4.2.1输入部分
在电子钟的输入部分,设置相应的置数功能,通过外部设备的输入,如按键,实现时间的修改。
除此之外,调整闹铃、定时、日期时也需要按键进行输入。
在选用输入端口时,将P3引脚与按键相连进行输入。
设计的输入部分如下:
图4.2.1输入部分
各按键功能在后面的部分将会介绍到。
4.2.2输出部分(显示电路)
该部分电路图如下所示:
图4.2.2显示部分
4.2.3晶振与复位电路:
图4.2.3晶振与复位电路
5程序设计
5.1程序思路
图5.1.1程序设计思路
结合电路,程序的总体思路是:
1、点复位键后,进行时间显示,从8时30分30秒开始。
2、按下按键key4时,进行调时,此时按2次key4键调整时,按1次key4键调整分。
3、按key6键时进行闹铃调整,用key3键分别调时和分,时间到达闹铃所定时间时P1.1输出高电平,蜂鸣器响,按下按key5蜂鸣器停止。
4、按key3键时进行格式的设定,可设定为12H或24H.
5.2程序设计步骤
在程序设计过程中,我遇到了很多困难,这部分也是让我学到很多东西的地方。
首先,我学习了定时器的相关知识,计数器的使用是很重要的组成部分[15],在这个设计中选择计数器T0。
T0的工作方式有:
方式0:
不推荐
方式1:
16位计数器,常用
方式2:
自动重装初值的8位定时/计数器
方式3:
T0相当于两个独立的8位定时/计数器
此程序采用方式1,方式1的定时时间t为t=(216-M)*12/fosc。
其中M为定时器初值,fosc为12MHz,若M为0则t=65536*12/2*106=65.536ms。
因此可取50ms为计时单位,初值M应为50*10-3*106=216-M。
M=15536=11110010110000=3CB0。
即定时器初值为TH0=03CH,TL0=0B0H。
定时器中断20次为一秒,这部分在中断程序中用到。
5.3程序的主要模块
5.3.1延迟程序
在动态扫描时,必然用到延迟程序,这里使用延迟1ms的程序,此程序需要反复调用。
voidDelay1ms(unsignedintx)
{uchari,j;
for(i=x;i>0;i--)
for(j=148;j>0;j--);}
5.3.2中断服务子程序
中断服务程序中,总体思路是:
由于初值是3CB0H,所以装满定时器需要50ms的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。
5.3.3主程序
主程序主要对按键进行扫描,以及判断闹铃时间是否已到,若到则调用声音程序,该段程序如下:
voidmain()
{unint();LCDINIT();while
(1)
{shezhijian();tuichujian();if(flag==1)
{switch(m){case0:
shijian();tek1();break;
case1:
sheding();xianshi2();break;
case2:
laozhong();tek();break;}}
else{fengmingqi();xianshi1();}}
5.3.4显示程序
液晶进行显示,分别显示1ms,这依赖的是人们视觉的惰性,该段程序如下:
voiddisplay(ucharaddress,uchar*str)
{uchari;for(i=0;i<14;i++)//写显示第一行
{wcomd(address+i);Delay1ms
(1);wdata(str[i]);Delay1ms
(1);}}
voiddata_cl1()
{temp=data_s*10000+data_f*100+data_m;
buffer[0]=temp/100000+'0';
buffer[1]=temp/10000%10+'0';
buffer[2]=':
';
buffer[3]=temp/1000%10+'0';
buffer[4]=temp/100%10+'0';
buffer[5]=':
';
buffer[6]=temp/10%10+'0';
buffer[7]=temp%10+'0';//显示高位
buffer[8]='';
buffer[9]='';}
另外,调闹铃和定时时间、进行12/24选择显示时,有各自的显示程序。
5.3.5闹铃程序
这段程序分别包含了各自的显示、调整程序。
程序思路是对照,走时部分的程序,进行编写,包括显示程序,与显示时间的程序是相似的,闹铃的调整程序与走时调整程序相似
6功能仿真
这部分工作可能遇到的困难是很多的,程序庞大很可能出现各种问题。
在仿真工作中,首先要对仿真软件有足够的了解并能够正确熟练地运用
6.1软件介绍
在这部分工作中用到了keilc51和Proteus两个软件,其中keilc51用来编译程序并生成hex文件,装入Proteus仿真图的芯片中,通过仿真结果一步步进行调整最后达到预期的功能。
6.2仿真过程
(1)仿真图
图6.2.1仿真图
(2)走时仿真:
图6.2.2走时状态下的仿真结果
(3)闹钟设定的仿真:
图6.2.3闹铃仿真结果
结论
通过对数字时钟的设计,更加深了对单片机功能的了解以及各个模块程序的调用,编程。
在实物设计时候遇到了更多的问题,比如芯片的质量问题不能得到保证。
由于用万能电路板搭建,飞线数量特别多,整个实物给人的印象十分复杂,在焊接的过程中难免出现各种错误,经过等的帮助,最终实现了部分功能,在此对他们真挚的感谢
参考文献
1张宏伟李新德单片机应
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 电子钟 设计