欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    最新版基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文.docx

    • 资源ID:16760794       资源大小:36.42KB        全文页数:74页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新版基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文.docx

    1、最新版基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文单片微型计算机课程设计报告多功能电子数字钟姓 名学 号班 级指导教师许伟敏电气二班林卫一:概述1二:设计基本原理简介2三:设计要求及说明3四:整体设计方案4系统硬件电路设计4系统软件总流程设计模块划分及分析56五:单模块流程设计8各模块设计概述、流程图模块源程序集合及注释813六:单模块软件测试23七:系统检测调试24硬件电路调试软件部分烧写调试八:系统优化及拓展26九:心得体会28单片微型计算机课程设计一、概述基于汇编语言的电子数字钟概述课程设计题目:电子数字钟应用知识简介: 51 单片机单片机又称单片微控制器,它不是完成某一

    2、个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内 51 系列单片机仍将占据嵌入式系统产品的中低端市场。 汇编语言汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以

    3、与高级语言配合使用,应用十分广泛。 ISPISP( In-System Programming)在系统可编程,是当今流行的单片机编程模式,指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。已经编程的器件也可以用 ISP 方式擦除或再编程。本次课程设计便使用 ISP 方式,直接将编写好的程序下载到连接好的单片机中进行调试。选题系统功能分析硬件电路设计整体流程设计及模块划分模块流程设计模块编码测试系统合成调试编译下载调试(含硬件电路调试及软件烧写调试)验收完成总结报告课程设计流程图选题目的及设计思想简介:课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计

    4、独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展, 在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的办法进行设计,借鉴在软件工程中学习到的软件设计流程和规范来完成系统设计并在设计过程中体会软件设计的流程。06 电气工程及其自动化 2 班许伟敏41单片微型计算机课程设计基于汇编语言的电子数字钟设计基本原理简介二、设计基本原理简介数字钟的设计首先要保证其走时尽可能准确,其次再根据人们

    5、日常的使用习惯来设定其附加功能。在设计中利用单片机定时计数器来完成走时并用两组输出口控制数码管来显示;通过编程向某一输出口输出方波实现报时及闹铃;利用输入端口外接各种开关来完成对走时及显示的控制(如预置时间等)。在设计中需要用到许多技巧。以下为我在学习单片机课程中总结的一些设计思想或方法: 占空比概念在设计中的运用如图所示的一串方波序列,导通时间同周期的比值即占空比。在用单片机控制对多个数码管的扫描显示中,数码管接收到的电压可以看成是一串方波序列,占空比控制了数码管的亮度。实际上对显示延时时间的调节就是调节数码管电压的占空比,当占空比大于一定数值的时候数码管可以显示,实验证明占空比在0.1时仍

    6、可以使数码管清晰显示。利用这个概念可以比较直观地理解显示延时的调节。 CPU的分时复用单片机只有一个CPU,因此在一个时间内只能执行一条语句,要使单片机同时控制多个外部元件(比如扬声器和数码管)就必须对单片机的CPU进行分时复用,让单片机在一小段时间内连续交替执行控制多个器件的语句,从表面上看,单片机便用一个CPU控制了多个元件。本次课程设计中对整点报时和闹铃功能的实现便用到了这个概念。 单片机位寻址区的使用单片机内部数据存储器由20H到2FH共有16个字节的位寻址区可以被作为程序执行过程中的状态参数,许多程序模块至于两个状态(比如闪烁与正常显示,报时与不报时等)用位寻址区中的某一位来记录程序

    7、执行状态,在需要对状态进行判断的时候十分方便并且节约空间,一个字节便可以判断八个状态,而非位寻址区的地址记录程序状态时可能需要先进行变换,增加了执行成本且容易出错。 检测开关时需要注意的问题对于用各种开关控制程序执行状态的程序设计中,需要注意实时地进行开关的检测,以确保一旦有开关动作,程序状态立即随之改变。此外,在用多个开关控制不同执行状态时,应注意设置开关检测的优先级以防止多个开关同时按下时出现错误。 系统资源分配与使用单片机有许多资源是有限的不能滥用,比如定时计数器T,外部中断等,在设计一个多模块程序时,要注意先做一个整体规划,把稀缺资源用在最需要用的地方。此外在有多个模块时,要注意模块间

    8、的数据传递,比如累加器A和进位标志C,在使用时要注意不能让前一个模块的数据对下一个模块产生不希望有的影响。在模块间的数据传递比较多时最好用固定的内部数据存储器,以避免冲突发生错误。06 电气工程及其自动化 2 班许伟敏42单片微型计算机课程设计基于汇编语言的电子数字钟设计要求及说明三、设计要求及说明设计要求:基于单片机电路,借鉴生活中常见的电子钟的功能,结合课本的要求使用汇编语言设计一个简单的电子钟系统。要求使用简便,功能实用,错误少,有一定创新性。电子数字钟实现的主要功能: 实现正常走时(秒分时日月年进位) 能够预置时间和日期 能够自动区分平闰年和大小月 具有闹铃及设定闹铃时间功能 具有整点

    9、报时功能 具有生日提醒功能,能够预置生日时间 在任何一种预置状态下,预置项目会闪烁显示其它设计说明 优先级:预置闹铃报时生日提醒正常显示,即预置状态下闹铃、报时功能及生日提醒功能都无效 生日时间到五个数码管显示“HAPPY” 生日显示状态下,按下中断INT0恢复正常显示且此后只有在下更改生日日期或第二年生日显示才有效。 正常显示状态下按下中断INT0进入预置状态,再按一次恢复。 用数码管(K0,K1)控制显示状态:00:时间,01:闹铃时间,10:日期,11:生日时间且显示样板如下图所示:时间:12 点39 分45 秒日期:08 年2 月29 日闹铃:于早晨6 点10 分响,最后一位为一表示使

    10、能有效生日:6 月1 日生日,最后两位bd 为birthday 的缩写 预置由拨码开关K2/K3/K4分别控制数码管12/34/56显示值,预置优先级:LED34LED12LED56(相应数码管显示的项目,显示状态下才能预置) 整点报时声音为59分51、53、55、57秒的后半秒报四声低音, 59秒的后半秒报一声高音 闹铃每次响一分钟 不论是预置状态还是正常走时状态均能够自动区分平闰年和大小月 闹铃使能由拨码开关K5控制并实时显示06 电气工程及其自动化 2 班许伟敏43单片微型计算机课程设计基于汇编语言的电子数字钟整体设计方案四、整体设计方案硬件电路设计系统硬件电路根据系统功能可知,需要六个

    11、数码管,一个外部中断INT0,一个扬声器,由此结合单片机课程学习中对实验面板的了解,做出如下电路:如图,晶振频率12MHz,拨码开关数值由P0口读入;P2口的输出作为控制数码管的段控信号,经74LS573即8位数据锁存器接到数码管中。数码管采用共阴接法(图中未标示);P1.0-P1.5作为数码管的位控信号输出端;开关W2经一个基本RS锁存器接入INT0,每按一次开关INTO取反一次,按两次输入一个下降沿;扬声器由P1.6口控制。06 电气工程及其自动化 2 班许伟敏44单片微型计算机课程设计基于汇编语言的电子数字钟整体设计方案系统软件总流程设计根据系统要求,设计出系统软件总流程图如下以T0作为

    12、正常走时的计时器,T1作为预置状态下预置项目值自动跳升的控制计时器,INT0作为设定预置及清楚生日信号的控制按钮初始化开关检测并将要显示的项目送入显示缓存预置项目闪烁显示Y预置有效?其余项目正常显示N闹铃/报时?Y闹铃 /报时NY生日信号?N显示生日祝福 HAPPY正常显示T0 中断走时(进位秒分时日月年)T1 预置时间/日期/闹铃时间/生日日期软 件 系 统 总 流 程 图INT0 中断设定(预置信号设置/清除;生日标志清除)设计使每一轮显示(即六个数码管都显示一次)便检测一次开关使06 电气工程及其自动化 2 班许伟敏45单片微型计算机课程设计基于汇编语言的电子数字钟整体设计方案上图的“检

    13、测开关值判断并显示检测开关值” 的循环时间大约为10ms,即每隔10ms检测一次开关值,每个数码管接收到的电压信号占空比大约为1/7,确保数码管正常显示。三个中断源中断程序执行时间每次均为几十毫秒,基本不影响主程序的显示及闹铃输出。中断优先级T0INT0T1,首先确保走时尽可能的准确,其次由于T1的开启和关闭是由INT0进行控制的,故INT0优先级较高。此外有优先级“预置显示闹铃整点报时生日显示”,由于预置显示是人为控制的故优先级最高,考虑到日常生活中假如闹铃或整点报时被生日显示覆盖可能使影响到人们的日常生活故设定生日优先级最低,且闹铃最多影响生日信号一分钟。闹铃和整点报时不影响正常的时间等的

    14、显示。模块划分及分析根据系统功能将模块划分如下 ONE:初始化程序模块进行资源分配(EQU,BIT伪指令),设定初值,各中断初始化 TWO:开关检测模块检测开关号,将要显示值送入显示缓存 THREE:显示主程序显示显示缓存中值,并进行生日,闹铃,报时判断 SEVEN:显示生日祝福HAPPY程序经显示主程序判断生日时间到要执行的显示HAPPY程序(其实可以认为是显示主程序的一部分) EIGHT:闹铃及整点报时判断程序判断是否闹铃或报时,如果是则CPLP1.6且忽略生日信号,反之则继续执行后续语句06 电气工程及其自动化 2 班许伟敏46单片微型计算机课程设计基于汇编语言的电子数字钟整体设计方案

    15、NINE:中断(TO)计时程序包含了秒分时日月年进位以及判断大小月及平闰年以及生日标志设定 TEN:中断预置程序控制预置项目的自动加计数的延时时间, 并能判断大小月及平闰年 ELEVEN:中断(INT0)控制程序控制预置的开/关及生日信号的清楚 TEWLVE:延时程序用于闪烁时的数码管亮度控制模块划分中遇到的问题及解决:模块划分的过程中遇到的问题不多,只做了一个比较大的修改。刚开始设置模块的时候并没有设定显示缓存LED12、LED34、LED56而是将主显示模块THREE分成四个部分分别实现对时间、日期、闹铃、生日的显示(编号FOUR、FIVE,SIX便是删去的另外三个部分的程序名)并通过检测

    16、开关决定跳转到哪一个部分去执行,但经过分析发现这样做极大地浪费了存储空间而设置显示缓存后,只需要在检测开关后将相应要显示的数据送入显示缓存并在主程序中对显示缓存进行显示即可,这样做大大地缩减了程序存储空间而程序可读性也增强了。在程序编码完成后发现,没有必要将SEVEN显示HAPPY程序同THREE显示主程序单列开来,TWELVE延时程序也并不是必要的,并且模块的划分还有些值得商榷的地方,本报告中的程序还可以通过模块划分的优化修改得更加精简一些。06 电气工程及其自动化 2 班许伟敏47单片微型计算机课程设计基于汇编语言的电子数字钟单模块流程设计五、单模块流程设计在完成了系统总流程设计后,便进入

    17、到了系统设计中工作量最大的单模块流程设计。由于系统模块划分虽然是系统设计的基础,但比较简单而且模块划分有多种方法,因此单模块的设计可以认为是本程序中最关键的部分。单模块设计的好坏与否决定了系统功能能否被稳定地实现以及下一阶段调试程序的难度。鉴于单模块设计的重要性,我在设计中并不急于对模块进行编码,而是反复论证模块的可行性和流程图,为下一阶段的工作做好准备,同时也能够尽早发现系统模块划分的错误,加以解决。各模块设计概述及模块流程图初始化模块(ONE)初始化模块包含了各中断的跳转语句、存储资源的分配、各存储器和寄存器的赋值以及中断及计时器的状态设置。源程序中共使用了17字节的内部数据存储地址,其中

    18、包含3字节位寻址地址以便于进行位判断。三字节的位寻址地址分配如下:开始跳转指令资源分配(伪指令 EQU 及 BIT)时间、日期、闹铃时间、生日日期存储地址赋初值;各状态标志位赋初值设置中断优先级、各中断工作方式初始化模块流程图22H秒的存储地址,方便对整点报时条件进行判断23H月的存储地址,方便对大小月平闰年进行判断另外一个位寻址字节00H地址拆开用做程序状态标志位00H(bit,BS)生日标志位,到生日那天为 1 使程序转入生日显示段01H(bit,SS)预置标志,以INT0控制其值,控制预置闪烁的实现02H(bit,GS)闪烁标志,在预置标志有效时控制闪烁项目的亮和灭两状态03H(bit,

    19、FC)频率控制,在整点报时时控制产生低音还是高音04H(bit,NB)忽略生日标志,控制预置及报时的优先级高于生日显示05H(bit)控制生日信号的有效与否,其使用目的参见调试过程源程序中使用了两个寄存器R1、R0,R1用于控制闪烁的间隔时间, R0用于显示延时。在初始化模块中设定了中断的优先级、定时计数器的工作模式、并打开了定时计数器TO开始计时其他资源分配项目参见源程序集合及注释。初始化模块指令很大一部分都是伪指令,方便了后面程序的编写。06 电气工程及其自动化 2 班许伟敏48单片微型计算机课程设计基于汇编语言的电子数字钟单模块流程设计开关检测模块(TWO)开关检测模块主要执行两个任务:

    20、读取闹铃使能控制拨码开关K5的值并赋予闹铃使能相应值;读取显示选择开关(K0,K1)的值并将要显示的项目值送入显示缓存LED12、LED34、LED56.当K5为1时将A1H送开关检测模块流程图入RE,反之送入A0H,其中A为“”的字型码查表偏移量。当显示生日日期时,将生日Birthday的缩写“bd”的字型码送入显示缓存LED56。开关检测模块的执行时间大约在40uS左右。显示主程序(THREE)显示主程序是程序中最复杂的模块,实现的功能也最多,占用了程序运行过程当中90%以上的执行时间。流程图中由判断SS(预置信号)开始分成两个分支,当SS=1,即预置状态下程序进入预置闪烁部分。预置闪烁的

    21、优先级是:LED34LED12LED56即同预置优先级相同(参见调试部分的详细说明)闪烁首先判断是否对LED34进行判断闪烁,如果是则另外两个显示值直接显示,否则判断是否对LED12进行闪烁,如果是则直接显示LED56的值,只有当前两个显示值都不闪烁的时候,才判断是否对LED56进行闪烁,这样就确保了每次只有一个显示值闪烁。预置通过GS标志位判断预置的亮/灭,由R1控制每50轮显示对GS取反一次。当SS=0时进入判断闹铃/报时及正常显示模块,模块EIGHT(参见其说明)对闹铃及报时条件进行判断,符合条件则对P1.6取反一次并使NB(忽略生日)有效,此时不进行对BS(生日标志)的判断,即使响铃优

    22、先级高于生日显示(其实也可以对程序进行修改使响铃和生日显示不发生冲突,修改方法参见程序优化)。当不响铃并且生日标志BS有效时显示HAPPY显示HAPPY子程序(SEVEN)本程序实际上是显示主程序的分支,在模块的划分过程中为了简化显示主程序的编写而将06 电气工程及其自动化 2 班许伟敏49单片微型计算机课程设计基于汇编语言的电子数字钟单模块流程设计其单列开来。本程序由生日标志BS控制,当到达生日时间时,T0中断程序会将BS置1使之有效在显示主程序中通过判断BS的置来控制是否执行本模块。显示主程序及显示”HAPPY”模块流程图说明:* 只有当在预置日期时,才需要对LED56进行预置闪烁判断。并

    23、且当LED34(即月份的显示缓存)已经判断需要闪烁后,LED56便不需要闪烁而直接显示(闪烁优先级LED56最低,每次只对一个项目进行预置,只有一个项目需要闪烁)。这个设置使同时拨下两个以上预置开关时不会出错,参见调试部分说明* 闹铃及报时判断程序EIGHT执行过程参见其说明06 电气工程及其自动化 2 班许伟敏410单片微型计算机课程设计基于汇编语言的电子数字钟单模块流程设计闹铃及整点报时判断程序(EIGHT)在显示主程序中每隔一段时间调用一次本程序来实现闹铃及报时功能。符合闹铃条件时,每调用一次本程序对P1.6取反一次,调节调用的时间间隔便可以调节报时的输出频率。在主程序中设置每完成对一个

    24、数码管的显示变调用一次本程序,显示一个数码管的时间大约为1ms,因此响铃频率高音约为500Hz,低音约为250Hz。程序判断闹铃使能RE后分成两个分支,当RE=A1时判断闹铃条件是否满足,满足则对P1.6取反一次,否则跳转判断整点报时条件是否满足。当RE=0时,直接怕暖整点报时条件是否满足。判断整点报时条件时当当前时间满足:(MIN=59)(SECOND=59) (COUNT10)时报高音;当满足:(MIN=59)(SECOND=51/53/55/57) (COUNT10)时报低音。利用位寻址区来存储SECOND的方法,只要(SECOND50)(SECOND.0=1)时便满足报低音的秒条件。利

    25、用TO中断次数存储器COUNT的大小可以判断是否到了后半秒(T0每50ms中断一次,中断20次到达一秒)。通过增加一个标志位FC来时下对高低音的区分,高音不受FC的影响,低音只有当FC=0的时候才对P1.6取反一次。并且每调用一次本程序便对FC取反一次,便达到每调用两次取反一次P1.6的效果。本程序的执行时间小于40us,因此多次调用不过分影响执行时间闹铃及整点报时判断程序流程图中断(TO)计时程序(NINE)中断计时程序的流程比较简单。程序除实现正常走时外还需要判断是否到达生日时间置生06 电气工程及其自动化 2 班许伟敏411单片微型计算机课程设计基于汇编语言的电子数字钟单模块流程设计LJ

    26、MP NINE定时器 T0 赋初值,重开定时COUNT 加一日标志位有效。程序的输出均为BCD码,方便了显示程序对高低位的分离并查表显示。程序比较复杂的地方在于对平闰年及大小月的判断。把月MONTH存储在位寻址区,当MONTH=02H时判断是否是平闰年,先将年由BCD码转化为二进制码,此时当年的后两位为全零的时候为闰年(由于只显示年的个位和十位,由2000年开始,00年、04年为闰年,到 1 秒?YCOUNT 清零SECOND 加一到 1 分钟?YSECOND 清零MIN 加一到一小时?YMIN 清零HOUR 加一到一天?YHOUR 清零DAY 加一判断平闰年及大小月*YNNNN其共同特点就是

    27、二进制后两位为零),否则为平年。当MONTH2时判断是否为大小月,MOUTH7时双月为大月。中断(T1)预置程序(TEN)T1通过中断INT0控制开启或关闭,每次定时50毫秒,存储地址COUNTS计数15次执行一次中断程序。由开关(K0,K1)控制预置项目,通过开关K2/K3/K4来分别控制LED12/LED34/LED56的预置,当两个开关都是有效时,具有优先级的区分,确保无论按几个开关都最多只有一个项目被预置。判断预置的优先级顺序是:LED34LED12LED56这样安排的原因是由于根据生活经验LED34所对应的4个项目(小时、闹铃分、月、生日日)被预置的可能性最大。到一月?N在预置日期和生日是要中断(T1)预置程序DAY=1MONTH 加一注意对大小月及平闰年进行判断(判断方法与中断计时程序中说明的方法类似,但不需要到一年?YMONTH=1YEAR 加一生日到了?YBS=1中断返回NN考虑进位)且月和日在溢出后应置一而不是归零。中断(INT0)设定程序(ELEVEN)中断INT0设置是否进行预置以


    注意事项

    本文(最新版基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开