八路抢答器设计最新版.docx

上传人:b****1 文档编号:10685834 上传时间:2023-05-27 格式:DOCX 页数:10 大小:66.45KB
下载 相关 举报
八路抢答器设计最新版.docx_第1页
第1页 / 共10页
八路抢答器设计最新版.docx_第2页
第2页 / 共10页
八路抢答器设计最新版.docx_第3页
第3页 / 共10页
八路抢答器设计最新版.docx_第4页
第4页 / 共10页
八路抢答器设计最新版.docx_第5页
第5页 / 共10页
八路抢答器设计最新版.docx_第6页
第6页 / 共10页
八路抢答器设计最新版.docx_第7页
第7页 / 共10页
八路抢答器设计最新版.docx_第8页
第8页 / 共10页
八路抢答器设计最新版.docx_第9页
第9页 / 共10页
八路抢答器设计最新版.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

八路抢答器设计最新版.docx

《八路抢答器设计最新版.docx》由会员分享,可在线阅读,更多相关《八路抢答器设计最新版.docx(10页珍藏版)》请在冰点文库上搜索。

八路抢答器设计最新版.docx

八路抢答器设计最新版

 

《单片机原理及应用》

课程设计

 

课程名称

单片机技术及系统设计

设计名称

八路抢答器设计

学号

学生姓名

所在专业

电气工程及其自动化

所在班级

指导教师

成绩

教师签字

年月日

 

目录

一、课程设计要求………………………………………………3

二、课程论文(设计)的意义………………………3

三、元器件选择………………………………………3

四、设计原理…………………………………………3

五、分部分设计特点特点……………………………3

六、示意图表…………………………………………4

七、程序框图…………………………………………5

八、系统程序设计……………………………………6

九、设计过程中遇到的问题和解决方案………………8

十、总结和心得………………………………………10

十一、课程设计原理图………………………………12

 

《单片机原理及应用》课程设计

八路抢答器设计

一、课程设计要求:

八路抢答器,当其中一路按下,LED显示该路,并发出声音(5秒)。

当有一路按下,其他路的按键无效。

二、课程论文(设计)的意义:

单片机原理与应用课程设计是在学生学完电子技术类基础课程和微机应用类基础课程之后,为加强对学生技术应用能力的培养而开设的体现电子技术,计算机技术综合应用的综合性课程。

本课程的任务是使学生获得单片机应用系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计,调试方法,并了解单片机在测量,控制等电子技术应用领域的应用。

初步具备应用单片机进行设备技术改造,产品开发的能力。

三、元器件选择:

C51单片机,共阴极led数码管,speaker发音器,按钮若干,八路与门,电解电容,电容电阻若干,

四、设计原理

通过按键产生中断请求,响应中断,通过按键跳转使累加器a获得重新数码1-8,再通过查表指令获得驱动led数码管的代码

驱动led数码管,同时通过软件延时程序和置1及取反指令产生长度变化的方波,驱动speaker发出声音,控制发音时间5秒

查表方式获得

五、分部分设计特点特点

1本次课程设计采用C51单片机,

51单片机是八位机,虽问世很久,但现在的增强型的51单片机仍然广泛应用。

本设计采用软件延时,没有使用单片机内的定计时器,只用到一个中断源,所以用c51单片机已经绰绰有余。

所以选用它。

2运用到其外部中断0(此设计只用到一个中断源所以比较简单),

由于此处单片机的工作量不大,所以这里用软件延时,避免了相对麻烦的定计时器设定,而且时间相对容易调试,只要在程序中该数据就好。

所以选用软件延时,而不用定计时器。

只用了一个中断,当按下键时就进入中断响应。

3软件延时技术,

4独立式键盘按键,

用独立式键盘完全满足设计要求,所以此处没必要设计复杂的行列式键盘。

5共阴极led数码管显示,

采用数码管显示,方便简易。

6复位电路采用的是按键复位,

采用复位电路复位,使得程序设计极为简化。

而且可以可靠的执行,符合设计要求。

7产生方波驱动Speaker扬声器。

Speaker的驱动通过改变方波的时间,可以有不同音调的声音。

但要编一首歌,确实不容易,此处,仅仅让其发出声音,并控制时间。

六、示意图表

按键状态

检测p0口

响应中断

关中断

根据按键跳转给ACC赋值

查表获得驱动led数码管显示的代码

驱动led数码管显示

产生矩形波驱动Speaker发音

中断返回

11111110

01H

3FH

11111101

02H

06H

11111011

03H

5bh

11110111

04H

4fH

11101111

05H

66H

11011111

06H

6DH

10111111

07H

7DH

01111111

08H

07H

 

七、程序框图:

八、系统程序设计:

org0000h

ajmpmain

org0003h;外部中断0入口地址

ajmpserve

org0030h

main:

clrp2.0;对p2.0口清零

movp1,#00h;p0口作输入口用要写一

clrit0;选择外部中断0电平触发

setbex0;开外部中断0

setbea;开中断

here:

sjmphere;等待中断

serve:

clrea;关中断,使其他路的按键无效

mova,p0;读输入键状态

jnbacc.0,g0;按键号跳转

jnbacc.1,g1

jnbacc.2,g2

jnbacc.3,g3

jnbacc.4,g4

jnbacc.5,g5

jnbacc.6,g6

jnbacc.7,g7

g0:

mova,#01h

ljmpabc

g1:

mova,#02h

ljmpabc

g2:

mova,#03h

ljmpabc

g3:

mova,#04h

ljmpabc

g4:

mova,#05h

ljmpabc

g5:

mova,#06h

ljmpabc

g6:

mova,#07h

ljmpabc

g7:

mova,#08h

ljmpabc

abc:

movdptr,#tab;查表指令

movca,@a+dptr

movp1,a

movr4,#60;以下是声音控制的程序段,通过控P2.0口的输

loop2:

movr3,#52;出矩形波频率控制蜂鸣器的声调和时间。

loop1:

setbp2.0

acalldelay1

cplp2.0

acalldelay2

djnzr3,loop1

djnzr4,loop2

reti

DELAY1:

MOVR7,#10H

D1:

MOVR6,#12H

D2:

DJNZR6,D2

DJNZR7,D1

RET

DELAY2:

MOVR7,#10H

D4:

MOVR6,#19H

D3:

DJNZR6,D3

DJNZR7,D4

RET

TAB:

DB3FH,06H,5bh,4fH,66H,6DH

DB7DH,07H,7FH,6FH,77H,7CH

DB39H,5EH,79H,71H

END

 

九、设计过程中遇到的问题和解决方案。

1.键盘的跳转,设计过程中,开始设计时,出现的问题是想寻找一种较简单的方法代替键盘跳转较简单地将p0口的内容111111110;11111101;11111011;11110111;11101111;11011111;10111111;01111111

对映为1,2,4,8,16,32,64,128.

曾经尝试过通过查表来改变地址做出了这样的表:

TAB:

DB3FH,06H;对映数码管显示1,2

ds01h;

db4fh;对映数码管3

ds03h

db5bh;对映数码管4

ds07h

db66h;对映数码管5

ds0fh

db6dh;对映数码管6

ds1fh

db7dh;对映数码管7

ds4fh

db07h;对映数码管8

用movdptr,#tab

movca,@a+dptr

movp1,a来查询

但是这样占用了大量的程序存储器空间,而且最终调试不过,或许是因为查表指令对表的长度有限制吧。

只能最终选用其他方法,用了经典的键盘跳转程序。

据了解有同学用了除法完成这样的转变,很是佩服。

2.第二个难点是复位键的设计,由于按照课本的电路根本无法实现这样的功能,也就是说课本的复位电路是错误的。

几次调试后屋果,我只有尝试用其他方法。

我曾尝试用外部中断的方法,将复位键接在外部中断1的端口,设置其为高优先级,想着一旦按下复位键便启动外部中断1,然后再跳转回主程序,回到开机时的状态。

结果调试很久没法解决,最后恍然大悟,我的程序陷入了一个死循环。

无法从主程序中跳回。

这让我深刻体会到中断程序的结构是要有返回的,不是随便跳就可以的。

尤其是注意不要陷入死循环。

最后还是回到复位电路,尝试了多种硬件接法,最终确定来了现在的接法。

3.以上两个问题是我设计过程中遇到的主要问题,另外还有一些小问题,小失误,花费了我很多时间。

由于我没有使用keil软件调试,直接用文本写和proteus调试。

所以调试难度很大。

所以还是学习keil等程序对编译还是很必要的。

十、总结和心得:

这次课程设计我很晚才开始着手做,因为要考英语六级。

所以完成的和匆忙。

但我是坚持重头到尾都自己做的,也不参考其他人的程序,怕受别人影响,反而发挥不出自己的潜能。

我是以这样的步骤完成的,先把觉的可能要用到的知识先复习一遍,在根据选题确定各部分硬件的结构,先在纸上写好程序,最后才上机调试。

本来觉得很简单的设计,思路已经很清晰,然而一调试总出问题。

有逻辑上的错误,还有粗心大意所指的。

但我都自己克服解决了,因为没有人能帮我,只有靠自己。

比如,开始时调试了很多次,都无法完成编译,而用keil编译好之后也无法导入proteus运行。

这时以前从未出现的问题。

最后我关了杀毒软件金山毒霸,才可以通过编译。

 

在设计中觉的除了必要的扎实的基础之外最最重要的是要有耐心和不断尝试的毅力。

相信总会有办法的解决问题的。

我的这次设计尝试了很多思路,做过很多尝试,虽然很多最终没有成功,但是真的让我对很多知识的掌握有了很大的帮助,我更加深刻的认识了单片机的应用,虽然只是完成了一个之前我觉的很简单的设计。

比如,在设计从键位转换到数字1到8时,我想到了用查表除用DB定义外。

我想到了用DS来留空位。

这样就更熟悉的表的定义。

以前我从没用过ds指令的,现在熟悉了。

总之设计的过程是一个成长的过程,但要用心是前提。

参考文献:

[1]周美娟.肖来胜.单片机技术及系统设计.北京:

清华大学出版社,

[2]谭浩强.单片机课程设计.北京:

清华大学出版社,1989

[3]余发山编著.《单片机原理机机及应用技术》.徐州:

中国矿业大学出版社

[4]张淑清娄万录等主编.《单片微机计算机接口技术及其应用》.科学出版社

[5]李朝青.单片机原理及接口技术(修订版).北京:

北京航空航天大学出版社,1998

 

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2