单片机课程设计 石头剪刀布

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档