- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设计报告10644.doc
单片机课程设计报告
2009-6-15
山东大学物理学院2007基地班
高原20071001020 高众20071001022 韩恩道20071001028
目录
1. 设计的系统的目的、用途、功能 2
1.1. 硬件设计思想和电路原理图 2
1.2. 红外线发射接收模块 3
1.3. 棋盘显示模块 4
1.4. 单片机接口 4
1.5. 硬件单元的使用 5
2. 软件设计思想及软件流程 6
2.1. 主函数 6
2.2. 按键输入模块 7
2.3. 游戏算法模块 8
2.4. 显示模块 9
3. 详细说明软件功能 9
3.1. 显示模块 9
3.2. 按键模块 9
3.3. 黑白棋规则模块(check_chess函数) 9
3.4. 胜利模式(victory函数) 9
3.5. 主函数 10
3.6. 源程序 10
4. 系统测试过程及测试数据 22
4.1. 硬件测试: 22
4.2. 软件测试单独: 22
4.3. 系统与软件综合测试: 22
5. 测试数据: 22
6. 分析相应的指标参数 22
7. 所需的全部资源 23
8. 成员分工和工作情况 23
设计的系统的目的、用途、功能
。
硬件设计思想和电原理图
单片机在本作品中的功能有三点:首先,接收处理红外线接收二极管产生的电平信号;其次,存储棋盘上棋子的状态,计算需要变色的二极管的坐标,并输出到双色发光二极管阵列;再次,计算双方比分,有七段数码管输出,判断游戏的胜负。
图表 1工作流程
红外线发射接收模块
图表 2红外线发射接收模块
行列各有一组发射接收阵列,构成矩阵键盘。单片机PB7输出高电平时,非门ULN2803转变为低电平,红外线发射二极管开始工作,即使能红外线发射。红外线接收管电平变化的信号先通过非门74HC04,然后通过8-3优先编码器74HC148输出到单片机。
棋盘显示模块
图表 3棋盘显示模块
8排上图所示结构构成棋盘。单片机输出的控制双色二极管变色的信号通过一个3-8译码器74LS138译码再通过两个非门对双色发光二极管的颜色。利用ULN2803灌电流大的特点,避免芯片的损坏。
单片机接口
图表 4单片机接口
硬件单元
每一枚“棋子”就是一枚双色发光二极管,64枚双色发光二极管排成8×8的阵列。每一枚二极管有三支引脚,引脚电平的高低决定了二极管显示的颜色,而有单片机控制双色发光二极管引脚的电平高低,实现棋盘上二极管显示不同颜色,以代表棋子。
有两组各八对红外线发射接收二极管,每只二极管前面加一只准直小管以保证任意两对红外线发射接收管的信号不相互干扰。使用时用手指遮挡一组行列红外发射接收二极管光路的交点(即对应于棋盘上的一枚双色二极管),把由这些红外发射接收二极管组成的虚拟按键触发产生一个落子点的位置坐标信息,再由单片机识别判断。还设计了“让棋”“悔棋”按键使游戏更加完善。两个七段数码管负责显示双方成绩,双方各有一枚代表自己颜色的发光二极管,自己所对应的二极管亮时代表落子权在自己手中。当某一方胜利时,棋盘上会闪动胜方棋子所对应的颜色。
软件设计思想及软件流程
图表 1 主函数
按键输入模块
图表 2 棋子按键
图 3 悔棋让棋按键
游戏算法模块
图表 4 check_chess函数
图表 5 button函数
显示模块
定时器timer0每隔1ms触发一次中断,扫描相应LED和七段数码管。
详细说明软件功能
显示模块
利用定时器0比较中断,每隔1ms改变各个端口的输出,从而实现棋盘和记分板的扫描。
按键模块
分为红外按键(落子按键)和悔棋让棋按键两部分:
红外按键:利用定时器2的溢出中断,每隔65ms扫描一次红外按键阵列。若有输入,则使能其比较中断,2ms后在比较中断中比较两次输入的键值,实现消抖处理。
悔棋让棋按键:悔棋让棋按键接在了PB2端口,一旦有键按下,便会触发INT2下降沿中断。在INT2的中断函数中,将check_button 置1。主函数中,检查chess_button的值,若为1,则执行button函数。button函数中,实现按键消抖,和判断具体是悔棋还是让棋的功能并加以执行。若PB1值为1,则执行让棋操作,值为0执行悔棋操作。
黑白棋规则模块(check_chess函数)
通过检查当前落子位置周围的八个方位上能否使对方棋子变色。能变色,则允许落子,实现棋子存储数组chess和比分记录变量red, green的相应改变。
胜利模式(victory函数)
获胜方棋子闪动
主函数
首先实现单片机的初始化。然后判断棋局是否结束。没结束则一直检测是否落子和有悔棋让棋按键按下。若有落子,执行check_chess函数。若有悔棋让棋按键按下,则执行button函数。棋局结束后,执行victory 函数。
源程序
#inc
文档评论(0)