基于51单片机的8路抢答器
基于51单片机的8位竞赛抢答器设计
安装调试
撰写设计报告
答辩或成绩考核
教研室主任审查意见:
负责人签字:
年月日
当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
皖西学院
课程设计任务书
系别:
机电
专业:
电气
学 பைடு நூலகம் 姓 名:
学 号:
课程设计题目:
基于51单片机的8位竞赛抢答器设计
起迄日期:
6月 113日~6月25日
课程设计地点:
教学实验楼B502楼
指导教师:
张 磊
下达任务书日期:2011年6月13日
课 程 设 计 任 务 书
1.本次课程设计应达到的目的:
1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题;
课 程 设 计 任 务 书
3.对本课程设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
1、选用AT89S51单片机和适当的存储器及接口芯片完成相应的功能。
2、画出详细的硬件连接图。
3、给出程序设计思路、画出软件流程图。
4、给出地址分配表。
5、给出所有程序清单并加上必要注释。
4、侯玉宝.基于Proteus的51系列单片机设计与仿真.北京:电子工业出版社2009
课 程 设 计 任 务 书
5.本课程设计课题工作进度计划:
起迄日期
工作内容
基于51单片机的8路抢答器
基于51单片机的8路抢答器摘要此次设计提出了用AT89S51单片机为核心控制元件,设计一个简易的抢答器,本方案以AT89S51单片机作为主控核心,与晶振、数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用汇编语言编程,使其实现一些基本的功能。
本设计的系统实用性强、判断精确、操作简单、扩展功能强。
它的功能实现是比赛开始,主持人读完题之后按下总开关,即计时开始,此时数码管开始进行30s的倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号和抢答所用的时间,同时蜂鸣器也会发出声音,以提示有人抢答本题,如果在规定的60s时间内没有做出抢答,则此题作废,即开始重新一轮的抢答。
在抢答和回答时间的最后5s,蜂鸣器都会给予报警提示。
关键词:单片机、AT89S51、抢答器目录第一章前言 (1)第二章各模块的选择和论证 (3)2.1抢答器显示模块选择 (3)2.2 控制器选择 (4)2.3 键盘选择 (5)2.4 时钟频率电路的设计 (7)2.5 复位电路的设计 (7)2.6 报警电路 (8)2.7 AT89C51单片机简单概述 (8)2.7.1 AT89C51单片机的结构 (8)2.7.2 AT89C51单片机管脚说明 (9)第三章模块最终方案的设计 (12)3.1总体设计思路 (12)3.2 功能介绍 (12)3.3 抢答器的软件设计 (12)3.4 数码显示软件设计 (13)第四章系统调试与仿真 (15)4.1 软件调试问题分析 (15)4.2 Proteus 仿真 (16)第五章电路板的制作与检查 (17)5.1 焊接的问题及解决 (17)第六章总结 (18)6.1 论文总结 (18)6.2 工作展望 (19)参考文献、资料索引 (20)致谢 (21)附录 (22)附录一主程序清单 (22)附录二单片机八路智能抢答器原理图 (32)附录三 Proteus仿真原理图 (33)第一章前言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
八路抢答器-基于单片机C语言
#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;sbit k6=P1^5;sbit k7=P1^6;sbit k8=P1^7; //选手按键sbit beep=P3^6; //蜂鸣器uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}; //0-9代码(共阴极)uchar shiwei,gewei,xuanshou,count,i,second;uchar score1,score2,score3,score4,score5,score6,score7,score8;//选手1~8的分数uint t,m,n,a,a1,a2,a3,a4,a5,a6,a7,a8;void Timer(){TMOD|=0x01;TH0=0xd8; //初值55536,计数10000次,每次1US,总计10msTL0=0xf0;IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时TR0=1;}void tim(void) interrupt 1 using 1 //为定时中断TR0{TH0=0xd8; //重新赋值TL0=0xf0;count++;if(count==100) //100*10ms=1秒{count=0;second--; //秒减1}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);//延时1ms}void display (uchar shiwei,gewei,xuanshou) //显示函数{P2=0xfe; //打开显示时间十位的位选低电平有效1111 1110 P0=shiwei;//显示十位delay(5);P2=0xfd; //个位位选1111 1101P0=gewei;delay(5);P2=0xf7; //选手位选1111 0111P0=xuanshou;delay(5);}void dis(void)//调用显示函数{shiwei=tab[second/10];gewei=tab[second%10];xuanshou=tab[i];display (shiwei,gewei,xuanshou);}void init() //初始化函数{P2=0x04;//0000 0100P0=0x3f;//数码管共阴0011 1111显示0t=0;beep=0;//蜂鸣器i=0;second=29;score1=60;score2=60;score3=60;score4=60;score5=60;score6=60;score7=60;score8=60;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;}void main()//主函数{init();//调用初始化函数if(k==1){ m=0; if(k1==0) {delay(5);if(k1==0);while(!k1);beep=1;delay(500);beep=0;} // 违规抢答显示号码报警while(t){if(m==0) //开关,保证程序只执行一次{switch(t){case 1:{TR0=0;i=1;second=score1;beep=1;delay(500);beep=0;a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break; //有选手抢答时显示选手号码蜂鸣器响,时间为0,t和i对应}}} }if(k2==0) {delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0) {delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0) {delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0) {delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0) {delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0) {delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0) {delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}}if(k==0){Timer();//中断定时器打开delay(10);while(!k);while(1){dis();m=0;n=0;if (second==29){beep=1;delay(500);beep=0;}if(second==0){TR0=0;n=1;if(k1==0){delay(5);if(k1==0);while(!k1);t=1;beep=1;delay(500);beep=0;} // 违规抢答显示号码报警if(k2==0){delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0){delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0){delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0){delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0){delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0){delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0){delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}if(k==0){beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}}//如果再次按下开始按钮,蜂鸣器响0。
51单片机八路抢答器课程设计
题目:51单片机八路抢答器课程设计一、概述1.1 课程设计背景正所谓“活到老学到老”,学生在校期间不仅要掌握理论知识,更需要进行实践操作,提高自己的动手能力和创新能力。
而嵌入式系统是当前信息技术领域的一个重要方向,掌握单片机开发技术对于学生来说非常重要。
1.2 课程设计意义本课程设计旨在通过51单片机八路抢答器的设计,让学生掌握嵌入式开发的基本原理和方法,培养学生的动手能力和创新能力,提高学生的实际操作能力和解决问题的能力,促进学生对嵌入式系统的深入理解。
二、课程设计目标2.1 知识目标通过学习51单片机八路抢答器课程设计,学生应该能够掌握51单片机的基本原理和编程方法,了解嵌入式开发的基本流程和原理。
2.2 能力目标学生应该能够独立完成51单片机八路抢答器的设计和调试,并能够根据实际需要进行合理的改进和优化。
2.3 情感目标通过课程设计,学生应该能够培养对嵌入式开发的兴趣和热情,提高解决问题的勇气和毅力。
三、课程设计内容3.1 理论知识讲解本部分主要介绍51单片机的基本原理、工作原理和编程方法,让学生对51单片机有一个全面的了解。
3.2 实践操作训练学生在理论知识掌握的基础上,将进行51单片机八路抢答器的设计和调试实践,让学生在实际操作中逐步加深对嵌入式系统的理解。
3.3 设计报告撰写学生需要撰写关于51单片机八路抢答器的设计报告,详细介绍设计的过程和原理,加深对课程内容的理解和应用。
四、课程设计方案4.1 课程设计流程(1)理论知识学习:学生进行对51单片机的理论知识学习,包括基本原理和编程方法。
(2)实践操作训练:学生进行51单片机八路抢答器的设计和调试实践,逐步提高自己的动手能力。
(3)设计报告撰写:学生完成设计报告,总结课程学习的得失,加深对嵌入式系统的理解。
4.2 课程设计要求(1)学生需按时完成理论知识学习和实践操作训练。
(2)学生需要严格按照课程设计要求进行设计报告的撰写,并提交给老师进行评审。
基于单片机的八路抢答器毕业设计
基于单片机的八路抢答器毕业设计一、选题背景及意义1.1 选题背景抢答器是一种常见的电子竞赛设备,它可以被广泛应用于各种知识竞赛、智力竞赛和技能竞赛中。
抢答器的原理是通过按下按钮来触发电路,从而使得系统判断谁先按下了按钮。
由于抢答器具有响应速度快、准确性高等特点,因此在教育培训、科技竞赛等领域得到了广泛的应用。
1.2 选题意义本设计旨在通过单片机技术实现一个八路抢答器,以满足各种知识竞赛、智力竞赛和技能竞赛的需求。
该抢答器具有响应速度快、准确性高等特点,可以提高比赛的公正性和公平性,同时也可以增加比赛的趣味性和互动性。
二、设计思路及方案2.1 设计思路本设计采用基于单片机的八路抢答器方案,主要包括以下几个部分:(1)光电传感器模块:通过红外线发射管和接收管构成光电传感器,用于检测选手是否按下按钮。
(2)单片机模块:采用STC89C52单片机,负责控制整个抢答器的运行。
(3)LED显示模块:采用八个LED灯,用于显示哪个选手按下了按钮。
(4)音响提示模块:通过蜂鸣器发出声音提示哪个选手按下了按钮。
2.2 设计方案(1)硬件设计硬件设计主要包括光电传感器电路、单片机电路、LED显示电路和音响提示电路四个部分。
其中,光电传感器电路主要由红外线发射管和接收管构成;单片机电路采用STC89C52单片机,配合外部晶振、复位电路和ISP下载接口实现对整个系统的控制;LED显示电路采用常规的共阴极八段数码管,通过多工位选择来实现对不同选手的显示;音响提示电路采用蜂鸣器实现对选手按键行为的声音提示。
(2)软件设计软件设计主要包括系统初始化、中断服务程序、定时器控制程序和按键扫描程序四个部分。
其中,系统初始化主要负责对各个模块进行初始化设置;中断服务程序主要负责处理光电传感器的中断请求;定时器控制程序主要负责控制LED灯的显示和蜂鸣器的声音提示;按键扫描程序主要负责检测选手是否按下按钮,并触发相应的中断服务程序。
三、设计实现及测试3.1 设计实现本设计采用Protues仿真软件进行电路设计和调试,通过Keil C编译软件进行单片机程序编写和调试。
8路抢答器实验报告
8路抢答器实验报告1. 实验目的本实验的主要目的是使用8051单片机实现一个8路抢答器,通过此实验进行对8051单片机的基本功能使用的学习与实践。
2. 实验设备本实验所需设备为:8051单片机,LED灯8个,按键8个,继电器8个,电阻8个,电源、面包板、杜邦线等。
3. 实验原理抢答器是一种用来考验大家反应速度的体育游戏,而这种游戏的核心就是一个电子计时器,本实验的抢答器就是一个基于8051单片机的电子计时器。
抢答器的原理:开启定时器,确定一个随机时间,随机时间结束后,第一个按下按键的人获得了抢答的权利,按下按键之后,其它的按键则无法工作。
等到所有的按键都无法工作时,即抢答结束,此时可以利用LED或者接上继电器进行开关控制。
4. 实验步骤4.1 硬件电路连接将8个LED灯和8个按键分别连接到8个口线上,除此之外还需要连接8个电阻和8个继电器,将其连接到端口上,在连接好之后,进行外部与单片机的连接。
根据本实验需要,固定内部高低电平,同时其他单片机口线需要接继电器。
最后将电脑串口线同单片机串口接口相连。
4.2 编写单片机程序在编写单片机程序之前,首先需要对手册进行分析,确定采用的指令集,并开始编写程序。
4.3 配置定时器在本实验中,需要实现的功能是随机时间,所以需要通过定时器来实现,实现方法是使用定时器的计数器,改变计数器的初始值,以达到随机时间的效果。
在对定时器进行初始化之后,对计数器的值进行配置。
4.4 实现抢答器功能首先需要将单片机初始化,在初始化完成后,开始进行随机时间的计算。
每当按下按键之后,需要进行一些特定的操作,比如计算按键时间,进行相应的判断,并激活LED或继电器。
当最后一个按键被按下之后,抢答器即时结束。
这种方式的实现是在倒计时结束之前,抢答器不会被激活,直到倒计时结束后,抢答器才会被激活,同时相应的LED或继电器也会被关闭或关闭。
5. 实验总结通过本次实验,我对8051单片机有了更深刻的认识,了解了使用8051单片机实现抢答器的程序结构和代码实现方式,了解了定时器的使用和编程,掌握了按键的使用和程序控制的方法。
基于51单片机八路抢答器的设计
基于51单片机八路抢答器的设计八路抢答器是一种常见的电子设备,利用该设备可以实现多人同时抢答的功能。
本设计基于51单片机,通过电路和程序的设计,实现了一个八路抢答器。
一、硬件设计1.单片机选择本设计选择51单片机作为控制核心,采用STC89C52微控制器,该单片机具有丰富的外设接口和较大的存储空间,能够满足实现八路抢答器的要求。
2.抢答按键设备中需要设置八个抢答按键,用于参与者抢答。
按键采用常闭型按键,接通时为低电平,用于触发中断。
3.电源设计为了提供稳定的电源给抢答器,设计中采用了5V稳压电源电路,供电采用AC220V转DC5V电源适配器。
4.显示设计为了方便显示抢答结果,本设计采用了一个共阴数码管,用于显示抢答结果。
具体显示方式根据需求进行编程显示。
5.连接器设计为方便接线和扩展,设计中使用了排针排插连接器,将各个按键、数码管等连接到主控板上。
二、软件设计1.引脚设置首先需要对单片机的I/O引脚进行设置,将各个按键连接到相应的引脚上。
同时,还需要设置数码管的引脚,用于控制显示。
2.中断设置为了实现按键的检测和抢答功能,需要设置外部中断。
具体的中断设置根据引脚的连线情况进行配置。
3.抢答逻辑抢答的逻辑可以根据需求进行设计,本设计采用最先按下的键位为答题者,其他键位将被屏蔽。
按下按键后,相应的数码管会显示该答题者的编号或名称,并输出一个信号用于记录答题者的顺序。
4.结果显示抢答结束后,根据答题者的顺序,将结果显示在数码管上。
可以根据需求进行设计,如按照答题者的编号显示。
5.功能扩展除了基本的抢答功能外,还可以对设备进行功能扩展。
如设置答题时间限制,设置显示答题者的得分,设置答题者的排名等。
三、PCB设计完成硬件电路和软件设计后,需要进行PCB设计,将各个元件进行布局,进行连线和焊接。
PCB设计需要保证连接的正确性和布线的合理性。
四、测试与调试完成PCB的焊接后,需要进行设备的测试与调试。
通过逐个按下按键,观察数码管的显示结果是否正确。
基于51单片机八路抢答器程序代码
基于51单片机八路抢答器程序代码程序代码:```#include <reg51.h>// 定义IO口sbit buzzer = P2^0; // 蜂鸣器sbit led1 = P2^1; // LED1 sbit led2 = P2^2; // LED2 sbit led3 = P2^3; // LED3 sbit led4 = P2^4; // LED4 sbit led5 = P2^5; // LED5 sbit led6 = P2^6; // LED6 sbit led7 = P2^7; // LED7// 定义全局变量unsigned char num = 0; // 计数器int flag = 0; // 抢答标志位// 延时函数void delay(unsigned int t) {unsigned int i, j;for(i=0;i<t;i++) {for(j=0;j<110;j++);}}// 抢答函数void answer() interrupt 0 {flag = 1; // 标志位变为1 num ++; // 计数器加1 }}// 主函数void main() {// 初始化定时器TMOD = 0x01;TH0 = 0xF8;TL0 = 0xCC;ET0 = 1;EA = 1;TR0 = 1;buzzer = 0;led1 = 1;led2 = 1;led3 = 1;led4 = 1;led5 = 1;led6 = 1;led7 = 1;// 主循环while(1) {if(num == 1) { buzzer = 1; led1 = 0; delay(500);delay(2000);num = 0;} else if(num == 2) { buzzer = 1;led2 = 0;delay(500);buzzer = 0;led2 = 1;delay(2000);num = 0;} else if(num == 3) { buzzer = 1;led3 = 0;delay(500);delay(2000);num = 0;} else if(num == 4) { buzzer = 1;led4 = 0;delay(500);buzzer = 0;led4 = 1;delay(2000);num = 0;} else if(num == 5) { buzzer = 1;led5 = 0;delay(500);delay(2000);num = 0;} else if(num == 6) { buzzer = 1;led6 = 0;delay(500);buzzer = 0;led6 = 1;delay(2000);num = 0;} else if(num == 7) { buzzer = 1;led7 = 0;delay(500);delay(2000);num = 0;}}}```该代码实现了一个基于51单片机的八路抢答器系统,使用了定时器和中断来控制抢答过程。
基于单片机的八路智能抢答器的毕业设计
按键输入模块共有14个按键,分为抢答按键和控制按键。抢答按键共有八个,分别为S1―S8,供抢答选手进行抢答使用;控制按键有六个,分别为S9―S14,其中S9和S10分别为“抢答时间调整键”和“回答时间调整键”;S11和S12分别为时间“加1”和“减1”按键;S13和S14分别为“抢答开始按键”和“停止按键”。显示模块本系统采用四个共阳极LED数码管显示,一个数码管用来显示抢答到问题的选手的号码,两个用来显示倒计时时间,一个未使用的数码管作为以后的扩展使用。时钟与复位模块包括时钟电路和复位电路,单片机的时钟信号用来提供单片机片内各种操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。报警模块在本系统中为附加模块,它的主要用途就是起到提示并引起人们的注意。电源模块是为了增强本系统应用的广泛性而设计的模块,它的主要任务是将交流220V电压转换为系统中可以直接使用的稳定的直流+5V。
According to the function, intelligent vies to answer first the vies to answer first the designrequirements of the following:vies to answer first is also for 8 contestants or 8 teams game;host can through the intelligence is set button vies to answer first each question time and answerthe vies to answer first time;have reset and illegal vies to answer first control function, set up a system to eliminate and vies to answer first, and bya host control switch control;when the host to start "start" button, the timer vies to answerfirst to reduces the time, vies to answer first timeafter running prohibit contest;countdown 5 seconds, if still no contest, then system every 1 salarmonce, to tip competitors;vies to answer first instruments have lock to save and displayfunction. That's according to the button, lock to save the corresponding player of the entries, and the Numbers LED digital display, on the player vies to answer first shall give priority lock to save, the other key cannot respond to fair to choosethe first vies to answer first;contestants in the set period of time vies to answer first, viesto answer first effectively, on the monitor demonstrated contestant's Numbers, and at the same time into the answer problem of the time countdown;during the
(完整word版)用51单片机汇编语言编写八位抢答器程序(word文档良心出品)
课题用51单片机汇编简易的8键数码蜂鸣抢答器日期:2013 年7 月10日随着科学技术的不断发展,促使人们学科学、学技术、学知识的手段多种多样。
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低,减少兴致。
做为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以8路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,只需要人为的编写汇编语言到单片机里,就能实现和满足不同的控制方案,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使LED数码管能够正确地显示倒计时间和抢答情况。
具体功能为:1,按下复位键代表主持人宣布抢答开始,同时数码管开始进行抢答倒计时,倒计时开始计时后方能开始抢答,抢答用按键形式;2,开抢答限定时间为30秒,超过30秒后倒计时停止,之后选手将抢答无效;3,先按下键的选手即为抢答成功,蜂鸣器将持续几秒将提示抢答成功,数码管将显示该选手的号码,同时相应的选手灯会亮;4,抢答成功的选手即先按下键盘,其他按键将锁定,无效;5,5,按下复位键进行下一次抢答。
本系统是借用单片机采用模块化设计的简易版抢答器,主控与参赛者设为终端分系统。
参赛者分系统设有:抢答按纽、计时显示、提示功能;主控分系统有:复位开始,计时显示。
其主要模块为:1.主控制器模块:采用AT89S51单片机控制;2.抢答器显示模块:数码管和灯显示;3.抢答成工提示模块:蜂鸣器提示;4.抢答器键盘:S1到S8八个按钮分别代表1-8号选手下图为系统主要功能模块图工作流程图为程序流程图程序源代码为org 0ajmp mainorg 0bhajmp top main:setb et0setb eamov tmod,#1 mov th0,#3ch mov tl0,#0b0h setb tr0mov dptr,#tabmov 31h,#30hmov r2,#20display:lcall l5msmov a,31hanl a,#0fhmovc a,@a+dptrmov p0,amov p2,#0fbhacall l5msmov a,31hswap aanl a,#0fhmovc a,@a+dptrmov p0,amov p2,#0f7hacall l5msljmp displayl5ms:mov r3,#0djnz r3,$retTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H top:L: MOV P3,#1FHMOV A,P3CJNE A,#1FH,L1SJMP aiL1: MOV 20H,AMOV P3,#0E3HMOV A,P3ai:mov tl0,#0b0h mov th0,#3chdjnz r2,lendmov r2,#20mov a,31hanl a,#0fhcjne a,#0,yimov a,31hsubb a,#7cjne a,#0h,c1sjmp eryi:mov a,31hdec acjne a,#0,c1sjmp erc2:mov 31h,asjmp lendc1:mov 31h,a lend:retier:mov r5,#1cjne r5,#0,erL2: ORL 20H,AMOV A,20HMOV P2,#0FEHMOV P0,#0F9Hmov p1,#7fhacall beepSJMP LL3: CJNE A,#0BBH,L4 MOV P0,#0A4Hmov p1,#0bfhacall beepL4: CJNE A,#07BH,L5MOV P0,#0B0Hmov p1,#0dfhacall beepL5: CJNE A,#0D7H,L6MOV P0,#99Hmov p1,#0efhacall beepL6: CJNE A,#0B7H,L7MOV P0,#92Hmov p1,#0f7hacall beepL7: CJNE A,#77H,L8MOV P0,#82Hmov p1,#0fbhacall beepL8: CJNE A,#0CFH,L9 MOV P0,#0F8Hmov p1,#0fdhacall beepMOV P0,#80Hmov p1,#0fehacall beepL10: aJMP Lbeep:clr eaclr et0clr tr0LCALL DLYCPL P2.4DJNZ R4,beepsjmp $DLY: MOV R6, #20 D1: MOV R7, #248DJNZ R7, $DJNZ R6, D1retEND心得体会通过课程设计使我进一步熟悉和掌握单片机内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤通过利用ATC89C51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;通过本次设计,掌握单片机仿真软件kill的使用方法;理论联系实践,体现出大学生动手能力。
基于AT89C51单片机八位抢答器的设计
基于AT89C51单片机八位抢答器的设计一、本文概述随着电子技术的不断发展,单片机作为微型计算机的重要分支,已广泛应用于各种智能控制系统中。
AT89C51作为一款经典的8位单片机,以其高性能、低功耗、易编程等特点,在嵌入式系统设计中占据了重要地位。
本文旨在探讨基于AT89C51单片机的八位抢答器设计,通过分析其硬件组成、软件设计以及工作原理,为相关领域的开发人员提供一种实用的设计方案。
本文首先介绍了抢答器的应用场景和基本要求,随后详细阐述了AT89C51单片机的核心特性及其在系统中的作用。
接着,文章将重点介绍抢答器的硬件电路设计,包括按键输入电路、显示电路、声音提示电路等关键模块。
在软件设计方面,文章将给出抢答器程序的主要流程,包括按键扫描、状态判断、结果显示等功能模块的实现方法。
文章还将对抢答器的性能进行测试和分析,以确保其在实际应用中的稳定性和可靠性。
通过本文的研究,读者可以深入了解基于AT89C51单片机的八位抢答器的设计过程,掌握相关电子技术和编程技巧,为未来的嵌入式系统开发打下坚实基础。
本文的研究成果也可为类似系统的设计提供有益的参考和借鉴。
二、AT89C51单片机简介AT89C51是Atmel公司生产的一款低功耗、高性能的8位CMOS微控制器,它采用了Atmel公司的高密度、非易失性存储技术,并且与工业标准的8051指令集和输出管脚相兼容。
AT89C51单片机内部集成了4KB的可编程Flash闪烁存储器,这为用户提供了足够大的空间进行程序编写和存储。
它还拥有128字节的内部RAM、32个可编程的I/O口线、两个16位定时/计数器、一个5向量两级中断结构、一个全双工串行通信口、以及片内振荡器和时钟电路。
AT89C51单片机具有低功耗的空闲模式和掉电模式,使其在便携式产品和电池供电的应用中具有显著的优势。
其强大的功能集和灵活的编程能力使得AT89C51单片机在各种控制系统中得到了广泛的应用,包括抢答器设计、智能家居、工业自动化、医疗设备、安全系统等。
基于51单片机八路抢答器课程设计
基于51单片机八路抢答器课程设计一、引言在现代教育中,抢答器作为一种教学辅助工具经常被用于进行课堂互动和知识点检测。
本课程设计旨在基于51单片机设计一个八路抢答器,通过硬件电路和软件程序的配合,实现对答题速度的测量和抢答器的控制。
二、实验目的1.熟悉并掌握51单片机的基本原理和编程方法;2.学会使用按键、LED等外设控制电路进行实验设计;3.理解抢答器的工作原理,掌握测量答题速度的方法;4.实际动手设计并制作一个八路抢答器。
三、实验原理3.1 51单片机基本原理51单片机是一种常见的单片机,具有低功耗、低成本和强大的功能特点。
它通过内部的CPU、存储器、I/O口等组成,可以实现各种控制任务。
在本次实验中,我们将使用51单片机来控制八路抢答器的功能。
3.2 抢答器的原理八路抢答器的原理是基于51单片机和按键、LED等外设的配合实现的。
抢答器中的每个按键对应一个LED灯,当某个按键被按下时,对应的LED灯会亮起。
同时,51单片机会记录下按键按下的时间,用于测量答题速度。
抢答器的控制逻辑可以通过编程实现。
四、实验步骤4.1 硬件电路设计1.连接51单片机与按键、LED等外设,确保电路连接正确;2.按照抢答器的八路设计,为每个按键连接一个LED灯;3.确保电路的供电正常,能够正常控制LED灯的亮灭。
4.2 软件程序设计1.编写51单片机的控制程序,实现按键与LED灯的互动;2.程序中需要包括按键检测、LED亮灭控制和答题速度记录等功能;3.调试程序,确保各个功能正常运行;4.将程序下载到51单片机中,进行全面测试。
五、实验结果5.1 硬件电路测试1.针对每个按键依次按下,观察对应的LED灯是否亮起;2.测试按键按下时的按键反馈是否正常;3.检查电路连接是否稳定,无松动情况。
5.2 软件程序测试1.模拟按键按下,观察对应的LED灯是否亮起;2.检查答题速度记录功能是否正常;3.检查程序逻辑是否正确,没有出现死循环等异常情况。
基于51单片机八路抢答器的设计与实现论文任务书
3、2021年2月27日 —2021年4月3日
利用Keil uVision5进行程序设计,分析实验数据和结果,并对其性能进行统计和总结,完成论文的初稿并总结工作。
4、2021年4月4日 —2021年5月15日
[10]
周立功.项目驱动:单片机应用设计基础[M].北京:北京航空航天大学出版社, 2011.
教研室意见:
2020 年 1 月5 日
备注:本表必须由指导教师填写。
[2] 朱永金, 成友才.单片机应用技术[M].中国劳动社会保障出版社, 2010.
[3]吕红娟.单片机控制的八路抢答器的设计与制作[J].现在电子技术, 2014 (18) .
[4]金杰.MCS-51单片机C语言程序设计与实践[M].电子工业出版社, 2011.
[5]李素敏.抢答器的设计[J].职业, 2011 (23) .
后期运维更加简便,大大减少了人力大的市场竞争力。
毕业论文(设计)要求与计划:
1. 设计要求
(1)熟练掌握Keil uVision5深度学习框架,初步分析确定项目的目的规模和目标,进行可行性研究。
(2)通过与老师讨论,提出设计方案,完成需求分析,撰写需求分析报告。
意义;
随着社会的发展,各类比赛和娱乐活动的层出不穷,使得社会对抢答器功能和性能要求越来越高,目前市场上的智力竞赛抢答器多数是由数字电路设计组成。这种设计功能性比较强,但却有电路复杂,不可靠,运维比较困难等缺点。
因此设计以单片机为核心的新型智能抢答器,利用单片机及外围接口实现抢答系统,结合单片机的定时器的功能,将软件编程与硬件设计结合起来,使性能更加稳定,准确,有效,
最新毕业设计(论文-基于at89c51单片机的八路多功能抢答器设计
目录摘要 (2)绪论 (4)1 抢答器系概述 (6)1.1抢答器的功能模块 (6)1.2抢答器的工作原理 (8)1.3抢答器的特点及组成 (11)2硬件设计 (11)2.1硬件详细清单 (11)2.2 抢答器总电路图 (13)2.3 AT89C51的内部结构和功能 (14)2.4 晶体振荡器和电容的设计 (16)2.5 七段数码管显示电路的设计 (17)2.6 扬声器的设计 (17)2.7 按钮的设计 (18)2.8 芯片74HC30、74LS04的设计 (19)3软件设计 (19)3.1 软件系统结构图和程序流程图 (19)3.2 程序分析 (21)结束语 (41)致谢 (43)参考文献 (46)附录 (48)摘要在以往企业或学校举行知识竞赛中,都是主持人读题,观众选手得安静仔细听题目,有条件的花上万元买个电子抢答器,算是给知识竞赛赛场添彩了。
现实中大多数是依靠主持人发挥水平,但选手和观众要渴望类似跟电视台搞的知识竞赛中的效果一样是难以实现的。
而我们设计的抢答器节省的不小的开支,还能直观公正的看清哪位选手先抢答到题并有主持人来往下读题目。
它的功能实现是由主持人按键来控制总开关,在抢答中,只要主持人按下开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有声音提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主持人强制复位;按键锁定,在有效状态下,按键无效非法。
本次设计是用AT89C51单片机为核心控制元件,设计一个八路多功能抢答器。
以AT89C51单片机作为主控核心,与芯片74LS04、74HC30;扬声器等等构成硬件操作,再利用汇编语言来编程,来控制抢答器的功能实现。
这次设计的系统实用性强、判断精确、操作简单、扩展功能强。
关键词:抢答器 AT89C51 汇编语言计时绪论在知识竞赛中,特别是做抢答题时,在抢答过程中,为了更确切的知道哪一组或哪一位选手先抢答到题,必须要有一个系统来完成这个任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的8路抢答器摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:51单片机,抢答器,时间设定目录1 抢答器设计功能分析 (1)1.1 数字抢答器的概述 (1)1.2 设计任务与要求 (1)2 方案设计 (2)3 硬件电路设计 (3)3.1 总体设计 (3)3.2 外部振荡电路 (3)3.3 复位电路的设计 (4)3.4 显示电路的设计 (4)3.5按钮输入电路的设计 (4)3.6 发声 (5)4 系统软件设计 (6)4.1 程序系统结构图 (6)4.2 程序流程图 (6)4.3 程序代码: (9)4.3.1 查询程序: (10)4.3.2 非法抢答处理程序: (10)4.3.3 倒计时程序(包括有效抢答程序): (11)4.3.4 正常抢答处理程序: (13)4.3.5 犯规抢答程序: (14)4.3.6 显示程序: (15)4.3.7 延时(显示和去抖动用到): (16)4.3.8 TO溢出中断(响铃程序): (17)4.3.9 T1溢出中断(计时程序): (17)总结 (18)参考文献 (19)1 抢答器设计功能分析1.1 数字抢答器的概述对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
1.2 设计任务与要求基本要求:1.给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。
2.抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。
此外,要封锁输入电路,禁止其他选手抢答。
发挥部分:1.抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。
当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
2.参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
3.如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。
4.选手如果在主持人按开始键之前违规抢答,系统报警,LED显示违规选手号码和FF,直到主持人按下停止键。
2 方案设计该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:<1>可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
<3> 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
原理框图如下:图2-1 原理框图3 硬件电路设计3.1 总体设计根据抢答器的基本功能,可以设计出如下的单片机外围电路:图3-1 总体设计如图3-1,P3.0为开始抢答,P3.2为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器(用绿灯代替)输出为P3.6口。
P3.2为时间加1调整,P3.3为时间减1调整。
3.2 外部振荡电路图3-2 外部振荡电路一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
3.3 复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图所示:图3-3 复位电路在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。
软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。
3.4 显示电路的设计显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。
图3-4 阴极七段数码管按钮输入电路的设计抢答器的输入按钮使用常开开关,图3-5 抢答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”现象就可以了。
这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。
3.6 发声这里能利用程序来控制单片机P3.6口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。
4 系统软件设计4.1 程序系统结构图硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。
由功能分析得到以下的软件结构图:图4-1 软件系统结构图4.2 程序流程图整个程序主要由定时器T0、定时器T1、外部中断0和主程序构成。
定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3.7取反,扬声器发声,改变定时器初值,可改变扬声器频率。
定时器程流程图如下:图4-2 响铃程序流程图定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。
其流程图如下:图4-3 倒计时中断流程图外部中断0用于调整倒计时时间,流程图如下:图4-4 调整抢答时间流程图主程序协调三个中断一起工作,实现抢答功能,其流程图如下:图4-5 主程序流程图4.3 程序代码:P3.0为开始抢答,P3.1为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2的低三位口,蜂鸣器输出为P3.6口。
ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 001BHAJMP T1INTOK EQU 20H ; 抢答开始标志位RING EQU 22H ; 响铃标志位ORG 0040HMAIN: MOV R1,#0FH; 初设抢答时间为15sMOV R2,#0AH; 初设答题时间为10sMOV TMOD,#11H; 设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH; 越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H; 50ms为一次溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1; 允许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0; 一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了4.3.1查询程序:START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY; 未开始抢答时候显示FFFJB P3.0,NEXTACALL DELAYJB P3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询 ACALL BARK;按键发声MOV A,R1MOV R6,A; 送R1->R6,因为R1中保存了抢答时间SETB OK; 抢答标志位,用于COUNT只程序中判断是否查询抢答MOV R3,#0AH; 抢答只显示计时,灭号数AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,FALSE3JNB P1.3,FALSE4JNB P1.4,FALSE5JNB P1.5,FALSE6JNB P1.6,FALSE7JNB P1.7,FALSE8AJMP START4.3.2非法抢答处理程序:FALSE1: ACALL BARK; 按键发声MOV R3,#01HAJMP ERRORFALSE2: ACALL BARKMOV R3,#02HAJMP ERRORFALSE3: ACALL BARKMOV R3,#03HAJMP ERRORFALSE4: ACALL BARKMOV R3,#04HAJMP ERRORFALSE5: ACALL BARKMOV R3,#05HAJMP ERRORFALSE6: ACALL BARKMOV R3,#06HAJMP ERRORFALSE7: ACALL BARKMOV R3,#07HAJMP ERRORFALSE8: ACALL BARKMOV R3,#08HAJMP ERROR4.3.3倒计时程序(包括有效抢答程序):COUNT: MOV R0,#00H; 重置定时器中断次数 MOV TH1,#3CHMOV TL1,#0B0H;重置定时器RECOUNT: MOV A,R6; R6保存了倒计时的时间 MOV B,#0AHDIV AB; 除十分出个位/十位 MOV 30H,A; 十位存于(30H)MOV 31H,B; 个位存于(31H)MOV R5,30H ; 取十位MOV R4,31H ; 取个位MOV A,R6CLR CSUBB A,#07HJNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下运行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHECK ; 1s时,响并显示号数并清R0,重新计时SETB RINGMOV A,R6JZ QUIT ; 计时完毕MOV R0,#00HDEC R6 ; 一秒标志减1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK ; 如果1s向下运行,否者跳到查"停/显示" DEC R6; 计时一秒R6自动减1MOV R0,#00HCHECK: JNB P3.1,QUIT; 如按下停止键退出ACALL DISPLAYJNB P1.0,TRUE1JNB P1.1,TRUE2JNB P1.2,TRUE3JNB P1.3,TRUE4JNB P1.4,TRUE5JNB P1.5,TRUE6JNB P1.6,TRUE7JNB P1.7,TRUE8AJMP RECOUNTQUIT: CLR OK ; 如果按下了"停止键"重新回到开始 CLR RINGACALL BARKAJMP START4.3.4正常抢答处理程序:TRUE1: ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#01HCLR OK;AJMP LOOP2TRUE2:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP LOOP2TRUE3:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP LOOP2TRUE4:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#04HCLR OKTRUE5: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP LOOP2TRUE6: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP LOOP2TRUE7: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP LOOP2TRUE8: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#08HCLR OKLOOP2: AJMP DISPLAY ;抢答后停止计时,等待返回SETB RINGJNB P3.1 QUITAJMP LOOP24.3.5犯规抢答程序:ERROR: SETB RING ;犯规响铃MOV R4,#0BH; 显示FF和犯规号数LOOP3: ACALL DISPLAYJNB P3.1 QUIT1; 等待“停止”键按下AJMP LOOP3QUIT1: CLR RINGCLR OKAJMP START4.3.6显示程序:DISPLAY:MOV DPTR,#DAT1; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出MOV A,R5MOVC A,@A+DPTRMOV P2,#01HMOV P0,AACALL DELAYMOV DPTR,#DAT2MOV A,R4MOVC A,@A+DPTRMOV P2,#02HMOV P0,AACALL DELAYMOV A,R3MOVC A,@A+DPTRMOV P2,#04HMOV P0,AACALL DELAYRETDAT1: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 DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RET4.3.7延时(显示和去抖动用到):DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET发声程序:BARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING; 按键发声RETINT0(抢答时间R1调整程序):INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;先在两个时间LED上显示R1JNB P3.2,INC0; P3.2为+1s键,如按下跳到INCOJNB P3.3,DEC0; P3.3为-1s键,如按下跳到DECOJNB P3.4,BACK0; P3.4为确定键,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了,R1就置0,重新加起MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1;如果R1为0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK0: RETI4.3.8 TO溢出中断(响铃程序):T0INT:MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUTCPL P3.6 ; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETI4.3.9 T1溢出中断(计时程序):T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETIEND总结通过此次的课程设计,让我更进一步的巩固了单片机的各种知识。