微机原理实训报告书猜数字游戏Word下载.docx

上传人:b****3 文档编号:18329051 上传时间:2022-12-15 格式:DOCX 页数:19 大小:60.31KB
下载 相关 举报
微机原理实训报告书猜数字游戏Word下载.docx_第1页
第1页 / 共19页
微机原理实训报告书猜数字游戏Word下载.docx_第2页
第2页 / 共19页
微机原理实训报告书猜数字游戏Word下载.docx_第3页
第3页 / 共19页
微机原理实训报告书猜数字游戏Word下载.docx_第4页
第4页 / 共19页
微机原理实训报告书猜数字游戏Word下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理实训报告书猜数字游戏Word下载.docx

《微机原理实训报告书猜数字游戏Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理实训报告书猜数字游戏Word下载.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理实训报告书猜数字游戏Word下载.docx

2.3显示设备的选择

考虑到带中文字库的WGM-12864H是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;

其显示分辨率为128×

64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×

4行16×

16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,完全满足游戏品台的要求且使我们游戏的开发过程更加方便。

3总体设计方案框图

3.1系统的总体结构如下图所示:

本系统的硬件核心是单片机,关键的技术是程序流程的控制和软件编码、解码技术,。

3.2系统工作原理

游戏开发系统由按键控制程序流程,开发平台控制系统的工作方式,并处理数据,将数据送至显示屏显示。

4系统的电路设计及硬件实现

4.1系统的电路图设计

图4-1

4.2单片机的介绍

AT89S52单片机是系统中的控制核心,它是个低电压,高性能CMOS8位单片机,AT89S52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

其封装及引脚图如图4-3:

主要功能特性:

兼容MCS51指令系统

8k可反复擦写(>

1000次)FlashROM

32个双向I/O口

256x8bit内部RAM

3个16位可编程定时/计数器中断

时钟频率0-24MHz

2个串行中断

可编程UART串行通道

2个外部中断源

共6个中断源

2个读写中断口线

3级加密位

低功耗空闲和掉电模式

软件设置睡眠和唤醒功能

图4-3

WGM-12864H是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

返回指令:

X

光标或整体移位指令

S/C

R/L

S/CR/L操作

00光标左移,AC减1

01光标右移,AC加1

10所有显示左移

11所有显示右移

光标显示及光标闪烁指令

D

C

B

D=1整体显示打开D=0整体显示关闭

C=1光标显示开C=0不显示光标

B=1光标闪烁B=0光标不闪烁

5系统软件的设计(功能的实现)

5.1控制游戏平台的实现

本系统的功能主要是由平台上的按键通过游戏平台,逐步实现各个功能。

软件的设计思路是单片机时刻扫描键盘,如有键按下,进入到解码程序,入到程序散转表,去执行各个功能控制程序。

程序流程图如图5-1:

图5-1

6程序代码

#include<

reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineDATP0

#defineINPUTP1

voidWRI(uchara);

voidWRD(ucharb);

voiddisplay_picture();

voiddisplay_word(ucharrow1,ucharline1,uchar*p,uintfirst,ucharlast);

voiddelay(uintc);

voidclose();

voidkey();

//判断键值子程序

bitstart_key();

//扫描键盘子程序

voidnumber_key();

voidE_START(void);

voidE_EXIT(void);

voidbegin(void);

sbitRS=P2^0;

sbitE=P2^1;

sbitE_close=P3^0;

ucharcodebuf[1024]={

0x00,0x00,0x1F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x3F,0xFF,0xFF,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,

0x00,0x00,0x7F,0xFF,0xFF,0x80,0x00,0x00,0x07,0x00,0x00,0x60,0x00,0x00,0xF8,0x00,

0x00,0x00,0x7F,0xFF,0xFF,0xC0,0x00,0x03,0x87,0x80,0x00,0x60,0x00,0x00,0x7F,0xC0,

0x00,0x00,0xFF,0xFF,0xFF,0xE0,0x00,0x03,0xCF,0xC0,0x00,0x79,0xC0,0x01,0xFC,0xE0,

0x00,0x00,0xFF,0xFF,0xFF,0xF0,0x00,0x3F,0xFE,0x00,0x00,0x7F,0xC0,0x0F,0xFD,0xE0,

0x00,0x03,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0x1F,0x00,0x07,0xFB,0xC0,0x0C,0x1F,0xE0,

0x00,0x0F,0xFF,0xFF,0xFF,0xF8,0x00,0x0F,0x3F,0x00,0x0F,0xFE,0xC0,0x0C,0x1F,0x00,

0x00,0x3F,0xFF,0xFF,0xFF,0xF8,0x00,0x1F,0x3F,0xF0,0x0F,0xED,0x80,0x1C,0x7E,0x00,

0x00,0x7F,0xFF,0xFF,0xFF,0xFC,0x00,0x1E,0x3F,0xF8,0x0F,0xFF,0x00,0x1D,0xEE,0x00,

0x00,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x3F,0xFB,0x00,0x03,0xEF,0x80,0x19,0xDC,0x00,

0x01,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x77,0xFF,0x80,0x0F,0xF9,0xE0,0x18,0x78,0x00,

0x03,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x0E,0x1F,0xC0,0x3F,0xF0,0x60,0x00,0x7F,0x00,

0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1E,0x3F,0xC0,0x3B,0xFF,0xE0,0x00,0xFF,0x80,

0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x3E,0x37,0xC0,0x07,0xF3,0xE0,0x03,0xFF,0x80,

0x0F,0xFF,0xF0,0x0F,0xFF,0xFE,0x00,0x3E,0x3F,0xC0,0x1F,0xFB,0xF8,0x07,0xEE,0x00,

0x1F,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x06,0x3F,0xC0,0x1B,0xDF,0x3C,0x07,0x86,0x00,

0x1F,0xFC,0x00,0x00,0x3F,0xFF,0x00,0x06,0x33,0xC0,0x1B,0xD8,0x1C,0x03,0x06,0x00,

0x1F,0xF8,0x00,0x00,0x0F,0xFF,0x00,0x06,0x33,0xC0,0x0F,0xF0,0x0C,0x03,0x0E,0x00,

0x3F,0xF0,0x00,0x00,0x07,0xFF,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x01,0xCC,0x00,

0x3F,0xC0,0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xFC,0x00,

0x3F,0xC0,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,

0x7F,0xBF,0xC0,0x03,0xFC,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x7F,0x60,0xE0,0x07,0x06,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x7F,0xC0,0x30,0x0C,0x01,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x7E,0xEF,0x80,0x00,0xF3,0x7F,0x00,0x00,0x00,0x00,0x70,0x00,0x06,0x00,0x00,0x00,

0x7E,0x7F,0xC0,0x03,0xFE,0x3F,0x80,0x00,0x00,0xC0,0xF8,0x00,0x07,0x80,0x00,0x00,

0x7E,0x78,0xE0,0x07,0x0E,0x3F,0xC0,0x00,0x00,0x7F,0xB8,0x00,0x01,0xDE,0x00,0x00,

0x7C,0x6F,0x30,0x0E,0xF7,0x3F,0xE0,0x00,0x00,0x7F,0xFE,0x00,0x01,0xC7,0x00,0x00,

0x3C,0xDF,0xB8,0x0D,0xFB,0x1F,0xFE,0x00,0x00,0x7E,0x7E,0x00,0x00,0xFC,0x00,0x00,

0x3C,0xDF,0xD8,0x0D,0xFF,0x9F,0xFE,0x00,0x06,0x0F,0xFC,0x00,0x1E,0xFC,0x00,0x00,

0x3C,0xDF,0xD8,0x0F,0xFD,0x9F,0xFE,0x00,0x07,0x1F,0xFC,0x00,0x3E,0xF8,0x00,0x00,

0x3C,0xDF,0xD8,0x0D,0xFF,0xBF,0xFC,0x00,0x03,0xFF,0xFE,0x00,0xFF,0xF8,0x00,0x00,

0x1C,0xDF,0xB8,0x0D,0xFB,0x3F,0xF8,0x00,0x03,0xFF,0xFC,0x00,0x3F,0xFC,0x00,0x00,

0x1E,0x6F,0x30,0x0E,0xF7,0x7F,0xF0,0x00,0x03,0xFF,0xB8,0x03,0xFC,0x3C,0x00,0x00,

0x0F,0x78,0xE0,0x07,0x0E,0x7F,0xC0,0x00,0x03,0xFF,0xBE,0x07,0xFC,0x3C,0x00,0x00,

0x0F,0xBF,0xC0,0x03,0xFC,0xFE,0x00,0x00,0x03,0x7F,0xFF,0x06,0x3E,0x78,0x00,0x00,

0x07,0xCF,0x8E,0x30,0xF1,0xF0,0x00,0x00,0x03,0xFB,0xFF,0x06,0x7E,0xF8,0x00,0x00,

0x03,0xE0,0x07,0xF0,0x03,0xE0,0x00,0x00,0x03,0xDF,0xBC,0x07,0xF7,0xDC,0x00,0x00,

0x03,0xF0,0x03,0xE0,0x07,0xC0,0x00,0x00,0x03,0xDF,0x8C,0x03,0xE3,0x0E,0xC0,0x00,

0x01,0xF8,0x00,0x00,0x1F,0x80,0x00,0x00,0x01,0xDD,0x8C,0x00,0x00,0x07,0xC0,0x00,

0x00,0xFE,0x00,0x00,0x7F,0x00,0x00,0x00,0x01,0x81,0xDC,0x00,0x00,0x07,0xC0,0x00,

0x00,0x7F,0xC0,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x03,0xC0,0x00,

0x00,0x7F,0xFE,0x3F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x7F,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xFC,0xFF,0xFF,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x01,0xF9,0xFF,0xFF,0x9F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x03,0xFF,0xFF,0xF3,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x03,0xFF,0xFF,0xF4,0xBF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x07,0xFF,0xFF,0xF0,0x3F,0xF0,0x00,0x1C,0x00,0x00,0x00,0x00,0x03,0xF0,0x18,0x00,

0x0F,0xFF,0xF8,0x88,0x7F,0xF0,0x00,0x32,0x60,0x00,0xC0,0x00,0x01,0x90,0x19,0x80,

0x03,0xFF,0xF0,0x0F,0xFF,0xE0,0x00,0x30,0x60,0x00,0xC0,0x00,0x01,0xA0,0x01,0x80,

0x03,0xFF,0xF0,0x4F,0xFE,0xC0,0x00,0x3C,0xF7,0x3F,0xE0,0x00,0x01,0xEE,0xFB,0xC0,

0x03,0xBF,0xF1,0x9F,0xFC,0xE0,0x00,0x1E,0x69,0x9A,0xC0,0x00,0x01,0xA7,0x19,0x80,

0x03,0xBF,0xF7,0x9F,0xFC,0xE0,0x00,0x06,0x67,0x98,0xC0,0x00,0x01,0x83,0x19,0x80,

0x03,0x3F,0xFF,0xFF,0xFC,0xE0,0x00,0x26,0x6D,0x98,0xC0,0x00,0x01,0x93,0x99,0x80,

0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x1C,0x77,0xFC,0xE0,0x00,0x03,0xFD,0xFD,0xC0,

0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x01,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xFF,0xE1,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x77,0x71,0x80,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x62,0x19,0x80,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

ucharcodeword[16]={"

****************"

ucharcodeword1[10]={"

猜数字游戏"

ucharcodeword2[5]={"

Start"

ucharcodeword3[4]={"

Exit"

uchardata1,k;

ucharshuzu[4];

bitstart_flag;

//1开始,0退出

/****************************************/

/***********猜数字游戏核心程序***********/

//关机程序

//----------------------------------------

voidclose(){

E_close=0;

//关机

}

//开始游戏

//--------------------------------------------

voidbegin(void)

{ucharxian[5];

ucharm;

ucharn;

for(m=0;

m<

k;

m++)//产生四个不同的随机数。

{

shuzu[0]=rand()%10;

}

shuzu[0]=rand()%10;

shuzu[1]=0;

shuzu[2]=0;

shuzu[3]=0;

for(m=1;

4;

m++)

Nextnum:

shuzu[m]=rand()%10;

for(n=0;

n<

m;

n++)

{

if(shuzu[n]==shuzu[m]){gotoNextnum;

}

xian[0]=shuzu[0]+48;

xian[1]=shuzu[1]+48;

xian[2]=shuzu[2]+48;

xian[3]=shuzu[3]+48;

xian[4]="

"

+48;

WRI(0x01);

//清屏显

display_word(4,1,xian,0,4);

//答案显示

/*************LCD12864驱动程序***********/

//绘图程序

voiddisplay_picture()

{//蝴蝶

uchari,j,k;

WRI(0x01);

//清屏显示

WRI(0x32);

//绘图显示开

WRI(0x0c);

//显示打开,光标关,显示反白关

WRI(0x36);

//功能设置为扩充指令集

for(k=0;

k<

2;

k++)

for(i=0;

i<

32;

i++)

WRI(0x80+i);

WRI(0x80+k*8);

for(j=0;

j<

16;

j++)

WRD(buf[k*512+i*16+j]);

}

//显示字符程序

//===============================

voiddisplay_word(ucharrow1,ucharline1,uchar*p,uintfirst,ucharlast)

{

uintm;

WRI(0x30);

//功能设置为基本指令集

WRI(0x0f);

WRI(0x06);

//DDRAM地址计数器(AC)加1

switch(r

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1