四路抢答 单片机课程设计实验报告

时间:2024.5.8

福建工程学院国脉信息学院

目录

摘要????????????????????????? 2

一.引言??????????????????????? 3

1.1本课程设计可实现的功能???????????? 3

1.2本课程完成情况???????????????? 3

1.3本课程使有方法???????????????? 3

二.PIC单片机控制的四路抢答器工作原理???????? 4

三.硬件设计内容??????????????????? 6

3.1基于protel的原理图????????????? 6

3.2 基于PROTEUS的四路抢答器硬件电路设计???? 7

3.3 实际电路图排版与焊接???????????? 10

四.四路抢答器系统软件设计?????????????? 12

五.系统软件调试????????????????????12

六.课程设计总结????????????????????12

七.参考文献??????????????????????13

八.程序清单??????????????????????14

- 1 -

福建工程学院国脉信息学院

摘要

在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本次设计主要应用单片机抢答器设计及工作原理,以及根据它的实际用途。系统工作原理本系统采用PIC16F877A单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。该抢答器系统通过开关电路四个按键输入抢答信号;利用蜂鸣器完成语音的报警功能; 利用存储程序; 利用五个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理, 输出控制信号, 控制数码管和语音芯片工作。在数码管上显示哪一组先答题,然后开始倒计时,限制回答时间,从而实现整个抢答过程。

关键字:PIC16F877A单片机 抢答器。

- 2 -

福建工程学院国脉信息学院

一. 引言

1.1本课程设计可实现的功能:

a. 上电复位功能,手动复位功能,进入初始画面,五个数码管分别显示“H”、“E”、“L”、“L”、“O”。

b. 抢答器功能。分为四组,各组分别有一个抢答按钮。主持人有开始和结束、复位键。设定选手抢答时间为30s,回答问题时间为60s。当主持人按键开始后,开始30s倒计时,选手开始抢答为有效,如果30s后无人回答,则蜂鸣器鸣两声发生提示。若30s内有选手回答,则停止30s的倒计时,同时显示抢答选手的号数,而且开始一分钟的回答时间倒计时,当一分钟倒计时结束后,蜂鸣器鸣一声以示回答时间结束。主持人可按复位键,新一轮抢答开始。

c. 秒表功能。可作为简单的秒表使用,设定一个键开始计时,再按一下停住,记录时间,再按一下,重新计时。

1.2本课程完成情况

a. 基本实现了硬件电路与软件程序的设计;

b. 基本连接好了硬件电路,虽然焊得不是很漂亮,但已经把根据电路原理图做成了一个完整的硬件电路;

c. 由于经验不足,时间有限,可能硬件与软件都不够完美,需待日后继续努力改进。

1.3本课程使有方法:

装上电池,按下自锁键开关,五个数码管显示“HELLO”。 按下键5,换到秒表模式。按下键6,开始计时。再按下键6,

- 3 -

福建工程学院国脉信息学院

停止计时,显示计时的时间。再按下键6,重新计时。

再按下键5,切换到抢答器。按下键6,开始30秒的倒计时,数码管2、3显示剩余时间,若没有人抢答,30秒过后,蜂鸣器响两声,然后结束。若有人抢答,数码管1显示抢中的选手号数,数码管2、3停住,数码管4、5开始60秒的倒计时回答时间,倒计时结束后蜂鸣器叫一声。

图1 电路实物图

二. PIC单片机控制的四路抢答器工作原理

用单片机设计四路抢答器包括硬件电路设计和软件程序设计。硬件电路的核心是PIC16F877A单片机,配以输入输出电路构成。软件程序采用PIC汇编语言或C语言编写单片机程序。PIC单片机控制的四路抢答器原理框图,如图2所示。

如图2所示,系统框图各部分功能说明如下:

四路抢答单片机课程设计实验报告

- 4 -

福建工程学院国脉信息学院

⑴单片机控制器:选用 PIC16F877A单片机,输入端接收抢答输入、解除输入和复位输入信号等,经运算和处理后,输出信号控制抢答指示灯和抢答显示数码管等。

⑵抢答输入:共4路,选用按键开关,实现参赛选手的抢答输入,抢答完后再输入信号无效。

⑶编码电路:对4路抢答输入信号进行编码,实现对PIC16F877A单片机输入端口的扩展,由于本设计只有四路抢答,也可不用。

⑷解除输入:选用按键开关,用程序实现封锁,通过复位键为继续抢答作准备。

⑸复位输入:选用按键开关,可对单片机进行硬件复位操作。 ⑹倒计时:用倒计时来提示抢答或回答时间的开始。

⑺停止计时:停止倒计时来显示,选手抢答所用的时间,以及提示回答时间开始。

四路抢答单片机课程设计实验报告

- 5 -

福建工程学院国脉信息学院

⑻抢答显示:用LCD数码管显示参赛选手的编号。

⑼语音报警电路:当过了限定抢答时间后,蜂鸣器鸣两声表示抢答时间已到,不能再抢答了。当回答时间到了后,蜂鸣器鸣一声表示回答时间已到。

三. 硬件设计内容

3.1 根据设计思想及查阅相关资料,设计出实现欲定功能的系统电路原理图,用protel画出原理图(图3)。

图3 基于protel的原理图

四路抢答单片机课程设计实验报告

- 6 -

福建工程学院国脉信息学院

3.2 基于PROTEUS的四路抢答器硬件电路设计

3.2.1多路抢答器总体电路设计

1.创建一个新的设计文件

首先进入Proteus ISIS编辑环境。

选择“File/New Design”选项,在弹出的模板对话框中选择DEFAULT模板,并将新建的设计保存。如图3.2.1 (a)所示。

四路抢答单片机课程设计实验报告

如图3.2.1 (a)

2.置工作环境

打开Template菜单,对工作环境进行设置。

3.拾取元器件

选择Library下的Pick Device/Symbol菜单项,出现如图3.2.1 (b)所示对话框。

- 7 -

福建工程学院国脉信息学院

四路抢答单片机课程设计实验报告

图3.2.1 (b) 元件拾取对话框

在Keywords中输入你所需要的元器件名称,单击OK按扭,或在元器件列表区域双击元器件名称,即可完成对该元件的添加。

4.在原理图中放置元件

选择对象选择器中的PIC16F877A件,在Proteus ISIS编辑环境主界面的预览窗口将出现PIC16F877A的图标。在编辑窗口双击鼠标左键,元器件PIC16F877A被放置到原理图中。

按照上述步骤,将其他元器件放置到原理图中。

5.编辑元器件

放置好元器件后,双击相应的元器件,即可打开该元器件的编辑对话框。

6.绘制原理图

单击的一个对象连接点。如果想让Proteus ISIS自动定出走线路径,只需单击另一个连接点;如果想自己决定走线路径,只需在希望的拐点处单击。

- 8 -

福建工程学院国脉信息学院

按照上述步骤,将所有的原器件按照所需方式连线。连接后的原理图如图3.2.1 (c)所示。

图 3.2.1 (c)连接后的原理图

8.对原理图进行电气规则检测

选择Tools下的Electrical Rule Check菜单项,出现电气规则检测报告单。如图3.2.1 (d)所示。

9.存盘及输出报表

将设计好的原理图文件存盘。同时,可使用Tools菜单下的Bill of Materials草单项输出BOM文档。如图3.2.1 (e)所示。

四路抢答单片机课程设计实验报告

- 9 -

福建工程学院国脉信息学院

四路抢答单片机课程设计实验报告

图3.2.1 (d)电气规则检查报告单

四路抢答单片机课程设计实验报告

图3.2.1 (e)输出的BOM文档

3.3 实际电路图排版与焊接

电路图设计出来,并经仿真可以用以后,接下去进行器件采购。原件清单如下:

- 10 -

福建工程学院国脉信息学院

四路抢答单片机课程设计实验报告

然后,开始根据原理图焊接电路。焊完后最重要的是进行测试。测试可以从以下几个方面入手:

a. 逻辑故障

这类故障往往由于焊线和放元器件的过程中工艺性错误所造成的。主要包括错线、开路、短路。排除的方法是首先将做好的板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线是否存在相互之间的短路或与其它信号线路短路。必要时利用万用表的短路测试功能,可以缩短排错时间。

b. 元器件检查

检查元器件是否坏掉可以用万用表测相关参数等方法,也可以用替换的方法进行检测。

c. 电源故障

在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在4.8-5Vi之间属正常。若有高压,联机仿真器调

- 11 -

福建工程学院国脉信息学院

试时,将会损坏仿真器等,有时会使用应用系统中的集成块发热损坏。

d. 电路线路检测

电路的调试主要看接口以及连线是否正确,由于引脚数目蛮多的,刚开始制作电路板前最好先进行引脚的测试。硬件的测试是电路原理能不能实现的基础,所以要认真的调试,依次仔细检查,直到正常工作。

四. 四路抢答器系统软件设计

根据电路原理图,编写设计程序,我们可以用汇编编写,也可以用C语言编写,本次设计采用C语言编写。综合中断、定时器计数器TMR1有应用等所写知识设计编写,程序清单见第 页。

五. 系统软件调试

电路焊完后,程序写完后,开始进行系统测试。首先,将仿真无误的程序烧进单片机芯片,然后装上电路板上进行验证。如果不行,再进行检测,测出是硬件问题,还是程序问题,直到把所有的问题都解决了为止。

本次课程设计,经验证成功以后,通过更改程序,付加了秒表功能,使抢答器又多出了个功能。经调试没有错误后,终于比较完整的完成了任务。

六. 课程设计总结

本次课程设计,对我来说可谓受益非浅。这种经历可以说是从来就没有的。

首先,这次课程设计虽然历时两个星期。但我们真正可以开始准

- 12 -

福建工程学院国脉信息学院

备的只有四五天。从星期天那天,开始焊,一直到星期四下午,可以说,我除了吃饭、睡觉,剩下就都是在焊电路,从来也没有这么专注过一件事情,而且一干就是连继好几天,可见这门课程确定有具大的吸引力。

再者,通过这次设计,我发现我很多问题。比如,在焊的过程中一不小心就把电路给焊错了,还有一个问题就是,可能是因为第一次做,没经验,排版有点不好,导致后面的接线复杂,所以更容易出错了。总之,经过本次课程设计,我收获了经验,对焊工有了更浓厚的兴趣。

本次作业,可以说一波三折。本来花了三天的时间把电路焊好了,烧进程序后,发现根本不能用,后面经过检查电路,发现许多线都接错了,经过重新修改。再次验证后,依然不行,几个数码管出现了乱码现象。经同学的建议,将数码管换掉,重连后,再测试不是不行。当时,我特别苦恼,在陈武同学的鼓励下,最后,经他帮忙检查后,发现是我的程序有问题,就在这关键的最后一天,终于成功了,虽然接解有些不良,但还是实现了预期的功能,在此特别感谢陈武同学。

经过本次实验,我对单片机的学习有了阶段性的总结,经过了软硬件的结合,更加具体更加全面地学会了单片机的应用。应该说,这次的作业为以后做毕业设计奠定了基础,有了这次经验,相信以后的学习会越来越上手。

七. 参考文献

a. PIC单片机原理及应用 李荣正 刘启中 陈学军 北京航空

- 13 -

福建工程学院国脉信息学院

航天大学出版社

b. 模拟电子技术基础教程 华成英 清华大学出版社 c. 数字电子技术基础 阎石 高等教育出版社

d. C程序设计(第三版) 潭浩强 清华大学出版社

八. 程序清单

#include<pic.h>

__CONFIG(0xFF32);

void init(void);

void keyscan(void);

void delay(int);

void delay1(int);

int i=30,j,k,m=60,flag=0,flag1,jishu;

char TABLE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f};

char TABLE1[]={0x76,0x79,0x38,0x3f};

void main()

{

init();

while(1)

{

if(flag==0)

{

PORTD=TABLE1[0]; }

PORTC=0Xfe; if(flag==2) delay(2); {

PORTD=TABLE1[1]; PORTD=TABLE[0]; PORTC=0Xfd; PORTC=0Xfe; delay(2); delay(2);

PORTD=TABLE1[2]; PORTD=TABLE[i/10]; PORTC=0Xfb; PORTC=0Xfd; delay(2); delay(2);

PORTD=TABLE1[2]; PORTD=TABLE[i%10]; PORTC=0Xf7; PORTC=0Xfb; delay(2); delay(2);

PORTD=TABLE1[3]; PORTD=TABLE[m%10]; PORTC=0Xef; PORTC=0Xf7; delay(2); delay(2);

keyscan(); PORTD=TABLE[m%10];

- 14 -

福建工程学院国脉信息学院 PORTC=0Xef;

delay(2);

keyscan();

}

if(flag==1)

{

PORTD=TABLE[jishu/10000];

PORTC=0Xfe; PIE1=0x01; TMR1L=(65536-10000)%256; TMR1H=(65536-10000)/256; TMR1ON=0; } void keyscan() { if(flag==2) { delay(2); PORTD=TABLE[jishu%10000/1000] ; PORTC=0Xfd; delay(2); PORTD=TABLE[jishu%10000%1000/ 100]; PORTC=0Xfb; delay(2); PORTD=TABLE[jishu%10000%1000% 100/10]; PORTC=0Xf7; delay(2); PORTD=TABLE[jishu%10]; PORTC=0Xef; delay(2); keyscan(); } } } void init() { TRISB=0XFF; TRISC=0X00; TRISD=0X00; TRISE=0X00; RE0=1; PORTC=0xff; PORTA=0X0F; PORTD=0XFF; INTCON=0xc0; - 15 - if(RB0==0) { delay(10); if(RB0==0) { k=1; while(1) { PORTD=TABLE[1]; PORTC=0Xfe; delay(1); PORTD=TABLE[i/10]; PORTC=0Xfd; delay(1); PORTD=TABLE[i%10]; PORTC=0Xfb; delay(1); PORTD=TABLE[m/10]; PORTC=0Xf7; delay(1); PORTD=TABLE[m%10]; PORTC=0Xef; delay(1); } } } if(RB1==0) {

福建工程学院国脉信息学院 delay(10); if(RB1==0) { k=1; while(1) { PORTD=TABLE[2]; PORTC=0Xfe; delay(1); PORTD=TABLE[i/10]; PORTC=0Xfd; delay(1); PORTD=TABLE[i%10]; PORTC=0Xfb; delay(1); PORTD=TABLE[m/10]; PORTC=0Xf7; delay(1); PORTD=TABLE[m%10]; PORTC=0Xef; delay(1); } } } if(RB2==0) { delay(10); if(RB2==0) { k=1; while(1) { PORTD=TABLE[3]; PORTC=0Xfe; delay(1); PORTD=TABLE[i/10]; PORTC=0Xfd;

- 16 - delay(1); PORTD=TABLE[i%10]; PORTC=0Xfb; delay(1); PORTD=TABLE[m/10]; PORTC=0Xf7; delay(1); PORTD=TABLE[m%10]; PORTC=0Xef; delay(1); } } } if(RB3==0) { delay(10); if(RB3==0) { k=1; while(1) { PORTD=TABLE[4]; PORTC=0Xfe; delay(1); PORTD=TABLE[i/10]; PORTC=0Xfd; delay(1); PORTD=TABLE[i%10]; PORTC=0Xfb; delay(1); PORTD=TABLE[m/10]; PORTC=0Xf7; delay(1); PORTD=TABLE[m%10]; PORTC=0Xef;

福建工程学院国脉信息学院

delay(1); }

} } } }

if(RB4==0) {

delay(10); if(RB4==0) {

while(!RB4); flag++; if(flag==3) flag=0; } }

if(RB5==0) {

delay(10); if(RB5==0) {

while(!RB5); flag1++; if(flag1==2) flag1=0;

if(flag==1||flag==2) {

if(flag1==1) {

TMR1ON=1; jishu=0; } else

TMR1ON=0; } } }

void delay(int x) {

int a,b;

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

for(b=110;b>0;b--); }

void delay1(int x) {

int a,b;

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

for(b=110;b>0;b--); }

void interrupt time0(void) {

TMR1IF=0;

TMR1L=(65536-10000)%256; TMR1H=(65536-10000)/256;

if(flag==1) {

jishu++;

if(jishu==20000) jishu=0; }

if(flag==2) {

j++;

if(j==100) {

j=0;

if(k==1) {

m--;

if(m==-1) {

RE0=0;

INTCON=0x80; delay1(1000); RE0=1; } }

- 17 -

福建工程学院国脉信息学院 if(k==0)

{

i--; if(i==-1) {

INTCON=0x80; RE0=0;

delay1(200); RE0=1;

delay1(200); RE0=0;

delay1(200); RE0=1; while(1) {

PORTD=TABLE[0];

PORTA=0X01;

PORTD=TABLE[0];

PORTA=0X02;

} }

}

}

}

}

- 18 -

更多相关推荐:
单片机课程设计实验报告

中国民航大学单片机课程设计报告数字温度计姓名白杨学号专业班级指导老师常美华赵淑舫所在学院航空自动化学院20xx年12月18日1概述11课程设计的意义本次课程设计是在我们学过单片机后的一次实习可增加我们的动手能力...

51单片机课程设计实验报告

51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会…

单片机课程设计数字钟实验报告

单片机课程设计:电子钟一、实现功能1、能够实现准确计时,以数字形式显示时、分、秒的时间。2、小时以24小时计时形式,分秒计时为60进位,能够调节时钟时间。3、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示…

单片机课程设计实验报告封面

单片机课程设计姓名学号年级专业所在院系电气工程与自动化学院指导教师徐敏关键生提交日期1目录一课程设计任务书二设计项目简介三电路原理图及其简介四系统功能描述五程序框图六程序清单七收获与体会2单片机原理及应用课程设...

单片机课程设计实验报告

单片机原理与接口技术直流电机测速系统课程设计报告学院专业学生姓名学号指导教师时间一前言课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程随...

单片机课程设计实验报告

单片机课程设计实验报告组员20xx0109题目分析本小车是由一块8位单片机AT89S52开发板作为小车的控制器用两个360舵机作为小车的动力前轮用一个单向滚动小球构成后轮单片机开发板上前端留有一块面包板做为小车...

流水灯单片机课程设计报告

井冈山大学机电工程学院单片机课程设计报告课程名称单片机设计题目流水灯姓名覃家应陈东阳专业生物医学工程班级10级医工本一班学号100615062指导教师王佑湖20xx年11月10日目录1引言211设计任务212设...

单片机双机通信课程设计报告

课程设计说明书课程设计名称单片机课程设计课程设计题目单片机与单片机之间的串行通讯学院名称信息工程学院专业电子信息科学与技术班级090431班学号xxx姓名xxx评分教师xxx20xx年6月25日课程设计任务书2...

可控流水灯单片机课程设计报告(c语言)

EDA课程设计报告流水灯专业电子信息工程学号0909054126姓名张新利20xx6271目录1引言12课题综述121课题的来源122课题的意义123预期的目标124面对的问题125课题的技术23系统分析231...

单片机课程设计报告解程翔

莱芜职业技术学院课程论文目录一引言本课程设计的目的2二八路LED跑马灯实验221设计内容222电路图223上机程序324调试结果及结论4三二位数码管循环显示0099的实验431设计内容432电路图433上机程序...

单片机课程设计实验报告

单片机应用实践课程设计任务书学生姓名专业班级指导教师陈德军工作单位武汉理工大学题目单片机应用实践设计并实现步进电机控制器初始条件1KeilProteus78STC等软件2课程设计辅导书单片机微型计算机与接口技术...

单片机电子时钟课程设计实验报告

单片机实践报告题目电子时钟设计专业学生姓名王健吉准考证号指导教师20xx年10月一课程设计的目的和意义课程设计的目的与意义在于让我们将理论与实践相结合培养我们综合运用电子课程中的理论知识解决实际性问题的能力让我...

单片机课程设计实验报告(35篇)