- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计说明书
姓 名: 学 号: 学 院: 专 业: 题 目: 基于单片机的8路抢答器设计
指导者:
评阅者:
目 录
1、 背景知识 3
2、 课程设计目的 4
3、 工具/准备工作 4
4、 设计步骤及原理 5
步骤1:系统设计 5
步骤2:硬件设计 5
步骤3:软件设计 7
步骤4:硬软件调试 11
5、 设计结果及分析 12
6、 总结及心得体会 13
7、 对本设计过程及方法、手段的改进建议 13
8、 参考文献 13
9、 评价(教师) 14
基于单片机的8路抢答器设计
背景知识
单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。使学生复习、巩固所学过的理论与专业知识,并予以适当强调理论联系实际、严肃认真、高度负责的工作态度,从事和进行分析进一步训练学生的基本技能(如:搜集资料、整理、、发现与分析问题、寻求解决问题的方案、撰写学术论文等)训练学生掌握计算机操作和技术,运用计算机。
图1 基于AT89S52单片机抢答器系统框图
图1
实现功能:基于AT89S52单片机设计制作一个抢答器,晶振采用12MHz。可同时供8名选手或8个代表队参加比赛,编号为1、2、3、4、5、6、7,8各用一个按钮。给节目主持人设置一个控制开关,用来控制系统的清零和抢答的开始。
抢答器具有数据锁存功能、显示功能和声音提示功能。抢答开始后,数码管显示F,同时绿灯亮起。若有选手抢答按钮,编号立即锁存,并在LED数码管上显示选手的编号,同时灭且伴随声音提示。此外,要封锁输入电路,禁止其他选手抢答,最先抢答选手的编号一直保持到主持人将系统清零。
步骤2:硬件设计
电源电路为单片机以及其他模块提供标准5V电源。晶振模块为单片机提供时钟标准,使系统各部分能协调工作。复位电路模块为单片机系统提供复位功能。单片机作为主控制器,根据输入信号对系统进行相应的控制。选手按下相应的按键,蜂鸣器发出提示音,直到按键释放。数码管显示最先按下按键选手的编号。选手回答完毕,主持人按下准备按钮,数码管清零,蜂鸣器停止发声,可以进入下一题的抢答。
AT89S52单片机抢答器原理图
图2
AT89S52引脚图和电路用法
图3
步骤3:软件设计
上电复位后数码管清零,P2.0置高电平,蜂鸣器不发声。循环扫描P3口,看是否有按键按下,如果有按键按下,则转入判断是哪个选手按下按键,并在数码管上显示选手号;P2.0输出方波信号驱动蜂鸣器发声,主持人按键按—声,系统重新进入主程序继续进行下一轮抢答。程序流程图如图3所示:
程序流程图
图4
运行程序如下:
#includereg51.h
#define uint unsigned int
#define uchar unsigned char
unsigned char led[]={0xbf,0x8c,0x5b,0xde,0xec,0xf6,0xf7,0x9c,0xff,0xfe,0xf1}; //数码管段码
uint di,i,a;
sbit buzz=P0^7;
sbit lv=P0^6;
sbit zch=P1^2;
bit flag;
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
void delay1()
{
int x;
for(x=1000;x0;x--);
}
void didi()
{
int i;
for(i=0;i100;i++)
{
buzz=1;
delay1();
buzz=0;
}
}
void keyscan()
{
int key;
if(P3!=0xff)
{
flag=0;
delay(5);
key=P3;
if(key!=0xff)
while(P3!=0xff);
}
switch(key)
{
case 0xfe:
i=
文档评论(0)