单片机八人抢答器课程设计报告.docx

上传人:b****6 文档编号:3380581 上传时间:2022-11-22 格式:DOCX 页数:15 大小:968.15KB
下载 相关 举报
单片机八人抢答器课程设计报告.docx_第1页
第1页 / 共15页
单片机八人抢答器课程设计报告.docx_第2页
第2页 / 共15页
单片机八人抢答器课程设计报告.docx_第3页
第3页 / 共15页
单片机八人抢答器课程设计报告.docx_第4页
第4页 / 共15页
单片机八人抢答器课程设计报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机八人抢答器课程设计报告.docx

《单片机八人抢答器课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机八人抢答器课程设计报告.docx(15页珍藏版)》请在冰豆网上搜索。

单片机八人抢答器课程设计报告.docx

单片机八人抢答器课程设计报告

单片机计课程设报告

八人抢答器

    专业:

电子信息工程

姓名:

  学号:

2014—12-3

一:

名称与目得

1、 设计要求及目得

二:

硬件电路设计

1、总体原理图 

2、时钟频率电路得设计 

3、复位电路得设计

4、显示电路得设计

5、键盘扫描电路得设计 

6、发声

7、系统复位

三、系统软件设计

1.系统原理图

2、程序流程图

3、程序

四、调试

1、系统得调试

2、具体调试

3、调试实物图

第一章:

要求:

1、八人抢答逻辑:

只有一个最先抢答有效。

2、在主持人控制下,10秒内抢答有效。

3、采用数码管显示抢答10秒倒计时,若有抢答直接结束,显示结果.

4、抢答结束后用数码管显示抢答结果:

抢答有效人编号;若有异常(提前抢答,犯规),显示抢答人编号与E,本次抢答结束.

5、设主持人控制键、复位键.

   控制键:

启动抢答

   复位键:

系统复位

6、开始、正常结束、抢答结束、违规抢答采用声音提示。

第二章:

系统硬件设计

 为使硬件电路设计尽可能合理,应注意以下几方面:

(1)尽可能采用功能强得芯片,以简化电路,功能强得芯片可以代替若干普通芯片,随着生产工艺得提高,新型芯片得得价格不断下降,并不一定比若干普通芯片价格得总与高。

(2)留有设计余地。

在设计硬件电路时,要考虑到将来修改扩展得方便.因为很少有一锤定音得电路设计,如果现在不留余地,将来可能要为一点小小得修改或扩展而被迫进行全面返工。

(3)程序空间,选用片内程序空间足够大得单片机,本设计采用STC89C52单片机。

(4)I/O端口,在样机研制出来后进行现场试用时,往往会发现一些被忽视得问题,而这些问题不就是靠单纯得软件措施来解决得。

如有些新得信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端.如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用得时候就派上用场了。

原理图:

2、时钟频率电路得设计:

单片机必须在时钟得驱动下才能工作、在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定得时钟信号送到单片机内部得各个单元,决定单片机得工作速度

外部振荡源电路

一般选用石英晶体振荡器。

此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右得正弦波时钟信号,其振荡频率主要由石英晶振得频率确定。

电路中两个电容C1,C2得作用有两个:

一就是帮助振荡器起振;二就是对振荡器得频率进行微调。

C1,C2得典型值为30PF。

单片机在工作时,由内部振荡器产生或由外直接输入得送至内部控制逻辑单元得时钟信号得周期称为时钟周期。

其大小就是时钟信号频率得倒数,常用fosc表示。

如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs

3、复位电路得设计

单片机得第9脚RST为硬件复位端,只要将该端持续4个机器周期得高电平即可实现复位,复位后单片机得各状态都恢复到初始化状态,其电路图如图所示:

复位电路

值得注意得就是,在设计当中使用到了硬件复位与软件复位两种功能,由上面得硬件复位后得各状态可知寄存器及存储器得值都恢复到了初始值,而前面得功能介绍中提到了倒计时时间得记忆功能,该功能得实现得前提条件就就是不能对单片机进行硬件复位,所以设定了软复位功能。

软复位实际上就就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行得起始地址。

4、显示电路得设计

显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解得前提下提供尽可能丰富得信息,全靠软件来解决。

5、键盘扫描电路得设计

键盘就是人与微机系统打交道得主要设备.关于键盘硬件电路得设计方法也可以在文献与书籍中找到,配合各种不同得硬件电路,这些书籍中一般也提供了相应得键盘扫描程序。

站在系统监控软件设计得立场上来瞧,仅仅完成键盘扫描,读取当前时刻得键盘状态就是不够得,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作与操作失控现象.在单片机应用中键盘用得最多得形

式就是独立键盘及矩阵键盘。

独立键盘

而且在程序设计上也不复杂,一般用在对硬件电路要求不高得简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。

其次就就是消除在按键过程中产生得“毛刺”现象。

这里采用最常用得方法,即延时重复扫描法,延时法得原理为:

因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键得时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平就是否保持原状态,如果就是则为有效按键,否则无效.

6、发声

我们知道,声音得频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线得“高”电平或低电平,则在该口线上就能产生一定频率得矩形波,接上喇叭就能发出一定频率得声音,若再利用延时程序控制“高”“低”电平得持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同得声音。

7、系统复位

使CPU进入初始状态,从0000H地址开始执行程序得过程叫系统复位。

从实现系统复位得方法来瞧,系统复位可分为硬件复位与软件复位。

硬件复位必须通过CPU外部得硬件电路给CPU得RESET端加上足够时间得高电位才能实现。

三、系统软件设计

软件任务分析与硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。

1.系统原理图

2、 2、程序流程图

在本设计中包括了以下八个主要得程序:

主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。

主流程图如图所示:

程序:

#include〈reg52、h>

#include

#defineuint unsignedint

#defineucharunsignedchar

#definesled_dm_port p0

#definesled_wm_portp2

uchar

table{}={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,

0x86,0x8e};

/*01 23456 789

ab cdef*/

sbitSW1=P2^0; 

sbitSW2=P2^1;

sbit SW3=P2^2;

sbitSW4=P2^3;

sbitSW5=P2^4;

sbitSW6=P2^5; 

sbitSW7=P2^6;

sbitSW8=P2^7;

sbit START=P1^3;

sbitRESET=P1^5;

sbit ADD=P1^6;

sbit DEC=P1^7;

sbitA=P1^4;

sbitH1=P1^0;

sbitH2=P1^1;

sbitH3=P1^2;

voidfengming();

voidkeyscan();

voiddisplay();

voiddelay(uint);

voidFUWEI();

voidqushu();

uintinput=30;

uchar ge,shi,bai=0,n=1,m=0,t=0,temp;

voidmain()

TMOD=0x01;

TH0=(65536-46080)/256;

TL0=(65536-46080)%256;

EA=1;

ET0=1;

while

(1)

keyscan(); 

qushu();

display();

}

voidFUWEI()

{

TR0=0;

TH0==(65536-46080)/256;

TL0=(65536—46080)%256;

T=0;

fengming();

bai=0;

input=30;

}

voiddisplay()

{

H1=0;

P0=table[bai];

Delay

(1);

H1=1;

H2=0;

P0=table[shi];

delay

(1);

H2=1;

H3=0;

P0=table[ge];

Delay

(1);

H3=1;

}

voidqushu()

{

shi=input/10;

ge=input%10;

}

voidkeyscan()

{

if(RESET==0)

delay(200);

FUWEI();

n=1;

}

if(n)

if(START==0)

{

fengming();

TR0=1;

m=1;

n=0;

}

If(n)

If(ADD==0)

Delay(200)

Input++

If(DEC==0)

{

Delay(200);

Input--;

If(m)

If(P1!

=0xFF)

{

temp=P1;

m=0;

START

switch(temp)

case0xFE:

bai=1,fengming();

break; 

case 0xFD:

bai=2,fengming();

break;

case0xFB:

bai=3,fengming();

break; 

case0xF7:

bai=4,fengming();

break;

case 0xEF:

bai=5,fengming(); 

break;

case0xDF:

bai=6,fengming();

break;

case 0xBF:

bai=7,fengming();

break;

case0x7F:

bai=8,fengming(); 

break;

}

TR0=0;

}

voidtimer()interrupt 1

TH0=(65536—46080)/256;

TL0=(65536-46080)%256;

t++;

if(t==20)

t=0;

input--;

if(input==0)

FUWEI();

qushu();

}

}

void delay(uintz)

uintx,y;

for(x=100;x>0;x--) 

for(y=z;y〉0;y--);

void fengming() 

{

uinti;

for(i=1;i>0;i-—)

{A=1;

delay(500);

A=0;

最后一步进行此程序得调试运行。

该仿真结果显示了当评委按下复位健时并开始时,计时器从10秒开始计时,然后每个选手可在十秒内得时间里答出题,并可按下按键。

该课程设计需要C语言得编程知识,并且需要硬件接口电路得仿真,从中学了很多得东西.

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

当前位置:首页 > 考试认证 > 公务员考试

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

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