《课程设计(论文)基于单片机控制的智力竞赛抢答器.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机控制的智力竞赛抢答器.doc(23页珍藏版)》请在三一办公上搜索。
1、河南理工大学单片机课程设计报告基于单片机控制的智力竞赛抢答器姓 名: 学 号: 专业班级: 指导老师: 所在学院: 2008年9月18日摘要本设计是在学习过单片机原理及应用技术这门课程后,利用所学过的课堂知识,发挥自己的创新能力,并结合动手动脑能力,来设计一个由单片机控制的智力竞赛抢答器,并完成系统的软硬件设计及调试。它的基本要求是:能容许26组抢答;能显示抢答组号;各组计分,并能计分显示;比赛结束时,能发出报警声。本设计中的控制系统核心是单片机AT89C51,它主要负责控制各个部分协调工作。在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶振X1、电容C1、C2、C3、 电阻R
2、P1及7SEG-MPX4-CC-BLUE。设计内容为:P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1P1.6是6组抢答的输入口,P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0,P3.2为抢答记口,实现的对个队进行加减记分,外部中断1,P3.3实现了答题时间调整.P3.4P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。外部还接有蜂鸣器用来发出报警音。采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。系统仿真用到了伟福软件和PROTUCE软件,
3、通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。目录1 概述3 1.1 单片机的应用及课程设计的意义3 1.2 设计任务及要求3 1.3 设计思路32 系统总体方案及硬件设计4 2.1 控制系统组成4 2.2 硬件组成及所需原件42.3 实验原理83软件设计104 Proteus软件仿真115课程设计体会12参考文献13附1:源程序代码14附2:系统原理图221 概述1.1 单片机的应用及课程设计的意义 单片机使一种特殊的计算机,它是在一块半导体芯片上集成了CPU、存储器RAM、ROM以及输入与输出接口电路的芯片。由于单片机的集成度高、功能强、通用性好,特别是它具有体积小
4、、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特优点,使单片机迅速得到了推广应用。单片机原理及应用技术是电气专业的主要专业与特色课程之一。在学完本课程之后,通过课程设计再次巩固了所学的单片机基本原理,培养了我们运用所学知识和技能去分析和解决技术问题的能力,建立正确的设计思想,掌握设计的一般程序和方法。在设计中,锻炼自己的抽象思维和编写程序的能力。加深了对单片机课程的理解和熟练应用。1.2 设计任务及要求设计一个用于智力竞赛的抢答器,其功能的实现是由单片机控制的,满足(1)能容许2-6组进行抢答。(2)能显示抢答组号。(3)各组记分,并能记分显示。(4)比赛结束时,能发出报警声
5、。1.3 设计思路AT89C51单片机的P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1-P1.6是6组抢答的输入口,P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0,P3.2为抢答记口,实现的对个队进行加减记分,外部中断1,P3.3实现了答题时间调整.P3.4 P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。外部还接有蜂鸣器用来发出报警音。采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。软件设计部分由汇编语言编写。系统仿真用到了伟福软件和P
6、ROTUCE软件,通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。2系统总体方案及硬件设计2.1 控制系统组成控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作。2.2 硬件组成及所需原件该系统的核心器件是AT89C51。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制
7、造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。下面介绍一下AT89C51:主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路管脚说明:VCC:供电电压。GND:
8、接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/
9、O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于
10、外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:口管脚 备选功能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(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用
11、于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/E
12、A/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽
13、无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶振X1、电容
14、C1、C2、C3、 电阻RP1、P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1-P1.6是6组抢答的输入口,P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0,P3.2为抢答记口,实现的对个队进行加减记分,外部中断1,P3.3实现了答题时间调整.P3.4 P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。2.3 实验原理 智力竞赛抢答器用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成, 采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。该智力竞赛抢答器的准
15、确度很高,其误差主要由晶振自身的误差所造成。AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。89C51单片机有4个8位的并行I/O口:P0口,P1口,P2口和P3口。各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。在需要外部程序存储器和数据存储器扩展时,
16、P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。外部振荡电路单片机必须在AT89C51的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元。外部振荡电路见图一(图一)外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,应为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位。只能用软复位。软复位实际上就是当程序执行
17、完毕之后,将程序指针通过一条跳转指令让它跳转到程。复位电路采用图二所示:(图二)外部还接有蜂鸣器用来发出报警音。其图形如下:采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。图形如下:3软件设计 智力竞赛抢答器要求有计时记忆功能,一次时间设置完, 复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码.当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功.同时显示其分数,分数的加减可由裁判手动进行. 采用独立式键盘,可实现6路抢答. 在显示时使用的是数码管显示在本设计中根据实际情况采用的是动态显示方法. 并通过查表将
18、字型码送给数码管显示的数字。软件去抖动,如果开始键按下就向下执行,否者跳到开始。采用倒计时程序,使其具有倒计时功能。回答倒计时20秒。抢答时间15秒。采用发声警报,起到报警作用。系统流程图:开始查询倒计时开始抢答查询有效抢答显示,回答倒计时裁判打分加分重新开始查询抖动违规抢答非法抢答处理违规者显示减分4Proteus软件仿真用到了伟福软件,集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。树状结构显示,一目了然,支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。功能很强大。 系统仿真
19、还用到了PROTUCE软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。系统仿真时首先要在使用伟福编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时进行PROTUCE仿真。首先要新建一个文档是DNS型的找出需要的器件,可以使用搜索功能。接着把各个器件放到合适的位置都要放到蓝色框内。然后根据自己的设计要求连线。等所有的元件都连接完成后可以把,伟福编译生成的无错误文件加载到AT89C51中,方法是,右键点中器件然后在用左键点击,出来一个对话框在program file后选择要添加文件,文件要求必须是HEX文件。然后可以点击运行观察现象,看与自己
20、设置的符合否,如果不相符在查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。总体的PROTUCE图:5课程设计体会通过本次为期一周的设计使我的专业知识方面的水平得到了很大的提高,尤其在WAVE和PROTUES这两个专业软件的使用上有了很大的进步,使我懂得了以前不知道的和根本不会的东西,并且在编程方面也有了很大的进步。设计中要想把知识很好地运用到一个系统当中去并不是一件容易的事,在刚接触到proteus时甚至不知道怎样去寻找元器件,这多亏了热心的同学们,他们不厌其烦地解答我的问题,当大家都不懂时我们就一起上网、去图书馆、请教老师,直到把问题搞清楚为止。最终我掌握了画图地
21、技巧,但这只是最开始地一小步,真正的困难还在后面。之前单片机在我的脑海中就如雾里看花一样,迷迷糊糊的不知所云,对很多知识仅仅一知半解,不能系统地联系起来,甚至连一些最基本的语句都搞不懂。而这些缺点通过这次设计全部给暴露出来了。然而刚开始的时候很是沮丧,当困难总是要面对的,人不可能总是逃避。后来通过老师、同学以及上网查资料努力去克服种种困难,在不断的学习中摸索,把以前学过的和没有学到的一起重新学习,经过一个星期的努力,我的设计终于做出来了,这其中参考了不少的资料也得到了老师同学们的帮助,在此向帮助过我的老师和同学表示感谢。整体来说,这次设计对我个人的启发还是很大的,我觉得自己知识近一步的增长了!
22、虽然很多方面还都非常欠缺,但是我在设计过程中学到了很多以前没有学到的方法,在很大程度上提高了我的分析问题,解决问题的能力,增强了综合实践能力与自身的专业素质。参考文献1 余发山编著.单片机原理机机及应用技术.徐州:中国矿业大学出版社2 张淑清 娄万录等主编.单片微机计算机接口技术及其应用.科学出版社3 李广第主编.单片机基础.北京航空航天大学出版社3杨凌霄主编.微型计算机原理及应用.中国矿业大学出版社附1 源程序代码OK EQU 20H RING EQU 22H ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB OR
23、G 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#0FH MOV R2,#01EH MOV TMOD,#11H;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX1;允许3个中断,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;一开始就运行定时器,以开始显示888如果想重新计数,重置TH1/TL1就可以了;=查询程序
24、=START: MOV R5,#00H MOV R4,#00H MOV R3,#00HACALL DISPLAY;未开始抢答时候显示888 JB P1.0,NEXT ACALL DELAY JB P1.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送R1-R6,因为R1中保存了抢答时间 SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R3,0AH;抢答只显示计时,灭号数 AJMP COUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT:JNB P1.1,FAL
25、SE1 JNB P1.2,FALSE2 JNB P1.3,FALSE3 JNB P1.4,FALSE4 JNB P1.5,FALSE5 JNB P1.6,FALSE6 AJMP START ;=非法抢答处理程序=FALSE1: ACALL BARK;按键发声 MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3
26、,#05H AJMP ERRORFALSE6: ACALL BARK MOV R3,#06H AJMP ERROR;=INT1(答题对错加减分数程序)=INT1SUB:MOV R4,#0AH MOV R5,#0AH JNB P3.4,INC1 JNB P3.5,DEC1 JNB P1.7,BACK1 ACALL DISPLAY AJMP INT1SUB MOV A,R3 SUBB A,#01H JZ XXY1 SUBB A,#02H JZ XXY2 SUBB A,#03H JZ XXY3 SUBB A,#04H JZ XXY4 SUBB A,#05H JZ XXY5 SUBB A,#06H J
27、Z XXY6 XXY1:MOV R7,41H XXY2:MOV R7,42H XXY3:MOV R7,43H XXY4:MOV R7,44H XXY5:MOV R7,45H XXY6:MOV R7,46H INC1:INC R7 CJNE R3,#01H,L1 MOV 51H,R7 L1:CJNE R3,#02H,L2 MOV 52H,R7 L2:CJNE R3,#03H,L3 MOV 53H,R7 L3:CJNE R3,#04H,L4 MOV 54H,R7 L4:CJNE R3,#05H,L5 MOV 55H,R7 L5:CJNE R3,#06H,LL MOV 56H,R7 LL:ACALL
28、 DELAY1 AJMP INT1SUB DEC1:DEC R7 ACALL DELAY1 AJMP INT1SUB BACK1:RETI;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)= COUNT: MOV R0,#00H;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H;重置定时器RECOUNT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB;除十分出个位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;个位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取个
29、位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下运行 CLR RING AJMP CHECK FULL:CJNE A,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计 SETB RING MOV A,R6 JZ QUIT;计时完毕 MOV R0,#00H DEC R6;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查停/显示 DEC R6;计时一秒R6自动减
30、1 MOV R0,#00H CHECK: JNB P1.7,QUIT;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT:JNB P1.1,TRUE1 JNB P1.2,TRUE2 JNB P1.3,TRUE3 JNB P1.4,TRUE4 JNB P1.5,TRUE5 JNB P1.6,TRUE6 AJMP RECOUNT QUIT:CLR OK;如果按下了停止键执行的程序 CLR RING AJMP START;=正常抢答处理程序=TRUE1: ACAL
31、L BARK;按键发声 MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H MOV R7,41H CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#02H MOV R7,42H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H MOV R7,43H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04
32、H MOV R7,44H CLR OK AJMP COUNTTRUE5:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H MOV R7,45H CLR OK AJMP COUNTTRUE6:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#06H MOV R7,46H CLR OK AJMP COUNT;=犯规抢答程序=ERROR:MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH;0.5s向下运行
33、-灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三灯全灭 AJMP CHECK1FLASH:CJNE A,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计 SETB RING MOV R0,#00H MOV R3,34H;取回号数 MOV R5,#0BH MOV R4,#0BH;显示FF和号数 AJMP CHECK1CHECK1:JNB P1.7,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START;=显示程序=DISPLAY:MOV 41H,51
34、H MOV 42H,52H MOV 43H,53H MOV 44H,54H MOV 45H,55H MOV 46H,56H MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,r5 MOVC A,A+DPTR MOV P2,#01H MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,r4 MOVC A,A+DPTR MOV P2,#02H MOV P0,A ACALL DELAY MOV A,r3 MOVC A,A+DPTR MOV P2,#04H MOV P0,A ACALL DELAY MOV A,R
35、7 MOVC A,A+DPTR MOV P2,#08H MOV P0,A ACALL DELAY RET DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;灭,1,2,3,4,5,6,7,8,9,灭,F DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET;=延
36、时(显示和去抖动用到)=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;=发声程序=BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按键发声 RET;=TO溢出中断(响铃程序)=T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETI;=T1溢出中断(计时程序)=T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END附2 系统原理图