基于51单片机的推箱子游戏内容摘要:
,否则,移入 0. if(IR_timer=7){ IR_DATAL|=1。 IR_DATAL=1。 }else{ IR_DATAL=1。 } } i++。 IR_timer=0。 if(i=32) //i=32时,标志着一个完整的红外数据帧已经接收完,将接收完标志致一 { IR_OK=1。 } }else { i=0。 starflag=1。 IR_OK=0。 IR_timer=0。 } } /***********************获取红外按键值 *************************/ unsigned char scanf_hongwai() { while(1) { if(IR_OK) { if(IR_DATAL | IR_DATAH) { IR_OK=0。 starflag=0。 shengyi=300。 return IR_DATAH。 } } } } /**************** 向 12864 写指令 ******************/ void wzl(unsigned char zl){ lcd_en=0。 lcd_rs=0。 lcd_rw=0。 lcd_shuju=zl。 lcd_en=1。 yanshi(1)。 lcd_en=0。 } /************向 12864 写数据 ***************/ void wshuju(unsigned char shuju){ lcd_en=0。 lcd_rs=1。 lcd_rw=0。 lcd_shuju=shuju。 lcd_en=1。 yanshi(1)。 lcd_en=0。 } /**************文本转到图形模式 并开绘图显示 *********************/ void wenben_to_tuxing() { wzl(60)。 //8位接口、使用扩展指令集 wzl(62)。 //使用扩展指令集 ,开绘图显示 } /******************绘图转到文本模式 并关绘图显示 *************/ void tuxing_to_wenben() { wzl(60)。 //关绘图 wzl(56)。 //转到文本模式 } /*****************图形模式下的清屏 ****************/ void tuxing_qinping() { unsigned char x=128。 unsigned char y=128。 qp0: wzl(y)。 wzl(x)。 qp1: wshuju(0)。 wshuju(0)。 x++。 if(x144){goto qp1。 } x=0。 y++。 if(y160){goto qp0。 } } /*********图形模式下 绘制一条 高亮 *********/ void tuxing_gaoliang(unsigned char n)//第几行 从 1~4 { unsigned x=128,y=128,i=0,j=0。 if(n==1){x=128。 y=128。 } if(n==2){x=128。 y=144。 } if(n==3){x=136。 y=128。 } if(n==4){x=136。 y=144。 } gl0: wzl(y+j)。 wzl(x)。 gl1: wshuju(255)。 wshuju(255)。 i++。 if(i8){goto gl1。 } i=0。 j++。 if(j16) {goto gl0。 } } /***********初始化 12864*********/ void csh12864(){ lcd_psb=1。 //并口 wzl(12)。 //显示开 游标关 wzl(48)。 //基本指令集 wzl(1)。 //清屏 yanshi(1000)。 } /************************写入一个字符串数组 *******************/ void wenben_xiewenben(unsigned char *add) { while(*add !=39。 \039。 ) { wshuju(*add)。 add++。 wshuju(*add)。 add++。 } } /**************菜单 返回被确定的序号 , 按了取消键则返回 255***********/ unsigned char caidan(unsigned char n)//表示选中这一行 { unsigned char i=0。 tuxing_to_wenben()。 wzl(1)。 //清屏 yanshi(100)。 wzl(0x80)。 wenben_xiewenben(caidan_biaoqian0)。 wzl(0x93)。 wenben_xiewenben(caidan_biaoqian1)。 wzl(0x8b)。 wenben_xiewenben(caidan_biaoqian2)。 wzl(0x9b)。 wenben_xiewenben(caidan_biaoqian3)。 wenben_to_tuxing()。 cd: tuxing_qinping()。 tuxing_gaoliang(。基于51单片机的推箱子游戏
相关推荐
8U bai,INT8U qian)。 //按键检测子程序 void anjian(void)。 INT8U counter1 = 0,counter2 = 0。 INT8U flag = 0。 /////////////////////////////////////////////////////////////////////////// void exdelay()//简单延时子程序 {
压电源供电部分 本次设计电源部分采用,常用 DC+5V 电源电路,从外部接入 810VAC/DC 电压,通过电桥整流以及电容滤波后,进入 7805,再次滤纹波后由 DC_OUT 接出,电压为 +5V。 注意的是,由于 7805 的功耗较大,所以必须要加散热片。 加 D6是为了防止电流反冲。 十六位抢答键盘 部分 图 33 4X4 扫描键盘 该 4X4 扫描键盘是在单片机中常用的键盘
上的晶振的提供的时钟频率越高那单片机的运行速度也就越快 [2] 晶振的作用是为系统提供基本的时钟信号通常一个系统共用一个晶振便于各部分保持同步有些通讯系统的基频和射频使用不同的晶振而通过电子调整频率的方法保持同步 而晶振由于会与单片机的 XTAL1与 XTAL2脚构成的振荡电路中会产生谐波从而降低电路时钟振荡器的稳定性 所以一般会匹配两个 30pf 的电容来消减谐波对于电路稳定性的影响
是对应口地址不同。 JM12864J 的电路结 构特点 JM12864J是使用 HD61202及其兼容控制驱动器作为列驱动器,同时使用 HD61203作为行驱动器的液晶模块。 由于 HD6120不与 MPU发生联系,只要提供电源就能产生行驱动信号和各种同步信号,比较简单,因此这里就不作介绍了。 下面主要介绍一下JM12864J的逻辑电路图。 JM12864J共有两片
111D31Q22D42Q53D73Q64D84Q95D135Q126D146Q157D177Q168D188Q19U 5 017 4L S 3 73P 2. 0P 2. 1P 2. 2A L EIN T 0V C CV C CR 5 00IN 0C 5 051 04C 5 031 04C 5 041 041234567J 50 3C O N 73 12J 50 4C O N 2R 5 061
s 内芯片不会进行更新,此时可以通过读写相应字节获取时间信息和设置信息 .UIP 位为只读位且不受复位信号影响,通过把 B 寄存器中的 SET 位置 1将 UIP 位清零并禁止时间更新 .DV0DV2 用来开关晶体振 荡器和复位分频器 ,本课题中不需设置 .RS0RS3用于控制分频器输出,设置成不同的值可以在 SQW引脚得到不同的分频输出或得到周期性的中断 (通过控制寄存器 B 实现 )