单片机课程设计Word文档格式.docx

上传人:b****4 文档编号:18395352 上传时间:2022-12-16 格式:DOCX 页数:21 大小:487.28KB
下载 相关 举报
单片机课程设计Word文档格式.docx_第1页
第1页 / 共21页
单片机课程设计Word文档格式.docx_第2页
第2页 / 共21页
单片机课程设计Word文档格式.docx_第3页
第3页 / 共21页
单片机课程设计Word文档格式.docx_第4页
第4页 / 共21页
单片机课程设计Word文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机课程设计Word文档格式.docx

《单片机课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

单片机课程设计Word文档格式.docx

开始"

键后,定时器进行减计时,同时扬声器发出短暂

的声响。

2、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时

间,并保持到主持人将系统清除为止。

3、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答。

三总体设计

3.1系统主要功能

1)本题的根本任务是准确判断出第一抢答者的信号并将其锁存。

实现这一功能可用锁存器或触发器等。

得到第一信号之后应立即将电路的输入封锁,即使其他的组抢答信号无效。

同时还必须注意,第一抢答信号

应该在主持人发出抢答命令之后才有效。

2)当电路形成第一抢答信号之后,用编码、译码及数码显示电路显示出抢答者的级别。

3)当主持人按下开始抢答按钮后,开始进行15秒计时,此时,若有组别抢答,显示该组别并进行30秒倒计

时;

当计时时间到,仍无组别抢答,主持人清零后开始新的一轮抢答。

3.2 

设计思路

抢答器原理:

该抢答器供2-6个的抢答比赛使用。

每个选手的座位前安装一只抢答按钮开关。

主持人的座位

前安装一只复原按钮开关、一清除按钮开关、一只蜂鸣器和一只抢答器工作状态指示灯。

每当主持人口头发

出允许抢答的号令之后,哪个队先按下座位上的按钮开关,显示该座位组号并开始计时,同时发出 

声类

似于电话振铃的提示声,表示此次抢答动作已经完成。

在主持人确认后,按下复原按钮,蜂鸣器发出响声,

为下一次的抢答作好准备。

按钮开关与座位的对应关系如下表所示:

按钮开关与座位的对应关系

座位

主持人席

座位1

座位2

座位3

座位4

座位5

座位6

按钮开关

开始

结束

复位

K1

K2

K3

K4

K5

K6

S1

S2

S3

蜂鸣器

3.3 

方案论证

1)抢答器同时供6名选手或6个代表队比赛,分别用6个按钮K1-K6表示。

2)设置一个系统清除和抢答控制

开关S,该开关由主持人控制。

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

即选手按动按钮,锁存相应的编号,并

在LED数码管上显示,同时扬声器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保

持到主持人将系统清除为止。

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

键后,定时器进行减计时,同时扬声器发出短暂的声响。

5)参赛选手在设定的时间

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

清除为止。

如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答. 

6)6路抢答器可以利

用硬件电子元器件实现,但电路结构复杂,调试困难,涉及到的外围元件多,不便于安装,实验给实际操作

带来很大的麻烦。

7)我们利用单片机可以用很少元件实现相同功能,而且单片机性能稳定,可操作性

强。

可以只用P0口连接上拉电阻,完成驱动LED的功能,串接按键可以由选手自己控制抢答机会,利用P3口

的RXD接74LS164的A,B端,TXD接移位脉冲做时钟信号。

利用单片机程序判断选手按键是否有效,但选手违

规抢答,利用简单程序显示选手序号,启动蜂鸣器并不间断,告诉主持人有人违规操作,抢答无效。

给出

相应的延时,选手按正常的操作抢答,软件倒记时,利用74LS164移位寄存8段数码管,实现倒记时显示时

间,到5秒相应时间提醒选手时间快到了,要及时作答,并启动蜂鸣器。

如果有选手在规定的时间以前完

成问题,主持人通过按键S3复位,开始新的问题作答,因为程序不是很大不需要扩展存储空间,选手按键跳

入相应的子程序,回答倒记时,通过单片机实现功能可以更人性化,只需单电源供电更方便,

容易实现。

电路结构简单,外围扩展的电路不是很多,锻炼我们所学的知识应用到现实生活当中。

为我们提供实践的

机会。

单片机是电子专业发展的方向,更好的使用单片机可以是我们的产品小型化,使用更方便,性能更

稳定,功能更齐全,所以选用单片机加一定的外围设备实现本次课程设计的要求。

四各部分电路设计

4.1.1 

复位电路的设计

单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状

态都恢复到初始化状态,其电路图如图一所示:

图一复位电路及晶振电路

在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值

都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对

单片机进行硬件复位,所以设定了软复位功能。

软复位实际上就是当程序执行完毕之后,将程序指针通过一条

跳转指令让它跳转到程序执行的起始地址。

4.1.2 

显示电路的设计

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

软件来解决,前两位显示计时,最后是组号。

图二显示电路

4.1.3 

键盘扫描电路的设计

图三独立键盘

1-6组分别代表六个抢答队伍,这种独立键盘相对简单,采用延时重复扫描法消除按键过程中的抖动现象,选

手可以按键进行抢答。

4.1.4 

发声

利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭

就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改

变音调,使喇叭发出不同的声音。

4.1.5 

系统复位

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

从实现系统复位的方法来看,系统复位

可分为硬件复位和软件复位。

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

能实现。

软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。

在所有的指令中,只有RETI指令能够清除中断激活标志。

复位程序如下:

POWER 

DATA 

67H 

上电标志存放单元 

ERR:

CLR 

EA 

关中断

MOV 

DPTR,#ERR1 

准备返回地址

PUSH 

DPL

DPH

RETI 

清除高级中断激活标志

ERR1:

POWER,#0AAH;

重建上电标志

准备复位地址

ACC 

压入复位地址0000H

ACC

清除低级中断激活标志,从程序0000H开始执行。

这段程序先关中断,以便后续处理能顺利进行,然后用两个RETI指令代替两个LJMP指令,从而清除了两级

中断激活标志。

有相应软件陷阱捕捉来的程序可能没有全部激活两个标志,这也无妨。

4.2软件部分电路设计

软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基

本定型后,也就基本上决定下来了。

4.2.1 

主程序系统结构图

图四软件系统结构图

4.2.2 

程序流程图

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

主程序;

非法抢答序;

倒计时程序;

正常抢答处理程序;

犯规处

理程序;

显示及发声程序。

主流程图五所示:

图五程序流程图

五整体电路图

5.1 

总体原理图

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

出为P3.6口。

图六整体电路图

图七 

正常抢答图

图八 

非法抢答图

5.2仿真电路keil软件:

图九keil软件仿真

设计总结

通过这次的课程设计,我能运用已学的知识解决我在设计中遇到的问题,使自己的动手能力和思考问题的能

力得到了不小的提高。

在做设计的过程中我查阅了很多的资料,并认真的阅读了与我的设计相关的资料,使

我的专业涵养得到了提高,知识的储备量也有增加了。

在做设计时,我复习了很多专业课的知识,这使得我

的专业知识得到了加强和巩固。

虽然课程设计很快就结束了,单片机的课程也已经结束,但我觉得我对单片机的学习才刚刚开始。

通过这次

设计我更加深刻的认识到,我们所学的知识对于实际的应用来说是远远不够的,书上只是教给我们一些最基

本的知识甚至可以说是常识,更多的是教会我们一种思想,一种解决问题的方法。

我们的学习应该是运用这

种思想和方法通过网络资源解决遇到的相关的问题。

对我而言,知识上的收获重要。

设计期间由于基础知识不扎实遇到了不少困难,我参考了许多资料并在网上查询了相关内容,给自己不少启发,从中也学到不少知识。

七、系统程序

;

CLR 

EA;

DPTR,#ERR1;

PUSH 

POWER,#0AAH;

RETI;

清除低级中断激活标志始执行。

OKEQU20H;

抢答开始标志位

RINGEQU22H;

响铃标志位

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

org0000H

ljmpmain

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

SETBRING

SETBTR1

SETBTR0;

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

START:

MOVR5,#0bH

MOVR4,#0bH

MOVR3,#0bH

ACALL 

DISPLAY;

未开始抢答时候显示FFF

JBP1.0,NEXT

ACALLDELAY

JBP1.0,NEXT;

去抖动,如果"

开始键"

按下就向下执行,否者跳到非法抢答查询

ACALLBARK;

按键发声

MOVA,R1

MOVR6,A;

送R1->

R6,因为R1中保存了抢答时间

SETBOK;

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

MOVR3,0AH;

抢答只显示计时,灭号数

AJMPCOUNT;

进入倒计时程序,"

查询有效抢答的程序"

在COUNT里面

NEXT:

JNBP1.1,FALSE1

JNBP1.2,FALSE2

JNBP1.3,FALSE3

JNBP1.4,FALSE4

JNBP1.5,FALSE5

JNBP1.6,FALSE6

AJMPSTART

FALSE1:

ACALLBARK;

按键发声

MOVR3,#01H

AJMPERROR

FALSE2:

ACALLBARK

MOVR3,#02H

FALSE3:

MOVR3,#03H

FALSE4:

MOVR3,#04H

FALSE5:

MOVR3,#05H

FALSE6:

MOVR3,#06H

INT0SUB:

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;

JNBP3.2,INC0;

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

JNBP3.3,DEC0;

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

JNBP1.7,BACK0;

P1.7为确定键,如按下跳到BACKO

INC0:

CJNEA,#63H,ADD0;

如果不是99,R2加1,如果加到99了,R1就置0,重新加起

MOVR1,#00H

ACALLDELAY1

ADD0:

INCR1

DEC0:

JZSETR1;

如果R1为0,R1就置99,

DECR1

SETR1:

MOVR1,#63H

BACK0:

RETI

INT1SUB:

MOVA,R2

ACALLDISPLAY

JNBP3.2,INC1

JNBP3.3,DEC1

JNBP1.7,BACK1

INC1:

CJNEA,#63H,ADD1

MOVR2,#00H

ADD1:

INCR2

DEC1:

JZSETR2

DECR2

SETR2:

MOVR2,#63H

BACK1:

COUNT:

MOVR0,#00H;

重置定时器中断次数

重置定时器

RECOUNT:

MOVA,R6;

R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

DIVAB;

除十分出个位/十位

MOV30H,A;

十位存于(30H)

MOV31H,B;

个位存于(31H)

MOVR5,30H;

取十位

MOVR4,31H;

取个位

MOVA,R6

SUBBA,#07H

JNCLARGER;

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

MOVA,R0

CJNEA,#0AH,FULL;

1s中0.5s向下运行

AJMPCHECK

FULL:

CJNEA,#14H,CHECK;

下面系1s的情况,响并显示号数并清R0,重新计时

CLRRING

JZQUIT;

计时完毕

MOVR0,#00H

DECR6;

一秒标志减1

LARGER:

MOVA,R0

如果1s向下运行,否者跳到查"

停/显示"

计时一秒R6自动减1

CHECK:

JNBP1.7,QUIT;

如按下停止键退出

JBOK,ACCOUT;

如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

AJMPRECOUNT

ACCOUT:

JNBP1.1,TRUE1

JNBP1.2,TRUE2

JNBP1.3,TRUE3

JNBP1.4,TRUE4

JNBP1.5,TRUE5

JNBP1.6,TRUE6

QUIT:

CLROK;

如果按下了"

停止键"

执行的程序

TRUE1:

抢答时间R2送R6

因为答题的计时不再查询抢答,所以就锁了抢答

AJMPCOUNT

TRUE2:

MOVR6,A

TRUE3:

TRUE4:

TRUE5:

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

当前位置:首页 > 经管营销 > 经济市场

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

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