版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、18 微机与接口课程设计报告 题 目 基于51单片机的多功能抢答器 学院(部)信息学院 专 业 通信工程 班 级 24041001 学生姓名 高小梅 学 号 2404100127 12 月 24 日至 1 月 4日 共 2 周 指导教师(签字) 吴向东 宋蓓蓓 一、设计内容1. 抢答器可同时供8名选手或8个代表队比赛,分别用8个按键S1S8进行抢答。2. 具有清零和非法抢答控制功能,并由主持人操纵,避免选手在主持人按“开始”前提前抢答,违反规则 。3. 当主持人启动“开始抢答键”后,定时器进行减计时,在20S内无人抢答表示所有参赛选手或参赛队对本题弃权,抢答时间耗尽后禁止抢答。4. 倒计时5S
2、时,如果仍无人抢答,则系统每1S报警一次,用以提示参赛选手。5. 抢答器具有锁存与显示功能。即选手按下按键,锁存相应选手的参赛号码,并在LED数码管上显示。选手抢答实行优先锁存,其他按键者将不能响应,以便公平地选择第一个抢答者。6. 倒计时期间,如果主持人想终止倒计时,可以按下“停止”按键,系统会自动进入准备状态。二、设计目的 : (1)掌握单片机中汇编语言的使用 (2)学会使用Proteus 以及 keil 软件的编辑使用 (3)真正理解单片机中软硬件结合工作的原理 (4)学会查阅资料进行课程的设计 (5)学会对设计结果整体评估 (6)确定最终方案,并进一步优化完成设计三、总体设计思路主控制
3、器模块:采用AT89C51单片机控制抢答器显示模块:数码管显示电源选择:采用4.5V电源供电四、本设计与功能介绍此次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的抢答器,本方案以AT89C51单片机作为主控核心,与晶振、数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用C51语言编程,使其实现一些基本的功能。本设计的系统实用性强、判断精确、操作简单、扩展功能强。它的功能实现是比赛开始,主持人读完题之后按下总开关,即计
4、时开始,此时数码管开始进行20s的倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号和抢答所用的时间,如果在规定的20s时间内没有做出抢答,则此题作废,即开始重新一轮的抢答。在抢答和回答时间的最后5s,蜂鸣器都会给予报警提示。 功能介绍主持人按“抢答开始”键,立刻进入抢答倒计时(预设20S抢答时间),如有选手抢答,会有提示,并会显示其号数,不进行抢答查询,所以第一个按抢答的选手有效。倒数时间到小于5S会每秒响一下提示音。如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。如果主持人未按“抢答开始”键,则无法按
5、抢答按键。五、硬件设计各模块的选择和论证5.1 控制器选择控制器主要用于对显示、抢答、音乐、计分等模块进行控制。采用ATMEL公司的AT89S51作为系统控制器的CPU方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。5.2 键盘选择键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很多,常用的有独立
6、式键盘,行列式键盘等。本设计采用独立式键盘键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。如图2-2。最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I
7、/O口线比较富余时,可以采用这样类型的键盘。 P112345678A 图2-2 独立式键盘5.3时钟频率电路的设计 单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟电路如下图所示。图 2-5 外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。单片机在工作时,由内部振荡器产生或由外直接
8、输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数。图中时钟频率为12MHz。5.4复位电路的设计 单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下所示:5.5 报警电路 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的巨型波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。本文设计如下图所示。图中单片机的14脚输
9、出具有复合功能,此处用到了单片机14脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。 5.6发声电路抢答器显示模块选择显示模块主要是显示抢答的时间,组别号码等。在使用传统的数码管显示。数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度高,称量快,精确可靠,操作简单。数码显示是采用BCD编码显示数字,程序编译容易,资源占用较少。显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一
10、般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是:显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动态显示方法。4位七段数码管显示电路如下图所示。图 2-1 4位七段数码管显示电路图上图中数码管采用的是4位一体七段共阳数码管,其中AH段分别接到单片机的P0口,由单片机输出的P0口数据来决定段码值,位选码COM1, COM2,COM3,COM4分别接到单片机的P2.0,P2.1,P2.2 ,P2.,3,由单片机来决定当前该显示的是哪一位。在图中还有一个排阻,连接在P
11、0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。通过查表法,将其在数码管上显示出来,其中P0口为字型码输入端,P2口低4位为字选段输入段。在这里我们通过查表将字型码送给7段数码管显示的数字。数码显示管用来作为时间的显示输出,一般用7段数码显示管。本次设计中采用7段共阳数码显示管应用简单、可靠性高、成本低,作为显示输出。连接时段选信号接在P0口的P0.0P0.7七个I/O口上,P1口是准双向I/O接口在输出驱动部分具有驱动4个TTL负载的能力,即输出电流不大于400A,所以在接电阻时选择接10K限流电阻。而在位选方面采用P2口的P2.0P2.3用单片机四个I/O口作为位选
12、信号的输出口。5.7总电路图六、 抢答器的软件设计 系统软件由主程序和INT0中断服务组成。主程序由验键,违规显示,倒计时等功能子程序组成,系统完成初始化后循环检查各个功能当用户使用某个功能时,按下相应的按钮(或开关)单片机进入相应的功能处理。INT0中断服务程序完成抢答信号采样和识别处理。该智能抢答器以AT89S52单片机为控制核心,控制精度较高,操作误差主要来自晶振自身所造成的误差。其他外围电路包括复位电路、时钟电路、报警电路、LED显示电路、抢答按键等。该智能抢答器具有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定;通过按键扫描输出按键信息,并通过单片机将它转化为在七段数码管上
13、显示的字形符。单片机的P1口为8组抢答按键的输入口,P0.0P0.7为数码管的段选口,P2.0P2.2为数码管的片选口。P3.4为报警电路的控制口,P3.5为暂停按钮的控制口,P3.6为开始按钮的控制口,P3.7为复位按钮的控制口。源程序 #define uint unsigned int#define uchar unsigned char/*-共阴极数码管编码表 0 - f显示-*/unsigned char code table=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e;
14、/*-变量定义-*/sbit start= P36;sbit stop=P35;sbit reset = P37;sbit key1 = P10;sbit key2 = P11;sbit key3 = P12;sbit key4 = P13;sbit key5 = P14;sbit key6 = P15;sbit key7 = P16;sbit key8 = P17;sbit buzzer = P34; bit start_flag = 0;bit stop_flag=0;bit key1_flag = 0;bit key2_flag = 0;bit key3_flag = 0;bit key
15、4_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 = 15;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;/*-延时函数-*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*-数码管显示驱动函数-*/void display(uch
16、ar number,uchar second)uchar second_first,second_second;second_first = second / 10;second_second = second % 10;P2 = 0xfe;P0 = tablenumber;delay(2);P2 = 0xfd;P0 = 0x3f;delay(2);P2 = 0xfb;P0 = tablesecond_first;delay(2);P2 = 0xf7;P0 = tablesecond_second;delay(2);/*-开始键扫描函数-*/void start_keyscan()if(sta
17、rt = 0)delay(8);if(start = 0)&(!start_flag)start_flag = 1;action = 1;TR0 = 1;elsestart_flag = 0;/*-八位抢答键扫-*/uchar key_scan8()if(key1 = 0)delay(8);if(key1 = 0)&(!key1_flag)key1_flag = 1;number = 1;number_display = number;elsekey1_flag = 0;number = 0;if(key2 = 0)delay(8);if(key2 = 0)&(!key2_flag)key2_
18、flag = 1;number = 2;number_display = number;elsekey2_flag = 0;number = 0;if(key3 = 0)delay(8);if(key3 = 0)&(!key3_flag)key3_flag = 1;number = 3;number_display = number;elsekey3_flag = 0;number = 0;if(key4 = 0)delay(8);if(key4 = 0)&(!key4_flag)key4_flag = 1;number = 4;number_display = number;elsekey4
19、_flag = 0;number = 0;if(key5 = 0)delay(8);if(key5 = 0)&(!key5_flag)key5_flag = 1;number = 5;number_display = number;elsekey5_flag = 0;number = 0;if(key6 = 0)delay(8);if(key6 = 0)&(!key6_flag)key6_flag = 1;number = 6;number_display = number;elsekey6_flag = 0;number = 0;if(key7 = 0)delay(8);if(key7 =
20、0)&(!key7_flag)key7_flag = 1;number = 7;number_display = number;elsekey7_flag = 0;number = 0;if(key8 = 0)delay(8);if(key8 = 0)&(!key8_flag)key8_flag = 1;number = 8;number_display = number;elsekey8_flag = 0;number = 0;if(number_display != 0)return 1;elsereturn 0;/*-复位键扫描函数-*/void reset_keyscan()if(re
21、set = 0)delay(8);if(reset = 0)&(!reset_flag)reset_flag = 1;number_display = 0; second=15;elsereset_flag = 0; void fengming() /蜂鸣函数,脉宽t = 1ms 周期T = 2ms 频率f = 0.5khz 实际发现延时1ms的时候效果最好 /延时1ms buzzer = 0; /给P3.7口送高电平 delay(100); /延时1ms buzzer = 1;delay(100); /*-主函数-*/void main()TMOD=0x01;TH0=(65536-50000
22、)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;while(1) start_keyscan(); reset_keyscan();while(action=1)if(second0) fengming() ; while(!key_scan8()&!stop=0)display(number_display,second);if(second = 0)second = 15;break;TR0 = 0;display(number_display,second);action = 0;break;display(number_display,seco
23、nd);/*-中断服务函数-*/void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;timer0_count +;if(timer0_count = 15)timer0_count = 0;second -; if(second0) fengming() ;if(second = 0)TR0 = 0;number_display = 0; action = 0;七、问题分析数码管显示问题:本次设计的最终方案是采用数码管显示屏实现显示功能,最初数码管显示不正常,出现闪烁现象。通过调试发现这是由于延时时间选择不当
24、会使人眼产生视觉暂留效果,每一次显示时都必须加入适当的时间延时。由于一开始所选用的延时时间太短因此出现闪烁现象,在增加显示延时之后,数码管显示正常。蜂鸣器异常启动问题:蜂鸣器的启动/关闭是通过单片机输出的控制信号来实现的,当前时间与闹钟设置时间比较吻合时,单片机将对闹铃控制口执行取反命令,从而启动蜂鸣器发声。一开始编写程序时,没有对控制口的最初状态作正确设置,由于系统开机复位后,闹铃控制口处于高电平状态,因此出现一开机蜂鸣器就处于启动状态的情况。通过在主程序最开始加入对闹铃控制口取零命令后,蜂鸣器启动/关闭控制恢复正常。8 体会此实验利用protues仿真软件实现,基本实现了所要求的功能。在本次实验中对单片机内部结构有一定了解,熟悉了各个引脚的功能,同时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 哈尔滨松北区七校联考2025-2026学年下学期初三英语试题毕业班调研考试试卷含解析
- 七台河市重点中学2025-2026学年初三下学期第一次教学质量检查考试语文试题含解析
- 贵阳市重点中学2026年初三下学期第一次调研考试英语试题含解析
- 湖北省宜昌市第十六中学2026年初三下学期二模考试英语试题含解析
- 口腔护理中的预防医学新理念
- MT-T 1237-2025 滚筒采煤机能效评价试验方法
- 教学设计活塞连杆
- 2026年机械键盘轴体热插拔与客制化趋势分析
- 2026年走进大自然户外观察活动方案
- 护理金点子药品宣教
- 屠宰车间生产安全培训课件
- 广西甘蔗收获机械化:现状、困境与突破路径研究
- 污水处理厂镜检培训课件
- 口腔科儿童宣教
- 2025年行业解决方案经理岗位招聘面试参考试题及参考答案
- 2025年江西省高职单招文化统一考试真题及答案(网络版)
- 辽宁省专升本2025年护理学专业护理技能专项训练试卷(含答案)
- 2025内蒙古能源集团智慧运维公司运维人员社会招聘105人笔试参考题库附带答案详解
- 2025年上海市安全员-C3证(专职安全员-综合类)证模拟考试题库答案
- 电气设备安装及调试合同协议书范本6篇
- 2025年特种设备无损检测人员资格考试(射线检测RT)历年参考题库含答案详解(5套)
评论
0/150
提交评论