创新性实验报告-基于51单片机的四路抢答器设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

山东科技大学电工电子实验教学中心创新性实验结题报告实验项目名称_基于51单片机的四路抢答器设计__________组长姓名学号_手机Email_成员姓名_学号__成员姓名__学号__专业___班级__指导教师及职称________开课学期至_学年_学期提交时间年月日一、实验摘要摘要:51单片机简单易上手,它的处理对象不是字或字节而是位。它不能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H-2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为00H-7FH),使用极为灵活。本次基于单片机的试验要求:实现四路抢答器的设计。(1)总共6个按键,两个供主持人用于“开始抢答”和“复位”操作,四个供四个选手用作“抢答”操作。(2)用1个发光二极管用作开始抢答的指示灯,用4个发光二极管分别显示4个选手的抢答状态。(3)开始抢答后,哪个选手抢答键最先按下,抢答指示灯点亮,蜂鸣器报警,数码管显示选手号码,表示该选手抢答成功,此时其他选手再按键为无效。二、实验目的1.熟悉89c51的基础操作与编程2.熟悉Proteus的基础操作3.熟悉创新性实验操作的过程三、实验场地及仪器、设备和材料:1、实验场地:J11-3222、设备:计算机,实验箱3、材料:数据线、杜邦线4、Proteus、Microsoftoffice2013四、实验内容1、实验原理四路抢答器实验原理图如图1所示:图1四路抢答器实验原理图开始按键接到单片机的P1.1口,复位按键接到单片机的P1.0口,四个抢答按键分别接到单片机的P1.2、P1.4、P1.5、P1.7口,五个发光二极管分别接到单片机的P0.0、P0.2、P0.5、P0.6、P0.7口,蜂鸣器接到单片机的P2.3口,数码管接到单片机的P3.0-P3.6口。2、单片机程序#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitledbell=P2^3;//蜂鸣器引脚定义sbitled1=P0^0;sbitled2=P0^2;//指示灯引脚定义sbitled3=P0^5;sbitled4=P0^6;sbitled5=P0^7;bitkaishi,success;/*定义三个标志位,主持人按下k1的开始,定时器满20秒结束20秒回答成功回答完问题*/ucharcodetable[]={~0xC0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e,~0xff,~0x0c,~0xbf};/*0-F、灭(16)、P.-*/voiddelay(uintcount);//延时子程序uintkeychuli();//键处理子程序uintkey();//键值voidini();//***************主函数**********************************************voidmain(){ini();while(1){switch(key()){case0:break;case1:ini();break;//键1按下表示复位case2:kaishi=1;led1=0;//键2按下开始启动定时器抢答开始break;case3://键3按下表示1号选手抢答if((kaishi==1)&&(success==0))//判断是否违规(不违规则抢答有效){success=1;P3=table[1];//显示选手号led2=0;//对应的指示灯亮ledbell=0;//蜂鸣器响delay(100);ledbell=1;}break;case4://键4按下表示2号选手抢答if((kaishi==1)&&(success==0)){success=1;P3=table[2];//显示选手号led3=0;ledbell=0;//蜂鸣器响delay(100);ledbell=1;}break;case5://键5按下表示3号选手抢答if((kaishi==1)&&(success==0)){success=1;P3=table[3];//显示选手号led4=0;ledbell=0;//蜂鸣器响delay(100);ledbell=1;}break;case6://键6按下表示4号选手抢答if((kaishi==1)&&(success==0)){success=1;P3=table[4];//显示选手号led5=0;ledbell=0;//蜂鸣器响delay(100);ledbell=1;}break;}}}//************系统初始化*****************************voidini(){P0=0xff;//LED灯全灭P3=0x00;//数码管不显示kaishi=0;success=0;}uintkeychuli(){uintk;P1=0xff;k=P1;//P1口内容送Kswitch(k){case0xFE:return1;break;case0xFD:return2;break;case0xFB:return3;break;case0xEF:return4;break;case0xDF:return5;break;case0x7F:return6;break;default:return0;break;}}/*************************************************************************函数原型:key();*功能:键盘扫描函数,函数返回值即键值。************************************************************************/uintkey(){uintkeyzhi,i;//按键键值临时存放if(P1!=0)//有键动作延时去抖动,否则函数返回{delay(1);if(P1!=0){keyzhi=keychuli();i=0;while((i10)&&(P1!=0)){delay(1);i++;}//真正有键按下,取键值并暂存}}returnkeyzhi;}//************延时子程序,以1毫秒为基准*****************************voiddelay(uintcount){uintj;while(count--!=0){for(j=0;j1000;j++);}}五、实验结果与分析仿真结果:按下开始键发光二极管D1点亮。选手3抢答键按下发光二极管D4点亮,蜂鸣器报警,同时数码管显示3。按下复位键后,所有发光二极管熄灭,数码管不显示任何东西2、对实验现象、数据及观察结果的分析与讨论:经过试验结果的验证可知,该电路的设计方法与电路图能够满足研究要求。3、主要关键和创新点:关键点:对51单片机基本操作流程的掌握程度以及编程能力,对Proteus软件的熟练操作。创新点:运用c语言编写单片机程序。指导教师签名:年月日六、指导老师评语及得分:签名:年月日七、中心意见:中心主任:年月日

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功