单片机课程设计 石头剪刀布
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北工业大学计算机硬件技术基础综合性、开放性实验考试
学院:
班级:
姓名:
学号:
同组人:
任课老师:
河北工业大学计算机硬件技术基础
综合性、开放性实验考试报告
学院班级成绩
姓名学号同组人学号一、题目:
石头剪刀布(6)
二、问题的提出
(1) 培养学生综合运用所学单片机知识来解决生活中常见问题的能力。
(2) 熟悉和掌握MCS-51单片机的内部结构,硬件设施及工作原理。
(3) 掌握单片机的接口技术及相关外围芯片的外特性和控制方法。
(4) 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
三、总体设计
1、分析问题的功能
通过单片机设计实现模拟剪刀石头布小游戏。
程序流程图
2、系统总体结构设计
⑴硬件设计:根据问题确定单片机、I/O接口、定时器、I/O设备、中断等;
选用MCS-51单片机,选用P1、P3口和LED灯,利用T/C0定时器和INT1中断。
⑵软件设计:按问题功能分模块,简述各模块功能。
模块一:程序开始时先判断3个开关的状态,如果全是断开状态,则3个代表物品的LED全亮,代表准备就绪。如果有没断开的开关,则将3个物品灯闪烁,表示初始状态错误。
模块二:玩家闭合其中的一个开关代表自己出示的物品,计算机机则将代表物品的灯随机亮起一个,代表计算机出示的物品。然后根据双方出示的物品依比赛规则判断输赢并显示结果。如果玩家出示的物品不只一个,则3个结果灯全亮,代表结果无效。
模块三:复位。3个开关断开,则3个代表物品的LED全亮,重新准备就绪,如果复位时有没断开的开关,则将3个物品灯闪烁,表示初始状态错误。
四、详细设计:
1、硬件详细设计:
⑴画出电路图;
⑵进行硬件资源分配(包括I/O口地址、所用各存储单元的用途)。
用排线连接P1口和LED灯,LED1~LED3分别代表计算机出示物品石头、剪刀、布,LED5~LED7分别代表结果胜、负、平;SW1~SW3连接P3.0~P3.2,SW1~SW3分别代表玩家出示物品石头、剪刀、布,KEY1连接P3.3(INT1),用作复位键。采用T/C0做定时器,取随机数。
2、软件详细设计:按各功能模块进行程序设计,并说明各功能模块的实现方法。
模块一:程序设计:见程序清单
实现方法:采用查询方式,来判断3个开关的状态;物品灯的闪烁利用软件延时对位取反。
模块二:程序设计:见程序清单
实现方法:查询方式判断玩家出示物品,计算机随机出示物品利用定时器0,在开启定时器0后,直接取TL0的值作为随机数的值,然后除以3,用余数作为3种物品中的一种,根据结果P1赋值。
模块三:程序设计:见程序清单
实现方法:采用INT1中断,对3个开关查询判断。
3、设计中的主要困难及解决方案
在这部分论述设计中遇到的主要困难及解决方案。
困难1:如何实现三个开关代表三种物品?
解决方案:采用查询方式,不断判断三个开关的状态,来确定玩家出示物品。
困难2:计算机随机出示物品不知道怎么做?
解决方案:在开启定时器0后,直接取TL0的值作为随机数的值。然后除以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,#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,$
DJNZ R6,$
DJNZ R7, LOOP1
CPL P1.0
CPL P1.1
CPL P1.2
LJMP N0
N2: JB P3.1, N5 ;判断玩家出示物品是否只有一个JB P3.2, N5
JB 7FH, N20
ACALL SUIJI ;取随机数
N20: CJNE A,#00H,N21
MOV P1,#10111110B ;计算机出石头,平
SETB 7FH
LJMP LOOP
N21: CJNE A,#01H,N22
MOV P1,#11101101B ;计算机出剪刀,胜
SETB 7FH
LJMP LOOP
N22: MOV P1,#11011011B ;计算机出布,负
SETB 7FH
LJMP LOOP
N3: JB P3.2, N5 ;判断玩家出示物品是否只有一个JB 7FH, N30
ACALL SUIJI
N30: CJNE A,#00H,N31
MOV P1,#11011110B ;计算机出石头,负
SETB 7FH
LJMP LOOP
N31: CJNE A,#01H,N32
MOV P1, #10111101B ;计算机出剪刀,平
SETB 7FH
LJMP LOOP
N32: MOV P1,#11101011B ;计算机出布,胜
SETB 7FH
LJMP LOOP
N4: JB 7FH,N40
ACALL SUIJI
N40: CJNE A,#00H,N41