好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机贪食蛇课程设计报告.doc

24页
  • 卖家[上传人]:人***
  • 文档编号:435933519
  • 上传时间:2023-10-26
  • 文档格式:DOC
  • 文档大小:433KB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单片机课程设计报告目录1设计任务及要求 12总体设计思路及功能描述 13 各部分软硬件设计原理及方案详细说明 23.1 人机接口电路 23.2单片机与PC机通信电路 43.3 其他部分电路说明 53.4 软件模块设计 53.4.1 LCD初始化 53.4.2 键盘扫描程序 73.4.3 显示16*16点阵汉字 73.4.4 食物的随机出现 73.4.5 8X8 点阵LED工作原理说明 83.4.6 锁存器(74HC573) 83.5软件编译 104 调试的步骤及调试过程中出现的问题以及解决方法 104.1 PROTEUS仿真 104.2 硬件的安装 104.3 调试注意事项 114.3.1 硬件调试注意事项 114.3.2 软件调试注意事项 115 设计心得体会 116 附录 126.1总原理图 126.2单片机程序代码 137 参考文献 22 / 文档可自由编辑打印正文:1设计任务及要求本设计以51系列单片机STC89C52为控制核心,以点阵液晶显示模块、键盘为人机接口,实现了一个贪食蛇游戏机通过本设计,令读者掌握利用单片机开发简单电子产品的基本技能,熟悉原理图绘制、仿真、软件设计、优化以及系统调试的基本方法,为进一步设计开发更为复杂的嵌入式模拟/数字混合系统打下一定的基础。

      “贪食蛇”又称为“贪吃蛇”,是一种益智小游戏其游戏规则比较简单,就是一条小蛇,不停地在屏幕上游走去吃屏幕上出现的蛋,越吃越长,只要蛇头碰到屏幕四周或者碰到自己的身子,小蛇就立即毙命并结束游戏本作品有上下左右四个按键来控制蛇头的移动方向,另有一个复位按键控制程序的重启,游戏界面方案一:采用分辨率为128×64的液晶显示屏方案二:和8*8点阵显示2总体设计思路及功能描述如图ChpNum-3所示,贪食蛇软件主要分成三个部分:主程序、外部中断服务程序、定时中断服务程序主程序的作用是一些初始化工作及蛇体动作执行、食物的随机产生、得分累计、图像显示等外部中断服务程序的功能是识别按键定时中断服务程序的作用是定时产生步进信号外部中断服务程序与主程序之间联系的纽带是全局变量MovDirection,键盘中断服务程序每次执行都要把按键对应的方向更新到此变量,而主程序每次步进方向都以此变量为依据定时中断服务程序通过全局变量IsToStep与主程序联系起来,主程序只有在IsToStep为1时才让蛇体步进,且步进后将该变量置0,定时中断服务程序每隔一段时间为IsToStep置位,使主程序得到步进信号图ChpNum-3 程序流程主程序首先进行LCD和定时器的初始化,绘制好游戏界面后打开外部中断并启动定时器,进入主循环。

      主循环等待蛇体步进信号IsToStep(由定时中断服务程序设置),得到步进信号后根据当前方向MovDirection控制蛇体向前步进步进后判断当前蛇头是否碰到食物,若碰到,将食物与蛇体合并,并产生新的食物再进入首身相碰判断;若未碰到食物,直接进入首身相碰判断若首身未相碰则将IsToStep清零、更新得分后回到主循环;否则退出游戏定时器中断服务程序作用是定时产生步进信号,因硬件定时最大值不够蛇体步进最小间隔时间,我们用多次硬件定时来产生一个步进信号设计全局变量p,每硬件中断触发一次p减1当p减到0时置IsToStep为1并对p重新赋值值得注意的是,p的重新赋值应参考蛇体长度,若蛇体长度越长p值应越小,即步进间隔越短,蛇体移动速度越快,游戏难度越大具体做法见参考代码外部中断服务程序用于按键识别并更新前进方向全局变量MovDirection首先取出键盘检测位的值再确定贪食蛇要改变的方向当贪食蛇正向上或向下移动时,按下上下方向键,键值都不进行处理;而贪食蛇正向左或向右移动时,按下左右方向键,键值都不进行处理3 各部分软硬件设计原理及方案详细说明3.1 人机接口电路本游戏机游戏界面由液晶显示模块呈现。

      液晶显示模块中,最主要的就是LCD液晶屏根据LCD液晶屏显示内容的不同,液晶显示模块可以分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块3种本设计使用点阵图形液晶模块OCM12864OCM12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接连接,具有8位标准数据总线、6条控制线及电源线,各引脚的信号说明参见表ChpNum-1表ChpNum-1 OCM12864引脚说明管脚名称方向引脚说明VSS-逻辑电源地VDD-逻辑电源+5VV0ILCD调整电压,应用时接10K电位器可调端RSI数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行R/WI读\写选择: 高电平:读数据;低电平:写数据EI读写使能,高电平有效,下降沿锁定数据DB0I/O数据输入输出引脚DB1I/O数据输入输出引脚DB2I/O数据输入输出引脚DB3I/O数据输入输出引脚DB4I/O数据输入输出引脚DB5I/O数据输入输出引脚DB6I/O数据输入输出引脚DB7I/O数据输入输出引脚CS1I片选择信号,高电平时选择左半屏CS2I片选择信号,高电平时选择右半屏。

      /RETI复位信号,低电平有效VEEOLCD驱动,负电压输出,对地接10K电位器LEDA-背光电源,LED+(5V)LEDK-背光电源,LED-(0V) 单片机与液晶显示器的连接电路如图ChpNum-1所示,片选信号CS1与CS2接P2.4和P2.3引脚,RS、R/W、E分别接引脚P2.2、P2.1、P2.0VEE驱动负电压输出,而V0接10K电位器,对LCD亮度进行调节51单片机的P0口为了实现准3态,采用了OC输出,也就是集电极悬空输出这种电路结构,只有下拉能力,高电平输出没有电流在高电平时表现为高阻态,加上拉电阻,就会失去高阻态,变成 1、0 两态因此在P0口与OCM12864的I/O口之间接上10K的排阻用户通过四个按键控制蛇头的上下左右移动, 接法如图ChpNum-1所示四个按键尾端均接地,任意按键的按下均会使与门输出由高电平变成低电平,从而触发中断此时,中断服务程序通过检测P2.6口与P2.7口的电平可以识别是哪个按键被按下若P2.6和P2.7同时为低电平,表明是UP键按下;若同时为高电平,表明DOWN键按下;若P2.6为高,P2.7为低则表明是LEFT键被按下;若P2.6为低,P2.7为高则表明RIGHT键被按下。

      游戏音效由蜂鸣器实现,接法如图ChpNum-1所示由于单片机输出脚的驱动电流有限,我们用单片机P2.5脚输出信号控制PNP三极管S8550的通断,当P2.5输出高电平时,三极管截止,当P2.5输出低电平时,三极管导通因此,通过在P2.5脚输出不同频率的方波信号,可使得蜂鸣器发出不同频率的声音图ChpNum-1 人机接口电路3.2单片机与PC机通信电路本设计采用的STC89C52单片机具备ISP下载功能,无需用到编程器,编译好的单片机程序可以通过串口下载到单片机单片机与PC机串行通信采用RS-232C标准因为RS-232C接口信号不是标准的TTL电平,单片机与PC机通过RS-232C串口进行通信时,必须进行电平转换虽然可以用分立元件组成RS-232C与TTL电平之间的转换电路,但是现在更多的是使用集成电路来完成,这里使用MAX232集成电路如图ChpNum-2所示,MAX232需要外接4只0.1uF电容,或者1uF的电解电容之所以需要电容,是因为RS-232电平是工作在大约-9V~+9V之间,需要电容将5V电压转换成RS-232电平需要的+10V和-10V单片机侧安装了DB9物理连接器,可直接通过串口线连接到PC的串口。

      图ChpNum-2 RS-232信号适配电路3.3 其他部分电路说明电源电路、复位和时钟电路比较简单,具体连接请参见电路原理总图供电部分采用7805将输入9~12V电压转换为5V输出,输入输出端接220uF电解电容,使整流后的脉动直流电压变成相对比较稳定的直流电压由于大容量的电解电容一般具有一定的电感,对高频及脉冲干扰信号不能有效地滤除,所以两端并联一只容量为0.1uF的电容,以滤除高频及脉冲干扰复位电路含有上电复位和按键复位功能,按键复位用于游戏结束后游戏的重新启动系统插电瞬间电源通过10K电阻给10uF电容充电电平,充电电流在10K电阻上产生压降,于是电阻上端产生一个维持几百毫秒的高电平输入到RESET对单片机进行复位,电容充电满后经过电阻电流为0,复位失效类似地,当开关按下时,强制产生一个高电平对单片机进行复位时钟电路使用12MHz的晶振,晶振的两引脚处接入两个22pF的瓷片电容来削减谐波对电路稳定性的影响3.4 软件模块设计3.4.1 LCD初始化 在对LCD进行初始化时,先要检查读忙碌标志位,当BF为1表示内部操作正在进行,0表示允许指令操作具体指令说明如下:(1) 显示开/关设置 引脚R/WRSDB7DB6DB5DB4DB3DB2DB1DB0电平LLLLHHHHHH/L功能:设置屏幕显示开/关。

      DB0=H,开显示;DB0=L,关显示不影响显示RAM(DD RAM)中的内容 (2) 设置显示起始行 引脚R/WRSDB7DB6DB5DB4DB3DB2DB1DB0电平LLHH行地址(0~63)功能:执行该命令后,所设置的行将显示在屏幕的第一行显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一 (3) 设置页地址 引脚R/WRSDB7DB6DB5DB4DB3DB2DB1DB0电平LLHLHHH页地址(0~7)功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置页地址就是DD RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零 (4) 设置列地址 引脚R/WRSDB7DB6DB5DB4DB3DB2DB1DB0电平LLLH列地址(0~63)功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DD RAM进行读写操作后,Y地址自动加1。

      (5) 状态检测 引脚R/WRSDB7DB6DB5DB4DB3DB2DB1DB0电平HLBFLON/OFFRSTLLLL功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF) BF=H:内部正在执行操作;BF=L:空闲状态RST=H:正处于复位初始化状态;RST=L:正常状态ON/OFF=H:表示显示关闭;ON/OFF=L:表示显示开6) 写显示数据 引脚R/WRS。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.