资源描述:
《C51单片机8路抢答器实训报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《单片机与接口技术》课程设计报告抢答系统设计学生姓名:______曾超________学号:___201358264031____________班级:___物联网____________指导老师:__刘艳军_____________日期:__2015/06/28_____________1题目与要求31.1问题提出31.2本系统涉及的知识点32系统硬件设计32.1模块图32.2部分模块电路图463系统软件设计64总结204.1程序调试情况204.2本人在程序设计中感想22(四)参考文献(左对齐,宋体粗四号)221题目与要求1.1问题提出实现一个“抢答系统设计”。1)制作一个8人抢答器,
2、以开关中的某个开关的按下(闭合)作为抢答按键。2)无人抢答时,8只数码管轮流循环显示1~8(跑马),谁先抢答,数码管停止跑马,8个数码管同时亮谁的编号,并用蜂鸣器发提示音;其后再有人按键,系统不予响应,直到复位键按下,开始下一轮抢答。3)主持人端有一个复位键,可重新开始抢答;有一个答案正确的按键,和一个答案错误的按键,按下时有不同的提示音;要想实现8路抢答器,首先要清楚抢答器的功能。需要设置多少个功能键?功能按键通过哪个I/O口控制?对于此系统,我们第一步应该做什么,先完成哪个部分?1.2本系统涉及的知识点本系统涉及到的知识点有:1.按键的处理。2.数码管的动态静态显示。2系统硬件设计2
3、.1模块图2.2部分模块电路图1.4*3矩阵键盘,本系统中只用到3个功能键,故令P1^4=0控制列线,P1^1,P1^2,P^3分别为横线,不需要做扫描。分别控制S1,S5,S9.2.8路独立按键,为本系统的8路抢答按键。通过P3口输入控制。1.蜂鸣器,接在P1^5.3系统软件设计延时函数模块代码如下:VoidmDelay(unsignedintDelay){unsignedinti;for(;Delay>0;Delay--){for(i=0;i<124;i++){;}}}主程序函数模块,代码:#includesbitP14=P1^4;sbitRight=P1^1;sb
4、itFalse=P1^2;sbitP13=P1^3;sbitBeep=P1^5;unsignedchartable[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};unsignedcharwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};voidmain(){inti,t;P14=0;//ap1:P3=0xff;while(1){for(i=0;i<8;i++){P2=wei[i];//从这里开始修改选手编号跑马效果P0=table[i];mDelay(150);if(P3!=0xff){//r8=
5、P3;switch(P3){case0xfe:{//for(t=0;t<2;t++)//抢答后选手编号闪烁次数//{P2=0xfe;//按下哪一个按键,则数码管位码送该位。即3号抢答,调到3号数码管,4号抢答跳到4号数码管P0=0x06;mDelay(500);P0=0x00;mDelay(500);//}while(1){P0=0x06;P2=0x00;//此处写蜂鸣器提示音if(Right==0){for(t=0;t<3;t++)//抢答后选手编号闪烁次数{P2=0xfe;//按下哪一个按键,则数码管位码送该位。即3号抢答,调到3号数码管,4号抢答跳到4号数码管P0=0x06;mDe
6、lay(500);P0=0x00;mDelay(500);}Beep=0;mDelay(150);Beep=1;mDelay(150);Beep=0;mDelay(150);Beep=1;mDelay(150);Beep=0;mDelay(500);Beep=1;mDelay(500);}if(False==0){for(t=0;t<3;t++)//抢答后选手编号闪烁次数{P2=0xfe;//按下哪一个按键,则数码管位码送该位。即3号抢答,调到3号数码管,4号抢答跳到4号数码管P0=0xff;mDelay(500);P0=0x00;mDelay(500);}Beep=0;mDelay(5
7、00);Beep=1;mDelay(500);Beep=0;mDelay(500);Beep=1;mDelay(500);Beep=0;mDelay(500);Beep=1;mDelay(500);}if(P13==0)break;}break;}case0xfd:{P2=0xfd;P0=0x5b;mDelay(500);P0=0x00;mDelay(500);while(1){P0=0x5b;P2=0x00;if(Right==0