单片机实训抢答器课程设计报告实验

时间:2024.5.2

目    录

第1章 绪论... 1

1.1 单片机抢答器的背景... 1

1.2 抢答器的意义... 1

第2章 设计概述... 2

2.1 抢答器的工作原理... 2

2.2 设计任务... 2

第3章 系统硬件电路设计... 2

3.1 AT89C51单片机硬件电路... 2

3.2原理及电路总框图... 3

第4章 系统软件设计... 5

4.1 主程序设计... 5

4.2 子程序设计... 5

4.2.1数码管显示电路... 5

4.2.2键盘扫描段码表... 6

4.3 系统流程图... 6

4.3.1系统主程序流程图... 6

4.3.2系统中断程序流程图... 6

4.4 源程序代码... 8

第5章 结束语... 16

5.1 小结... 16

5.2 心得体会... 16

参考文献... 17

第1章 绪论

1.1 单片机抢答器的背景

对于抢答器我们大家来说并不陌生,他是用于很多竞赛场合。真正实现先抢先答,让最先抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气,选手们都站在同一个起跑线上,体现了公平公正的原则。

1.2 抢答器的意义

本系统采用单片机作为整个控制核心。控制系统的四个模块为:显示模块、存储模块、抢答开关,总开关模块。该系统通过一个自锁按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。相对于类似电视台这类花几万元采购的抢答器系统,如果个人组织小型的抢答比赛,这毕竟不合适,但是依靠单片机的低成本,低功耗,可以很好的解决个人用户需要举办小型抢答比赛的需求,而且精度高,操作性好。

第2章 设计概述

2.1 抢答器的工作原理

抢答器的工作原理是采用单片机最小系统,用中断式键盘进行抢答。采用动态显示组号。主持人按下开始抢答键才可以抢答。主持人没有按下开始抢答按纽(P3.0),各组人员无法抢答,主持人按下开始抢答按纽(P3.0),数码管10秒倒计时(10秒内抢答有效),如果有人按下按键,程序就会判断是谁先按下的,然后数码显示管就会显示抢答成功选手的号码,并封锁键盘,数码管显示当前选手的编号,禁止其他人按键的输入,从而实现了抢答的功能。如果在设定的时间中没有一个人按下按键,一到时间,则倒计时停止,不可以抢答。抢答成功后。当要进行下一次的抢答时,由主持人抬起自锁按键,主程序再次进入初始化,进入下一次抢答的就绪状态。

2.2 设计任务

(1)多路数字抢答器的硬件和软件设计;

(2)分析电路图;

(3)画出程序流程图;

(4)编写代码;

(5)程序分析与调试;

第3章 系统硬件电路设计

3.1 AT89C51单片机硬件电路

单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出适配器简单,功能较低[2]。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,AT89C51在我国非常流行,它最大的特点是内部有可以多次重复编程的ROM,并且ROM可以直接用编程器来擦写,使用起来比较方便。本设计使用到的元器件包括:AT89C51芯片、LED二极管、七段LED数码管的译码。其中AT89C51是系统的核心,它主要负责控制各个部分的协调工作。在其外围接上复位电路,数码管,LED二极管,按钮以及振荡器,P1口为8个LED二极管,P2.1-P2.7为抢答输入键接口,数码管段选P0口,位选P3.5和P3.4口。

3.2原理及电路总框图

 

图3.1 抢答器原理框图

第4章 系统软件设计

4.1 主程序设计

   单片机通电以后,2位数码管显示数字“10”此时自锁开关为打开状态,任何选手的按键都无效,8个LED等长灭,当自锁开关闭合后,数码管开始”10-0”的10秒倒计时,在10秒内任意选手抢答,数码管会立即显示对应选手的号码,对应号码的LED灯也会亮起,此时任何选手的按键都无效。若10秒内无选手抢答,则倒计时完毕以后数码管显示“00”,LED全灭,任意选手按键无效。在任意时候打开自锁开关,则程序初始化,再次按下时可再次抢答

4.2 子程序设计

4.2.1数码管显示电路

LED数码管,实现七段数码管的显示二位十进制数。来进行倒计时,即来限制抢答的时间。由于本次课设选用的共阳接法所以对应的段码表如下

表4-1 共阳接法数码管段码表

4.2.2键盘扫描段码表

   本次键盘扫描程序采用的是行列翻转法扫描键盘,即先置行为0,读列值,存在变量1中,然后把列置为0,读行值,存在变量2中,把变量1和变量2相加即为按键对应的键值,下表为相应按键对应的键值

表4-2 行列翻转法键盘键值表

4.3 系统流程图

4.3.1系统主程序流程图

4.3.2系统中断程序流程图


 


                                                                                           N

                                                                                       

  Y

                                                                Y

                                                                                                      N

    

     Y

                                                               Y

                                      Y

       N


 


                                                      N

N

Y

                                                                                                                        Y

                                                        N

                                       Y

                                                    N

                                          Y

         

4.4 源程序代码

#include<reg51.h>

sbit p3_0=P3^0;

sbit p3_4=P3^4;

sbit p3_5=P3^5;

unsigned char key,num;

unsigned char x,y;

unsigned char count;

unsigned char keycode;

unsigned   char LED_T[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff};       //P1口LED表

flag=0;

start=0;

flagl=0;

void delay()      //延时

{

    unsigned int i;

    i=500;

    while(i--);

}

int keyscan() //键盘扫描

{

    unsigned char read,recode,keyvalue;

    P2=0xf0;

    read=P2;

    if(read!=0xf0)

    {

       delay();

       if(read!=0xf0)

       {

           P2=0x0f;

           recode=P2;

           keyvalue=read+recode;

           return keyvalue;

       }

    }

    return 0;

}

void display()    //显示

{

    unsigned char code Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};        //数码管段码表

    switch(num)

    {

       case 0:{x=0;y=0;break;}

       case 1:{x=1;y=0;break;}

       case 2:{x=2;y=0;break;}

       case 3:{x=3;y=0;break;}

       case 4:{x=4;y=0;break;}

       case 5:{x=5;y=0;break;}

       case 6:{x=6;y=0;break;}

       case 7:{x=7;y=0;break;}

       case 8:{x=8;y=0;break;}

       case 9:{x=9;y=0;break;}

       case 10:{x=0;y=1;break;}

    }

    p3_4=0;

    p3_5=0;

    P0=Table[x];

    p3_4=0;

    p3_5=1;

    delay();

    p3_4=0;

    p3_5=0;

    P0=Table[y];

    p3_4=1;

    p3_5=0;

    delay();

}

unsigned char decode() //解码按键

{

    switch(key)

    {

       case 0xb7:return 1;

       case 0xbb:return 2;

       case 0xbd:return 3;

       case 0xbe:return 4;

       case 0xd7:return 5;

       case 0xdb:return 6;

       case 0xdd:return 7;

       case 0xde:return 8;

    }

    return 0;

}

void main()

{

    while(1)

    {

       while(start==0)      //P3.0自锁开关按下,程序跳出循环,开始初始化中断

       {

           num=10;

           P1=LED_T[9];

           display();

           if(p3_0==0)

           start=1;

       }

   

    EA=1;

    TMOD=0x01;

    TH0=0xd8;

    TL0=0xf0;

    ET0=1;

    TR0=1;

    count=100;

    num=9;

    while(flag==0&&p3_0==0)     //flag=0且P3.0按下时执行此循环

    {

    if(flagl==1)            //若中断里检测到按键,P1口对应LED亮起

       P1=LED_T[num-1];

       display();

    }

    start=0;

    flag=0;

    flagl=0;

    }

}

void timer_1(void) interrupt 1

{

    TH0=0xD8;

    TL0=0xf0;

    if(p3_0==1)              //中断途中抬起P3.0自锁开关,关中断

    {

       TR0=0;

       flag=0;

    }

    key=keyscan();           //检测到按键,解码按键至对应case,并且显示对应数字,关中断,防止再次进入中断,保证锁住状态

    if(key!=0)

    {

       num=decode();

       display();

       TR0=0;

       flag=0;

       flagl=1;

    }

    count--;          //10秒倒计时

    if(count==0)

    {

       num--;

       if(num==0)

       {

       TR0=0;

       flag=0;

       }

       count=100;

    }

}

第5章 结束语

5.1 小结

为期一周的课程设计即将结束,在拿到课题后经过仔细的考虑和组员间的分组,我主要负责用绘图工具制作连线图的任务。在程序以及硬件的完成后经过了解和深刻的认识后,我开始了绘制过程。说道绘图工具,现在有很多,AUTOCAD,PROTEL,PROTEUS和altium design9等等,我选用了PROTEL来绘制。

作为一款历史悠久的工具相比起PROTEUS的容易仿真,PROTEL也有着其容易控制和强大的PCB版设计。在绘制过程中,遇到了许多问题,比如元器件的引脚,以及连线不能自动伸缩,在修改时要多费功夫,还有字体大小比例问题等。在经过长时间的修改后,终于完成了绘制。

5.2 心得体会

     然后便是开始对实验报告的整理与对自己这一星期来的心得体会。通过这次试验我发现自己对于软件方面尤其是编写程序那块有着长远的不足,这给了自己警示,提醒自己在未来的学习生活中要更加重视这块方面的练习与实践,光看懂是不够的,学生要能够自己流畅的编写这才是关键。

在这里我要感谢知道我的高桂革老师,是她在设计过程中给了我们许多的帮助,正因为有着她孜孜不倦的教导和指正才会是我们少走许多弯路,令我们顺利的完成了课题。自己的努力,组员的合作加上老师的教导才有了这次的完成。

参考文献

[1] 宋彩礼等. 《单片机原理与C51编程》. 西安交通大学出版社 20##年

[2] 李泉溪. 《单片机原理与应用实例仿真》.北京航天航空大学出版社 20##年

[3] 江世明. 《基于Proteus的单片机应用技术》. 电子工业出版社 20##年

[4] 喻宗泉. 《单片机原理与应用技术》.西安电子科技大学出版社 20##年

[5] 万光毅. 《单片机实验与实践教程》. 北京航天航空大学出版社 20##年


第二篇:单片机实训课程设计报告


单片机实训课程设计报告

基于C51单片机的

院 系:

专 业:班 级:姓 名:

学 号:

指导老师:

完成时间:成 绩:

陕西电子科技职业学院

1. 2. 3. 4. 5. 6. 7. 8. 前言 设计目的和要求 总体设计 硬件设计 软件设计 调试及总结 结束语 参考文献

更多相关推荐:
八位智能抢答器课程设计报告

电子技术课程设计报告设计课题专业班级学生姓名指导教师设计时间智能数字抢答器的设计电气工程及其自动化094班20xx年6月28日自动化与电气工程学院智能数字抢答器的设计一设计任务与要求设计任务1设计一个5V稳压电...

数字抢答器课程设计报告

数字电路课程设计设计课题数字抢答器设计院系部工学院学生姓名叶兆飞指导老师刘权20xx年12月7日1目录1引言2设计任务与要求3方案设计与论证4工作原理说明5单元电路设计与参数计算51抢答锁存电路52LED灯显示...

四路智能抢答器课程设计报告

长沙师范学校电子信息工程系电子技术课程设计总结报告专业电子信息工程技术班级姓名学号指导教师电子信息工程系20**年10月18日课题题目:四路智能抢答器一、课程设计目的本次课程设计主要是配合《模拟电子技术》和《数…

课程设计(四人抢答器)实验报告

课题四人智力抢答器专业班级学号姓名指导教师设计日期成绩电气学院四人智力抢答器设计报告一设计目的作用1掌握四人智力竞赛抢答器电路的设计组装与调试方法2熟悉数字集成电路的设计和使用方法二设计要求设计一台可供4名选手...

四路抢答器课程设计报告

四路抢答器设计实验报告信息科学技术学院自动化班四路抢答器设计实验报告一设计任务1巩固和加深对电子电路基本知识的理解提高综合运用本课程所学知识的能力2养成根据设计需要选学参考书籍查阅相关手册图表和文献资料的自学能...

数字抢答器课程设计报告

德州学院机电工程系MechanicalandElectranicalEngineeringDepartmentofDezhouUniversity电子技术课程设计说明书设计题目专业班级姓名指导老师设计时间课程设...

四人智力抢答器课程设计报告

数字电子技术课程设计报告设计课题:四人智力竞赛抢答器学院:专业:电子信息工程班级:20##级电信(1)班摘要在各种智力竞赛场合,抢答器是必不可少的最公正的用具。通过本学年的《数字电路技术》的学习我们知道了它的原…

四人抢答器课程设计报告[1]

四人智力竞赛抢答器一设计目的1掌握四人智力竞赛抢答器电路的设计组装与调试方法2熟悉数字集成电路的设计和使用方法二设计任务与要求1设计任务设计一台可供4名选手参加比赛的智力竞赛抢答器用数字显示抢答倒计时间由9倒计...

四人抢答器课程设计报告

电子实验课程设计任务书专业物理电子学院真空电子班级学号姓名指导教师20xx年12月12日4人智力竞赛抢答器一实验项目名称4人智力竞赛抢答器实验内容设计并实现一个四人智力竞赛用抢答器电路具体要求为1每个参赛者控制...

四人抢答器课程设计报告

四人智力竞赛抢答器一设计目的1掌握四人智力竞赛抢答器电路的设计组装与调试方法2熟悉数字集成电路的设计和使用方法二设计任务与要求1设计任务1设计一个4路14智力竞赛抢答器主持人可控制系统的清零和抢答的开始控制电路...

数电四路抢答器课程设计报告

电子科学系电子信息科学与技术课程设计报告课程名称数字电子技术基础课题题目四路智能抢答器专业电子信息科学与技术姓名罗永强周文龙学号07070212107070141指导教师史洪宇课题题目四路智能抢答器一课程设计目...

zvypos课程设计报告书(四路抢答器)

懒惰是很奇怪的东西它使你以为那是安逸是休息是福气但实际上它所给你的是无聊是倦怠是消沉它剥夺你对前途的希望割断你和别人之间的友情使你心胸日渐狭窄对人生也越来越怀疑河南理工大学计算机科学与技术学院课程设计报告200...

抢答器课程设计报告(27篇)