ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:80.26KB ,
资源ID:29792932      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29792932.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计八路抢答器.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、单片机课程设计八路抢答器摘要随着社会的不断发展和科学技术的不断提高,各种工业自动化不断升级,电子技术得到了飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念,考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示。 关键词:单片机,抢答器,显示目

2、录第一章 概述1.1课题背景随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。1.2课题的意义与发展方向随着电子技术的发展,抢答器作为一种电子产品,早已广泛应用于企业单位、学校和电视台,为各种知识竞赛、文娱活动提供公正客观快速的裁决。它能迅速、客观地分辨出哪位选手最先按下的抢答键,大大增强了比赛的公平性,给人们带来了很大的方便。而随着科学技

3、术的不断发展,以单片机作为主控制器的抢答器占据了主要的地位。目前数字电子技术已经广泛地应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量的自动化和智能化。随着集成技术的发展,尤其是中,大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。第二章 硬件电路设计2.1 系统的控制要求与总体结构系统的控制要求:1. 给主持人设置一个开关,用来控制系统的重启(编号显示数码管重置初始时间)和抢答器的倒计时开始。2. 抢答器显示和倒计时的功能。

4、抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。系统的总体结构:图2-1 八位抢答器总体电路图2.2外部振荡电路的设计图2-2 八位抢答器外部振荡电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率为11.0592HZ。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。2.3复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高

5、电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2-3所示:图2-3 八位抢答器复位电路在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。2.4显示电路的设计显示电路使用了七段数码管7SEG-MPX4-CC,属于共阴极的,由高电平点亮。图3-4 八位抢答器阴极七段数码管2.5 按钮输入电路的设计抢答器的输入按钮使用常开开关

6、:图2-5 八位抢答器抢答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺” 现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。2.6 报警电路的设计这里能利用程序来控制单片机P3.1口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变

7、输出频率,从而改变音调,使扬声器发出不同的声音。图2-6 八位抢答器报警电路第三章 软件电路设计3.1八位抢答器流程图八位抢答器流程图如3-1所示 图3-1 八位抢答器流程图3.2八位抢答器程源序在目前单片机的发展中,其编程语言主要有C语言和汇编语言。C语言是高级语言,编写起来比较简单易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。介于本次程序稍微复杂,所以我们这一组选择的程序采用C语言来编写。#include #define uint unsigned int #define uchar unsigned char /共阴极数码管编码表 0 - f 显示 uns

8、igned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; /变量定义 sbit BEEP=P31;sbit start_stop = P32; sbit reset = P33; 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 state = P30; bit start_s

9、top_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 =

10、 1;/延时函数 void delay(uint z) uint x,y; for(x=z;x0;x-) for(y= 120;y0;y-); /蜂鸣器发声延时void DelayMS(uint x) uchar t; while(x-) for(t=0;t100;t+);/数码管显示驱动函数 void display(uchar number,uchar second) uchar second_first,second_second; second_first = second / 10; second_second = second % 10; P0 =0x00; P2 = 0xfe;

11、P0 = tablenumber; delay(2); P0 =0x00; P2 = 0xfd; P0 = 0x40; delay(2); P0 =0x00; P2 = 0xfb; P0 = tablesecond_first; delay(2); P0 =0x00; P2 = 0xf7; P0 = tablesecond_second; delay(2); P0 =0x00; /蜂鸣器响应按周期t发音void Play(uchar t) uchar i; for(i=0;i1;i+) BEEP=BEEP; DelayMS(t); BEEP=0;/开始键扫描函数 void start_stop

12、_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_fla

13、g = 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) de

14、lay(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); if(key5 = 0)&(!key5_flag) key5_flag = 1; number = 5; number_display = number; else key5_flag = 0; number = 0; if(key6 = 0) delay(8); if(key6 = 0)&(!key6_flag)

15、key6_flag = 1; number = 6; number_display = number; else key6_flag = 0; number = 0; if(key7 = 0) delay(8); if(key7 = 0)&(!key7_flag) 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_

16、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-500

17、00)/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); act

18、ion = 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; 第四章 结论经过此次课程设计,我明白了任何一

19、个控制系统都是要经过实践和时间的考验方能不断的完善。而我们自己也应该学会认真、专心,更有毅力的做一件事情,这样我们在以后的学习和生活中才能经得起实践和时间的考验。同时,通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个课程设计十分有意义 ,我获得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。感想本课程设计是在同学的讨论下和查阅各种资料下完成的,通过这次课程设计,我深刻的认识到了团队力量是多么的强大,也明白了以后再有课程设计之类的或有什么

20、难题要多向周围的人请教,多上网找答案。而不只是一个人专研。在此,我还要感谢同组同学的帮忙,在论文资料的收集和实验期间,不管遇到什么困难同组同学都主动给予帮助、认真讨论学习,在此也感谢他们!参考文献1 张伟.单片机原理及应用,机械工业出版社,20052 张鑫.单片机原理及应用,电子工业出版社,20053 曹国清.数学电路与逻辑设计中国矿业大学出版社,20044 任致程.经典集成电路400例机械工业出版社,20025 薛栋梁.单片机原理及应用,中国水利水电出版社,20016 吴金戎,沈庆阳等.8051单片机实践与应用,清华大学出版社,20017杨晓辉、张彤、姜俊海. 智能抢答器的设计与制作J. 长春大学学报. 2000.06:24-258 张培仁. MCS-51单片机原理与应用M.北京:清华大学出版社,2003.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1