基于C51的四路抢答器课程设计报告_第1页
基于C51的四路抢答器课程设计报告_第2页
基于C51的四路抢答器课程设计报告_第3页
基于C51的四路抢答器课程设计报告_第4页
基于C51的四路抢答器课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告设计题目:基于51单片机的四路抢答器姓 名:邵东东学 号:2220093697指导老师:田园日 期:2012年7月20日 目录1、 概述22、 设计原理22.1 设计思路及框图22.2 显示部分42.3 倒计时部分52.4 键值读取部分5三、系统的调试6四、仿真图7五、个人总结7六、附录86.1 附录一86.2 附录二11参考文献16一、概述 随着信息时代的到来,电子技术在社会生活中发挥着越来越重要的作用。抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。本设计利用8951单片机作为核心部件进行逻辑控制及信号产生的四路抢答器。

2、本设计主要完成:1、设计4组参赛的抢答器,每组设置一个抢答按钮;2、电路具有第一抢答信号鉴别能力,抢答成功后,显示组别,发出声音;3、系抢答开始后能进行5秒倒计时,以使抢答者有充分是时间决定是否抢答;4、如果在倒计时期间有参赛者按下,则本轮抢答失败,需复位重新抢答。二、设计原理2.1 设计原理及框图抢答器总体设计方案框图如图1图1 总体设计方案框图主程序如下:void main() j0=10; j6=11;j7=11; sec=8;buzzer=1; chaos_flag=0;/超时标志位 qiang_flag=0;/抢答标志位 start_flag=0;/开始标志位 inti0();whi

3、le(1) buffer_zone(); display(); if(sec0) /超时标志位处理 chaos_flag=0; else chaos_flag=1; if(qiang_flag=0) p3=0xfe; /有人抢答指示 else p3=0xf7; /无人抢答指示 keyscan(); 2.2 显示部分本模块由四位一体的七段共阴极数码显示管完成。图2 数码管显示仿真图显示程序如下:void display() temp=0xfe; for(k=0;k8;k+)p2=temp;p0=ijk;delay(2);temp=_crol_(temp,1); 2.3 倒计时部分在抢答开始之前有

4、5秒的倒计时时间,是为了让选手有充分的准备,这部分虽然简单,但是必不可少。倒计时程序如下:void djs() switch(a) case 5:p0=0x6d; /*数码管显示5*/break; case 4:p0=0x66;break; case 3:p0=0x4f;break; case 2:p0=0x5b;break; case 1:p0=0x06;break; case 0:p0=0x3f; /数码管显示0*/break; default :break; 2.4 键值读取部分由于是四路抢答器,用到的按键比较少,故本设计采用独立式键盘,接口原理如图:图3 独立式键盘接口键值读取是本次设

5、计非常重要的一部分,这部分程序比较冗长,这里限于篇幅,不再引出程序。附录一会有完整的程序展示。三、 系统的调试系统调试包括硬件调试和软件调试,而且两者是密不可分的。硬件调试是我们进行本次课程设计的第一项工作,通过系统给的调试程序,我们轻松完成了硬件调试。软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行。如果执行结果与预期的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。四、仿真图图4 仿真图五、个人总结单片机作为我们的专业课之一

6、,虽然我对这门课没什么兴趣,觉得那些知识枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。在这学期的课程设计中,我们在收获知识的同时,还收获了阅历,收获了兴趣。我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考能力,在各种其它能力上也都有了提高。更重要的是,在实践中,我们学会了很多学习的方法。而这是日后最实用的。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这次课程实践使我加深了对8951芯片的认识,对以前混淆不清的各个端口功能了然于胸。作为一名工科学生,学会这些keil c这种工具软件对日后的学习非常有帮助。总的来说,这次课程设计使

7、我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。最后,由衷感谢老师们给我们这样一个锻炼自己的机会,感谢田老师两个星期以来的悉心指导!六、附录由于第一次的程序过于简单,所以我和郑阳同学后来对程序作了修改,附录一收的是基本程序,附录二收的是加强后的程序。6.1 附录一#includeunsigned char a;unsigned char b;unsigned char c; sbit p1_0=p10;sbit p1_1=p11;sbit p1_2=p12;sb

8、it p1_3=p13;sbit p1_4=p14;sbit p1_5=p15;void delay(int m)int d,k;for(d=0;dm;d+)for(k=0;k=10) b=0;a-;6.2 附录二#include reg51.h#include intrins.h#define uint unsigned int #define uchar unsigned charuchar sec,temp,temp1,k,a,m;uchar chaos_flag; /超时标志位uchar qiang_flag; /抢答标志位uchar start_flag; /开始标志位sbit bu

9、zzer=p20;/*共阳数码管字型码*/uchar i=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff;/*显示代码序号*/uchar j=10,11,11,11,11,11,11,11;/*延时函数*/ void delay(uint z) uint x,y; for(x=z;x0;x-)for(y=110;y0;y-); /*显示缓冲区函数*/ void buffer_zone() j7=sec/10;j6=sec%10; /*显示函数*/ void display() temp=0xfe; for(k=0;k8;k+)p2=temp;p0=ijk;delay(2);temp=_crol_(temp,1); /*函数初始化*/ void inti0() tmod=0x01; th0=(65535-50000)/256; tl0=(65525-50000)%256; ea=1; et0=1; tr0=0; /*中断函数*/ void zd() interrupt 1 th0=(65535-50000)/256;tl0=(65525-50000)%256;m+;if(m=20)m=0;sec-;buffer_zone();if(sec0) /超时标志位处理 chaos_flag=0; el

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论