基于单片机的四路抢答器设计课程设计论文.docx

上传人:b****7 文档编号:23832346 上传时间:2023-05-21 格式:DOCX 页数:27 大小:239.27KB
下载 相关 举报
基于单片机的四路抢答器设计课程设计论文.docx_第1页
第1页 / 共27页
基于单片机的四路抢答器设计课程设计论文.docx_第2页
第2页 / 共27页
基于单片机的四路抢答器设计课程设计论文.docx_第3页
第3页 / 共27页
基于单片机的四路抢答器设计课程设计论文.docx_第4页
第4页 / 共27页
基于单片机的四路抢答器设计课程设计论文.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

基于单片机的四路抢答器设计课程设计论文.docx

《基于单片机的四路抢答器设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的四路抢答器设计课程设计论文.docx(27页珍藏版)》请在冰豆网上搜索。

基于单片机的四路抢答器设计课程设计论文.docx

基于单片机的四路抢答器设计课程设计论文

 

课程设计(论文)

 

题目名称多路数字抢答器设计

课程名称单片机原理及其应用

 

2013年6月24日

摘要

近年来随着科技的飞速发展单片机的应用正在不断深入同时带动传统控制检测日新月异。

此次设计提出一种用AT89C51单片机作为核心控制元件与电阻、液晶显示屏、蜂鸣器等构成硬件操作再利用C语言编程来控制抢答器的功能实现。

本论文对抢答器的背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍使我们不仅对抢答器的原理及设计有了深入的了解也对单片机的设计研发过程有了更加深刻的体会。

本次设计的系统主要采用单片机控制、采用手动抢答的方式。

有人抢答后,系统自动封锁其他选手的抢答按钮,使其不再抢答,从而实现抢答功能。

该系统还增加了抢答倒计时功能,可以调整。

通过自主的设计、编程和调试出一个简单的四路抢答并在液晶屏显示抢答成功者号码;熟悉C语言编程;了解单片机仿真系统的使用方法,达到提高综合运用相关知识的能力;进一步熟悉和掌握Proteus7的使用方法;掌握单片机系统设计全部过程的目的。

关键字:

抢答单片机液晶屏显示

 

目录

第1章前言1

第2章方案设计2

第3章硬件电路的工作原理3

3.1抢答器的电路图3

3.2液晶屏显示电路3

3.3按键控制电路3

第4章软件设计5

4.1软件编程5

4.2系统调试和结果分析6

总结10

参考文献11

附录1源程序12

第1章前言

电子技术和微型计算机的迅速发展,促进微型计算机测量和控制技术的迅速发展和广泛应用,单片机(单片微型计算机)的应用已经渗透到国民经济的各个部门和领域,它起到了越来越重要的作用。

单片微型计算机就是将中央处理单元、存储器、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。

因此一块芯片就构成了一台计算机。

它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。

抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。

因此我们设计了以单片机为核心的新型智能的抢答器,在保留了原始抢答器的基本功能的同时又增加一系列的实用功能。

并简化其电路结构。

控制系统的三个模块为:

显示模块、存储模块、抢答开关模块。

该系统通过开关电路四个按键输入抢答信号,利用1602液晶屏来完成显示功能,用按键来让选手进行抢答,在液晶屏上显示抢答最快的号码及时间,从而实现整个抢答过程。

本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。

系统工作原理本系统采用AT89C52单片机作为核心。

工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计。

 

第2章方案设计

抢答器的设计方案要实现以下功能:

(1)抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。

(2)设置一个系统清除S1和抢答控制开关S2,该开关由主持人控制。

(3)抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在1602液晶屏上显示,同时蜂鸣器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如10秒)。

当主持人启动"开始"键后,定时器进行减计时(5)如果定时时间已到,无人抢答,本次抢答无效,系统禁止抢答,定时显示器上显示01s。

该设计采用AT89C52单片机作为控制系统核心。

该系统可以完成信号识别,运算控制以及显示功能。

抢答器的工作原理是采用单片机最小系统,用查询式键盘进行抢答。

通过抢答按键模块,连接按键进行抢答。

此电路完成的功能如图1所示,当主持人宣布抢答开始的时候,按下开始按钮,此时电路进入抢答状态,选手的输入采用了扫描式的输入,之后把相应的信息送往单片机,再由单片机输出到显示输出电路中。

此时有人第一按下相应的抢答按钮,经过单片机的控制选择,在液晶屏上显示相应的号码,并锁存,同时禁止其他按钮的输入。

系统是采用模块化设计的智能抢答器,主控与参赛者设为终端分系统。

主控分系统有:

开始与结束控制按钮、时限设定、各种相关显示调控功能等。

参赛者分系统设有:

抢答按纽、计时显示、提示功能等。

图1抢答器原理图

第3章硬件电路的工作原理

3.1抢答器的电路图

如图

(2)所示为电路图,其工作原理为:

接通电源后主持人将开关拨到“清零”状态,抢答器处于禁止状态,定时器设定时间,主持人将开关置“开始”,宣布抢答开始时,选手要在规定时间内完成抢答;定时器倒计时优先判断,编号锁存,扬声器提示。

图2抢答器仿真电路图

3.2液晶屏显示电路

使用液晶屏显示抢答成功者号码、时间。

液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。

3.3按键控制电路

键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。

键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。

在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。

独立式键盘,键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。

因此可以根据实际需要对键盘中的按键灵活的编码。

如图3所示。

图3独立式键盘原理图

最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。

独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的键盘。

 

第4章软件设计

4.1软件编程

本设计的抢答器的程序采用的是C程序设计,C语言的显著特点是用二进制来编写程序,程序的各个部分除了必要的信息交流外彼此之间相互独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

本次设计的主程序中包括时钟设计程序,定时器中断子程序,数码管显示程序以及按键控制子程序。

抢答器主流程图如图4所示:

图4抢答器主程序流程图

抢答器定时中断流程图如图5:

图5抢答器定时器中断流程图

4.2系统调试和结果分析

系统调试包括硬件调试和软件调试,而且两者是密不可分的。

我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。

硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。

这种调试可单独模拟进行,也可通过开发装置由软件配合进行。

硬件联机调试则必须在系统软件的配合下进行。

软件调试一般包括分块调试和联机调试两个阶段。

程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。

这时该程序功能块已调试完毕,可去掉附加程序段。

其它程序功能块可按此法进行调试。

程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。

从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。

在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。

在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。

系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。

具有清零装置和抢答控制,可由主持人操纵。

具有定时功能,在10S内无人抢答表示所有参赛选手对本题弃权。

10S时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

电路中的六个按键从上到下分别是清零键、开始键和四组选手的按键。

仿真现象及调试结果如图6、图7、图8所示。

1)图6为主持人按下清零键后的截图,此时液晶屏两项均显示0.

 

1)运行设计,等待主持人开始。

如图6:

图6

 

2)主持人按下启动键后的截图,液晶屏显示从10秒开始倒计时。

如图7:

图7

 

3)选手按下时的截图,显示对应的选手编号,例如3号选手,如图8所示:

图8

 

总结

这次课程设计是基于单片机设计多路数字抢答器,让我对单片机学习也有了更深刻的认识,只有打下良好的基础才会学以致用,才会发挥出作用。

在本次课程设计过程中遇到了许多困难,PROTEUS做出的仿真效果不符合要求,用C语言编写的程序也出现问题,令人头疼不已,后来在经过查找相关资料,在老师同学的帮助下,终于改正了错误。

完成这次课程设计,让我深刻的认识是单片机对于我们专业的重要性,我对单片机的学习还是不够精通,有了这次课程设计的体会,我一定会利用课余时间更深的了解单片机知识。

认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准,所以这个课程设计对我们的作用是非常大的。

经过二个星期课程设计制作,过程曲折可谓一波三折,点点滴滴无不令我回味无穷。

没有经过实践永远都不会知道结果是怎样的,当实践的结果证实了你要得到的结论时那种心情真是不知如何表达。

我也非常的坚信只要付出了一定会有收获,并且这个过程是很美的享受!

汗水预示着结果也见证着收获。

通过本次课程设计,我真正感受到了那种快乐和喜悦!

并且懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在此我非常要感谢的是我的指导老师刘伟春老师,感谢老师的细心认真的辅导,教给我许多原来不知道的知识。

这次课程设计能够顺利的完成,当然有我个人的努力,但同时也离不开指导老师的答疑解惑和同学的帮助。

 

参考文献

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

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

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

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

附录1源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharnum;//定义中断变量,num计满20表示1秒时间到

ucharnum1;//十秒倒计时显示初始值

ucharflag1,flag2;//清零键及开始键按下标志位

ucharflag3,flag4=0;//定义键盘按下标志位

#defineLCDPORTP0

sbitLCD1602_RS=P2^0;

sbitLCD1602_EN=P2^1;

sbitsp=P2^2;//定义蜂鸣器端口

sbitclear=P1^0;//定义清零键

sbitstart=P1^1;//开始键

sbitkey1=P1^2;

sbitkey2=P1^3;

sbitkey3=P1^4;

sbitkey4=P1^5;//key1到key4为选手按键

voiddelay(uintz)//延时函数

{

uinti,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

voidWriteCmd_1602(unsignedcharcmd)

{

LCD1602_RS=0;

LCDPORT=cmd;

delay

(1);

LCD1602_EN=1;

delay

(1);

LCD1602_EN=0;

}

voidWriteByte_1602(unsignedchardate)

{

LCD1602_RS=1;

LCDPORT=date;

delay

(1);

LCD1602_EN=1;

delay

(1);

LCD1602_EN=0;

}

voidInit_1602()

{

LCD1602_EN=0;

WriteCmd_1602(0x38);

WriteCmd_1602(0x0c);//光标不显示地址

WriteCmd_1602(0x06);

WriteCmd_1602(0x01);

}

voidbeep()//定义蜂鸣器函数

{

sp=0;

delay(500);

sp=1;

//delay(500);

}

voiddis(uchar*p)

{

while(*p!

='\0')

{

WriteByte_1602(*p++);

}

}

voiddisplay_init()

{

WriteCmd_1602(0x80);

dis("SerialNumber:

");

WriteCmd_1602(0x80+0x40);

dis("SurplusTime:

");

WriteCmd_1602(0x80+0x40+13);

dis("00s");

}

voiddisplay_num(uchara)//选手编号显示函数

{

WriteCmd_1602(0x80+15);

WriteByte_1602(a);

}

voidclr()//清零函数(主持人按下清零键后数码管显示0)

{

WriteCmd_1602(0x80+15);

WriteByte_1602('0');

}

voiddis10s()//十秒倒计时显示函数

{

ucharshi,ge;

shi=num1/10;

ge=num1%10;

WriteCmd_1602(0x80+0x40+13);

WriteByte_1602(shi+0x30);

WriteCmd_1602(0x80+0x40+14);

WriteByte_1602(ge+0x30);

}

voidplayer()//选手按键检测函数

{

if(key1==0&&flag4==0)

{

delay(10);

if(key1==0&&flag4==0)

{

display_num('1');

TR0=0;

flag1=flag2=0;

flag4=1;

beep();

while(!

key1);

}

}

if(key2==0&&flag4==0)

{

delay(10);

if(key2==0&&flag4==0)

{

display_num('2');

TR0=0;

flag1=flag2=0;

flag4=1;

beep();

while(!

key2);

}

}

if(key3==0&&flag4==0)

{

delay(10);

if(key3==0&&flag4==0)

{

display_num('3');

TR0=0;

flag1=flag2=0;

flag4=1;

beep();

while(!

key3);

}

}

if(key4==0&&flag4==0)

{

delay(10);

if(key4==0&&flag4==0)

{

display_num('4');

TR0=0;

flag1=flag2=0;

flag4=1;

beep();

while(!

key4);

}

}

}

voidkeyscan()//检测按键

{

if(clear==0&&flag2!

=1)//判断清零键,判断语句的作用是按下开始键清零键失效

{

delay(10);

if(clear==0&&flag2!

=1)

{

while(!

clear);//等待按键释放

flag1=0;

flag2=0;

flag3=0;

flag4=0;

num=0;

num1=10;

clr();//清零

flag1=1;//按下清零键标志位

}

}

if(flag1==1)//如果按下清零键

{

if(start==0&&flag3==0)//判断开始键,判断语句的作用是按下开始键后开始键失效

{

delay(10);

if(start==0&&flag3==0)

{

flag2=1;

flag3=1;

while(!

start);

}

}

}

if(flag2==1)//按下开始键

{

TR0=1;//启动定时器0

dis10s();

player();

}

}

voidmain()

{

TMOD=0x01;//设置定时器0工作方式1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

Init_1602();

display_init();

while

(1)//一直检测按键

{

keyscan();

}

}

voidT0_ser()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

num++;

if(num==20)

{

num=0;

num1--;

}

if(num1==0)

{

TR0=0;

flag1=0;

flag2=0;

num=0;

num1=10;

clr();

beep();

}

}

 

 

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

     

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

     

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:

日期:

年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:

日期:

年月日

导师签名:

日期:

年月日

指导教师评阅书

指导教师评价:

一、撰写(设计)过程

1、学生在论文(设计)过程中的治学态度、工作精神

□优□良□中□及格□不及格

2、学生掌握专业知识、技能的扎实程度

□优□良□中□及格□不及格

3、学生综合运用所学知识和专业技能分析和解决问题的能力

□优□良□中□及格□不及格

4、研究方法的科学性;技术线路的可行性;设计方案的合理性

□优□良□中□及格□不及格

5、完成毕业论文(设计)期间的出勤情况

□优□良□中□及格□不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

□优□良□中□及格□不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

□优□良□中□及格□不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

□优□良□中□及格□不及格

2、论文的观念是否有新意?

设计是否有创意?

□优□良□中□及格□不及格

3、论文(设计说明书)所体现的整体水平

□优□良□中□及格□不及格

建议成绩:

□优□良□中□及格□不及格

(在所选等级前的□内画“√”)

指导教师:

(签名)单位:

(盖章)

年月日

评阅教师评阅书

评阅教师评价:

一、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

□优□良□中□及格□不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

□优□良□中□及格□不及格

二、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

□优□良□中□及格□不及格

2、论文的观念是否有新意?

设计是否有创意?

□优□良□中□及格□不及

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1