4路抢答器设计单片机课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1、课程设计目的 (3)
2、课程设计正文 (3)
1、软件方面设计 (3)
①总程序流程图 (3)
②显示子程序流程图 (4)
2、硬件方面设计 (5)
①方案设计 (5)
②单元电路设计 (5)
③系统调试 (8)
3、课程设计总结或结论 (8)
4、参考文献 (8)
附录一:总的原理图
附录二:PCB图
附录三:总程序
1、课程设计目的
①可以自主设计简单地电路;②掌握响应外部中断的原理;③利用Protel硬件设计电路原理图
和PCB图;④初步掌握使用Proteus进行单片机的软硬件联机调试。
技术要求:①设置4个抢答台和4个抢答成功指示灯,1个比赛主持人“开始”键和1个抢答指示灯以及1个LED显示器。
②采用中断和查询结合的方法确定按键的动作。
③主持人按下“开始”键后,若有人抢答,则抢答指示灯确认有人抢答,并用7段LED显示抢答者的号码(1--4),并同时点亮对应抢答台上的抢答成功指示灯;若10秒内无人抢答,则发出超时报警,此题作废,主持人可按下“开始”键开始下一题的抢答。
2、课程设计正文
1、软件设计方面
①总程序流程图
②显示子程序
2、硬件方面设计
①方案设计
采用以52为内核的STC系列的芯片,组成一个单片机的最小应用系统,运用C语言编程来实现四路抢答器的设计,采用独立式键盘来作为输入,LED数码管显示,蜂鸣器来报警。
用此方案的优点是:编程简单、操作方便、成本低和错误率低。
②单元电路设计
各引脚接线:通过单片机各引脚功能的介绍,本硬件设计中,P0口接数码管显示器;P1口接独立式键盘;P2.0通过PNP驱动接数码管;/ALE脚和/PSEN脚悬空,/EA脚接高电平;复位电路包含了上电复位和按键复位;晶振选择为6MHz,GND接地,VCC接+5V电源;蜂鸣电路接在P2.1上面。
针对抢答器的设计,输入电路键盘按下开始键后,开始抢答,按下相应的键,输出电路相应的LED二极管发光、数码管显示相应的序号
⑴复位电路
复位电路有两种复位方式:上电复位和按键复位。
上电或按键时,该电路就会产生一个高电平,复位输入高电平有效,当振荡器工作时,RST引脚出现两个机器周期以上的高电平,使单片机复位。
⑵晶振电路
晶振电路为单片机产生时钟脉冲序列。
⑶独立按键及指示灯电路
5个独立式按键K1—K5一端分别接在P1口P1.0-P1.4,另一端与发光二极管相串联都连接在GND接地。
当某一按键按下时,相应的口线发生电平变化,单片机进行扫描来确定某一按键的按下。
进而判断某一选手按下抢答键,同时数码管显示电路显示相应的时间和选手号码。
⑷数码管显示电路
数码管显示电路:用三极管来驱动数码管,位控口接在P2.0上,当P2.0上的电压为低时,三
极管导通,相应的位控口为高电平;当段码显示输入口P0输出相对应的译码时,数码管就会显示相应数字。
抢答时相应的信息都显示在上面。
⑸报警电路
报警电路:用三极管来驱动蜂鸣器,接在P2.1口线上。
蜂鸣器电路的作用是,当10秒内无人抢答时时起到报警作用。
③系统调试
电路连接完后,要进行调试,以检测是否达到要求。
电子安装完毕,通常不宜急于通电,先检
查连线是否正确,连线有没有断开,元件有没有安装错误,如果有错误就一一改正。
以后的设计制作中要形成这种习惯,先要仔细检查。
调试的常用仪器有:万用表、示波器、信号发生器。
检查完,无差错后,通电检测。
查看电压是否正常,正常后装上芯片将写好的程序装载都芯片中,观察现象。
按下抢答开始键K1,数码管显示10秒倒计时,如果10秒钟无人抢答则蜂鸣器报警;如果按下K1开始键如果有人开始抢答,则显示相应的号码。
3、课程设计总结或结论
在通过这两周的单片机课程设计学习,让我了解了设计电路的程序,以及4路抢答器的原理与设计。
通过对电路的连接和对各个器件的运用使我对单片机的各个引脚的功能也有了更深入的了解,巩固了单片机的一些书面知识,了解到一些以往在学习中没有掌握到的的东西。
在电路连接中出错后改错,明白了在实际的设计工作中只有书面知识是不足的,只有在自己的实践中才能发现问题并解决问题,也只有这样才能掌握的更牢靠。
在通过这次的单片机4路抢答器设计过程中,使我更进一步地熟悉了一些芯片的结构及掌握了各芯片的工作原理及其具体的使用方法。
在设计电路中,是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的,要学会自己检查,不明白的得向老师请教。
总的来说,通过这次的设计实验更进一步地增强了自身的实验动手能力,提高组成系统、识图、调试的动手能力,也提高了我们的合作能力。
而且在此次设计中,我了解到了团队合作的重要性,只要通过自己的努力,不懂的向同学和老师请教,就会让自己学到很多东西,让自己知道自己并不输给别人,因此也很感谢帮助我的老师和同学。
这是一次对自己身心也极有帮组的实验设计课。
4、参考文献
《单片机原理及应用》张毅刚、彭喜元、彭宇编著高等教育出版社《单片机C语言编程与实例》赵亮、侯国锐编著人民邮电出版社《新概念51单片机C语言教程》郭天祥编著电子工业出版社《单片机原理及接口技术》李朝青编著人民邮电出版社《MCS-51系列单片机应用系统设计》何立民编著北京航空航天大学出版社
附录一:原理图
附录二:PCB图
附录三:程序
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
void init();
void delay(uint z);
void main()
{
init();
P2=0x01;
while(1)
{
if(key1==0)
{
delay(10); /*按键前消抖*/
if(key1==0)
{
aa=0;
}
if(key2==0)
{
delay(10);/*按键前消抖*/
if(key2==0)
{
P0=0xf9;
delay(100);
P1=0xff;
delay(100);
aa=0;
}
}
else if(key3==0)
{
delay(10);/*按键前消抖*/
if(key3==0)
{
P0=0xa4;
delay(100);
P1=0xff;
delay(100);
aa=0;
}
}
else if(key4==0)
{
delay(10);/*按键前消抖*/
if(key4==0)
{
P0=0xb0;
delay(100);
P1=0xff;
delay(100);
aa=0;
}
}
else if(key5==0)
{
delay(10);/*按键前消抖*/
if(key5==0)
{
P0=0x99;
delay(100);
P1=0xff;
delay(100);
aa=0;
}
}
}
if(aa==200)
{
P2=0x02;
delay(100);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
注:此表必须在同一页面。