基于单片机的多路抢答器设计 下载本文

内容发布更新时间 : 2024/5/6 7:01:54星期一 下面是文章的全部内容请认真阅读。

西安文理学院课程设计报告

2.2.6键盘模块

尝试采用最简单的复位开关完成输入功能。通过按压按键K1,控制抢答开始以及答题开始,数码管显示倒计时。通过按压按键K2,,重置比赛,清零比分。通过按压按键K3以及K4,对正在答题的选手进行加减分。其余按键均为选手抢答专用,抢答成功的选手组好会在LED屏上显示。

图7.键盘输入模块示意图

2.2.7发声模块

发声模块由单片机和峰鸣器两大主要部分组成,如图3.5 所示,当选手抢答完成 时或分数满10 分时给P3.7 输入高电平,蜂鸣器发出声音。

图8.发声模块电路图

第 10 页

西安文理学院课程设计报告 3.参考文献

由于个人能力实在不济,程序编写过程以及电路设计过程中参考了他人的经验。 http://www.docin.com/p-566008212.html

https://wenku.http://m.35331.cn//view/859f08183968011ca30091dd.html http://www.docin.com/p-290390019.html

https://wenku.http://m.35331.cn//view/d13037e3763231126fdb11ec.html [1] 马轲瀛.八路数字抢答器系统[J].华商,2007,(23).

[2]蔡朝阳.单片机控制实习与专题制作[M].北京:北京航空航天大学出版社,2006年

[3]林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].西安: 西安电子科技大学 出版社,2005年.

[4]杨凌霄微型计算机原理及应用DM].江苏: 中国矿业大学出版社,2004年. [5]丁建伟抢答器电路设计[J].兰州工业高等专科学校学报,2008,(04)..

4.总结与感悟

我在这一次抢答器的设计过程中,很是受益匪浅。通过对自己在大学期间所学的知识的|顾,并充分发挥对所学知识的理解和对本次课程设计论文的思考及书面表达能力,最终完成了。这为自己今后进步深化学习,积累 了一定宝贵的经验。撰写论文的过程也是专业知识的学习过程,它使我运用己有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练培养了我运用所学知识解决实际问题的 能力。由于个人能力实在不济,于是我只能在海量的信息和与组员的讨论中慢慢摸索,虽然结果并不完美。但是我已经很满意了,在这里我要感谢在这个过程中所有帮助过我的人。今后的学习中我仍需要加强keil与protues软件的使用熟练度,为以后的学习与工作打下基础。

第 11 页

西安文理学院课程设计报告 附录

图9.抢答器工作流程图

西安文理学院课程设计报告 运行程序

#include\引入51单片机头文件 #include\数学计算方法头文件

#define uchar unsigned char //快捷定义 #define uint unsigned int //快捷定义

#define key P3 //按键借口

#define duan P2 //数码管段选借口 #define wei P1 //数码管位选接口 #define wei2 P0 //数码管位选接口

sbit key1=P3^0;//按键1 sbit key2=P3^1;//按键2 sbit key3=P3^2;//按键3 sbit key4=P3^3; //按键 4 sbit key5=P1^7; //按键 4

sbit people1=P3^4; //按键 4 sbit people2=P3^5; //按键 4 sbit people3=P3^6; //按键 4 sbit people4=P3^7; //按键 4

sbit led=P0^0; //指示灯接口 sbit buzzer=P0^1;//蜂鸣器接口 sbit ledH=P0^2; //指示灯接口 sbit ledL=P0^3; //指示灯接口

uchar i=0;//数码管显示计时 uchar qinflag; //移位标志

bit beepStart,ks,beepStart2; //报警标志

uchar code shuzi[19]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8c,0xff,0xbf}; //0~9,a,b,c,d,e,f,p,不显示,-,

uchar code weizi[11]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x10,0x20};//位选数据

uchar code error[10]={0xff,0xaf,0xc0,0xaf,0xaf,0x86,0xff,0xff,0xff};//error uchar playshuzu[11];

uchar weishu;//位数,输入标志,错误次数,错误标志

西安文理学院课程设计报告 char time;

uchar timeQD;//时间计时 uchar timeDT; //答题时间 uchar id; //选手编号 bit startQD; //抢答启动 bit startDT; //答题启动 bit select; //选择

uint count;//定时计时变量 char fs1,fs2,fs3,fs4; //分数 bit a;

void init(); //初始化 uchar scanzhi();//获取按键值 void display();//数码管显示 void duzhichuli();//数据处理

void displayerror();//错误显示

//=================================================== void keyscan() { if(key1==0) //检测按键K1是否按下开始 { //Delay10ms(); //消除抖动 while(key1==0); //松手检测 if(a==0) { startQD = 1; //启动抢答 timeQD = 15;//倒计时15秒 select = 1; //启动选择 ledL = 1; //绿灯亮 } else { startDT = 1; //倒计时启动 } a = ~a; } if(key2==0) //检测按键K2是否按下复位 { //Delay10ms(); //消除抖动 while(key2==0); //松手检测 ledL = 0; //绿灯灭 ledH = 0; //红灯灭 select = 1;//选择

第 1 页