1、综合性、开放性实验考试报告 学院 班级 成绩 姓名 学号 同组人 学号 一、题目:一、题目: 石头剪刀布(6) 二、问题的提出 (1) 培养学生综合运用所学单片机知识来解决生活中常见问题的能力。 (2) 熟悉和掌握MCS-51单片机的内部结构,硬件设施及工作原理。 (3) 掌握单片机的接口技术及相关外围芯片的外特性和控制方法。 (4) 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 三、总体设计 1、分析问题的功能 通过单片机设计实现模拟剪刀石头布小游戏。 程序流程图 2、系统总体结构设计 硬件设计:根据问题确定单片机、I/O接口、定时器、I/O设备、中断等; 选用MCS-51
2、单片机,选用P1、P3口和LED灯,利用T/C0定时器和INT1中断。 软件设计:按问题功能分模块,简述各模块功能。 模块一:模块一:程序开始时先判断 3 个开关的状态,如果全是断开状态,则 3 个代表 物品的 LED 全亮, 代表准备就绪。 如果有没断开的开关, 则将 3 个物品灯闪烁, 表示初始状态错误。 模块二:模块二:玩家闭合其中的一个开关代表自己出示的物品,计算机机则将代表物 品的灯随机亮起一个,代表计算机出示的物品。然后根据双方出示的物品依比 赛规则判断输赢并显示结果。如果玩家出示的物品不只一个,则 3 个结果灯全 亮,代表结果无效。 模块三:模块三:复位。3个开关断开,则3个代表
3、物品的LED全亮,重新准备就绪,如 果复位时有没断开的开关,则将3个物品灯闪烁,表示初始状态错误。 四、详细设计: 1、硬件详细设计: 画出电路图; 进行硬件资源分配(包括I/O口地址、所用各存储单元的用途) 。 用排线连接P1口和LED灯, LED1LED3分别代表计算机出示物品石头、 剪刀、 布, LED5LED7分别代表结果胜、负、平;SW1SW3连接P3.0P3.2,SW1SW3分别代 表玩家出示物品石头、剪刀、布,KEY1连接P3.3(INT1),用作复位键。采用T/C0做 定时器,取随机数。 2、软件详细设计:按各功能模块进行程序设计,并说明各功能模块的实现方 法。 模块一:模块一
4、:程序设计:见程序清单 实现方法:采用查询方式,来判断3个开关的状态;物品灯的闪烁利用软件延时 对位取反。 模块二:模块二:程序设计:见程序清单 实现方法:查询方式判断玩家出示物品,计算机随机出示物品利用定时器0,在 开启定时器0后,直接取TL0的值作为随机数的值,然后除以3,用余数作为3种物品 中的一种,根据结果P1赋值。 模块三:模块三:程序设计:见程序清单 实现方法:采用INT1中断,对3个开关查询判断。 3、设计中的主要困难及解决方案 在这部分论述设计中遇到的主要困难及解决方案。 困难困难1 1:如何实现三个开关代表三种物品? 解决方案:采用查询方式,不断判断三个开关的状态,来确定玩家
5、出示物品。 困难困难2 2:计算机随机出示物品不知道怎么做? 解决方案:在开启定时器0后,直接取TL0的值作为随机数的值。然后除以3,用 余数作为3种物品中的一种。 困难困难3 3:取随机数后,再次查询时如何不再取随机数? 解决方案:采用标志位,通过判断标志位来确定是否已经取过随机数。 三、程序清单 ORG 8000H AJMP MAIN ORG 800BH LJMP T0S ORG 8013H LJMP INT1S ORG 8100H MAIN: MOV P1, 0FFH N0: JB P3.0, N1 ;判断 3 个开关状态 JB P3.1, N1 JB P3.2, N1 MOV P1,#
6、11111000B ;3 个物品灯亮,代表准备就绪 MOV TMOD,#01H ;T/C0 定时器,方式 1 MOV TH0,00H ;给定时器赋值 MOV TL0,00H MOV IE,#10000110B ;INT1,T/C0 开中断 SETB TR0 SETB IT1 CLR 7FH LOOP: JB P3.0, N2 ;判断玩家出示物品,石头,跳转至 N2 JB P3.1, N3 ;,剪刀,跳转至 N3 JB P3.2, N4 ; ,布,跳转至 N4 LJMP LOOP N1: MOV R7, #0 ;3 个物品灯闪烁,代表初始状态出错 LOOP1: MOV R6, #0 DJNZ R6