毕业论文基于单片机的推箱子游戏设计内容摘要:
1 0 0 0 0 1 1 图形区首址 D1 低字节 D2 高字节 0 1 0 0 0 0 1 1 图形区宽度 (字节数 )D1=字节数 D2=00H 显示方式设置 无 1 0 0 0 0 0 0 0 逻辑“或”合 成 1 0 0 0 0 0 0 1 逻辑“异或”合 成 1 0 0 0 0 0 1 1 逻辑“与”合 成 1 0 0 0 0 1 0 0 文本特征 显示开关 无 1 0 0 1 N3 N2 N1 N0 90H 显示开关。 N0=1/0 光标闪烁启用 /禁用 N1=1/0 光标显示启用 /禁用。 N2=1/0 文本显示启用 / 禁用。 N3=1/0 图形显示启用 /禁用 光标形状选择 无 1 0 1 0 0 N2 N1 N0 0xA00xA7 表示光标占的行 数 屏读 无 1 1 1 0 0 0 0 0 屏读 数据一次读、写方式设置 D1 1 1 0 0 0 0 0 0 数据写,地址加 1 1 1 0 0 0 0 0 1 数据读,地址加 1 1 1 0 0 0 0 1 0 数据写,地址减 1 1 1 0 0 0 0 1 1 数据读,地址减 1 1 1 0 0 0 1 0 0 数据写,地址不变 1 1 0 0 0 1 0 1 数据读,地址不变 数据自动读、写方式设置 无 1 0 1 1 0 0 0 0 自动写设置 1 0 1 1 0 0 0 1 自动读设置 1 0 1 1 0 0 1 0 自动写结束 1 0 1 1 0 0 1 1 自 动读结束 屏拷贝 无 1 1 1 0 1 0 0 0 屏拷贝 位操作 无 1 1 1 1 N3 N2 N1 N0 N3=1 置 1 N3=0 清 表二 T6963C指令集 晶振、复位电路 晶振电路 单片机的晶振电路如图 2 所示,其中 XTAL1 和 XTAL2 分别为片内振荡电路的输入输出端。 一般电容取 20~47uF,本系统晶体的振荡频率为 24MHz。 晶振电路产生的振荡脉冲经过内部触发器进行二分频后,成为单片机的时钟脉冲信号 ,为单片机提供一个基本时钟信号。 X T A L 1X T A L 2X1CR Y S T A LC13 0 p FC23 0 p F 图 2 晶振电路 复位电路 复位操作是 单片机的基本操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作,复位操作后,程序将从 0000H 开始重新执行。 复位信号从单片机的 RST 引脚输入,复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式,本电路采用了按键电平复位,电路图如图 3.。 EARSTCE7RD6C/D8VSS2VDD3CON4WR5D011FS119FG1D112D213D314D415D516D617D718RST10L C D 1P G 1 6 0 1 2 8 AR11kR21kC32 2 0 u F 图 3 复位电路 液晶显示屏与单片机接口电路 液晶 显示屏 共有 18 个引脚,其中 VDD、 RST 两脚接电源, VSS、 FSCE 三脚接地, CON、 FG 两脚悬空, D0~D7 分别与单片机 ~ 相连接,WR 与 脚相连, RD 与 脚相连, C/D 与 脚相连,电路图见图 4. 控键、喇叭与单片机接口电路 本游戏共有 6 个控件,分别是:四个方向键,用于控制箱子的移动方向;一个确定键,用于刷新初始化界面进入游戏界面;一个选关键,用于选关。 一个喇叭,用于按键发声,以提示按键是否有效,电路图见图 4. 控件、喇叭与单片机的接线是:上 移键接 ;左移键接 ;右移键接;下移键接 ;确定键接 ;选关键接 ; 喇叭经过 分压式偏置共射放大电路 将 信号放大 再 与单片机 口相连,如图 4: P 3 .1Q12 N44 0 0C12 2 u FR15 1 kR22 0 kR32 .7 k C22 2 0 u FR45kC32 2 u FL S 1S P E A K E R 图 4 扬声器 放大电路 至此,游戏的硬件电路结构及连线全部介绍完成, 仿真电路图如图 5 所示,整个电路图以网络标号的形式给出,避免连线过多显得电路拥挤。 GRWRDCDP D0D1D2D3D4D5D6D7GP3P0GP4GP1 P2P GD0D1D2D3D4D5D6D7P0P1P2P3P4CDRDRWG P5P5GSPX T A L 1X T A L 2EARSTRS TEAX T A L 2X T A L 1GSPCE7RD6C/D8VSS2VDD3CON4WR5D011FS119FG1D112D213D314D415D516D617D718RST10L C D 1P G 1 6 0 1 2 8 A上下左 右确定X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 2 .7 /A 1 528P 2 .0 /A 821P 2 .1 /A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427P 1 .01P 1 .12P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 /R D17P 3 .6 /W R16P 3 .5 /T 115U28 0 C5 1选关L S 1S O UN D E RX1CR Y S T A LC13 0 p FC23 0 p FR11kR21kC32 2 0 u F复位 图 5 推箱子游戏硬件电路图 4 推箱子游戏的软件部分设计 本部分主要介绍游戏的软 件部分设计,包括游戏流程图;液晶屏驱动代码设计;初始化代码设计游戏时间代码设计;游戏关数代码设计;游戏步数代码设计;过关代码设计;方向控制代码设计;按键发声代码设计;数据表格设计等几个方面,现就对这几个方面做具体分析。 游戏流程图 液晶驱动程序调用规则流程图 本游戏用到了液晶 PG160128A,势必用到驱动代码,包括读状态函数;写指令函数;读数据函数;写数据函数;自动读写函数;画圆、打点函数;设指针函数;显示汉字、字符函数等等,现以流程图的形式给出其互相调用规则( A 函数指向 B 函数,表示 B 调用了 A)。 方向函数所调用的函数流程图 在游戏中设置了四个方向键,用以控制箱子的移动情况 ,在这四个函数里又都调用了其他子函数,现以流程图的形式给出调用到的子函数及数组。 主函数流程图 在主函数的运行过程中,程序会随着确定键的按下进入主循环而不断地扫描键盘,判断是否有键按下,再调用相关函数做相应的处理,同时两个定时器中断有条件开启,在中断到来时响应中断,执行相关的中断操作,流程图如下: 液晶屏驱动代码设计 读状态程序 unsigned char Read_State()//返回液晶显示屏的当前状态 {unsigned char a。 P2=0xff。 //读状态之前先将数据线拉高 _CD=1。 // 为指令、状态操作条件 _RD=0。 //读操作条件 _RD=1。 //为下次读做准备 a=Pin。 //将状态保存 return a。 } 是否可读写程序 void Enable() {while(1) //bit0 指令写状态位 ,bit1 数据读 /写状态位 ,为 1 时候空闲 if((Read_State()amp。 3)==3)break。 }//如果状态的低 2 为 1 则可读写 是否可自动读写程序 void Aut_Write() {while(1) //bit3 数据自动写状态位 ,为 1 时候空闲 if((Read_State()amp。 8)==8)break。 } //如果状态的第 4 为 1 则可自动读写 写单参数程序 //Data1 为传入的参数, Com 为传入的指令 ;写入顺序为先数据后写指令。 void Write_Data1(unsigned char Data1,unsigned char Com) {Enable()。 //判断 是否可读写 _CD=0。 //为数据操作条件 Pin=Data1。 //将数据送数据线 _WR=0。 //写操作 _WR=1。 //为下次写做装备 Enable()。 _CD=1。 // 为指令、状态操作条件 Pin=Com。 //将指令送数据线 _WR=0。 _WR=1。 } 写双参数程序 // Data1/Data2 为传入的参数, Com 为传入的指令 ,先 Data1 后 Data2,最后写指令。 void Write_Data2(unsigned char Data1,unsigned char Data2,unsigned char Com) {Enable()。 //判断 是否可读写 _CD=0。 //为数据操作条件 Pin=Data1。 //将数据 1 送数据线 _WR=0。 //写操作 _WR=1。 //为下次写做装备 Enable()。 _CD=0。 Pin=Data2。 //将数据 2 送数据线 _WR=0。 _WR=1。 Enable()。 _CD=1。 Pin=Com。 //将指令送数据线 _WR=0。 _WR=1。 } 写指令程序 void Write_Com(unsigned char Com) {Enable()。 //判断 是否可读写 _CD=1。 // 为指令、状态操作条件 Pin=Com。 //将指令送数据线 _WR=0。 //写操作 _WR=1。 }//为下次写做装备 写 8 字节数据 程序 // Addr 表示数据首地址, Way 表示写的方式 void Write_8_Data(unsigned char Addr,unsigned char Way) {Aut_Write()。 //判断是否能自动写 Write_Com(AUT_WR)。 //自动写开始 Write_Data1(Addr,Way)。 Write_Com(AUT_WO)。 }//自动写结束 设置数据显示在屏幕上的坐标 程序 // (以字节为单位 ),x 表示显示的行 (0~15), y 表示显示的列 (0~19) void Set_xy(unsigned char x,unsigned char y) {unsigned int a。 a=x*20+y。 Write_Data2(aamp。 0xff,a8,ADR_POS)。 } 设置数据存储起始地址 void Set_Addr(unsigned char Addr1,unsigned char Addr2) {Write_Data2(Addr1,Addr2,ADR_POS)。 } CGRAM 偏置地址设置函数 void Set_CGRAM() {Write_Data2(1,0,CGR_POS)。 } 液晶初始化函数。毕业论文基于单片机的推箱子游戏设计
相关推荐
仍会出现许多使用不当之处,结果没有充分发挥该钢所具有的 性能潜力,造成大量浪费。 其中,因热处理工艺的制订及操作不合理而引起工件开裂是一种常见现象。 研究内容 太原工业学院毕业设计 4 本次课题主要是研究在不同的热处理工艺下对 T8 钢进行材料力学性能的测定。 这其中包括了对试样进行显微组织的观察。 进行拉伸试验,测定 T8 钢的屈服强度、抗拉强度和材料的塑韧性变化。
其他部分 ,毛坯选ф 55179。 650mm的铸造件。 基准的选择原则 ( 1)有加工表面和不加工表面的零件,为保证不加工表面和加工表面的位置精度,应选择不加工表面为基准。 ( 2)对于具有较多加工表面的工件选择基准时,应考虑合理分配各表面的加工余量(保证各表面都有足够的余量和选择重要表面作为最终基准)。 ( 3) 粗基准应避免重复使用。 ( 4) 选择基准的平面应平整,没有冒口或飞边等缺陷
4 给出了一个典型的电话信道的相频特性和群迟延频率特性。 可以看出,相频特性和群迟延频率特性都偏离了理想特性的要求,因此会使信号产生严重的相频失真或群迟延失真。 在话音传输中,由于人耳对相频失真不太敏感,因此相频失真对模拟话音传输影响不明 显。 如果传输数字信号,相频失真同样会引起码间干扰,特别当传输速率较高时,相频失真会引起严重的码间干扰,使误码率性能降低。 由于相频失真也是线性失真
将机械、气动、电气控制、电机传动、传感检测、 PLC 以及工业网络控制技术有机进行整合,结构模块化,便于组合,可以完成各类单项技能训练和综合性项目训练。 可以进行机械部件安装与调试、气动系统的安装与调试、电气控制电路的安装和 PLC 编程、机电设备安装与调试、自动控制系统安装与调试、工业网络控制系统 安装与调试于一体。 ( 2) 系统采用统一标准接口,具有很高的兼容和扩展性
导入配件 创建守护进程 创建共享内存并且进行初始化 创建数据进程并进入相应的函数进行处理 创建套接字并监听 接收客户端连接创建新的套接字 是否接受该用户的连接 创建子进程并处理该用户 开始 结束 基于 Linux的 FTP 服务器 9 进程的启动 在 Linux环境下编程可以利用一个很好的工具,这个工具就是功能非常强大的 SHELL,在 Linux 中 SHELL 是“ Bash”。 Bash
少 Access 的功能(表单,报告,序列和 VB代码)可以用作其他数据库的后期应用,包括 JET(档案为主的数据库引擎, Access 缺省使用)、Microsoft SQL Server、 Oracle 和任何其他跟 ODBC 兼容的产品。 这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展。 数据库软件: microsoft office