京信杯电子设计报告
题目:A题点阵游戏机
队员名单:
2014年12月
目录
1.设计任务………………………………………………..3
1.1基本要求………………………………………………………….........3
1.2发挥部分……………………………………………………………….3
1.3说明 ……………………………………………………………….3
2.方案论证与比较………………………………………3
2.1 显示部分……………………………………………………………….3
2.2 电路设计……………………………………………………………….3
2.3 电流放大部分………………………………………………………….4
2.4 元件选择……………………………………………………………….4
3. 总体方案……………………………………………….4
3.1 工作原理……………………………………………………………….4
4.系统硬件设计…………………………………………4
4.1 STC89C58单片机最小系统………………………………………...4
5.系统软件设计………………………………………….5
5.1 主程序流程………………………………………………………….5
5.2 Flappy bird子程序 ……………………………………………….6
5.3 打飞机程序………………………………………………………….6
6.测试与结果分析……………………………………...7
6.1 基本部分测试与分析……………………………………………….7
6.2 发挥部分测试与分析……………………………………………….7
7.设计总结……………………………………………... 7
8.参考资料……………………………………………...7
附录……………………………………………………………7
1任务设计
1.1 基本要求:设计并制作点阵游戏机。
1.1.1 使用16*16点阵实现最基本的显示功能,能够显示数字0~9及全部英文字母;
1.1.2 能够显示中文汉字,汉字必须包括参赛队员的学院和名字。
1.1.3 增加重力感应功能,能够根据重力自动旋转屏幕,显示汉字;
1.1.4 所有的显示方案均采用滚动显示,可以看出滚动效果;
1.1.5系统采用电池供电,作品方便手持。
1.2发挥部分:
1.2.1在基本部分的基础上,设计一个基于按键的FLAPPY bird游戏;
1.2.2 游戏机伴有相应开机的音乐。
1.2.3 游戏机具有显示得分等功能;
1.2.4游戏机中障碍物的出现频率或大小必须具有随机性,否则发挥部分不得分;
1.2.5发挥你的想象力;
1.3 说明
1.3.1 重力感应可用水银开关设计
1.3.2 推荐使用16*16点阵模块
1.3.3 游戏中,被控制的小鸟具有重力加速度(非匀速下降)
2、方案论证
2.1 显示部分:
显示部分是本次设计最核心的部分,对于16*16点阵显示有以下两种方案:
方案一:采用四个锁存器,便于实现屏幕的旋转;弊端:布线困难,难以在一块板子上实现,影响设计美观。
方案二:采用译码器,便于布线,但增加了屏幕翻转难度,屏幕视觉暂留效果欠佳,闪烁明显.。
鉴于上述原因, 我们采用方案二
2.2.电路设计
本次电路设计因不同于以前科协分割的模块任务,多模块集合在一起,布线难度大,有以下两种方案供选:
方案一:画pcb;电路美观性和元件间的连接部分大大简化,因未尝试过此种板,且时间紧迫,故放弃
方案二:采用人工完全等效,即精确到洞洞板上的一点,画出等效图
鉴于上述原因,采用方案二
2.3电流放大部分
因电路设计问题,电流达不到点阵,数码管和蜂鸣器同时工作的要求,故须放大电流,有以下两种方案供选:
方案一:采用三极管放大;三极管在组装蜂鸣器电路过程中出现,但若用到点阵须32个三极管,大大加重了布线和焊接难度,影响了电路美观。
方案二:采用锁存器放大;大大简化了电路实现难度
鉴于以上原因,选择方案二。
2.4 元件选择
选择58单片机,74LS154N译码器,16*16点阵,数码管,有源蜂鸣器,12.000晶振,发光二极管,三极管,排阻,电阻,电容,点触开关,水银开关和自锁开关,两块3V纽扣电池。
3、总体方案
工作原理:
利用单片机STC89C58单片机作为本系统的中控模块。16*16点阵为主要的显示模块,把单片机传来的数据显示出来,并且可以实现滚动显示。利用开关按下接地传递给I/O口操作信号。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
4、系统硬件设计(单元电路设计及分析)
4.1 STC89C58单片机最小系统:
最小系统包括晶体振荡电路和电源部分。图2为STC89C58单片机的最小系统。
|
5、系统软件设计
5.1主程序如图2
5.2 Flappy bird如图3
图3 Flappy bird流程图
5.3 打飞机程序 如图4
6、测试及其结果分析
6.1 基本部分测试与分析
基本要求部分的测试与分析:
(1)系统上电后,全屏点亮,没有暗点。接着显示队员信息。按黄色键后切换,进入游戏。
(2)可以实现屏幕四个方向旋转。
(3)可以实现文字滚动显示
6. 2 发挥部分测试与分析:
(1) 当按下开关后播放开机音乐。
(2) 可以实现数码管显示得分
(3) 游戏中出现的障碍物具有随机性,不会出现多次操作现象不变的bug。
(4)增加打飞机游戏,运行正常
7、设计总结
全心准备了整整一个月,从最开始选定A题信心满满,到遇到挫折和时间冲突时信心动摇,再到分工不合理导致队员个别担子过重。从这一比赛中,我们收获的绝不仅是一块设计精美的板子,也收获了电子设计的第一课:不抛弃,不放弃,坚持下去总会有收获。
8、参考资料
[1]《51单片机C语言教程》 郭天祥 编 电子工业出版社
[2]《高级语言程序设计》 电子科技大学出版社
附录:
游戏主架程序
#include"head.h" //头文件,包括位定义,全局变量的定义和函数声明
void main()
void music() //开机音乐
void int0() interrupt 1 //音乐函数调用,采用中断0 控制节拍
void delay1 (unsigned char m) //音乐函数调用,控制频率延时
void delayms(unsigned char a) //音乐函数调用,豪秒延时子程序
void hanzixianshi() //汉字显示函数,在游戏开始之前显示学院,姓名
void flappy() //flappy bird游戏
void plane() //飞机游戏
void bird() // 小鸟游戏调用,往下掉
void die_or_not() //小鸟游戏判断小鸟死不死
void shang() //小鸟游戏调用,向上飞
void kaihuo() //飞机游戏调用,发射子弹
void win_or_lose() //飞机游戏调用,判断是死还是得分
void zuohanshu() //飞机游戏调用,左移函数
void youhanshu() //飞机游戏调用,右移函数
void renew_table() //数组更新
void zhuan(uchar n,uchar k,uchar i0) //翻转函数,针对不同的n和k,给将要打在屏上的数组(大小为16)赋值
uchar diandao(uchar temp) //由于板子设计的难度,P1口需进行上下颠倒
void delay(uint z) //延时函数
void unit() //灭所有灯
void timer() interrupt 3 //定时器,产生随机数
void shumaguan(uchar k) //数码管显示