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