单片机设计实验报告.docx

上传人:b****3 文档编号:3444440 上传时间:2022-11-23 格式:DOCX 页数:17 大小:178.79KB
下载 相关 举报
单片机设计实验报告.docx_第1页
第1页 / 共17页
单片机设计实验报告.docx_第2页
第2页 / 共17页
单片机设计实验报告.docx_第3页
第3页 / 共17页
单片机设计实验报告.docx_第4页
第4页 / 共17页
单片机设计实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机设计实验报告.docx

《单片机设计实验报告.docx》由会员分享,可在线阅读,更多相关《单片机设计实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

单片机设计实验报告.docx

单片机设计实验报告

目录

一设计任务及要求………………………………………………2

二工作原理………………………………………………2

三硬件电路设计………………………………………………2

四软件设计………………………………………………4

五总结………………………………………………7

六参考文献………………………………………………7

七主程序清单………………………………………………7

 

摘要:

电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。

如果在抢答中,靠视觉是很难判断出哪组先答题。

利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。

本设计使用STC89C51单片机来设计智能抢答器,组数可以在六组以内任意使用。

并且具有倒计时和时间设置及报警功能。

利用STC89C51单片机对信号进行锁存、显示等功能。

分别从硬件和软件两方面阐述了该控制系统的设计方法,并经过调试和运行使该系统达到预期目标,具有反应快、功能齐全、实用性强的特点。

一、课程设计的要求与数据

1.抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。

2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

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

即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

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

当主持人启动"开始"键后,定时器进行减计时。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

如果定时时间已到,无人抢答,本次抢答无效,系统通过一个指示灯报警并禁止抢答,定时显示器上显示00。

二:

工作原理

抢答器是为竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。

当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。

回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。

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

当主持人启动"开始"键后,定时器进行减计时。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

如果定时时间已到,无人抢答,本次抢答无效,系统通过一个指示灯报警并禁止抢答,定时显示器上显示00。

因此要完成抢答器的逻辑功能,该电路至少应包括输入开关、数字显示、判别组控制以及组号锁存等部分。

三:

硬件电路设计

1.总体设计

如图1,P3.0为开始抢答,P3.2为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

P3.2为时间加1调整,P3.3为时间减1调整。

图1总体电路

2外部振荡电路

 

图2外部振荡电路

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

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

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

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

C1,C2的典型值为30PF。

3复位电路的设计

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

 

图3复位电路

在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。

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

4显示电路的设计

显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。

 

图4阴极七段数码管

5按钮输入电路的设计

抢答器的输入按钮使用常开开关,

 

图5抢答按键

这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”现象就可以了。

这里采用最常用的方法即延时法,其的原理为:

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

6报警电路

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

本文设计如下图所示。

图中单片机的14脚输出具有复合功能,此处用到了单片机17脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。

图6发声电路

四:

软件设计流程图

1程序系统结构图图7软件系统结构图

硬件电路确定后,软件的编程要与硬件相匹配,

软硬件才能结合完成所要实现的功能。

由功能分析得到以下的软件结构图:

2程序流程图

整个程序主要由定时器T0、定时器T1、外部中断0和主程序构成。

定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,

每次中断都对P3.7取反,扬声器发声,改变定时器初值,

可改变扬声器频率。

定时器程流程图如下:

 

图8响铃程序流程图

定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即

为一秒,显示数字减一。

其流程图如下:

 

图9倒计时中断流程图

外部中断0用于调整倒计时时间,流程图如下:

 

 

图10调整抢答时间流程图

主程序协调三个中断一起工作,实现抢答功能,其流程图如下:

 

图11主程序流程图

 

五:

总结

设计是对自己以前学习过的知识的一种灵活的应用,有助于让我们把所学的知识融会贯通。

同时也是对我们学习的一种最好的检验方法。

让我们更好的了解到单片机芯片的各端口的功能,在实际应用中学习到芯片端口的各种使用方法。

初次面对设计有一种手足无措的感觉。

通过查询资料,查看一些类似的电路设计及程序设计。

慢慢的了解了芯片各端口的功能以及使用方法。

然后一点点设计、仿真、改善,最终设计出了完善的系统。

六:

参考资料

1.教材

2《单片机原理与应用教程》刘瑞新机械工业出版社

3.《单片机原理与实用技术》王振红机械工业出版社

 

主程序清单

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG001BH

AJMPT1INT

OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

ORG0040H

MAIN:

MOVR1,#0FH;初设抢答时间为15s

MOVR2,#0AH;初设答题时间为10s

MOVTMOD,#11H;设置未定时器/模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;越高发声频率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;50ms为一次溢出中断

SETBEA

SETBET0

SETBET1

SETBEX0

SETBEX1;允许四个中断,T0/T1/INT0/INT1

CLROK

CLRRING

SETBTR1

SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

;查询程序:

START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;未开始抢答时候显示FFF

JBP3.0,NEXT

ACALLDELAY

JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

ACALLBARK;按键发声

MOVA,R1

MOVR6,A;送R1->R6,因为R1中保存了抢答时间

SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答

MOVR3,#0AH;抢答只显示计时,灭号数

AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:

JNBP1.0,FALSE1

JNBP1.1,FALSE2

JNBP1.2,FALSE3

JNBP1.3,FALSE4

JNBP1.4,FALSE5

NBP1.5,FALSE6

JNBP1.6,FALSE7

JNBP1.7,FALSE8

AJMPSTART

;非法抢答处理程序:

FALSE1:

ACALLBARK;按键发声

MOVR3,#01H

AJMPERROR

FALSE2:

ACALLBARK

MOVR3,#02H

AJMPERROR

FALSE3:

ACALLBARK

MOVR3,#03H

AJMPERROR

FALSE4:

ACALLBARK

MOVR3,#04H

AJMPERROR

FALSE5:

ACALLBARK

MOVR3,#05H

AJMPERROR

FALSE6:

ACALLBARK

MOVR3,#06H

AJMPERROR

FALSE7:

ACALLBARK

MOVR3,#07H

AJMPERROR

FALSE8:

ACALLBARK

MOVR3,#08H

AJMPERROR

;倒计时程序(包括有效抢答程序):

COUNT:

MOVR0,#00H;重置定时器中断次数

MOVTH1,#3CH

MOVTL1,#0B0H;重置定时器

RECOUNT:

MOVA,R6;R6保存了倒计时的时间

MOVB,#0AH

DIVAB;除十分出个位/十位

MOV30H,A;十位存于(30H)

MOV31H,B;个位存于(31H)

MOVR5,30H;取十位

MOVR4,31H;取个位

MOVA,R6

CLRC

SUBBA,#07H

JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒

MOVA,R0

CJNEA,#0AH,FULL;1s中0.5s向下运行

CLRRING

AJMPCHECK

FULL:

CJNEA,#14H,CHECK;1s时,响并显示号数并清R0,重新计时

SETBRING

MOVA,R6

JZQUIT;计时完毕

MOVR0,#00H

DECR6;一秒标志减1

AJMPCHECK

LARGER:

MOVA,R0

CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"

DECR6;计时一秒R6自动减1

MOVR0,#00H

CHECK:

JNBP3.1,QUIT;如按下停止键退出

ACALLDISPLAY

JNBP1.0,TRUE1

JNBP1.1,TRUE2

JNBP1.2,TRUE3

JNBP1.3,TRUE4

JNBP1.4,TRUE5

JNBP1.5,TRUE6

JNBP1.6,TRUE7

JNBP1.7,TRUE8

AJMPRECOUNT

QUIT:

CLROK;如果按下了"停止键"重新回到开始

CLRRING

ACALLBARK

AJMPSTART

;正常抢答处理程序:

TRUE1:

ACALLBARK;按键发声

MOVA,R2

MOVR6,A;抢答时间R2送R6

MOVR3,#01H

CLROK;

AJMPLOOP2

TRUE2:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#02H

CLROK

AJMPLOOP2

TRUE3:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#03H

CLROK

AJMPLOOP2

TRUE4:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#04H

CLROK

AJMPLOOP2

TRUE5:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#05H

CLROK

AJMPLOOP2

TRUE6:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#06H

CLROK

AJMPLOOP2

TRUE7:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#07H

CLROK

AJMPLOOP2

TRUE8:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#08H

CLROK

LOOP2:

AJMPDISPLAY;抢答后停止计时,等待返回

SETBRING

JNBP3.1,QUIT

AJMPLOOP2

;犯规抢答程序:

ERROR:

SETBRING;犯规响铃

MOVR5,#0BH

MOVR4,#0BH;显示FF和犯规号数

LOOP3:

ACALLDISPLAY

JNBP3.1,QUIT1;等待“停止”键按下

AJMPLOOP3

QUIT1:

CLRRING

CLROK

AJMPSTART

;显示程序:

DISPLAY:

MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出

MOVA,R5

MOVCA,@A+DPTR

MOVP2,#01H

MOVP0,A

ACALLDELAY

MOVDPTR,#DAT2

MOVA,R4

MOVCA,@A+DPTR

MOVP2,#02H

MOVP0,A

ACALLDELAY

MOVA,R3

MOVCA,@A+DPTR

MOVP2,#04H

MOVP0,A

ACALLDELAY

RET

DAT1:

DB00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"灭","1","2","3","4","5","6","7","8","9","灭","F"

DAT2:

DB

3FH,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;第一个为0,其他相同

DELAY1:

MOV35H,#08H

LOOP0:

ACALLDISPLAY

DJNZ35H,LOOP0

RET

;延时(显示和去抖动用到):

DELAY:

MOV32H,#12H

LOOP:

MOV33H,#0AFH

LOOP1:

DJNZ33H,LOOP1

DJNZ32H,LOOP

RET

;发声程序:

BARK:

SETBRING

ACALLDELAY1

ACALLDELAY1

CLRRING;按键发声

RET

;INT0(抢答时间R1调整程序):

INT0SUB:

MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;先在两个时间LED上显示R1

JNBP3.2,INC0;P3.2为+1s键,如按下跳到INCO

JNBP3.3,DEC0;P3.3为-1s键,如按下跳到DECO

JNBP3.4,BACK0;P3.4为确定键,如按下跳到BACKO

AJMPINT0SUB

INC0:

MOVA,R1

CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,重新加起

MOVR1,#00H

ACALLDELAY1

AJMPINT0SUB

ADD0:

INCR1

ACALLDELAY1

AJMPINT0SUB

DEC0:

MOVA,R1

JZSETR1;如果R1为0,R1就置99,

DECR1

ACALLDELAY1

AJMPINT0SUB

SETR1:

MOVR1,#63H

ACALLDELAY1

AJMPINT0SUB

BACK0:

RETI

;TO溢出中断(响铃程序):

T0INT:

MOVTH0,#0ECH

MOVTL0,#0FFH

JNBRING,OUT

CPLP3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音

OUT:

RETI

;T1溢出中断(计时程序):

T1INT:

MOVTH1,#3CH

MOVTL1,#0B0H

INCR0

RETI

END

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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