电子乒乓球单片机课程设计报告课件.docx
《电子乒乓球单片机课程设计报告课件.docx》由会员分享,可在线阅读,更多相关《电子乒乓球单片机课程设计报告课件.docx(14页珍藏版)》请在冰豆网上搜索。
电子乒乓球单片机课程设计报告课件
大连民族大学机电工程学院
自动化系
单片机系统课程设计报告
题目:
电子乒乓球
专业:
自动化
班级:
146班
学生姓名:
马玉明马国昊
指导教师:
刘岩川刘冠群
设计完成日期:
2016年12月30日
课程设计任务书
题目:
电子乒乓球
课程设计时间:
2016.12.12~2016.12.30
一、设计任务
二、设计内容及要求
⒈系统设计的方案;
⒉软件仿真电路实现;
⒊需要的详细材料;
⒋实验电路焊接与调试;
设计的性能指标;
撰写设计报告;
资料归档。
三、设计重点
四、课程设计进度要求
2016.12.12~12.18文献检索,原理图及PCB板设计;
⒉2016.12.19~12.20程序设计,软件仿真,材料采购;
2016.12.21~12.23硬件焊接调试;
2016.12.24~12.28软硬件联调;
2016.12.29报告撰写;
2016.12.30成果验收,答辩;
五、参阅书目
[1]郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社,2009.
[2]胡汉才.单片机原理与接口技术[M].北京:
清华大学大学出版社,2004.1-505.
[3]邢国泉.[J].医疗设备信息.2007,11,25-28.
[4]薛国红,赵修斌,卢艳娥等.零漂与增益控制对量化的影响分析[J].西安:
空军工程大学,2008.
1任务分析和性能指标
1.1任务分析
此次我们的设计任务是,用单片机开发板设计一个电子乒乓球。
通过我们对乒乓球打法和规则的分析发现,它主要是实现两个人通过控制独立按键来控制流水灯的左右移动。
但前提是,当流水灯移到某一方的时候,这一方必须且只能在超前或滞后0.5秒之内按下按键,否则对方得分并且用数码管把分数显示出来。
当某一方率先得满11分时,这方赢并且这方的数码管全亮8,蜂鸣器响。
1.2性能指标
Ø在规定时间内按下独立按键,来控制流水灯的左右移动。
Ø通过按键按下的时间差来控制流水灯的流速。
Ø在规定时间内没有按下按键时,对方得分用数码管显比分。
Ø某一方率先得满11分这方赢并且蜂鸣器响。
2总体方案设计
2.1硬件方案
通过对产品功能的分析,其硬件主要有LED灯、数码管、单片机最小系统、蜂鸣器等。
16个LED灯我们通过单片机的P1端口来控制,用前四个端口控制LED灯的阴极,后四个端口通过控制PNP型三极管的基极电平,来间接控制LED灯的阳极,这样可以给LED灯充足的电流使其发光。
4个数码管是通过单片机P2口的前四个端口和P3端口来控制。
前四个端口控制三极管的基极电流来间接控制数码管的阳极,P3端口控制数码管的阴极。
这样可以给数码管充足的电流使其发光。
蜂鸣器通过P2.7端口控制。
P2.7端口直接控制三极管的的基极电流来间接控制蜂鸣器的阳极电流使其有充足的电流放光。
2.2软件方案
通过对系统功能的分析,其主要有发球判断、按键扫描、LED灯左右移动、接球判断、数码管计分、输赢判断、蜂鸣器响、延时等功能子程序组成。
所以我们主要先进行每一个子程序的撰写,并进行调试,然后进行主程序的撰写并用主程序来调用这些子程序,然后进行总体调试。
3硬件设计与实现
3.1检测电路
3.2控制电路
4软件设计与实现
4.1主程序
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#TAB
MOV30H,#03H
LCALLDISPLAY
MOVP1,#00H
CLRP2.7
LCALLDELAY1S
MOVP1,#0FFH
SETBP2.7
4.2子程序
YF:
MOVP1,#0EEH;点亮D1
JBP0.2,YF
LCALLDelay50ms
JBP0.2,YF
LJMPLOOP1
ZF:
MOVP1,#77H;点亮D16
JBP0.0,ZF
LCALLDelay50ms
JBP0.0,ZF
LJMPLP2
LOOP1:
LCALLLM
MOVTMOD,#01H
MOVTL0,#00H
MOVTH0,#4CH
MOVR2,#10
SETBTR0
SETBET0
SETBEA
JNBP0.0,LP1
LJMPYOUDEFEN
LP1:
LCALLDelay50ms
JNBP0.0,LP2
LJMPYOUDEFEN
LP2:
LCALLRM
MOVTMOD,#01H
MOVTL0,#00H
MOVTH0,#4CH
MOVR2,#10
SETBTR0
SETBET0
SETBEA
JNBP0.2,LP3
LJMPZUODEFEN
LP3:
LCALLDelay50ms
JNBP0.2,LP4
LJMPZUODEFEN
LP4:
LJMPLOOP1
LM:
JBP0.0,LM1
LJMPYOUDEFEN
LM1:
CLRP1.0
LCALLLOOP
JBP0.0,LM2
LJMPYOUDEFEN
LM2:
CLRP1.1
LCALLLOOP
JBP0.0,LM3
LJMPYOUDEFEN
LM3:
CLRP1.2
LCALLLOOP
JBP0.0,LM4
LJMPYOUDEFEN
LM4:
CLRP1.3
LCALLLOOP
RET
LOOP:
CLRP1.4
LCALLDelay50ms
SETBP1.4
CLRP1.5
LCALLDelay50ms
SETBP1.5
CLRP1.6
LCALLDelay50ms
SETBP1.6
CLRP1.7
LCALLDelay50ms
MOVP1,#0FFH
RET
RM:
JBP0.2,RM1
LJMPZUODEFEN
RM1:
CLRP1.3
LCALLLOOP2
JBP0.2,RM2
LJMPZUODEFEN
RM2:
CLRP1.2
LCALLLOOP2
JBP0.2,RM3
LJMPZUODEFEN
RM3:
CLRP1.1
LCALLLOOP2
JBP0.2,RM4
LJMPZUODEFEN
RM4:
CLRP1.0
LCALLLOOP2
RET
LOOP2:
CLRP1.7
LCALLDelay50ms
SETBP1.7
CLRP1.6
LCALLDelay50ms
SETBP1.6
CLRP1.5
LCALLDelay50ms
SETBP1.5
CLRP1.4
LCALLDelay50ms
MOVP1,#0FFH
RET
ZUODEFEN:
DEC30H
LCALLDISPLAY
LJMPYF
YOUDEFEN:
INC30H
LCALLDISPLAY
LJMPZF
YYING:
MOVP3,#00H
MOVP2,#0FFH
CLRP2.2
CLRP2.3
LCALLDELAY1S
LJMPYYING
ZYING:
MOVP3,#00H
MOVP2,#0FFH
CLRP2.0
CLRP2.1
LCALLDELAY1S
LJMPZYING
DISPLAY:
MOVDPTR,#TAB
MOVP3,#0FFH
CLRA
MOVA,30H
cjnea,#0,DI1
LJMPZYING
DI1:
CJNEA,#6H,DI
LJMPYYING
DI:
MOVCA,@A+DPTR
MOVP3,A
MOVP2,#00H
RET
Delay50ms:
MOVR3,#200
Del2:
MOVR4,#250
DJNZR4,$
DJNZR3,Del2
RET
DELAY1S:
MOVR3,#5
D2:
MOVR4,#250
D3:
MOVR5,#200
DJNZR5,$
DJNZR4,D3
DJNZR3,D2
RET
TAB:
DB0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82
END
5调试及性能分析
5.1调试分析
5.1.1软件调试
在进行软件调试的时候,出现各种各样的错误。
比如使用短跳转程序的时候,出现了超出其跳转的范围,所以就只能用长跳转来代替。
其次就是地址没有定义或者是定义重复,也就是重名的现象,这只能修改其地址名字使之不要重名就可以了。
上面那些错误是经常出现也是比较容易处理的,但是下面这些错误出现的概率虽不是很高,但是很难处理。
例如,虽然程序逻辑上是真确的但是就是会提示有错误。
这种错误常常就是一些隐藏的错误,必须对数据存储单元的大小和有没有被占用要进行分析,所以是比较难得。
5.1.2硬件调试
完成了对硬件PCB图的设计,还要对硬件实物电路板进行调试。
我们的电路板主要有LED灯、数码管、蜂鸣器、按键、电源开关、USB接口和复位按钮。
首先我们编写了一个简单的调试程序,就是将单片机mcu的P0、P1、P2、P3端口全给低电平,理论上所有的LED灯和数码管都会亮还有蜂鸣器也会响。
这些进过测试完好之后再进行独立按键的调试经过调试之后,发现除了数码管和电源开关外基本都好。
电源通过观察电路板发现电源开关少了一根出线,相当于直接被短了,而数码管虽然都亮,但是在进行控制的时候没法实现单独控制只能一起控制。
5.1.3系统功能调试
经过上面的两个步骤之后,我们就进行产品的系统功能调试。
也就是说将软件烧写到MCU里面让硬件电路板实现我们所需的功能。
这一步的第一步就是进行程序的烧写,由于我们电路板上没有烧写程序的接口,所以只能通过其他的开发板来烧写程序软后,再将MCU芯片移到我们的电路板上进行调试。
由于开发板是转接口线烧写程序,所以会出现各种不兼容性问题。
这使得我们的调试时间大大增加。
不过最后基本上还是达到了最初设计要求的功能。
5.2性能分析
和最初的设计要求进行对比,虽然有一定的差距和不同,但是大体上还是实现了设计要求的功能。
能够通过独立按键在规定的时间内按下实现流水灯的左右移动,但是缺少了加速功能。
在数码管进行比分显示方面,虽然和预先的有所差别,但还是实现了计分的功能,因为硬件的原因只能设计成这样了。
总结
通过此次单片机课程设计,我掌握了设计一个电子产品的基本步骤及方法。
我们这次设计的是电子乒乓球,这次的设计让我们懂得了如何用软件设计相应的电路图及对应的PCB图。
刚开始的时候对电路原理图还是了解一点的,但对PCB图几乎是一无所知。
但经过上网搜索和向老师讨教之后,最终还是完成了PCB图的设计直到出板。
这个过程只有亲身体验了之后才能真正的了解完全的掌握。
同样,电子产品主要的部分就是软件,就是大家都熟悉的程序的编写。
在刚开始进行编程的时候我们几乎没有什么思路,毕竟是第一次进行产品功能程序的编写,所以难免会是忙受忙脚。
进过几天的准备之后我们进行程序的编写,但是编到一半的时候,发现编不下去了,因为错误太多了,所以就重新开始编写了。
吸取上次的错误教训,这次我们打算一个一个的编写。
也就是将所有的子程序分开的来写,写好一个调试成功后再写下一个,最后用主程序将这些子程序进行组合。
经过垂死挣扎之后还是成功了。
这次的编写虽然不是很完美但也不是很糟糕。
这次的单片机课设让门学到了很多很多,我相信这会为我们以后职业生涯打下一个很好的基础的。
参考文献
[1]郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社,2009.
[2]胡汉才.单片机原理与接口技术[M].北京:
清华大学大学出版社,2004.1-505.
[3]邢国泉.[J].医疗设备信息.2007,11,25-28.
[4]薛国红,赵修斌,卢艳娥等.零漂与增益控制对量化的影响分析[J].西安:
空军工程大学,2008.
[5]马忠梅,刘滨等.单片机C语言Windows环境编程宝典[M].北京:
北京航空航天大学出版社.2003.
附录1元器件清单
原件名称原件型号原件数量(个)
单片机MCUSTC89C511
单片机插座1
数码管DpyBlue-CA4
LED灯GaAsLED17
独立按键Switch5
USB电源接口1470168-11
蜂鸣器ElectricalBell1
晶振12MHZ1
电阻1K/5K19/1
电容22pF/100uF/10Uf/0.1uF2/1/3/1
三极管PNP9
电源按钮开关SWDPDT1
元器件清单表
附录2调试系统照片