单片机课程设计(八路抢答器)

合集下载

单片机、微机原理课程设计(八路抢答器)

单片机、微机原理课程设计(八路抢答器)

《微机原理与接口技术》课程设计报告基于STC89C52防违规八路抢答器院系:专业(班级):姓名:学号:指导教师:职称:完成日期: 2013 年 12 月 25 日目录1 引言 (1)2 总体方案论证与设技 (1)2.1 主控模块的选型和论证 (1)2.2 显示模块的选型和论证 (2)2.3 按键模块的选型和论证 (2)2.4 系统整体设计概述 (3)2.5 系统使用说明 (4)3 系统硬件电路设计 (4)3.1 主控模块 (4)3.1.1 单片机芯片介绍 (5)3.1.2 单片机最小系统 (6)3.2 数码管模块设计 (6)3.2.1 数码管原理介绍 (7)3.2.2 数码管电路设计 (7)3.3 键盘模块设计 (8)3.4 蜂鸣器模块设计 (8)4 系统软件设计 (9)4.1 系统软件总体设计 (9)4.2 程序设计原理 (10)5 系统调试 (11)5.1 硬件调试 (11)5.2 调试结果 (12)6 总结 (12)7 致谢 (13)参考文献 (14)附录A 系统整体原理图 (15)附录B 实物图 (16)附录C 系统源程序 (17)基于STC89C52防违规八路抢答器1 引言随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。

本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。

单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。

对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。

抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。

选手们都站在同一个起跑线上,体现了公平公正的原则。

1.1 本系统主要研究内容本系统设计制作一个基于单片机的8路抢答器。

能实现以下几种功能:(1)键盘扫描,显示当前按键。

单片机八路抢答器课程设计

单片机八路抢答器课程设计

单片机八路抢答器课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解并运用I/O口进行输入输出控制。

2. 使学生了解抢答器的功能和工作原理,掌握其设计与实现方法。

3. 帮助学生掌握定时器/计数器的使用,以及在中断处理中的应用。

技能目标:1. 培养学生运用所学知识设计并实现单片机八路抢答器的实际操作能力。

2. 培养学生分析问题和解决问题的能力,提高编程和调试单片机系统的技能。

3. 培养学生的团队协作能力,提高沟通与表达技巧。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发创新意识。

2. 培养学生具有实践操作中的安全意识,养成良好的实验习惯。

3. 培养学生面对挑战,勇于尝试,不断调整和优化设计方案的态度。

课程性质:本课程为实践性较强的课程,结合理论知识,以实际操作为核心。

学生特点:学生已具备一定的单片机基础知识和编程能力,具有较强的求知欲和动手能力。

教学要求:教师需引导学生主动探索,鼓励学生提出问题、解决问题,关注学生在实践中的个性化发展。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 理论知识:- 单片机基础原理回顾:I/O口控制原理,中断系统原理。

- 定时器/计数器原理及其在抢答器中的应用。

- 抢答器工作原理及设计要求。

2. 实践操作:- 单片机硬件连接及电路设计。

- 编写抢答器程序,实现基本功能。

- 调试与优化:程序调试,硬件测试,故障排查。

3. 教学大纲:- 第一周:回顾单片机基础知识,讲解抢答器工作原理。

- 第二周:学习定时器/计数器应用,设计单片机I/O口控制电路。

- 第三周:分组讨论设计方案,编写程序,搭建硬件电路。

- 第四周:调试与优化,展示成果,总结经验。

4. 教材关联:- 理论知识:教材第3章单片机原理,第4章中断与定时器。

- 实践操作:教材第5章单片机接口技术,第6章单片机应用实例。

教学内容安排和进度根据课程目标和学生的学习情况调整,确保学生能够逐步掌握单片机八路抢答器的设计与实现。

单片机课程设计报告八路抢答器

单片机课程设计报告八路抢答器

《单片机原理及接口技术》课程设计报告课题名称题目15八路抢答器设计★★学院自动控制与机械工程学院专业电气工程及其自动化班级姓名学号时间2011-12-27目录前言 (3)一、课程设计的目的和要求 (3)二、方案设计2.1功能介绍 (5)2.2抢答器的工作原理 (6)三、硬件设计电路设计3.1原理图的确定 (7)3.2芯片的选择 (8)3.3复位电路的设计 (10)3.4晶振电路的设计 (11)3.5数码显示管的选择 (11)3.6报警设计 (12)3.7 八位抢答输入设计 (12)3.8主持人控制按键 (13)四、软件设计思想及流程4.1 主程序的设计 (14)4.2子程序的设计 (15)五.调试过程和调试方法 (20)六、课程设计体会 (22)七、参考文献 (22)附录 (23)前言单片机和其他微型机一样,也是由CPU(包括运算器和控制器)、存储器、输入设备、输出设备组成,只不过单片机是将CPU、RAM、ROM、定时/计数器,以及输入/输出(I/O)接口电路等计算机的主要部件集成在一小块硅片上的单片微型计算机。

它具有体积小、可靠性高、性价比高等优点,主要应用于工业检测与控制、计算机外设、只能仪器仪表、通讯设备、家用电器和机电一体化产品等领域。

一、课程设计的目的和要求1.1课程设计的目的和要求单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。

通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法。

根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和存储器扩展设计、接口技术应用设计。

其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。

基于单片机八路抢答器设计

基于单片机八路抢答器设计

基于单片机八路抢答器设计设计基于单片机的八路抢答器,需要考虑以下几个方面:硬件设计、软件设计以及抢答器工作流程。

硬件设计:1.单片机选择:可以选择一款具有较多IO引脚和较强处理能力的单片机,如STC89C51、这款单片机具有40个IO口,并且内部集成了PWM、ADC等模块,适合本次设计。

2.触发器设计:使用8个按钮作为触发器,每个按钮与一个IO口连接。

当有用户按下按钮时,会通过IO口向单片机发送一个高电平信号。

3.显示模块设计:可以使用LED灯作为显示模块,用于显示抢答的结果。

每个参与者对应一个LED灯,抢答成功的参与者对应的LED灯会亮起。

4.电源模块设计:使用适配器将220V交流电转换为5V直流电,供给单片机和LED灯。

5.电路连接:将按钮和LED灯与IO口连接,并接地,保持电路的正确连接。

软件设计:1.IO口初始化:将涉及到的IO口初始化为输入或输出口。

2.中断设置:将按钮连接到中断引脚,当按钮按下时,触发中断。

在中断函数内根据按下的按钮编号,判断抢答的结果。

3.抢答逻辑:设计一个数组来保存参与抢答者的结果。

当用户按下按钮后,根据按下按钮的编号,将结果保存到数组中。

根据题目的要求,可以选择先按下的为正确答案或者最后按下的为正确答案。

4.显示结果:根据抢答结果,控制相应的LED灯点亮或熄灭。

抢答器工作流程:1.开机初始化:开机后,进行硬件初始化,包括IO口的初始化和LCD屏幕的初始化。

2.抢答准备:显示等待抢答,等待用户按下按钮。

3.抢答开始:当用户按下按钮后,系统根据按下按钮的编号判断答案是否正确,并将结果保存到数组中。

4.结果显示:根据抢答结果,控制相应的LED灯点亮或熄灭,显示抢答结果。

5.重置抢答器:在每轮抢答结束后,将抢答器重置为初始状态,清空结果数组,准备下一轮抢答。

通过上述硬件设计、软件设计以及抢答器工作流程的设计,实现了基于单片机的八路抢答器。

抢答器的设计可以根据实际需求进行修改和扩展,例如增加显示屏幕显示更多信息、添加声音提示等,以满足不同的使用场景。

8位竞赛抢答器课程设计

8位竞赛抢答器课程设计

目录1. 原理分析(by 张潇) (2)1.1 设计任务 (2)1.2 性能指标 (2)1.3 工作原理 (2)2. 方案选择(by 张潇) (3)2.1 方案设定 (3)2.2 方案比较 (3)2.3 方案选择 (3)3. 电路原理图绘制及仿真(by 王倩) (3)3.1 所需元器件型号及数量 (3)3.2 电路原理图 (4)3.3 电路仿真结果 (5)4. Pcb图绘制(by 朱文广) (5)4.1 pcb绘制步骤 (5)4.2 pcb绘制原则 (5)4.3 8路抢答器pcb图 (7)5. 综合调试(by 朱文广) (7)5.1 软件调试 (7)5.2 硬件调试 (9)6. 总结(by 王倩) (10)附录1:电路仿真图 (11)附录2: 8路抢答器完整程序 (12)1.1 设计任务以单片机为核心,设计一个8位竞赛抢答器,同时供8名选手或8个代表队比赛。

设置一个系统清除和抢答控制开关S,开关由主持人控制。

抢答器具有锁存与显示功能。

即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

抢答器具有定时抢答功能,且一次抢答的时间可由主持人设定。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

1.2 性能指标电源电压:直流5V±10%选手组数:2-8组初始抢答倒计时:20s初始回答倒计时:30s倒计时范围:1-99s可设倒计时提示时间:最后5s1.3 工作原理八路数字抢答器原理框图如图1所示,其工作原理为:接通电源后,主持人未按下开始抢答,抢答器处于禁止状态,数码管显示“----”;主持人宣布“开始”同时按下开始抢答按键,抢答倒计时开始计时,扬声器给出声响提示。

选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。

单片机课程设计:八位竞赛抢答器

单片机课程设计:八位竞赛抢答器

课程设计任务书学生班级:学生姓名:学号:设计名称:八位竞赛抢答器起止日期:指导教师:八位竞赛抢答器摘要本设计是以八路抢答为基本理念。

考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用开关做键盘输出,扬声器发生提示。

先进行系统硬件设计,该电路由显示电路,抢答电路,晶振电路等部分组成,然后进行系统软件设计,进行软件的仿真,这次课程设计不仅能锻炼我们的动手能力,而且能够培养我们对问题的思考能力以及对知识的进一步了解。

关键词:AT89C51;抢答器;计时;报警目录第1章系统总体设计 (5)1.1 八位竞赛抢答器的工作原理 (5)1.2 八位竞赛抢答器的总体框图 (5)第2章系统硬件的设计 (6)2.1 工作原理 (6)2.2 晶振电路 (6)2.3 抢答电路 (7)2.4 显示电路 (8)2.5 控制电路的设计 (9)第3章系统软件设计 (10)第4章系统软件仿真 (13)4.1 KeiluVision2软件 (13)4.2 Proteus软件仿真 (14)4.3 仿真结果分析 (15)总结 (16)参考文献 (17)附录 (18)第1章系统总体设计1.1八位竞赛抢答器的工作原理抢答器的工作原理是采用单片机最小系统,用程序查询方式使动态显示倒计时时间并且同时使LED灯亮。

主持人按下开始抢答键才可以抢答。

主持人没有按下开始抢答按(P3.0),有人抢答则抢答违规,报警并该组LED灯亮,主持人按下开始抢答开关重新抢答。

主持人按下开始抢答按纽(P3.0),扬声器响声提示,数码管30秒倒计时抢答,扬声器响声提示并该组LED灯亮,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后五秒倒计时警报。

从而完成一次抢答或者一次知识竞赛的任务。

1.2 竞赛抢答器总体框图图1 总体设计框图第2章系统硬件设计2.1 工作原理通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。

单片机课程设计(八路抢答器)

单片机课程设计(八路抢答器)

单片机课程设计八路抢答器一设计要求:①如果想调节抢答时间或答题时间,按“抢答时间调节”键或“答题时间调节”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下“加1s”键,如果想减一秒按一下“-1s”键,时间LED上会显示改变后的时间,调整范围为0s~99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。

②主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。

倒数时间到小于5s会每秒响一下提示音。

③如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。

④如果主持人未按“抢答开始”键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下“停止”键为止。

⑤P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。

⑥当参赛选手在回答问题时要求使用锦囊,则主持人按下抢答开始键,计时重新开始。

二设计思路:系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。

硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。

软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。

在系统设计中设计方法的选用是系统设计能否成功的关键。

硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。

单片机8路抢答器课程设计

单片机8路抢答器课程设计

单片机8路抢答器课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,理解8路抢答器的电路构成及其工作原理;2. 使学生掌握8路抢答器程序设计的基本方法,包括程序流程图绘制、程序代码编写等;3. 帮助学生理解数字电路基础知识,以及与单片机接口的原理。

技能目标:1. 培养学生运用单片机进行电子电路设计和程序开发的能力;2. 培养学生动手实践、团队协作的能力,能独立完成8路抢答器的搭建和调试;3. 提高学生分析问题和解决问题的能力。

情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其创新精神和实践能力;2. 培养学生严谨的科学态度和良好的学习习惯,使其在课程学习过程中体验团队合作的重要性;3. 引导学生关注科技发展,认识到单片机技术在实际应用中的价值,提高学生的社会责任感和使命感。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在培养学生的动手能力和实际应用能力。

学生特点:学生已具备一定的电子技术基础和编程能力,具有较强的学习兴趣和探索精神。

教学要求:教师应注重理论与实践相结合,以学生为主体,引导学生主动参与、积极思考、合作交流,提高学生的实践能力和创新能力。

在教学过程中,关注学生的个体差异,因材施教,确保课程目标的实现。

通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。

二、教学内容1. 理论知识:a. 单片机原理与功能:引导学生复习并巩固单片机的基本原理,介绍51单片机结构、工作原理及特性;b. 8路抢答器电路设计:讲解8路抢答器的电路构成、工作原理及各部分功能;c. 程序设计方法:介绍程序流程图的绘制方法,讲解C语言编程基础及其在单片机编程中的应用。

2. 实践操作:a. 8路抢答器硬件搭建:指导学生按照电路图完成8路抢答器的硬件搭建;b. 程序编写与调试:教授学生编写8路抢答器程序,并进行调试;c. 系统测试与优化:引导学生对搭建好的8路抢答器进行测试,发现问题并进行优化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

随着社会的不断发展和科学技术的不断提高,各种工业自动化不断升级,电子技术得到了飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。

本设计是以八路抢答为基本理念,考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。

用开关做键盘输出,扬声器发生提示,并且有警告灯显示。

关键词:单片机,抢答器,显示第一章概述1.1课题背景随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。

目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。

因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。

现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。

1.2课题的意义与发展方向随着电子技术的发展,抢答器作为一种电子产品,早已广泛应用于企业单位、学校和电视台,为各种知识竞赛、文娱活动提供公正客观快速的裁决。

它能迅速、客观地分辨出哪位选手最先按下的抢答键,大大增强了比赛的公平性,给人们带来了很大的方便。

而随着科学技术的不断发展,以单片机作为主控制器的抢答器占据了主要的地位。

目前数字电子技术已经广泛地应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。

例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量的自动化和智能化。

随着集成技术的发展,尤其是中,大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。

第二章硬件电路设计2.1 系统的控制要求与总体结构系统的控制要求:1.给主持人设置一个开关,用来控制系统的重启(编号显示数码管重置初始时间)和抢答器的倒计时开始。

2.抢答器显示和倒计时的功能。

抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。

此外,要封锁输入电路,禁止其他选手抢答。

系统的总体结构:图2-1 八位抢答器总体电路图2.2外部振荡电路的设计图2-2 八位抢答器外部振荡电路一般选用石英晶体振荡器。

此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率为11.0592HZ。

电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。

C1,C2的典型值为30PF。

2.3复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2-3所示:图2-3 八位抢答器复位电路在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。

软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。

2.4显示电路的设计显示电路使用了七段数码管7SEG-MPX4-CC,属于共阴极的,由高电平点亮。

图3-4 八位抢答器阴极七段数码管2.5 按钮输入电路的设计抢答器的输入按钮使用常开开关:图2-5 八位抢答器抢答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”现象就可以了。

这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。

2.6 报警电路的设计这里能利用程序来控制单片机P3.1口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。

图2-6 八位抢答器报警电路第三章软件电路设计3.1八位抢答器流程图图3-1 八位抢答器流程图3.2八位抢答器程源序在目前单片机的发展中,其编程语言主要有C语言和汇编语言。

C语言是高级语言,编写起来比较简单易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。

介于本次程序稍微复杂,所以我们这一组选择的程序采用C语言来编写。

#include <reg52.h>#define uint unsigned int#define uchar unsigned char//共阴极数码管编码表 0 - f 显示unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//变量定义sbit BEEP=P3^1;sbit start_stop = P3^2;sbit reset = P3^3;sbit key1 = P1^0;sbit key2 = P1^1;sbit key3 = P1^2;sbit key4 = P1^3;sbit key5 = P1^4;sbit key6 = P1^5;sbit key7 = P1^6;sbit key8 = P1^7;sbit state = P3^0;bit start_stop_flag = 0;bit key1_flag = 0;bit key2_flag = 0;bit key3_flag = 0;bit key4_flag = 0;bit key5_flag = 0;bit key6_flag = 0;bit key7_flag = 0;bit key8_flag = 0;bit reset_flag = 0;bit action = 0;uchar second = 20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;uint flag = 1;//延时函数void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y= 120;y>0;y--); }//蜂鸣器发声延时void DelayMS(uint x){uchar t;while(x--)for(t=0;t<100;t++);}//数码管显示驱动函数void display(uchar number,uchar second) {uchar second_first,second_second; second_first = second / 10;second_second = second % 10;P0 =0x00;P2 = 0xfe;P0 = table[number];delay(2);P0 =0x00;P2 = 0xfd;P0 = 0x40;delay(2);P0 =0x00;P2 = 0xfb;P0 = table[second_first];delay(2);P0 =0x00;P2 = 0xf7;P0 = table[second_second];delay(2);P0 =0x00;}//蜂鸣器响应按周期t发音void Play(uchar t){uchar i;for(i=0;i<1;i++){BEEP=~BEEP;DelayMS(t);}BEEP=0;}//开始键扫描函数void start_stop_keyscan(){if(start_stop == 0){delay(8);if((start_stop == 0)&&(!start_stop_flag)) {start_stop_flag = 1;action = 1;TR0 = 1;state = 0;}}else{start_stop_flag = 0;}}//八位抢答键扫描函数uchar key_scan8(){if(key1 == 0){delay(8);if((key1 == 0)&&(!key1_flag))key1_flag = 1;number = 1;number_display = number;}}else{key1_flag = 0;number = 0;}if(key2 == 0){delay(8);if((key2 == 0)&&(!key2_flag)){key2_flag = 1;number = 2;number_display = number;}}else{key2_flag = 0;number = 0;}if(key3 == 0){delay(8);if((key3 == 0)&&(!key3_flag))key3_flag = 1;number = 3; number_display = number;}}else{key3_flag = 0;number = 0;}if(key4 == 0){delay(8);if((key4 == 0)&&(!key4_flag)){key4_flag = 1;number = 4; number_display = number; }}else{key4_flag = 0;number = 0;}if(key5 == 0){delay(8);{key5_flag = 1;number = 5; number_display = number;}}else{key5_flag = 0;number = 0;}if(key6 == 0){delay(8);if((key6 == 0)&&(!key6_flag)){key6_flag = 1;number = 6; number_display = number; }}else{key6_flag = 0;number = 0;}if(key7 == 0){delay(8);{key7_flag = 1;number = 7;number_display = number;}}else{key7_flag = 0;number = 0;}if(key8 == 0){delay(8);if((key8 == 0)&&(!key8_flag)){key8_flag = 1;number = 8;number_display = number;}}else{key8_flag = 0;number = 0;}if(number_display != 0){return 1;}else{return 0;}}//复位键扫描函数void reset_keyscan(){if(reset == 0){delay(8);if((reset == 0)&&( !reset_flag)) {reset_flag = 1;number_display = 0;state = 1;}}else{reset_flag = 0;}}//主函数void main(){uint t;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA= 1;ET0= 1;TR0=0;while( 1){if(number_display!=0)Play(number_display/2); //蜂鸣器发声start_stop_keyscan();reset_keyscan();while(action){while(!key_scan8()){display(number_display,second);if(second == 0){second = 20;break;}}TR0 = 0;display(number_display,second);action = 0;break;}display(number_display,second);}}//中断服务函数void timer0() interrupt 1{uint i;TH0=(65536-50000)/256;TL0=(65536-50000)%256;timer0_count ++;if(timer0_count == 20){timer0_count = 0;second --;if(second == 0){Play(2);TR0 = 0;number_display = 0; state = 1;action = 0;}}}第四章结论经过此次课程设计,我明白了任何一个控制系统都是要经过实践和时间的考验方能不断的完善。

相关文档
最新文档