




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、惠 州 学 院 数字电子技术课程设计说明书 题 目:基于单片机(89c52)的四人抢答器 系 部: 电子科学系 班 级: 09级电信二班 学生姓名: 学 号: 指导教师: 2011年12月29日智能四路抢答器 目录一、 前言2二、 方案设计21、 方案比较22、 系统总体设计方案与实现框图3三、 理论分析3四、 电路设计41、 按键部分42、 显示部分53、 总原理图6五、 软件流程图模块7六、 结论8七、 程序9一、前言本设计要求能够在主持人按下开始键后,四个参赛者开始抢按自己的按键,谁的按键先按下,谁面前的灯就会亮并且有相应的提示,当参赛者耗时太多时又会有相应的提示。根据设计的要求,本系统
2、采用独立式按键,通过单片机不停的扫描按键来控制led灯和蜂鸣器,并用定时器t0、t1来定超时的时间,其中抢答定时时间可以由主持人随意的修改。当超时的时候让蜂鸣器响和点亮相应的led灯(t0用于参赛者回答问题的定时,t1用于参赛者抢答时间的选定)。二、方案设计 1、方案比较 (1)、总体设计方案一:采用可编程i/o口扩展芯片8155 8155作为单片机的扩展接口能实现很多功能,但是这个系统并不复杂,用8155会浪费很多的资源,而且8155要用p0和p2端口作为地址线对它进行读写,这样不仅浪费端口还使得编程变的复杂。从节省资源和简化编程的角度考虑,放弃了此方案。方案二:直接采用at89c51单片机
3、 直接用单片机不仅编程被简化,还有效的利用了各个端口。8051单片机的资源完全够这个系统的要求。所以最终选择了此方案。 (2)、模块 方案一:采用4*4矩阵键盘 此种键盘是常用的按键扫描方法,但是本系统只需要六个按键,这样就会浪费十个,而且矩阵按键扫描要送数读数,对于编程很复杂,最终放弃了此方案。 方案二:采用独立式键盘 本系统只要8个按键就可以,用独立式键盘不仅节省端口还使编程变得简单。程序只要不停的读数检查就行。所以,最终选择此方案。 2、系统总体设计方案与实现框图 抢答模块、修改抢答时间模块、主持人控制模块一共采用8个独立式的键盘作为按键输入,当在主持人按下开始键后有参赛者按键按下时,就
4、会有对应于这个按键的灯亮并且蜂鸣器响一声,其它按键再按也无效。在规定时间之后如不清除,蜂鸣器就会一直响,超时的led会点亮,提示已经到时间。框图如图1。修改抢答时间是在按下了修改按键之后就会等待增量、减量的输入以修改时间,直到再一次按下修改键以确定修改完成。独立式按键部分单片机处理显示部分按键扫描图1三、理论分析 51单片机的端口上电是高电平,而且当外部没有输入时能自动的弹跳到高电平,所以通过按键所接端口的高低电平变化可以判断出哪个按键按下了。独立按键p1口电平变化单片机识别图2四、电路设计图31、按键扫描部分单片机不停的扫描p1口的电平变化,当有按键按下时,对应的i/o口会跳变为低电平,单片
5、机检测到后,经过处理将作出相应的显示。电路如图1.图42、显示部分 根据按键按下的情况led作出相应的亮灭,蜂鸣器作出相应的反应。当开始键按下启动后,当s1按下时,则灯d1亮,并蜂鸣器响一声,如果超过规定时间,蜂鸣器一直响,并提示超时led灯被点亮。如果s1在限定的时间内再次被按下,说明参赛者1已完成回答;当s2按下时,则灯d2亮,并蜂鸣器响一声,如果超过规定时间,蜂鸣器一直响,并提示超时led灯被点亮。如果s2在限定的时间内再次被按下,说明参赛者2已完成回答;当s3按下时,则灯d3亮,并蜂鸣器响一声,如果超过规定时间,蜂鸣器一直响,并提示超时led灯被点亮。如果s3在限定的时间内再次被按下,
6、说明参赛者3已完成回答;当s4按下时,则灯d4亮,并蜂鸣器响一声,如果超过规定时间,蜂鸣器一直响,并提示超时led灯被点亮。如果s4在限定的时间内再次被按下,说明参赛者4已完成回答;抢答完后可以按下主持人的确定键将其初始化。总原理图如图所示:五、软件模块本系统用了定时器0和定时器1。图5六、结论本次设计按照题目要求,基于单片机,利用较合适的控制算法,成功的实现了抢答器的基本功能。硬件原理结构简单,减少硬件成本和繁琐的电路连接;软件设计方面,设计简单,可塑造性强,便于维护。因此选择使用单片机实现四人抢答器的设计具有很强的效益,能任意地修改抢答时间,使此抢答器适合在很多场合使用且成本低。通过此课程
7、设计让我真正的了解到了程序设计的难点所在,难的并不是程序框架的搭建、理论上的思考此方法是否可行、代码的写入、调试其结果,真正难的是在调试的过程中,明明知道是有些问题的,但是又无法锁定问题所在,造成的结果是心理的成就感受到抨击,反复的对可能存在的问题反复修改,一次又一次的修改,可怕的是代码越修越错,结果该不会来。折腾一段时间后,一不小心才发现开始的时候问题仅仅时非常简单、愚蠢的错误。从这程序设计过程中不断的提醒我,必须步步为营,步步小心,耐心加细心即等于完美的程序设计的实现。七、程序代码:/实现功能:四人抢答器/*1、只有主持人宣布开始抢答时,选手才能进行抢答,抢答有一定的时间限制,超过一定时间
8、就会出现报警声。 2、选手回答时必须在规定的时间里面回答,否则就会出现报警声 3、数码管会显示时间 4、各通道的规定: 5、抢答时间是可以设置的*/#include#include #define uint unsigned int#define uchar unsigned charsbit beep=p36;/making voice(低电平有效)sbit led1=p27;/competitor 1(低电平有效)sbit one=p10;/(高电平有效)sbit led2=p26;/competitor 2(低电平有效)sbit two=p11;/(高电平有效)sbit led3=p25
9、;/competitor 3(低电平有效)sbit three=p12;sbit led4=p21;/competitor 4sbit four=p13;sbit led5=p20;/host announced begingsbit host=p15;/低电平有效sbit over=p37;/overtimesbit chang=p14;/change the overtime(低电平有效)sbit up=p16;/(低电平有效)sbit down=p17;/低电平有效sbit ls138a = p22; /定义译码器输入端a 在 p2.2 管脚上sbit ls138b = p23; /定义
10、译码器输入端b 在 p2.3 管脚上sbit ls138c = p24; /定义译码器输入端c 在 p2.4 管脚上static uint max1=10,num1=20;uint max,num,temp,tt=0,dd=0x00;/max用于表示选手抢答的时间/uint i,lednumval=1 ;/uint ledout10;unsigned char code disp_tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;void delay(uint x);void display(uint key_val);v
11、oid change();void press(void);void time1_max();void time0_num();/unsigned long uint ledout5,ledhdsjval;void display(uint key_val) uchar i; /*以下将键值送到led数码管显示*/ ledhdsjval=key_val; /把键值送到ledhdsjval变量中 ledout0=disp_tabledhdsjval%10000/1000; ledout1=disp_tabledhdsjval%1000/100;/|0x80; ledout2=disp_table
12、dhdsjval%100/10; /十位 ledout3=disp_tabledhdsjval%10; /个位 for(i=1; i0;x-) for(y=110;y0;y-); void change(void)if(chang=0)delay(5);if(chang=0)while(!chang);delay(5);while(!chang);delay(100);while(chang) display(max1); if(up=0) delay(5);if(up=0)max1+;delay(20); while(!up); delay(5); while(!up); if(down=0
13、)delay(10);if(down=0)max1-;delay(20);while(!down);delay(5);while(!down);while(!chang);delay(5);while(!chang);void press(void) if(one=0)delay(5);if(one=0)while(!one);delay(50);while(!one);delay(50);while(!one); tr1=0;led1=0;beep=0;delay(250);beep=1; num =num1; time0_num(); while(num&one) temp=num; di
14、splay(temp); while(!one); delay(5); while(!one); tr0=0; if(num=0) beep=0; over=0; delay(10); while(host) display(num); while(!host);delay(10);while(!host);beep=1; led1=1; led5=1; over=1; void main() while(1) display(dd); change(); if(host=0) delay(5); if(host=0) max=max1; time1_max(); led5=0; beep=0
15、;delay(250);beep=1; while(!host); delay(5); while(!host); while(max&one&two&three&four) display(max); press(); tr0=0; if(max=0) over=0; beep=0; while(host) display(0); led5=1; over=1; beep=1; while(!host); delay(5); while(!host);/ delay(10);/ while(!host); /* t1 (1ms)中断 中断*/void t1zd(void) interrupt 3 /3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断 th1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YY/T 1956-2025体外诊断试剂临床试验术语和定义
- 工业园区规划与可持续发展研究
- 工业废水处理技术与设备发展研究
- 工业大数据分析与挖掘技术
- 工业安全防范系统建设与优化
- 工业物联网与智能化工厂的建设
- 工业生产中机器视觉检测技术的应用
- 工业绿色转型与技术革新
- 工业设备故障诊断的机器学习方案
- 工业设计中的智能化技术应用
- 2025年新高考2卷(新课标Ⅱ卷)英语试卷
- 制造企业加班管理制度
- 儿童疼痛的评估及护理措施
- 护理试卷试题及答案
- 人文社科班试题及答案
- 单位消防培训课件教学
- 2025年公路水运工程重大事故隐患判定标准
- 通风维修质保合同协议
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- GB/T 2423.65-2024环境试验第2部分:试验方法试验:盐雾/温度/湿度/太阳辐射综合
- 打印复印明细清单(报销用)
评论
0/150
提交评论