课程设计(论文)-单片机数字电子时钟.doc_第1页
课程设计(论文)-单片机数字电子时钟.doc_第2页
课程设计(论文)-单片机数字电子时钟.doc_第3页
课程设计(论文)-单片机数字电子时钟.doc_第4页
课程设计(论文)-单片机数字电子时钟.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

单片机数字钟1目目录录摘摘要要.1前前言言.2第一章第一章.31.1概述.31.2单片机的发展历程.31.3时钟的特性.3第第22章章系统原理与硬件设计系统原理与硬件设计.42.1硬件选择.42.2单片机的构成.42.3AT89C52单片机的引脚说明.52.4LED简介.7第三章第三章软件设计软件设计.103.1框架图.10第第44章章调试过程及数据分析调试过程及数据分析.234.1硬件调试.234.2KEIL调试.234.3开发板调试.24结论结论.24参考文献参考文献.25单片机单片机CC语言程序设计语言程序设计.新余新余:新余高专新余高专.25李光飞等李光飞等.单片机单片机CC程序设计实例指导程序设计实例指导.北京北京:北京航空航天大学出版社北京航空航天大学出版社.25胡汉才胡汉才.单片机原理及系统设计单片机原理及系统设计M.M.北京北京:清华大学出版社清华大学出版社.26附录附录.261.1.电路图电路图.262.2.程序调试程序调试.27.3.3.实物连接图实物连接图.28单片机数字钟1摘摘要要本次设计采用AT89c52内部定时器、中断等功能,和外部数码管,驱动器等构成。电子时钟电路采用24小时制记时方式时间用6位数码管动态显示。使用5V电源供电,并且在按键的作用下可以进入省电(不显示LED数码管)和正常显示两种状态。关键词:数码管、关键词:数码管、AT89c52AT89c52ThedesignoftheadjustabledigitalclockbaseonAT89S52AbstractThispaperintroducedthedesignoftheadjustabledigitalclockbasedonAT89S52thespecificprocessofhowthesystemhardwareandsoftwareachievedweredetaileddescriptionthroughthedesignofadjustabledigitalclock.ThemodulardesignandproductionwhichconsistedofMCUmoduleclockmoduleandtheassociatedcontrolmoduleweremainlyrecounted;Aswellashardwaredesigning,softwaredesignusethesameconsistssuspensionmodule,timeadjustmoduleandthatusetheClanguagetoachievebecauseofitssimpleandstrongnegotiability.Inthisdesignthefunctionsoftimerunandchangefunctionsoftheyearmonthanddaydisplayhavebeenachieved.Keywords:AT89S52microcontroller单片机数字钟2前前言言一块单片机芯片就是一台计算机,由于单片机以其集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点使它应用于智能仪器仪表、机电一体化、实时程控、人类生活中。除此之外还广泛应用办公自动化领域、商业营销领域、汽车及通信系统、计算机外部设备等各领域中,并且单片机已成为计算机发展和应用的一个重要方面。由此可见掌握单片机的使用方法和利用单片机解决实际问题具有重要的意义。本次设计根据AT89c51单片机系统扩展的基本原理和方法、常用总线标准和典型接口电路的应用,结合本次设计的题目要求进行系统扩展,通过单片机驱动时、分、秒显示,最后通过74LS04驱动LED动态显示的方式完成设计任务,设计论文中附有电路图、程序清单、各数据存储单元的所在地址和输入输出口对应表。因水平有限,难免有疏落不足之处,恳请老师和同学能给予批评指正。单片机数字钟3第一章第一章1.1概述概述随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了极大的方便。走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。目前,单片机以其可靠性高和智能性等特点被广泛应用到工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等领域中,并已经进入家庭,因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之一。1.2单片机的发展历程单片机的发展历程单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段,16位定时器计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。、32位单片机推出阶段,以满足不同的用户需要。纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发1.3时钟的时钟的特性特性1.省电(关闭显示)功能2.以24h(小时)计时方式3.整点报时4.用六位共阴LED数码管显示时、分、秒5.使用按键开关可实现时分调整、秒表功能转换6.使用按键开关可实现时分调整、时钟功能转换等功能。这里用到中断,50ms的产生一次。然后累加到20次,秒表就加1.。每60单片机数字钟4秒分值加1。每60分时加1,每24小时日加1.以此类推。第第2章章系统原理系统原理与硬件设计与硬件设计2.1硬件硬件选择选择(2)单片机的选择选用AT89c52单片机,并配备12MHz晶振,复位电路采用上电复位。(3)显示电路选择采用软件译码动态显示,P3.0-P3.3作数码管的位选口。P1.0-P1.6作数码管的段选口。考虑直接用单片机IO口作位选时驱动功率不够,用ULN2803作为6个共阴数码管的位增强驱动器。(4)电源选择采用直流5V电源供电。(5)选择器的选择74ls04(实际物理硬件用ULN2803代替)。(6)AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。芯片上的FLASH允许在线编程或采用通用的非易失存储编程器对存储器重复编程。2.2单片机的构成单片机的构成AT89c51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器计数器和多种功能的IO线等一台计算机所需要的基本功能部件,AT89C52单片机单片机内包含下列几个部件:(1)一个8位CPU;(2)一个片内振荡器及时钟电路;(3)可反复擦写(1000次)的8K字节ROM程序存储器;(4)256字节RAM数据存储器;单片机数字钟5(5)3个16位定时器计数器;(6)可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;(7)32条可编程的IO线(四个8位并行IO端口);(8)一个可编程全双工串行口;(9)2个外部中断源,共6个中断源;其内部机构框图如图2.2所示:图2.2MCS-51单片机内部机构框图2.3AT89c52单片机的引脚说明单片机的引脚说明AT89c52单片机采用40条引脚双列直插式器件,引脚除5V(40脚)和电源地(20脚)外,其功能分为时钟电路、控制信号、输入输出三大部分,逻辑框图及引脚图分别如图2.4(a)(b)所示单片机数字钟6(a)(b)图2.4AT89c52单片机逻辑图与引脚图AT89C52单片机的内部硬件结构中除了程序存储器由FLASH取代了87C51单片机的EPROM外,其余部分完全相同,其管脚说明如下:(1)VCC:供电电压(2)GND:接地(3)时钟电路XTAL1(19脚)芯片内部振荡电路(单级反相放大器)输入端。XTAL2(18脚)芯片内部振荡电路(单级反相放大器)输出端。(4)控制信号RST(9脚)复位信号:时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口P3口输出高电平,将初值07H写入堆栈指针。ALE(30脚)地址锁存信号:当访问外部存储器时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。另外,ALE可驱动4个TTL门。单片机数字钟7(29脚)片外程序存储器读选通:低电平有效,作为PSENPSENPSEN程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,可驱动8个TTL门。PSENVpp(30脚):当为高电平且PC值小于0FFFH时,CPU执行内部程序存储器EAEA程序;当为低电平时,CPU仅执行外部程序存储器程序。EA2.4LED简介简介LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.7(a)是共阴和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将b和c段接上正电源,其它端接地或悬空,那么b和c段发光,此时,数码管显示将显示数字“1”。而将a、b、d、e和g段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它数字的显示原理与此类同。LED的7段数码管利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。在这次的设计中采用的均是共阴极的LED显示,当IO口输出为高电平的时候,对应段就被点亮。LED数码管的结构图如图2.7(b)所示。单片机数字钟8(a)(b)图2.7LED分类结构图和结构图这次设计的显示部分采用AT89c51单片机动态扫描完成,在多数的应用场合中,我们并不希望使用多IO端口的单片机,原则上是使用尽量少引脚的器件。在没有富余端口的情况下,应通过优化设计程序和扩展电路达到预期的目的。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。LED显示电路(1)静态显示电路LDE显示器工作在静态显示时,其公共阳极(或阴极)接VCC(或GND),一直处于显示有效状态,所以每一位的显示内容必须由锁存器加以锁存,显示各位相互独立。(2)动态显示电路将所有位的段选线的同名端联在一起,由一个8位IO口控制,形成段选线的多位复用。而各位的公共阳极或公共阴极则分别由相应的IO口线控制,单片机数字钟9实现各位的分时选通,即同一时刻只有被选通位是能显示相应的字符,而其他所有位都是熄灭的。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。这就需要单片机不断地对显示进行控制,CPU需要不断地进行显示刷新,动态显示电路参见图2.8,图2.8中是扩展了五位的LED数码管显示,用一个74LS04作为五个LED的段选输入,采用动态显示的方式连接。类似地,16位的LED数码管显示也可以用这种方法来实现。图2.8五位LED数码管的动态显示单片机数字钟10第三章第三章软件设计软件设计3.1框架图框架图显示时钟显示闹钟2S长击P2切换开关闹钟P2IN2P1显示日历2SP3IN2开关显示P0秒表功能P1开始P1停止P2短击P0长击P0时钟分调节P1分加一长按连加分减一长按连减P2时钟时调节P1时加一长按连加时减一长按连减P2P0闹钟分调节P1分加一长按连加分减一长按连减P2P0闹钟时调节P1时加一长按连加时减一长按连减P2P0同理年月日调节固定20 xx年开始P0按键流程与工作状态的转变按键用到:闭合动作、断开动作单击、连击、短击、长击闹钟开时间到开始闹铃(45s)P0P1P2退去整点报时(0:00-23:00)单片机数字钟11闹钟关(ONXXXX)如00:00闹钟开(OFXXXX)如00:00关显示(省电模式)显示日历格式(20XXXXXX)如:2010-04-21单片机数字钟12程序清单如下程序清单如下电子时钟设计功能描述:时钟日历秒表闹钟(有问题)整点报时(有问题)等功能#include#definecomP2sbitw=P10功能转换按键sbitw1=P11加与秒表开始与暂停键sbitw2=P12减与秒表复位键sbitpin=P13显示开关键sbitnao=P15整点报时信号输出unsignedcharleab10=0 x3f0 x060 x5b0 x4f0 x660 x6d0 x7d0 x070 x7f0 x6fchartimes11=00000001001110数组#definestimes0显示时钟秒存放位置#defineftimes1显示时钟分存放位置#definehtimes2显示时钟时存放位置#definenftimes3显示闹钟分存放位置#definenhtimes4显示闹钟时存放位置#definednftimes5定时闹钟分存放位置#definednhtimes6定时闹钟时存放位置#definednswtimes7定时开始关闭100为关,101为开#definedaytimes8显示DAY存放位置#definemontimes9显示月存放位置#defineyealtimes10显示年存放位置,固定从20002099年之间调整unsignedcharx=0y=0n=0zkjsssX为中断次数,y秒表计数器z为hao秒计数器,n为状态值bitvq=1nwv表示秒表起停状态NW表示闹钟开停状态chardays_sum()charaswitch(mon)判断这月有多少天case1:a=31breakcase3:a=31breakcase5:a=31break单片机数字钟13case7:a=31breakcase8:a=31breakcase10:a=31breakcase12:a=31breakcase4:a=30breakcase6:a=30breakcase9:a=30breakcase11:a=30breakcase2:if(yeal%4=0)a=29elsea=28break是润年二月加一天returna中断函数每过10ms中断一次,每经过100次产生一秒voidtime(void)interrupt1using1unsignedcharaTH0=5555625610ms55536TL0=55556%256考虑中断响应时间x+if(w=0|w2=0|w1=0)z+if(x=100)产生100次中断秒加一10ms100=1Ssss+x=0s+if(s=60)秒大于60分加一秒等于0s=0f+if(f=60)分大于60时时加一分等于0f=0h+if(h=24)时大于24时DAY加一时等于0h=0day+a=days_sum()判断闰年的公式yeal%400|(yeal%4&yeal%100!=0)if(daya)大于这月的天数月加一DAY等于1day=1mon+if(mon12)月大于12年加一月等于1mon=1yeal+单片机数字钟14if(yeal99)yeal=0固定从20002099年之间调整if(n=1&v)秒表计数器yy+if(y=100)y=0k+if(k=60)k=0j+if(j=60)j=0延时函数1ms延时voiddelay(unsignedcharz)unsignedcharxyfor(x=zx0 x-)for(y=10y0y-)扫描函数x控制选中调整数码管闪烁n判断选中的位闪烁voiddisp(unsignedcharabc)com=0 x00P3=0 x00if(q)if(n=4|n=7)&x=100)c=100|c=101com=0 x3felsecom=leabc10delay(20)com=0 x00P3=0X02if(c=100)com=0 x52单片机数字钟15elseif(c=101)com=0 x71elsecom=leabc%10delay(20)if(n=3|n=6|n=8)&x200)nw=nwif(nw)dnsw=101elsednsw=100sss=0while(sss200)z=180f-disp(sfh)if(f=24)h=0if(z200)z=180h+disp(sfh)while(w1)z=0disp(sfh)if(w2=0)h=h-1doif(h200)z=180h-disp(sfh)while(w2)单片机数字钟19if(w=0)breakn=5为d定闹分调节功能while(n=5)z=0if(w1=0)dnf+doif(dnf=60)dnf=0if(z200)z=180dnf+disp(dnfdnhdnsw)while(w1)z=0disp(dnfdnhdnsw)if(w2=0)dnf-doif(dnf200)z=180dnf-disp(dnfdnhdnsw)while(w2)if(w=0)breakn=6为定闹时调节功能while(n=6)z=0if(w1=0)dnh+doif(dnh23)dnh=0if(z200)z=180dnh+disp(dnfdnhdnsw)while(w1)z=0单片机数字钟20disp(dnfdnhdnsw)if(w2=0)dnh-doif(dnh200)z=180dnh-disp(dnfdnhdnsw)while(w2)if(w=0)breakn=7年调整功能while(n=7)z=0if(w1=0)yeal+doif(z200)z=180yeal+if(yeal=100)yeal=0disp(daymonyeal)while(w1)z=0disp(daymonyeal)if(w2=0)yeal-doif(z200)z=180yeal-if(yeal200)z=180mon+if(mon12)mon=1disp(daymonyeal)while(w1)z=0disp(daymonyeal)if(w2=0)mon-doif(z200)z=180mon-if(mon200)z=180day+if(daya)day=1disp(daymonyeal)while(w1)z=0disp(daymonyeal)if(w2=0)day-doif(z200)z=180day-if(day1)day=a单片机数字钟22disp(daymonyeal)while(w2)if(w=0)break闹钟判断45sif(f=dnf&h=dnh&nw&s=0)while(s=0)&(h=23)&(s=0)&(f=0)while(s1)nao=1delay(1)disp(sfh)单片机数字钟23第第4章章调试过程及数据分析调试过程及数据分析4.1硬件调试硬件调试硬件调试的调试比较困难。因为是调试所以不能对元件进行焊接,只能把各个元件用导线连接起来。调试的整体过程是:各个系统逐个调试,各部分调试成功后再进行组装后的整体调试。调试过程包括:1.显示部分的调试问题:数码管的显示不稳定,最左边的一个数码管显示亮度明显比其他5个的亮,受干扰影响比较大。分析:应该是ULN2803的问题,更换为反相器74LS04可解决。2.控制部分的调试问题:按下按键后数据有时正常有时又不正常,数据的加减不稳定。分析:根据分析有两个问题可以导致此种现象,一是按键接触不良可能有短路,二是程序部分有问题。用万用表测量后发现按键按下后不稳定,更换质量更好的按键后故障即排除。4.2KeiL调试调试启动Keil软件,选择“Project”菜单下的“NewProject”命令,输入项目的文件名,选择存储路径,点击“保存”按钮。在“SelectDevice”窗口中选择“Atmel”下的“AT89C51”芯片,单击“确定”按钮。展开“ProjectWorkspace”窗口中的“Target1”右击“Target1”,选择“OptionsforTargetTarget1”选择“Target”选项在Keil(MHZ)右边输入“12m”。选择“Debug”选项,选择“UseKeilMonitor-51Driver”。单击“Settings”按钮,串口选择“COM1”波特率选择“38400”,单击“OK”按钮。右击“SourceGroup1”,选择“AddfilestoGroupSourceGroup单片机数字钟241在文件类型中选择“AsmSourcefile”找到将要编译的程序,单击“ADD”按钮,然后再单击“CLOSE”按钮。单击“Rebuildalltargetfiles”在“Build”窗口中观察编译结果,根据提示修改程序,直到没有错误出现。4.3

温馨提示

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

评论

0/150

提交评论