单片机工程实践报告总12.docx

上传人:b****7 文档编号:25127593 上传时间:2023-06-05 格式:DOCX 页数:24 大小:469.54KB
下载 相关 举报
单片机工程实践报告总12.docx_第1页
第1页 / 共24页
单片机工程实践报告总12.docx_第2页
第2页 / 共24页
单片机工程实践报告总12.docx_第3页
第3页 / 共24页
单片机工程实践报告总12.docx_第4页
第4页 / 共24页
单片机工程实践报告总12.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机工程实践报告总12.docx

《单片机工程实践报告总12.docx》由会员分享,可在线阅读,更多相关《单片机工程实践报告总12.docx(24页珍藏版)》请在冰豆网上搜索。

单片机工程实践报告总12.docx

单片机工程实践报告总12

学校代码:

10128

单片机工程实践

(第9组)

题目:

乒乓球游戏机(任务十)

 

组长:

王丹(自电09-1班)学号:

200911204019

组员:

张影影(自电09-1班)学号:

200911204077

聂尔图(自电09-1班)学号:

200911204027

指导教师:

刘伟、裴岩、斯日古楞、杨传颖、韩海波、高鹏、郭慧(研)、胡元元(研)

设计时间:

2012年6月18日~2012年6月29日

一、设计目的:

通过一个以8位单片机为核心的模拟量数字表的硬件调试过程,掌握具有七段LED显示、RS-485通信、Watchdog等接口电路的单片机应用系统的设计思想和方法。

正确理解单片机课程的基本概念、基本理论,掌握单片机控制系统的工作原理、性能和特点,掌握汇编语言编程的基本方法,能应用所学的知识去设计简单的单片机应用系统电路和编写汇编语言程序,熟悉单片机应用产品开发基本过程,掌握单片机调试软件使用方法。

一、设计任务:

题目10:

乒乓球游戏机

难度系数:

9

功能:

1、用5个LED显示器作为乒乓球台,用LED显示器的中间横线“一”代表乒乓球

2、用两个按键代表球拍。

3、比赛规则:

当“一”到了最左侧LED时,左侧要及时击球,右侧同理。

4、输赢判断:

当乒乓球到达某一侧时,若提前或滞后按键(击球),则为输,用声音和显示来表示。

5、球速要随着比赛回合的增加而加快,击球判断时间逐渐减小。

6*、可以显示比分。

硬件环境:

键盘,显示器,喇叭等

任务分工:

王丹:

编写程序。

张影影:

筛选有用资料。

聂尔图:

绘制框图。

二、框图:

(1)蜂鸣器自检框图:

(2)LED自检框图:

 

 

(3)键盘识别及键抖动处理框图:

 

 

(4)、乒乓球游戏设计框图:

 

显示子程序流程框图

设计思路:

通过5只连续排列的发光二极管的依次点亮代表乒乓球的运动。

再用是否有外部中断请求来判断球拍是否击球。

游戏规则:

比赛中如果在有效时间内没有击中球则对方得分赢得一个球,每一局中谁先胜十一个球赢得本局比赛,比赛中谁先胜三局为胜!

(5)、程序硬件图

总硬件图

蜂鸣器自检硬件图

LED自检硬件图

 

键盘自检硬件图

三、程序清单:

1、蜂鸣器自检程序:

MAIN:

MOVR1,#0AAH

BEEP1:

MOVR2,#20H

N1:

SETBP2.3;关喇叭

ACALLDELAY1;调用延时1

CLRP2.3;喇叭响

ACALLDELAY1;调用延时1

DJNZR2,N1

DJNZR1,BEEP1

MOVR2,#0AAH

BEEP2:

MOVR1,#10H

N2:

SETBP2.3;关喇叭

ACALLDELAY2;调用延时2

CLRP2.3;喇叭响

ACALLDELAY2;调用延时2

DJNZR1,N2

DJNZR2,BEEP2

SJMPMAIN

DELAY1:

MOVR6,#08H

LOOP11:

MOVR7,#05H

LOOP12:

DJNZR7,LOOP12

DJNZR6,LOOP11

RET

DELAY2:

MOVR6,#09H

LOOP21:

MOVR7,#0BH

LOOP22:

DJNZR7,LOOP22

DJNZR6,LOOP21

RET

2、LED自检程序

MAIN:

SEL1:

CLRP2.7;位选1

CLRP2.6

CLRP2.5

LCALLLOOP;调用子程序

LCALLLOOP1;调用子程序

LCALLSOUND;调用子程序

SEL2:

SETBP2.7;位选2

CLRP2.6

CLRP2.5

LCALLLOOP

LCALLLOOP1

LCALLSOUND

SEL3:

CLRP2.7;位选3

SETBP2.6

CLRP2.5

LCALLLOOP

LCALLLOOP1

LCALLSOUND

SEL4:

SETBP2.7;位选4

SETBP2.6

CLRP2.5

LCALLLOOP

LCALLLOOP1

LCALLSOUND

SEL5:

CLRP2.7;位选5

CLRP2.6

SETBP2.5

LCALLLOOP

LCALLLOOP1

LCALLSOUND

AJMPMAIN

LOOP:

MOVP0,#01H;点a亮

CALLDEL

CALLDEL

MOVP0,#02H;b段亮

CALLDEL

CALLDEL

MOVP0,#04H;c段亮

CALLDEL

CALLDEL

MOVP0,#08H;d段亮

CALLDEL

CALLDEL

MOVP0,#10H;e段亮

CALLDEL

CALLDEL

MOVP0,#20H;f段亮

CALLDEL

CALLDEL

MOVP0,#40H;g段亮

CALLDEL

CALLDEL

MOVP0,#80H;h段亮

CALLDEL

CALLDEL

MOVP0,#0FEH;数字8亮

CALLDEL

CALLDEL

MOVP0,#0FFH;数码管全亮

CALLDEL

CALLDEL

RET

LOOP1:

MOVP0,#7FH;显示数字0和点

LCALLDELAY1

LCALLDELAY1

MOVP0,#0CH;显示数字1

LCALLDELAY1

LCALLDELAY1

MOVP0,#0B7H;显示数字2和点

LCALLDELAY1

LCALLDELAY1

MOVP0,#09EH;显示数字3

LCALLDELAY1

LCALLDELAY1

MOVP0,#0CDH;显示数字4和点

LCALLDELAY1

LCALLDELAY1

MOVP0,#0DAH;显示数字5

LCALLDELAY1

LCALLDELAY1

MOVP0,#0FBH;显示数字6和点

LCALLDELAY1

LCALLDELAY1

MOVP0,#0EH;显示数字7

LCALLDELAY1

LCALLDELAY1

MOVP0,#0FFH;显示数字8和点

LCALLDELAY1

LCALLDELAY1

MOVP0,#DFH;显示数字9

LCALLDELAY1

LCALLDELAY1

RET

SOUND:

CLRP2.3;喇叭响

LCALLDELAY1

SETBP2.3;关喇叭

RET

DELAY1:

MOVR6,#0FFH

CX1:

MOVR7,#0FFH

CX2:

DJNZR7,CX2

DJNZR6,CX1

RET

DELAY2:

MOVR6,#FAH

CX3:

MOVR7,#0FAH

CX4:

DJNZR7,CX4

DJNZR6,CX3

RET

2、键盘自检程序

MAIN:

MOVP0,#00H;P0口置零

MOVR1,#04H

LCALLSEL8;调用三态门子程序

MOVP1,#0FFH;P1口置1

MOVA,P1

ANLA,#0FH;屏蔽高四位拨盘干扰

LCALLSEL7;调用关三态门子程序

CJNEA,#0FH,LOOP2;有键按下时,进入LOOP2

JMPLOOP1;没键按下时,进入LOOP1

RET

LOOP1:

RRCA;判断有无键按下

JNCLOOP2

DJNZR1,LOOP1

JMPMAIN

RET

LOOP2:

LCALLSEL2

LCALLDELAY

CLRP2.3;喇叭响

LCALLDELAY

SETBP2.3;关闭喇叭

RET

SEL2:

SETBP2.7;位选2

CLRP2.6

CLRP2.5

RET

SEL7:

CLRP2.7;关闭三态门

SETBP2.6

SETBP2.5

RET

SEL8:

SETBP2.7;打开三态门

SETBP2.6

SETBP2.5

RET

DELAY:

MOVR6,#0FEH

CX1:

MOVR7,#0FEH

CX2:

DJNZR7,CX2

DJNZR6,CX1

RET

RET

4、乒乓球游戏程序设计

开始程序:

ORG0000H

SJMPMAIN

ORG0003H

SJMPINT0

ORG0013H

SJMPINT1

ORG0030H

MAIN:

MOVR2,#0H

MOVR3,#0H

MOVP0,#0H

SETBP3.2

SETBP3.3

MOVDPTR,#TAB

MOVA,R2

MOVCA,@A+DPTR

MOVP1,A

MOVA,R3

MOVCA,@A+DPTR

MOVP2,A

MOVTCON,#0AH

MOVIE,#85H

SJMPMAIN

灯右移子程序:

RIGHT:

MOVA,#80H

MOVP0,A

LCALLSEL1

LCALLDELAY

LCALLSEL2

LCALLDELAY

LCALSEL3

LCALLDELAY

LCALLSEL4

LCALLDELAY

LCALLSEL5

LCALLDELAY

RET

SEL1:

CLRP2.7

CLRP2.6

CLRP2.5

RET

SEL2:

SETBP2.7

CLRP2.6

CLRP2.5

RET

SEL3:

CLRP2.7

SETBP2.6

CLRP2.5

RET

SEL4:

SETBP2.7

SETBP2.6

CLRP2.5

RET

SEL5:

CLRP2.7

CLRP2.6

SETBP2.5

RET

灯左移子程序:

LEFT:

MOVA,#01H

MOVP0,A

LCALLSEL1

LCALLDELAY

LCALLSEL2

LCALLDELAY

LCALLSEL3

LCALLDELAY

LCALLSEL4

LCALLDELAY

LCALLSEL5

LCALLDELAY

RET

延时子程序:

DELAY:

MOVR7,#01H

DL1:

MOVR6,#8EH

DL0:

MOVR5,#02H

DJNZR5,$

DJNZR6,DL0

DJNZR7,DL1

RET

中断计数T0子程序:

START0:

MOVTMOD

MOVTL0,#03H

MOVTH0,#00H

SETBTR0

LOOP1:

JBCTF0,LOOP2

SJMPLOOP1

LOOP2:

CPLP1.0

SJMPLOOP1

RET

中断计数T1子程序:

START1:

MOVTMOD

MOVTL1,#03H

MOVTH1,#00H

SETBTR1

LOOP3:

JBCTF1,LOOP2

SJMPLOOP1

LOOP4:

CPLP1.0

SJMPLOOP3

RET

定时子程序:

DINGSHI:

MOVTMOD

MOVTL0,#06H

MOVTH0,#1FH

SETBTR0

LOOP7:

JBCTF1,LOOP2

SJMPLOOP1

LOOP8:

CLRTR0

MOVTLO,#06H

MOVTH0,#1FH

CPLP1.0

SETBTR0

SJMPLOOP7

RET

键采集子程序:

CAIJIAN:

LCALLSEL8;开三态门

MOVP1,#0FFH;P1做输入口置一

MOVA,P1;采键值

ANLA,#0FH;屏蔽拨盘

LCALLSEL7;关三态门

RET

 

四、设计体会

王丹(200911204019)

为期两周单片机实训结束了,它让我充分意识到自己对单片机基础知识的学习不够认真扎实。

当与实践结合时,理论与实践脱节,不能够灵活运用所学知识。

今后综合运用是学习的重要任务。

实训期间老师分配了三个基本任务:

蜂鸣器、LED、键盘自检。

刚开始我们没有一点思路着手这些任务,但通过查资料,小组成员讨论等,我明白了应该首先画出流程图,然后按照这个思路进行编程,最后再进行上机调试。

在实训过程中有时单纯通过观察硬件显示,不能检测出实际程序的正误,必须反复检查修改上机调试,再检测。

我们学到了事情不能只看表面,需要深层挖掘内在本质。

最后经过同学们的努力,终于完成了自检任务。

我们小组最后一个实训任务是简易乒乓球游戏机的设计。

这个任务考验了理论知识,实际操作能力和团队成员合作精神。

他让我意识到系统流程图非常重要,只有先理清思路,明白每一步要做什么,才能够更好的完成任务。

流程图的绘制只是这个实训的开始,在之后的实训过程中,一个个问题不断出现,在不断处理这些问题的过程中,我充分感受到以书本上的知识做到实现一个产品的开发是多么的不容易,自己的学习还是十分不够,但相信经过以后的努力会变得更好。

聂尔图(200911204027)

在一个阳光明媚的早上,我们开始了为期两周的单片机实训课程。

初来实验室我们对机器很好奇很激动。

老师很快分配下来任务。

第一个是蜂鸣器的自检,第二个是LED自检任务,第三个是键盘自检任务。

我心想这实训也是不难么,很快我们就着手于第一个喇叭响的程序,我的心情随着时间的进程而渐渐沉重,书本上简单的一个喇叭响闭的程序在实际操作中变的复杂。

软硬件的连接、检测都需要我们来。

一个蜂鸣器的响声就搞到我们头大,它有一个自己固有的声音,而我们想让它发出我们自己预想的声音。

通过查书,我们知道了问题的症结所在是延时时间的设置于音调的关系上。

经过一系列的计算上机调试我们终于完成了这个任务。

第二个任务是LED的自检任务。

由第一次任务得来的经验,我们首先完成了流程图的绘制,在一个清晰的思路指引下顺利完成了LED检测。

第三个任务是键盘自检,它综合应用了前两个程序并且加入了一个去抖程序,这是我们遇到的第一个综合应用的问题,之间遇到了不少问题。

最后在老师协助下我们也顺利完成了。

两周的实训很快接近尾声了,“痛并快乐着”是我最大的感受。

一个一个的问题不断考验着我们的所学,但最后回头看看已经做过的实训任务,感到格外印象深刻,也并没有开始那样的不知所措。

希望以后学习的形式都是这样,不枉我们是搞技术的工科生。

张影影(200911204077)

单片机理论课程很快结束了,老师接着给我们布置了三个基本任务,分别是蜂鸣器、LED、键盘自检。

初接触这些任务是脑子一片空白,不知道怎样把所学知识同实际结合起来。

经过小组讨论,我们把我们所缺少的连接部分补回来并且完成了各个子程序的设计工作。

接着我们遇到两个重要的问题,一个是怎样通过延时时间的设置来改变蜂鸣器声调,另一个是怎样用软件方法消除键盘抖动。

在老师同学的帮助和自身的努力下,我们较为完善的解决了这两个问题并且应用于程序中。

最后一个任务是乒乓球游戏机,这个课题需要综合应用前三个任务的知识,融会贯通。

通过这个任务,我们发现了自身的问题。

研究学习不扎实深刻,只能看到问题的表面。

造成程序的不完整。

今后我们学习不光要知其然,更要知其所以然,以应用为目的的学习才是有价值的。

六、参考资料

1、《单片机系统综合设计与实践》教材主编:

裴岩刘利民内蒙古大学出版社。

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

当前位置:首页 > 医药卫生 > 基础医学

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

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