毕业论文-数字时钟设计.doc_第1页
毕业论文-数字时钟设计.doc_第2页
毕业论文-数字时钟设计.doc_第3页
毕业论文-数字时钟设计.doc_第4页
毕业论文-数字时钟设计.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

中国海洋大学 数字时钟设计目录第一章 绪论11.1 课题的背景11.2 课题任务和意义11.3主要问题及技术要求11.4 设计的主要工作内容1第二章 设计简介及方案论述22.1 设计简介22.2方案论证22.3芯片选择22.4扩展功能3第三章 硬件系统设计43.1系统总体架构43.2 振荡器53.3 分频器63.4 计数器63.5 led显示的设计63.6 时间调整电路的设计63.7时钟工作原理6第四章 软件系统设计84.1程序流程图84.2程序开发工具的介绍8第五章 设计结果及分析85.1 运行调试结果8总 结9致 谢10参考文献11附录12第一章 绪论1.1 课题的背景计算机尤其是以微细加工技术支持的微型计算机技术飞速发展,其应用渗透到了各行各业。以单片机、嵌入式处理器、数字信号处理器(dsp)为核心的计算机系统,以其软硬件可裁剪、高度的实时性、高度的可靠性、功能齐全、低功耗、适应面广等诸多优点而得到极为广泛的应用。目前计算机硬件技术向巨型化、微型化和单片机化三个方向告诉发展。自1975年美国德州仪器公司(texas instruments)第一块微型计算机芯片tms-1000问世以来,在短短的20年间,单片机技术已发展成为计算机领域一个非常有前途的分之,它有自己的技术特征、规范和应用领域。单片机是自动控制系统的核心部件,主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小、性能突出可靠性高(某些方面的性能指标大大优于通用微机中央处理器)、价格低廉等一系列优点,应用领域不断扩大,除了工业控制、智能化仪表、通信、家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件,已经渗入到人们工作和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,前景广阔。数字钟具备单片机最小系统的基本组成,对于我们了解单片机有很大的帮助。掌握微处理器及其接口的工作原理和应用技术,已成为当代开发微型计算机必不可少的基本技能。在学习了数字逻辑,单片机,嵌入式,微机原理,计算机接口技术等有关硬件知识后。要求我们应将机器语言与系统联系起来,这就要用到汇编语言。汇编语言是接近于计算机语言的一种语言,这种语言是面向机器的,能够直接被计算机识别和执行。汇编语言与机器语言相比编程简单,便于交流,并且保留了机器语言与机器联系密切的优点;与高级语言相比,虽然表面上汇编语言显得复杂,凌乱和可读性差,但就速度而言,汇编语言最快。因此我们必须掌握汇编语言程序设的计的基本技能。1.2课题任务和意义任务:用汇编语言设计数字时钟,要求能显示、修改系统时间。(较高要求:能进行定时、计时)意义:人们对时间计量的精度要求越来越高。高精度的计时工具大多数都使用了石英晶体振荡器, 由于电子钟、石晶表、石英钟都采用了石英技术, 因此走时精确度高, 稳定性好, 使用方便, 不需要经常调校. 数字式电子钟用集成电路计时时, 译码代替机械式传动, 用led显示器代替指针显示进而显示时间, 减小了计时误差.这种表具有时、分、秒、显示时间的功能, 还可以进行时、分、秒的校对。片选的灵活性好。通过本次毕业设计,增强对系统硬件知识的掌握。通过用汇编语言编写应用程序,使自己对所学的理论知识有更深的理解,同时提高分析问题和解决问题的能力。1.3主要问题及技术要求主要问题:如何调用中断,中断返回;怎样显示系统时间,怎样修改时间。技术要求:数据转换显示,数码管显示原理,静态扫描显示原理,设置按键功能。第二章 设计简介及方案论述2.1 设计简介用汇编语言设计数字时钟,本文设计的数字时钟主要实现以下功能:数字时钟显示时间,范围00:00:0023:59:59。设置按键功能,对数字时钟进行调节,按键定义如下,其中开关k1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关k2用于切换修改时、分、秒数值;开关k3用于使相应数值加1调节;开关k4用于减1调节。led数码管即时显示所设时间,设置完成后数码管显示最终时间。2.2 方案论证方案一1计数部分采用异步2-5-10进制计数器7490,计时用的“秒”脉冲信号可用实验板中提供的800hz分频产生。800hz信号同时作为动态扫描显示电路的时钟信号。2时、分校时控制,当校时按钮按下时,可对时、分计数器cp端输入秒脉冲来加速计数速度来达到校时目的。方案二1.用单片机定时器中断原理实现数码管动态10ms循环扫描,同时完成计数功能,并经过多次中断产生“秒”信号。2.可控制按键实现时,分,秒加一,减一功能。考虑到设计硬件简单原则,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点,故本设计采用方案二。2.3 芯片选择鉴于以上方面的分析,本论文选取philips公司生产的一款80c51微控制器p89v51rd2作为此单片机的主芯片,此芯片包含64kb flash和1024字节的数据ram。p89v51rd2的典型特性是它的x2方式选项。利用该特性,设计者可使应用程序以传统的80c51时钟频率(每个机器周期包含12个时钟)或x2 方式(每个机器周期包含6个时钟)的时钟频率运行,选择x2方式可在相同时钟频率下获得2倍的吞吐量。从该特性获益的另一种方法是将时钟频率减半来保持特性不变,这 样可以极大地降低emi。flash程序存储器支持并行和串行在系统编程(isp),isp允许在软件控制下对成品中的器件进行重复编程。应用固件的 产生/更新能力实现了isp的大范围应用。 5v的工作电压,操作频率为040mhz。p89v51rd2的特性: 80c51 核心处理单元; 5v 的工作电压,操作频率为040mhz; 16/32/64kb 的片内flash 程序存储器,具有isp(在系统编程)和iap(在应用中编程)功能; 通过软件或isp 选择支持12 时钟(默认)或6 时钟模式; spi(串行外围接口)和增强型uart; pca(可编程计数器阵列),具有pwm 和捕获/比较功能; 4 个8 位i/o 口,含有3 个高电流p1 口(每个i/o 口的电流为16ma); 3 个16 位定时器/计数器; 可编程看门狗定时器(wdt); 8 个中断源,4 个中断优先级; 2 个dptr 寄存器; 低emi 方式(ale 禁能); 兼容ttl 和cmos 逻辑电平; 掉电检测; 低功耗模式 掉电模式,外部中断唤醒; 空闲模式; dip40,plcc44 和tqfp44 的封装; p89v51rd2的功能框图:图2.1 p89v51rd2功能框图p89v51rd2的管脚配置:图2.2 plcc44管脚配置此外,在本设计中还用到了专门用于串行通信的芯片max232。max232芯片是美信公司专门为电脑的rs-232标准串口设计的接口电路,使用+5v单电源供电。max232内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给rs-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(r1in)、12脚(r1out)、11脚(t1in)、14脚(t1out)为第一数据通道。8脚(r2in)、9脚(r2out)、10脚(t2in)、7脚(t2out)为第二数据通道。ttl/cmos数据从t1in、t2in输入转换成rs-232数据从t1out、t2out送到电脑db9插头;db9插头的rs-232数据从r1in、r2in输入转换成ttl/cmos数据后从r1out、r2out输出。第三部分是供电。15脚gnd、16脚vcc(+5v)。max232管脚图:图2.3 max232管脚图max232主要特点:1、单5v电源工作2、 linbicmostm工艺技术3、 两个驱动器及两个接收器4、 30v输入电平5、低电源电流:典型值是8ma6、符合甚至优于ansi标准 eia/tia-232-e及itu推荐标准v.287、esd保护大于mil-std-883(方 法3015)标准的2000vmax232的芯片图如下:图2.4 max232芯片图2.3 扩展功能本次设计只是实现了显示,修改时间的功能,但此芯片之后还可有如下功能的扩展:1. 实现秒表的功能2. 实现倒计时功能3. 实现闹钟定时功能第三章 硬件系统设计3.1 系统总体构架系统总体架构图如下:cpu主机键盘控制数码管显示数码管显示开关控制数码管显示形式 图3.1数字钟系统结构框图 数字电子钟的原理框图如下所示:图3.2 数字钟逻辑框图3.2 振荡器振荡器是数字钟的核心,振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度.通常选用石英晶体构成振荡器电路。一般来说,振荡器的频率越高,计时精度越高。如下图所示为电子手表集成电路中的晶体振荡器电路。 图3.3 石英晶体振荡电路该电路由f0=32768hz的石英晶体和一个反向器构成稳定性好、精确度高的时间标准信号源。利用石英晶体来控制振荡频率, 电阻为反馈元件, 电容c 防止寄生振荡,调节可变电容c1可以对振荡器的频率进行微调,再通过反向器输出频率为32768hz的方波脉冲信号。3.3 分频器石英晶体振荡器产生较高的32768hz 的频率, 而电子钟需要秒脉冲, 故可采用分频电路实现,分频器的功能主要有两个:(1)产生标准秒脉冲信号。(2)提供功能扩展电路所需要的信号。如仿电台报时用的1khz的高音频信号和500hz的低音频信号,它可由74ls393所组成,其电路图为图3.4所示: 图3.4 分频电路 对于单个二进制计数器而言,周期信号从cp端输入,则可以从q0、q1、q2和q3端分别得到2分频、4分频、8分频和16分频的信号。本电路中石英晶体振荡器产生的32768hz的方波脉冲信号经74ls393的三次16分频和一次8分频成为1hz的信号即秒信号。前三个16分频计数器从q3脚输出。因而不需要清零复位。第四个8分频计数器从q2脚输出,需要在输出的同时让计数器复位清零即构成三位二进制计数器。因此将第二个74ls393的2q2与2cr引脚相连。第2q2脚的输出就是秒信号,又是计数器的复位脉冲信号。3.4 计数器计数器实现方案选择:方案一、采用异步电路,数据选择器将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:显示切换秒钟分钟小时控制1hz脉冲信号图3.5 异步电路图该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。方案二、采用同步电路,总线结构时钟信号分别加到各个模块,各个模块功能相对独立,框图如下:小时分钟秒钟显示控制显示总线控制总线1hz信号图3.6 同步电路图该方案用总线结构,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,本次设计采用此方案。综上所述,本次设计采用方案二。秒计数和分计数为60进制,时计数为24进制,为了简化设计,秒和分计数采用同一单元。控制模块有两部分,一为实现调整切换,二为实现显示切换。现对本方案中的各个主要功能模块的接口定义如下:1. 60进制模块(电路图中模块名称为60count,下同。)实现同步60进制计数,可调整电源5v 时钟信号输入接1hz的信号源进位输入接秒的进位信号,实现秒功能时,接低电平。进位输出秒模块接分模块,分模块接时模块显示输出接到显示总线,能闪烁调整使能端入0有效,有效时,显示信号输出,同时屏蔽进位输入和进位输出,允许调整信号输入。显示使能端入0有效调整信号输入2. 24进制模块(24count)实现同步24进制计数,可调整电源,时钟信号同上进位输入接分的进位信号进位输出秒模块接分模块,分模块接时模块显示输出接到显示总线,能闪烁调整使能端,显示使能端,调整信号输入同上3. 控制模块(fun,func)管理总线资源,对各个模块输出控制信号电源5v vcc调整切换信号接各个需要调整的模块调整信号接到各个需要调整的模块显示切换信号接到各个需要共享显示总线的模块控制信号输出接到各个模块,有且只能有1个为0至此,本阶段就结束了。在上面的接口定义中,也可以发现,各个模块的独立性是很强的,这样的结构使得以后的扩展很容易。计数器电路分析:图3.7 60 进制计数电路分和秒计数器都是模m=60的计数器,其记数规律为0001-、-585900、可选用74ls160作为计数器级联组成,其电路图如上图图7所示:由图可知cr接高电平,秒信号脉冲从cp端输入进行十进制记数,满十通过co输出进位信号,此信号用于控制秒十位计数器的记数。秒十位计数器为六进制计数器。q1、q2的输出端通过与非门输出构成清零复位信号给cr端,从而构成六进制计数器。同时这个信号还要作为秒计数器的进位脉冲送到分计数器。秒十位计数器的cp脉冲的输入要通过一个与门受到秒个位计数器的进位信号co的控制。只有当co=1时,秒计数脉冲才可能通过与门进入秒十位计数器的cp中。分计数器的组成电路与秒计数器的组成电路完全相同。不过进入cp的脉冲信号为由秒十位进位信号与非后输入的信号。时计数器也是由两个74ls160串联组合而成。其电路图如图3.8所示:图3.8 24 进制计数电路本电路采用时24进制显示方式。时个位计数器开始作为十位计数器产生09的计时个位,当下一时间10点到时向上输出进位信号co=1,同时时十位计数器加1,等计时到23点后再来时计数脉冲(即分记述满60)时计数器要清零复位。所以十位计数器的q0和时个位计数器的q1通过与非门产生清零复位信号,使时计数器具备0023循环计数的功能。然后将六个计数器的计数结果通过计数器的q0-q3输出端送到七端显示译码驱动电路中。3.5 led显示的设计显示器的选择显示器分为led和lcd两种。led显示器与lcd显示器相比,led在亮度、功耗、可视角度和刷新速率等方面,都更具优势。led与led的功耗比大约为10:1,而且更高的刷新速率使得led在视频方面有更好的性能表现,能提供宽达160的视角,可以显示各种文字、数字、彩色图像及动画信息,也可以播放电视、录像、vcd、dvd等彩色视频信号,多幅显示屏还可以进行联网播出。而且成本低,可以降低系统的成本,而且在相同的条件下,led要比led耐用。有机led显示屏的单个元素反应速度是lcd液晶屏的1000倍,在强光下也可以照看不误,并且适应零下40度的低温。利用led技术,可以制造出比lcd更薄、更亮、更清晰的显示器,拥有广泛的应用前景。由于采用能够发光的有机材料,有机led发光不需要背光,比液晶显示器造价更低,耗电量更少。本课题选择led显示。下面是本设计用到的led线路图:图3.9 led显示线路图发光二极管导通时,产生一个正向的工作电流if,工作电流根据发光二极管的材料、功率等不同,额定电流一般在1040ma左右,发光二极管导通时的正向压降vf比较大,一般为1.53v(普通硅二极管约为0.7v)。因此在正常使用中,为了保证发光二极管在电源电压v的作用下管子的工作电流不超过额定值,必须给发光二极管串联一只限流电阻r,r的阻值可由下式算出:r(v-vf)/if。其中v为工作电源电压,vf为发光二极管的正向压降,if为额定工作电流。 从上面原理图3.9可知,当单片机的p1.7输出低电平(0v)时,有正向工作电流流过发光二极管,发光二极管就亮;相反,当p1.7输出高电平(5v)时,发光二极管没有足够电压差产生工作电流,此时发光二极管不亮。因此,程序中只需交替让单片机的p1.7输出低电平“0”和高电平“1”就可以让发光二极管闪烁发光。数码管使用说明:数码管管脚图,可以忽略型号,基本通用。0.5寸单联共阴高亮红色数码管 图3.10 led数码管管脚图共阴连接与共阳连接如下图:图3.11 共阴连接与共阳连接图数字对应数码管显示控制转换字节(共阴编码)abcdefg显示字形11111110000000消隐1111110011000011011011111001011001110110110011111111000011111111110011 共阳为编码取反即可,接线为高低端口对应接法。 3.6 时间调整电路设计当电子钟接通电源或者计时发现误差时, 均需要校正时间。校时电路分别实现对时、分和秒的校准。(1)时、分时间调整电路 其电路图如图所示: 图3.12时、分调整电路当开关s1接地时,相当于输入0,与非门被关闭,秒脉冲信号无法输入,数字电子钟正常工作。当开关s1接+5v时相当于输入1,与非门被打开,秒脉冲信号直接输入到时/分计数器中。时/分计数器按秒进行计数;当时/分计数器调整到正确的时间时,马上将开关s1切换到接地,数字电子钟进入正常工作状态。从而时计数器的调整。(2)秒时间调整电路:电路图为图3.13所示; 图3.13 秒时间调整电路当s3开关接+5v时,相当于输入1,与门打开,秒脉冲信号正常输入,数字电子钟正常工作;当s3开关接地时,相当于输入0,与门关闭,秒脉冲信号无法输入到秒计数器中,秒计数器暂停计数。当秒计数器显示的时间秒值与标准的时间秒值相同时,马上将开关s3切换到接+5v。数字电子钟要进入正常工作状态,从而实现秒计数器的调整。由数字钟系统组成框图按照信号的流向分级安装,逐级级联。这里的每一级是指组成数字钟的各功能电路。级联时如果出现时序配合不同步或尖峰脉冲干扰引起逻辑混乱,可以增加多级逻辑门来延时。3.7 工作原理电路通电后,由于计数器和译码器驱动电路的状态不同,数字电子钟的显示时间要通过校时电路来调整。石英晶体振荡器产生的f=32768hz的标准时间信号经过两个74ls393二进制计数器级联分频后,从第二个74ls393的9脚输出f=1hz的秒方波信号,它既是秒计数器的计数脉冲,同时又作为时、分校正电路的校正信号。秒脉冲信号经与门送入秒计数器的个位进行计数,秒计数器个位从0开始计数,到9后co输出进位信号,秒十位计数器加1,如此循环下去,当秒十位计数到6时(即q1=q2=1),向分计数器送出进位信号,从而完成秒六十进制计数;分六十进制计数器工作原理与秒计数器完全相同;时计数器的个位在分计数器输入的进位信号作用下进行09的计数,到9后再接受到分进位信号,时个位的co输出1,通过与门输出计数脉冲使时十位的计数器加1,当时十位和时个位显示11点时,再有分进位信号脉冲输入,则时十位的q0=1、时个位的q1=1,经与非门输出为0,使时十位和个位清零复位,显示为00点。各计数器的输出端输出的bcd码,输出到led共阳极数码管进行时间的显示。第四章 软件系统设计4.1 程序流程图主程序流程图:是否有按键拆分,即把两位数放到数码管上跳到按键子程序while死循环初始化程序图3.14主程序流程图此为主程序流程图,初始化后,就一直在while里循环,并把秒,分,时分别拆成各位和十位两个数,放到相应的数码管上显示,并检测是否有按键按下,和定时器t0,t1溢出,来执行相应的键盘子程序和定时器0,1的中断程序。定时器0流程图:重新初始化t0t+,t0+秒分时计算,ss=60,则ss=0,mm+。分,时同理计算t0是否为2t0=0数码管循环显示一位显示相应数码管的数值第三个开关是否按下j=10j=610t是否为jt=0开关2是否按下秒加一开关一是否按下开定时器1,关定时器0开定时器0,关定时器1进入主程序图3.15 定时器0程序流程图此为定时器0流程图,在主程序检测到t0溢出时执行该子程序,该中断主要执行数码管循环显示数字,并检测到一秒后秒加一的功能。 定时器t1流程图:重新初始化t1t+,t0+秒分时计算,ss= -1,则ss=59,mm减一。分,时同理计算t0是否为2t0=0数码管循环显示一位显示相应数码管的数值t是否为jt=0开关2是否按下秒减一开关一是否按下开定时器1,关定时器0开定时器0,关定时器1进入主程序j=610,图3.16 定时器1程序流程图此为定时器1流程图,在主程序检测到t1溢出时执行该子程序,该中断程序主要执行数码管循环显示数字,并检测到一秒后秒减一的功能。4.1 程序开发工具的介绍本设计的程序是在keil uvision2下编译调试的。keil uvision2是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、c、pl/m语言。下面介绍一下uvision2集成开发环境:一、项目管理 工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。 一个单一的uvision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。 uvision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定 微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速器(math accelerator)的特性。 uvision2可以为片外存储器产生必要的连接选项:确定起始地址和规模。 二、集成功能 uvision2的强大功能有助于用户按期完工。 1.集成源极浏览器利用符号数据库使用户可以快速浏览源文件。用详细的符号信息来优化用户变数存储器。 2.文件寻找功能:在特定文件中执行全局文件搜索。 3.工具菜单:允许在v2集成开发环境下启动用户功能。 4.可配置svcs接口:提供对版本控制系统的入口。 5.pclint接口:对应用程序代码进行深层语法分析。 6.infineon的easycase接口:集成块集代码产生。 7.infineon的dave功能:协助用户的cpu和外部程序。dave工程可被直接输入uvision2 三、编辑器和调试器 1.源代码编辑器 uvision2编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对c源代码进行和优化。可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。 2.断点 uvision2允许用户在编辑时设置程序断点(甚至在源代码未经编译和汇编之前)。用户启动v2调试器之后,断点即被激活。断点可设置为条件表达式,变量或存储器访问,断点被触发后,调试器命令或调试功能即可执行。 在属性框(attributes column)中可以快速浏览断点设置情况和源程序行的位置。代码覆盖率信息可以让你区分程序中已执行和未执行的部分。 3.调试函数语言 uvision2中,你可以编写或使用类似c的数语言进行调试。 下面是系统界面图:图4.1 keil uvision2界面图第五章 设计结果及分析5.1 运行调试结果把编好的程序输入新建在软件keil里的工程里,保存,运行,显示结果为时、分之间的分隔点的闪烁体现时间精度为0.5秒,数码管显示当前的时间值。调试:建立一个新工程,输入上面的源程序,最后编译得到一个key-led2-test.hex目标文件,接好线路,用编程器把key-led2-test.hex写入单片机中,刚开始按一下实验板上的复位键,led数码管显示程序初始化给存储单元所付的初值,六个显象管分别显示时,分和秒的十位和个位,通过电路把六个显象管调为零,通过按键分别调时分的十位,个位。调为23,把分调59,然后等一分钟,如果显象管的时分的十位,个位都显示为0,那就说明调试成功,如果不对再次修改自己的程序,在测试,直到正确为止。在测试工程中,不但要认真观察和检测,还要认真记录,包括记录观察的现象,测量的数据,通过数据才能把实际观察的现象和理论预计的结果加以定量比较,从中发现问题,加以改进,最终完成设计。在这个设计中主要测试时间是否正确,是否能符合设计的要求。在调试运行时要学会用单步调试:图5.1 keil uvision2单步调试界面图下面是简单的示意图:总结利用中小规模的集成电路设计了一台性能先进的数字电子钟。该数字电子钟具有显示当前时、分、秒的时间、调整系统时间等功能。在该系统中集成计数器是关键部件,由它构成了60进制秒计数器、60进制分计数器和24进制时计数器,并用led七段数码显示器显示这三个计数器的输出。在调时电路中,秒调整电路和分、时调整电路分别采用等待校时和加速校时来校对当前的显示时间。两个月的毕业设计结束了,我的收获很多。特别是对调试程序有了一个新的认识。记得在调试过程中,我发现只有通过不断的调试,才能最终保证程序达到正确的执行效果。系统设计是为了满足特定功能上的需求,而不断的调试,不断的修改才能发现和改正系统中的一些潜在的问题。正是这种发现的问题的过程,才能真正的保证程序的正确性,可靠性。所以,调试设计的目的是尽可能多的发现问题。故在设计调试用例的时候,要全盘的考虑程序运行的每一个细节,每一种可能会出现的结果,尤其是特殊情况的用例。设计用例的时候还要考虑用例在执行的过程中应该出现哪些结果,不应该出现哪些结果,可能出现的其他结果。而且,还要有经得起挫折的心理准备。因为,很可能自己设计的用例是没有意义的,或者是出现了以前从没遇到过的新情况。怎样才能做得更好。另外,通过对本次毕业设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次毕业设计,我巩固了所学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用debug指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。致谢本次课程设计最终能顺利完成,最主要的还是要感谢王克进老师的指导。这次课程设计对单片机硬件从整体上有了一个全面的接触,经过亲手来设计直致完成,让我对单片机知识从理论上到实践上有了一个大的转变。在我毕业设计的时间里,我的老师王克进,使我在各方面都得到了很大的提高。特别是王老师在研究上对问题的敏锐洞察力和孜孜不倦的治学精神,以及在科研上的创新精神和侮人不倦的名师风范,都使我受到了很大的启发和影响,王老师的言传身教将使我受益终生。最后,衷心感谢各位评委于百忙之中抽出宝贵的时间审阅本文。不妥之处,敬请各位老师批评指正。参考文献1.王松武 电子创新设计与实践 国防工业出版社 2005.12.黄志伟 全国大学生电子设计竞赛训练教程 电子工业出版社 2005.13.王 津 单片机原理与应用 重庆大学出版社 2004.24.谢自美 电子线路设计实验测试 华中科技大学出版社 2007.85.徐爱钧 智能化测量控制仪表原理与设计 北京航空航天大学出版社 2007.86.陈立周、陈宇 单片机原理及其应用 机械工业出版社 2006.87.王庆利、刘奎 单片机设计标准教程 北京邮电大学出版社 2008.38.吴慎山 电子线路设计与实践 电子工业出版社 2005.99.刘海燕 数字电路制作与调试 电子工业出版社 2008.910.边春元 c51单片机典型模块设计与应用 机械工业出版社 2008.411.谢维成 单片机原理与应用及c51程序设计 清华大学出版社 2006.812.张毅刚 新编mcs-51单片机应用设计 哈尔滨工业大学出版社 2008.413.胡汗才 单片机原理及其接口技术 清华大学出版社 2008.1014.张毅刚、彭喜元 单片机原理及接口技术 人民邮电出版社 2008.1115.童诗白、华成英 模拟电子技术基础(第三版) 高等教育出版社 20013 16.p89v51rd2芯片手册 philips公司附录附录一 p89v51rd2芯片管脚图附录二 芯片管脚功能附录三 程序代码;* 键盘代码定义 *key_k1_code equ 04hkey_k2_code equ 08hkey_k3_code equ 10hkey_k4_code equ 20hkey_k5_code equ 40hkey_k6_code equ 80hk1 bit p3.2k2 bit p3.3k3 bit p3.4k4 bit p3.5k5 bit p3.6k6 bit p3.7;*funtion equ 2eh ;设置时功能确定key_buffer equ 2fh ;按键键值存储单元;* 实时时钟存储单元定义 *ms0 equ 37h ; ms1 equ 38h ;0.5秒单元second equ 39h ;秒minute equ 3ah ;分hour equ 3bh ;时week equ 3ch ;星期day equ 3dh ;日month equ 3eh ;月year equ 3fh ;年led_buffer equ 50h ;led数码显示器 ;显示缓冲区50h-56h ; 放入显示代码led_count equ 58h ;led 显示位置计数 ;数值 0-6sp_addr equ 60h ;堆栈指针地址key_press bit 00hsetup_flag bit 01hflash_flag bit 02hbell_flag bit 03htime_1s_flag bit 04hled_seg_port equ p0 ;led 段码输出控制口led_site_port equ p2 ;led 位码输出控制口key_port equ p3 ;键盘状态输入口bell bit p2.7 ; 15h, 14h, 13h, 12h, 11h, 10hflash_disp equ 22h ; d5, d4, d3, d2, d1, d0 =1对应数码显示器闪烁 ; led1,led2,led3,led4,led5,led6dclk_dat equ 38h ;中断次数数值 250次=1秒d_led equ 40h ; 段值 (动态扫描)w_led equ 41h ; 位值 (动态扫描) led_dat equ 42h ; 6位数码管 0-5setup_fun equ 43h ; 闪烁位切换 0-7(千年,年,月,日,周,时,分,秒) ;*;* org 0000h jmp start ;初始化程序 org 000bh jmp int_t0 ;定时器t0中断服务子程序 org 0030h start: mov sp,#sp_addr call sys_init setb ea setb bell_flag call delay_1s clr bell_flag call delay_5s call led_clear call read_key ;读按键值 jnb key_press,main clr key_press mov a,key_buffer cjne a,#key_k5_code,st2 call key_code_test st2: cjne a,#key_k6_code,main call led_testmain: call clock ;电子钟计时 call zx_time_ctrl ;作息时间控制 call get_clock ;得电子钟数据放入led显示缓冲区 call read_key ;读按键值 ;有键按下时,将键值存入键代码存储器 ;并设置键按下标志 key_pres=1 jnb key_press,mn1 clr key_press call key_fx mn1: call delay_100ms jmp main;*led_clear: mov led_buffer+0,#20h mov led_buffer+1,#20h mov led_buffer+2,#20h mov led_buffer+3,#20h mov led_buffer+4,#20h mov led_buffer+5,#20h mov led_buffer+6,#20h ret;*code_disp: mov led_buffer

温馨提示

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

评论

0/150

提交评论