收藏 分销(赏)

数字式电子钟设计.doc

上传人:胜**** 文档编号:3142338 上传时间:2024-06-19 格式:DOC 页数:14 大小:365.50KB 下载积分:10 金币
下载 相关 举报
数字式电子钟设计.doc_第1页
第1页 / 共14页
数字式电子钟设计.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
单片机数字时钟设计 摘要   单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高, 因为在程序的执行过程中, 任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 本设计使用12MHZ晶振与单片机AT89C52相连接,以AT89C52芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用74HC244驱动电路,实现在6个LED数码管上显示日期、时间、定时、闹铃,通过6个按键实现设置日期、进行调时、设定闹铃、倒计时等功能,在实现各功能时数码管进行相应显示,闹铃或定时时间到时蜂鸣器响,按下闹铃键或定时键时,声音停止。软件部分用C语言实现,分为显示、延迟、调时、闹铃、定时、调整日期等部分。通过软硬件结合达到最终目的。 关键词: 电子钟; 单片机; 动态扫描; C语言 目录 1 引言 3 2 整体设计思路及其方案的选择 4 3 主要元件的使用方法 4 3.1 AT89C52单片机 5 3.2 74HC244驱动器 5 3.3 DS18B02液晶显示 6 4 电路设计 7 4.1整体设计 7 4.2 分块设计 7 4.2.1 输入部分 7 4.2.2 输出部分(显示电路) 8 4.2.3 晶振与复位电路: 9 5 程序设计 9 5.1程序思路 9 5.2程序设计步骤 10 5.3程序的主要模块 10 5.3.1延迟程序 10 5.3.2 中断服务子程序 11 5.3.3 主程序 11 5.3.4显示程序 11 5.3.5 闹铃程序 12 6 功能仿真 12 6.1 软件介绍 12 6.2 仿真过程 12 参考文献 14 单片机数字时钟设计 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.1 AT89C52单片机 单片机的结构如下: 图3.1.1 单片机引脚图 在使用时VCC接电源电压,GND接地。P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。XTAL1和XTAL2接复位电路。这些可以在硬件设计部分体现出来。 3.2 74HC244驱动器 74HC244芯片的功能  如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。 74HC244芯片的引脚排列如图1所示。 74HC244芯片的引脚 74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。当1/OE和2/OE都为低电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,输出呈高阻态。 图1 3.3 DS18B02液晶显示 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程序思路 初始化 按key1 显示 按key3键 按key4键 按key6键 若无按键 调时 调闹钟 调格式 显示所调时间 显示闹铃时间 显示时间格式 调整时限到 或有其他输入 图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的程序,此程序需要反复调用。 void Delay1ms(unsigned int x) {uchar i,j; for(i=x;i>0;i--) for(j=148;j>0;j--);} 5.3.2 中断服务子程序 中断服务程序中,总体思路是:由于初值是3CB0H,所以装满定时器需要50ms的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。 5.3.3 主程序 主程序主要对按键进行扫描,以及判断闹铃时间是否已到,若到则调用声音程序,该段程序如下: void main() { unint(); LCDINIT();while(1) {shezhijian();tuichujian();if(flag==1) {switch(m){case 0:shijian();tek1();break; case 1:sheding();xianshi2();break; case 2:laozhong();tek(); break;} } else{fengmingqi();xianshi1();}} 5.3.4显示程序 液晶进行显示,分别显示1ms,这依赖的是人们视觉的惰性,该段程序如下: void display(uchar address,uchar *str) { uchar i;for(i=0;i<14;i++)//写显示第一行 {wcomd(address+i); Delay1ms(1);wdata(str[i]);Delay1ms(1);}} void data_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 张宏伟 李新德 单片机应用技术 北京 北京理工大学出版社 2 李淑华 C语言程序设计教程 中国水利水电出版社 3 浣喜明 姚为正 电力电子技术 高等教育出版社 4 周华 数字电子技术 西南交通大学出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服