单片机工程实践报告总12.docx
《单片机工程实践报告总12.docx》由会员分享,可在线阅读,更多相关《单片机工程实践报告总12.docx(24页珍藏版)》请在冰豆网上搜索。
单片机工程实践报告总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、《单片机系统综合设计与实践》教材主编:
裴岩刘利民内蒙古大学出版社。