单片机课程设计—定时闹钟设计.doc
课 程 设 计 说 明 书课程名称: 通信电子线路 设计题目: 定时闹钟设计 院 系: 电子信息与电气工程学院 学生姓名: 学 号: 专业班级: 指导教师: 2012年 5月 18 日课 程 设 计 任 务 书设计题目定时闹钟设计学生姓名付文军所在院系电子信息与电气学院专业、年级、班09通信设计要求:本设计主要是对51单片机的一个方面的拓展,是能实现一般定时闹钟功能的设计。需要实现某一功能时,按对应的按键即可,可以实现显示,定时,修改定时,定时时间到能发出报警声的功能。系统采用单片机AT89S52作为本设计的核心元件,在其基础上外围拓展芯片和外围电路,附加时钟电路,复位电路,键盘接口及LED显示。键盘采用独立连接式。还有报警系统,及定时时间到,通过扬声器发出警报声,提示预先预定时间到,从而起到定时作用。学生应完成的工作:硬件电路的总体设计和硬件电路原理图的绘制;软件程序的总体设计方案及软件流程图的绘制软件程序的编辑和调试工作;软件电路结合应电路的仿真和测试工作;电路板的制作,以及实物元器件的焊接工作。在整个课程设计中,我负责资料的查找和硬件电路的设计参考文献阅读:1 杜尚丰. CAN总线测控技术及其应用.北京:电子工业出版社,2007.12 杜树春.单片机C语言和汇编语言混合编程实例详解.北京:北京航空航天大学出版社,2006.63 张毅刚·单片机原理及应用·北京:高等教育出版社,2009·2工作计划:5月7号 接受任务,分析题目并查阅相关资料,做出整体硬件电路的设计方案。5月8号-9号 根据所提出电路的设计方案,绘制硬件电路。5月10号 查阅资料,分析所设计系统的软件结构,并做出设计方案。5月11号-12号 由系统软件的设计方案,绘制程序流程图,并且根据流程图编写系统程序。5月15号 结合程序和硬件电路,用Proteus、 Keil、Matlab进行电路仿真调试,5月16号-18号 进行焊接,调试仿真,完成设计验收上交设计报告。任务下达日期:2012 年5月 7 日 任务完成日期:2012 年5月 18 日指导教师(签名): 学生(签名): 定时闹钟设计摘 要:定时闹钟设计主要有硬件部分和软件部分组成,硬件部分以单片机为核心,在其周围有电源电路、时钟电路、复位电路、驱动电路和显示电路组成。软件部分用汇编语言编程,用keil软件编译、调试。最后用proteus软件仿真,形成以单片机为枢纽,以程序为动力,使闹钟实现功能。关键词:AT89S52 定时闹钟 keil proteus 汇编语言目 录1. 设计背景 11.1设计课题及目的11.2相关技术与应用领域12.设计方案12.1总体方案12.2硬件设计22.3软件设计73.方案实施83.1方案流程图83.2 proteus的系统仿真84. 结果与结论94.1 课程设计结果94.2课程设计结论95.收获与致谢96.参考文献107.附件117.1系统总体电路图117.2系统实物图117.3 程序源代码127.4元器件清单161. 设计背景1.1设计课题及目的本课题是以单片机为核心,通过动态扫面的方式,实现定时闹钟功能。单片机即单片微型计算机,是集CPU,RAM,ROM,定时,计数,和多种接口于一体的微控制器,他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上,AT89S52单片机是各单片机中比较具有代表性的一种。这次课程设计通过对他的学习,应用,从而达到学习,设计,开发软硬件的能力.1.2相关技术与应用领域电子闹钟是采用数字电路实现对时分秒数字显示的机试装置,广泛用于个人家庭,车站,码头办公室等公共场所,称为人们日常生活中不可缺少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超于老式钟表,中标的数字化给人们生产生活带来了极大的方便,而且大大地拓展了钟表的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。数字钟已经成为人们日常生活中必不可少的必需品,广泛用于个人家庭、车站、码头、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优势,它还用于计时自动报时及自动控制的领域。因此,研究定时数字闹钟及扩大其应用,有着非常现实的意义。2.设计方案2.1总体方案2.1.1方案比较方案一:采用数字电路实现。数字电子钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。方案二:用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,另外,使用是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。经过上面的对比本设计采用单片机作为设计的主体本系统采用单片机AT89S52作为本设计的核心元件,利用7段共阳LED作为显示器件。接入共阳LED显示器,可显示,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,提示预先设定时间到。电路有下列部分组成:时钟电路、复位电路、控制电路、LED显示,报警电路,芯片选用AT89S51单片机。系统基本框图:AT89S52报警器数码显示键盘电路时钟电路图1系统基本框图2.2硬件设计2.2.1 单片机AT89S52AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。(一)、AT89S52主要功能列举如下:1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程序存储器(ROM)为 8KB4、内部数据存储器(RAM)为 256字节5、32 个可编程I/O 口线6、8 个中断向量源7、三个 16 位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道(二)、AT89S52各引脚功能介绍:图2AT89S52管脚图VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2.2时钟电路单片机的时,钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89S52单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。震荡晶体为1.2MHz12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响。AT89S52单片机的时钟电路如图3所示。图3 时钟电路2.2.3数码管显示电路单片机中通常使用7段LED,LED是发光二极管显示器的缩写。LED显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛使用。图4引脚配置LED七段数码管显示器由8个发光二极管组成显示字符,根据内部发光二极管的连接形式不同,LED有共阳和共阴极两种,如上图4所示: 采用高亮共阴型数位数码管,为示区别,显示秒的两个数码管个头较小,另外4个较大。共阴数码管接线如下:一般用7个发光二极管构成显示数字和符号,另外还用一段发光二极管显示小数点。这种显示器一般分为两种,共阴极显示器是把每个二极管的阴极连在一起,共阳极显示器是把每个二极管的正端连在一起。一只显示器是有8个发光二级管构成,当把某段加正向电压时,则该段所对应的笔划亮,不加正向电压则暗,为了保护各种不收损坏需要加限流电阻,无论是共阳极显示器还是共阴极显示器,它的8段排列顺序都是一样的:A段、B段、C段、D段、E段、F段、G段、和DP段。在单片机中通常使用7段LED。2.3软件设计2.3.1系统软件设计该系统软件主要是有主程序模块,定时中断服务程序,终端等待服务程序,键盘程序,显示子程序等六大模块组成,因为汇编语言使用助记符,符号和数字等来表示指令程序的语言,容易理解和记忆,所以我们用汇编语言来写程序。2.3.2 LED七段LED由七个发光二级管按日字排开,所有发光二极管的阳极连在一起成共阳极。当采用芯片驱动时不需要加限流电阻,其他情况下一般应用外接限流电阻。动态显示电路有显示快,字型码封锁驱动器,字位锁存驱动器三部分组成。2.3.3蜂鸣报警电路在AT89s52外围的一个管口上加蜂鸣器,通过软件与硬件的结合可实现定时闹钟功能。2.3.4电源电路电源电压稳压流程方框图如图5。220V交流电51单片机7805稳压器变压器桥式整流图5电源电压稳压流程方框图电源电路如图6所示,220V交流电经过变压器,再经过桥堆2W10整流,然后由电容C6滤波后变为脉动比较稳定的直流电,最后通过三端稳压器7805输出稳定的5V直流电压。图中C5用于抵消输入线产生的电感效应,以防止电路产生自激振荡其容较小,一般小于1F。电容C4用于消除输出电压的高频噪声,可取小于1F的电容,也可取几微法甚至几十微法的电容,以便输出较大的脉动电流。图6电源电路3. 方案实施3.1系统流程图开始初始化判断闹钟时间是否到位调用时间设定程序调用显示程序P1.2是否按下调用闹钟时间设定程序P1.1是否按下NYNY图7程序流程图3.2proteus的系统仿真操作过程:设几个按键从上往下为k1,k2,k3,k4。k1与p1.0相连,k2与p1.1相连,k3与p1.2相连,k4与p1.4相连。 当需要设定当前时,按一下k1键,进入时间设定状态,按一下k2,小时加1,按一下k3,分加1.如此反复来设定当前时间。调好时间后按k4退出当前设定状态。如下图6:4. 结果与结论4.1课程设计结果经过多次的软件仿真测试,该系统均能够产生与我们设计目标相符的结果。但是在元器件焊接完毕之后,却不能够正常的工作,经过多方查证,觉得可能是由于电阻电容等器件参数设置有误,导致电源模块不能够正常供电。之后我们对电路的原理图又进行了进一步的分析,更换了几个电阻和电容之后,定时闹钟终于能够正常工作了。4.2课程设计结论对电路的分析,对元器件参数的设置,这些都是影响一件产品能否正常运行的重要指标,有时候理论上成功,并不代表实际生产能够成功,我们必须进行反复的、细致的研究。5. 收获与致谢这是我第一次用单片机设计制作系统,在设计过程中,我对单片机了解进一步加深,学会了对keil软件和proteus软件的使用。程序是整个系统的核心,没有程序,硬件就无法运行,所以程序成为了我们组重点解决的问题。学好每一个软件的使用方法,自己就可以在软件里做自己想实现的功能。单片机作为我们的主要专业课之一,虽然在开学初我们对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后,我发现自己在一点一滴的努力对单片机的兴趣也在逐渐增加,我觉得做单片机课程设计是十分有意义的,而且是十分必要的,在一度过的大学时间里,我们大多数接触的是专业课,我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础理论知识运用到实践中去呢?我想做课程设计就为我们提供了良好的实践平台。要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内部有哪些资源,要有一个清晰的思路和一个完整的软件流程图,再设计程序时,不要妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。回顾此次单片机课程设计,从理论到实践的日子这两个星期了,自己之前对单片机课程学习的不够,最后吃了很大的苦头,由于之前知识的欠缺导致在本次实习中,遇到很多问题,程序的编写,硬件和软件的设计。第一星期大家主要是对软件和硬件的设计,第二星期,主要负责元器件的焊接,之前有多焊接的实操,所以进行起来比较上手,出现的问题就是用万用板时元器件的排版和布局。最后,通过这次的课程设计使我懂得自己的知识还远远不够,只有不断的学习才能成就一个自我。同时要感谢我们的指导老师郭丽霞老师对我们这两个星期的指导和讲解,也感谢我们的团队。6. 参考文献1 杜尚丰. CAN总线测控技术及其应用.北京:电子工业出版社,2007.12 杜树春.单片机C语言和汇编语言混合编程实例详解.北京:北京航空航天大学出版社,2006.63 张毅刚·单片机原理及应用·北京:高等教育出版社,2009·27. 附件7.1系统总体电路图7.2系统实物图7.3程序源代码ORG 0000H LJMP MAINORG 000BHLJMP TIME×××××主程序部分×××××ORG 0100HMAIN:MOV SP,#50HMOV 20H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#01HMOV 24H,#01H MOV 25H,#00H MOV 30H,#00H MOV 31H,#00HMOV 32H,#00H MOV 33H,#00H MOV 34H,#00HMOV 35H,#00HMOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00HMOV TMOD,#01H ;16 位计数器MOV TH0,#03CH ;赋计数初值MOV TL0,#0B0H MOV IE,#10000111B SETB TR0 ;T0 启动计数MOV R2,#14H MOV P2,#0FFH LOOP: LCALL TIMEPRO LCALL DISPLAY1 JB P1.0,M1 LCALL SETTIME ;调用设定时间程序LJMP LOOPM1:JB P1.1,M2 LCALL SETATIME LJMP LOOP M2:JB P1.3,M4 LCALL LOOKATIME M4:LJMP LOOP DELAY:MOV R4,#030H DL00:MOV R5,#0FFH DL11:MOV R6,#9H DL12:DJNZ R6,DL12 DJNZ R5,DL11 DJNZ R4,DL00 RET ;×××××设定时间程序×××××SETTIME:L0:LCALL DISPLAY1MM1: JB P1.1,L1 MOV C,P1.1 JC MM1 LCALL DELAY1 ;调用延时JC MM1MSTOP1: MOV C,P1.1JNC MSTOP1 ;判断 P1.1 是否释放?释放则继续 LCALL DELAY1 ;调用延时MOV C,P1.1 JNC MSTOP1 INC 22H MOV A,22H CJNE A,#18H,GO12 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0 L1:JB P1.2,L2 MOV C,P1.2 JC L1 LCALL DELAY1 JC L1 MSTOP2: MOV C,P1.2 JNC MSTOP2;判断 P1.2 是否释放?释放则继续LCALL DELAY1 ;调用延时MOV C,P1.2 JNC MSTOP2 INC 21H MOV A,21H CJNE A,#3CH,GO11 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11:MOV B,#0AH DIV AB MOV 34H,B MOV 35H,A LJMP L0L2:JB P1.3,L0MOV C,P1.3JC L2LCALL DELAY1MOV C,P1.3 JC L2STOP1: MOV C,P1.3 JNC STOP1 LCALL DELAY1 MOV C,P1.3 JNC STOP1 LJMP LOOP×××××设置闹钟时间×××××SETATIME:LCALL DISPLAY2 N0:LCALL DISPLAY2 MM2: JB P1.2,N1;判断 P1.2 是否按下?MOV C,P1.2 JC MM2 LCALL DELAY1 JC MM2 MSTOP3: MOV C,P1.2 JNC MSTOP3 LCALL DELAY1 MOV C,P1.2 JNC MSTOP3 INC 24H MOV A,24H CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0 N1:JB P1.0,N2MOV C,P1.0 JC N1 LCALL DELAY1 JC N1MSTOP4: MOV C,P1.0 JNC MSTOP4 LCALL DELAY1 MOV C,P1.0 JNC MSTOP4 INC 23H MOV A,23H CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21:MOV DIV AB MOV 36H,B MOV 37H,A LJMP N0 GO22: MOV B,#0AH ;将 A 中的内容分成高低两部分DIV AB MOV 38H,BMOV 39H,ALJMPN0N2:JB P1.3 ,N0 ;判断 P1.3 是否按下?MOV C,P1.3 JC N2 LCALL DELAY1 MOV C,P1.3 JC N2 STOP2: MOV C,P1.3 ;判断 P1.3 是否释放?JNC STOP2 LCALL DELAY1MOV C,P1.3 JNC STOP2 LJMP LOOPTIMEPRO:MOV A,21H MOV B,23H CJNE A,B,BK MOV A,22H MOV B,24H CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX XX: LCALL TIMEOUT ;调用时间闹钟响应程序BK:RET TIMEOUT:X1:LCALL BZ LCALL DISPLAY2 CLR 25H.0 JB P1.3, X1 ;调用喇叭响应程序LCALL DELAY CLR 25H.0 LJMP DISPLAY1 BZ: CLR P3.7 MOV R7,#250 T2: MOV R6,#124 T3: DJNZ R6,T3DJNZ R7,T2 SETB P3.7 RET LOOKATIME:LCALL DISPLAY2 MM: JB P1.3,LOOKATIME ;判断按键 P1.3 是否按下MOV C,P1.3 JC MM LCALL DELAY1 MOV C,P1.3 JC MMSTOP3:MOV C,P1.3 JNC STOP3 LCALL DELAY1MOV C,P1.3 JNC STOP3 LJMP LOOPDELAY1: MOV R4,#14H DL001: MOV R5,#0FFH DL111: DJNZ R5,DL111DJNZ R4,DL001RET×××××时间运行程序×××××TIME: PUSH ACC PUSH PSW MOV TH0,#03CH MOV TL0,#0B0H DJNZ R2,RET0MOV R2,#14H MOV A,20H CLR C INC A ;秒钟自加 1CJNE A,#3CH,GO1 ;判断秒钟是否到 60 秒?MOV 20H,#0 ;到 60 秒复位MOV 30H,#0 MOV 31H,#0 MOV A,21H INC A ;分钟自加 1CJNE A,#3CH,GO2 ;判断分钟是否到 60 分?MOV 21H,#0H ; 到 60 分复位MOV 32H,#0 MOV 33H,#0MOV A,22H INC A ;时钟自加 1CJNE A,#18H,GO3 ;判断时钟是否到 24 时?MOV22H,#00H ;到 24 时复位MOV 34H,#0MOV 35H,#0AJMP RET0 GO1: MOV 20H,AMOV B,#0AH DIV AB MOV 31H,A MOV 30H,BAJMP RET0 GO2: MOV 21H,A MOV B,#0AHDIV AB MOV 33H,A MOV 32H,B AJMP RET0 GO3: MOV 22H,A MOV B,#0AH MOV 35H,A MOV 34H,B AJMP RET0RET0: POP PSW ;恢复现场POP ACC RETI×××××运行部分×××××DISPLAY1: MOV R0,#30HMOV R3,#0FEH MOV A,R3PLAY1: MOV P2,A MOV A,R0MOV DPTR,#DSEG1 ;表首地址送 DPTRMOVC A,A+DPTR MOV P0,ALCALL DL1 MOV P2,#0FFH ;送高电平到 P2MOV RL A,R3 RL A JNB ACC.6,LD1INC R0MOVR3,A LJMP PLAY1 ;调用查表程序LD1: RETDISPLAY2: PUSH ACC ;现场保护PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3PLAY2: MOV P2,A MOV A,R0 MOV DPTR,#DSEG1;表首地址送 DPTRMOVC A,A+DPTR ;查 ASCII 特码MOV P0,A;查表结果送 ALCALL DL1MOV P2,#0FFH ;送高电平到 P2MOV A,R3 RL A JNB ACC.6,LD2INC R0 MOV R3, ALJMP PLAY2 LD2: POP PSW ;恢复现场POP ACCRET×××××延时时间×××××DL1: MOV R7,#02H ;延时时间DL: MOV R6,#0200H DL6: R6,$ DJNZ R7,DLRET DSEG1:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END7.4元器件清单名称型号数量电阻(欧姆)4701510K9100110K8晶振12MHz1芯片AT89S511按钮4蜂鸣器5V1无极电容30P2有极电容10uF1三极管PNP 855074位一体数码管2稳压集成电路78051桥堆2W101波动开关1二极管LED1指导教师评语:课程设计报告成绩: ,占总成绩比例: 30% 课程设计其它环节成绩:环节名称: 考勤 ,成绩: ,占总成绩比例: 20% 环节名称: 综合 ,成绩: ,占总成绩比例: 50% 总 成 绩: 指导教师签字:年 月 日本次课程设计负责人意见:负责人签字:年 月 日