《专题讲座资料(2021-2022年)单片机课程设计报告八路抢答器.doc》由会员分享,可在线阅读,更多相关《专题讲座资料(2021-2022年)单片机课程设计报告八路抢答器.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及接口技术课程设计报告课题名称题目15八路抢答器设计学院自动控制与机械工程学院专业电气工程及其自动化班级姓名学号时间2011-12-27目 录前言3一、课程设计的目的和要求.3二、方案设计2.1功能介绍.52.2抢答器的工作原理.6三、硬件设计电路设计3.1原理图的确定.73.2芯片的选择.83.3复位电路的设计.103.4晶振电路的设计.113.5数码显示管的选择.113.6报警设计.123.7 八位抢答输入设计.123.8主持人控制按键.13四、软件设计思想及流程4.1 主程序的设计144.2子程序的设计.15五.调试过程和调试方法.20六、课程设计体会22七、参考文献22附录2
2、3前言单片机和其他微型机一样,也是由CPU(包括运算器和控制器)、存储器、输入设备、输出设备组成,只不过单片机是将CPU、RAM、 ROM、定时/计数器,以及输入/输出(I/O)接口电路等计算机的主要部件集成在一小块硅片上的单片微型计算机。它具有体积小、可靠性高、性价比高等优点,主要应用于工业检测与控制、计算机外设、只能仪器仪表、通讯设备、家用电器和机电一体化产品等领域。一、 课程设计的目的和要求1.1课程设计的目的和要求单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。通过独立或协作提出并论证设计方案,进行软、硬件调试,最
3、后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法。根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和存储器扩展设计、接口技术应用设计。其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。存储器扩展设计要求学生掌握常用半导体芯片与单片机的接口,如EPROM存储器用作外部程序存储器时与单片机的连接关系,SRAM存储器用作外部数据存储器时与单片机的连接关系,E2PROM
4、存储器用作外部程序/数据存储器时与单片机的连接关系。能合理分配和使用单片机的内部和外部存储器,编程实现正常的读写功能。1.2 题目15 八路抢答器的设计 设计任务及要求1.2.1 设计任务基于MCS-51系列单片机AT89C51,设计一个八路抢答器。1.2.2 设计要求1)抢答器同时供八名选手或八个代表队比赛,分别用8个按钮K1K8.2)设置一个系统清除和抢答控制开关K0,该开关由主持人控制。3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并将优先抢答选手的编号一直保存到主持人将系统清除为止。4)主持人按下抢答“开始”按钮,抢答开始。5)当某一路抢答成功时,在数码管上显示成功信息
5、和该路的号数。6)当某一路抢答违规时,能在数码管上显示违规信息和该路的号数。7)具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”按键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。8)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。9)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。10)其他功能。二、总体设计2.1功能介绍1、(创新)如果想调节抢答时间或答题时间,按抢答时间调节键或答题时间调节键进入调节状态,此时会显示现在设
6、定的抢答时间或回答时间值,如想加一秒按一下加1s键,如果想减一秒按一下-1s键,时间LED上会显示改变后的时间,调整范围为0s99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。 2、主持人按抢答开始键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。抢答及答题倒数时间到小于5s会每秒响一下提示音。 3、如果主持人未按抢答开始键,而有人按了抢答按键,犯规抢答,LED上不断闪烁犯规号数和-并响个不停,直到按下停止 键为止。 4、p1.0-p1.7
7、为八路抢答输入数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。P3.0为开始抢答,P3.1为停止/复位,P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。2.2 抢答器的工作原理抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P1口接8个按键,提供选手抢答,P3.0-P3.5四个接四个按键,提供开始、结束、答题时间调整、抢答时间调整,加1、减1调整之用。抢答功能:通过八路按键配合
8、程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序译码并显示最先按下抢答键的路数及其当前时间并立即转入答题阶段。如下为抢答功能设计框图:开始 按键抢答K1K5K6K7K8K4K3K2数码显示抢答成功的相应号数并立即进入答题抢答限时:主持人按下抢答键后,设置30秒为抢答时间(此时间可在1-99秒之间修改)。若30秒内无人抢答,倒计时为5时每一秒发出一声报警,倒计时为零时说明该抢答题目作废并显示-。答题限时:当选手按下按钮时,启动60秒倒计时(此倒计时时间可在199秒之间修改),倒计时为5时每一秒发出一声报警,直到为零时该题答题结束,数码管显示-,等待主持人
9、开始下一次抢答。三、硬件设计3.1 原理图的确定单片机实现抢答的原理图:图3-1 抢答原理图3.2 芯片的选择抢答器电路的核心是MCS-51系列AT89C51单片机,其在一块芯片上集成了CPU、RAM、ROM、定时/技术器、I/O接口等功能部件。输入输出设备设备发送数据接收数据外部中断源外部计数脉冲定时/计数器中断逻辑CPU并行I/O接口并行I/O接口串行I/O接口存储器存储器I/O接口图3-2.1 51单片机的内部系统组成基本框图图3-2.2 51系列单片机引脚图VCC(40):5V;GND(20):接地;P0口(3932):不外接片外存储器及不扩展时可作为准双向输入/输出接口,扩展是分时复
10、用为低8位地址总线; P1口(18):可作为准双向I/O接口使用;P2口(28-21):外接及扩展时用作高8位地址总线;P3口(1017):有两种功能,优先选用第二功能; RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;ALE/PROG(30):地址锁存有效信号输出端;PSEN(29):外部程序存储器的选通信号;EA/VPP(31):片外程序存储器选通端; XTAL1(19):内部振荡电路反相放大器输入端;XTAL2(18):内部振荡电路反相放大器输出端。3.3复位电路的设计 RST:复位端。单片机的振荡器工作时,该引脚上至少保持连续两个机器周期(24个振荡周
11、期)的高位电平就可以实现系统复位,使单片机回复到初始状态。该复位电路采用上电自动复位方式,要实现复位只需在51系列单片机的RESET引脚上加上5ms的高电平就可以了。上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。通常若采用12MHz的晶振时,复位元件参数为10F的电解电容和10k的电阻。图3-3 复位电路电路图3.4 晶振电路的设计MCS-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方
12、式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图3-4所示。加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中电容C2,C3的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用。 图3-4 晶振电路图3.5数码显示管的选择数码显示管用来作为
13、时间的显示输出,一般用7段数码显示管。本次设计中采用7段共阴数码显示管应用简单、可靠性高、成本低,作为显示输出。连接时段选信号接在P0口的P0.0P0.6七个I/O口上,P1口是准双向I/O接口,在接电阻时选择接10K限流电阻。而在位选方面采用单片机P2口的P2.0P2.6七个I/O口作为位选信号的输出口。图3-5 数码显示管3.6报警设计当开始抢答或者任一选手非法抢答时,以及抢答及答题到最后五秒时,系统都会发出报警声.图3-6 蜂鸣器3.7 八位抢答输入设计八个按键分别供八位选手使用,当主持人按下开始抢答键后,选手们在第一时间内按下自己的按键,即可进行抢答。图3-7 八位抢答输入电路图3.8
14、主持人控制按键主持人控制按键由“开始抢答”、“停止/复位”、“强大时间调整”、“答题时间调整”、“加1”、“减1”六个按键组成。按动不同的按键就能实现不同的功能。图3-8 控制按键四、软件设计4.1 .1主程序的设计流程图显示,报警子程序非法抢答子程序是否有抢答键按下开始初始化子程序P3.2和p3.3是否按下P3.0是否按下倒计时子程序时间调整子程序返回是否否是是显示子程序正常抢答子程序返回结束图4-1 系统主程序流程图4.1.2主程序设计源程序MAIN: MOV R1,#30;初设抢答时间为30s MOV R2,#60;初设答题时间为60s MOV TMOD,#11H;设置未定时器/模式1
15、MOV TH0,#0F0H;送初值 MOV TL0,#0FFH;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1SETB EX0SETB EX1;允许四个中断,T0/T1/INT0/INT1 CLR OKCLR RING SETB TR1 SETB TR0;一开始就运行定时器,以开始显示- 4.2子程序的设计流程图4.2.1 查询程序送数开始调用DISPLAYP3.0进位为为1?调用DELAYNEXT调用BARK倒计时COUNT(2)=查询程序=START: MOV R5,#0BH MOV
16、R4,#0BH MOV R3,#0BHACALL DISPLAY;未开始抢答时候显示- JB P3.0,NEXT;ddddddd ACALL DELAY JB P3.0,NEXT;去抖动 ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送R1-R6,因为R1中保存了抢答时间 SETB OK;抢答标志位 MOV R3,#0AH;抢答只显示计时,灭号数 AJMP COUNT;进入倒计时程序NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,F
17、ALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP STARTTZ1:JMP FALSE7TZ2:JMP FALSE84.2.2 非法抢答处理程序Y开始P1.0按下?P1.1按下?P1.2按下?P1.3按下?P1.0按下?P1.0按下?P1.0按下?P1.0按下?将犯规号数送到R3犯规抢答程序返回YYYYYYYNNNNNNN4.2.3 抢答时间调整子程序设置抢答和答题时间将R1的十位和个位分别送到R4,R5调显示子程序P3.4按下P3.5按下P3.1按下R1=99R1=0?调延时子程序R1=1送到R1R1-1送到R1R1=0结束R1=99开始YYYYNNNNN五.系统调试
18、系统调试包括硬件调试和软件调试,硬件调试的任务是排除系统的硬件电路故障,包括设计错误和工艺故障。软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。硬件调试:在本次课程设计中,我们用到如下元器件:七段数码显示器7SEG-MPX8-CC-BLUE、芯片74HC245、单片机AT89C51、12个BUTTON按键、2个15P电容 CERAMIC、两个晶振CRYSTAL、电解电容MINELECT470N63V、10个10K电阻MINRES10K、并口电阻RESPACK-8、蜂鸣器SOUNDER、电源及接地装置。软件调试:1.运用Keil软件调试程序将Keil软件解压并
19、安装;在Keil中写入(汇编)程序,将其用非中文及.asm为后缀保存下来;调试程序至没有错误;将其Rebuild就可以了。2.运行在Proteus中打开画好的图形;分别点击并填写source下的第二项、第一项,接着点击build all;双击at89c51打开P F加入以.HEX结尾的文件;点击proteus界面左下方的开始按钮即可运行程序。运行时,若达不到题目要求,则返回去修改程序直至达到要求为止。图3-1.1 抢答开始前电路图图3-1.3 正常抢答倒计时电路图图3-1.4 答题倒计时电路图六、课程设计体会本次历时接近两周的课程设计,我感觉真是受益匪浅啊!本课程设计让我明白:在课程设计中只有
20、一个人知道原理是远远不够的,必须让每个人都明白该设计中每一个步骤式为什么要这样设计,否则一个人的错误,就有可能导致整个工作失败。团结协作式我们成功的一项非常重要的保证。而这次设计也正好锻炼我们这一点,这也是非常宝贵的。在这个过程中,我们也曾经因为汇编程序的掌握深度不够失落过,也曾经为仿真成功而热情高涨。生活就是这样,学习亦是如此,汗水预示着结果也见证者收获,劳动是人类生存生活永恒不变的话题。当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来的收获的喜悦,不懂付出怎么能知道回报的快乐,一份耕耘一份收获,就在这样的痛与快乐的 交融中,我们学到了知识,学到了做人的道理。这次的课程设计,我们学到了很多书
21、本上没有详细介绍的东西最大的收获是对单片机CPU,汇编语言,显示器等的进一步学习,加深了了解,使得课堂上学到的东西得到实践;同时,也开发了我们的创新思维,提高对事物的感性认知;此外,本次课程设计是我们对单片机原理与接口技术这门课程更加感兴趣,即使以后不接着往这一方面学下去,我们也会不断查阅相关书籍,增长这一方面的知识。七、参考文献1. 单片机原理及接口技术 吴亦锋 陈德为 主编 电子工业出版社2单片机MCS-51原理及应用开发教程 晁阳 编 清华大学出版社附录:源程序代码OK EQU 20H;抢答开始标志位RING EQU 22H;响铃标志位ORG 0000HAJMP MAINORG 0003
22、HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30;初设抢答时间为30s MOV R2,#60;初设答题时间为60s MOV TMOD,#11H;设置未定时器/模式1 MOV TH0,#0F0H;送初值 MOV TL0,#0FFH;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1SETB EX0SETB EX1;允许四个中断,T0/T1/INT0/I
23、NT1 CLR OKCLR RING SETB TR1 SETB TR0;一开始就运行定时器,以开始显示-如果想重新计数,重置TH1/TL1就可以了;=查询程序=START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BHACALL DISPLAY;未开始抢答时候显示- JB P3.0,NEXT;ddddddd ACALL DELAY JB P3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送R1-R6,因为R1中保存了抢答时间 SETB OK;抢答标志位,用于COUNT子程序
24、中判断是否查询抢答 MOV R3,#0AH;抢答只显示计时,灭号数 AJMP COUNT;进入倒计时程序, 在COUNT里面查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP STARTTZ1:JMP FALSE7TZ2:JMP FALSE8;=非法抢答处理程序=FALSE1: ACALL BARK;按键发声MOV R3,#01H AJMP ERRO
25、RFALSE2: ACALL BARKMOV R3,#02H AJMP ERRORFALSE3: ACALL BARKMOV R3,#03H AJMP ERRORFALSE4: ACALL BARKMOV R3,#04H AJMP ERRORFALSE5: ACALL BARKMOV R3,#05H AJMP ERRORFALSE6: ACALL BARKMOV R3,#06H AJMP ERRORFALSE7: ACALL BARKMOV R3,#07H AJMP ERRORFALSE8: ACALL BARKMOV R3,#08H AJMP ERROR;=INT0(抢答时间R1调整程序)=
26、INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;先在两个时间LED上显示R1 JNB P3.4,INC0;P3.4为+1s键,如按下跳到INCO JNB P3.5,DEC0;P3.5为-1s键,如按下跳到DECO JNB P3.1,BACK0;P3.1为确定键,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1AJMP
27、INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1;如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI ;=INT1(回答时间R2调整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV ABMOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JN
28、B P3.1,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=COUNT: MOV R0,#00H;重置定时器中断次数 M
29、OV 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;取个位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下运行 CLR RING AJMP CHECKFULL: CJNE A,
30、#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自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT
31、:JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TZ3 JNB P1.7,TZ4 AJMP RECOUNTTZ3:JMP TRUE7TZ4:JMP TRUE8 QUIT: CLR OK;如果按下了停止键执行的程序CLR RINGAJMP START;=正常抢答处理程序=TRUE1: ACALL BARK;按键发声 MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H CLR OK;因为答题的计时不再查询抢答,所以就锁了
32、抢答 AJMP COUNTTRUE2:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6:ACALL BARK;MOV A,R2
33、MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#08H 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向下运行-灭并停响 CLR R
34、ING 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 P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START;=显示程序=DISPLAY:MOV DPTR,#DAT1;查表显示
35、程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,40H ;灭,1,2,3,4,5,6,7,8,9,灭,-DA
36、T2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,40H;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET;=延时(显示和去抖动用到)=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,#0B0HINC R0 RETIEND39