单片机打地鼠代码

上传人:小** 文档编号:89110983 上传时间:2019-05-18 格式:DOC 页数:14 大小:34.50KB
返回 下载 相关 举报
单片机打地鼠代码_第1页
第1页 / 共14页
单片机打地鼠代码_第2页
第2页 / 共14页
单片机打地鼠代码_第3页
第3页 / 共14页
单片机打地鼠代码_第4页
第4页 / 共14页
单片机打地鼠代码_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《单片机打地鼠代码》由会员分享,可在线阅读,更多相关《单片机打地鼠代码(14页珍藏版)》请在金锄头文库上搜索。

1、单片机打地鼠代码/*单片机为at89s52,显示用12864液晶显示屏。黄书敏2012.5*/#include#include#include#define uchar unsigned char#define uint unsigned int#include stdlib.h#define FSOC 12000000L / 晶振频率#define TIMS1 (65536-FSOC/12/1000*5) / 每5ms溢出#define TIMS0 (65536-200) /计数器每中断200次溢出一次 /全局变量/uchar score = 0; /分数 uint top = 0; /最高

2、分 uchar level = 1; / 关数 uchar life = 3; / 生命数 uchar pos = 0 ; /地鼠/地雷位置 uchar prepos = 0; /上一只地鼠/地雷位置 uchar flag = 0; /地鼠or地雷标志位 uint count; /计时器 uchar remtime = 33 ; /每局剩余秒数 30ssbit triger = P33 ; /单片机P33口接P34口 /函数声明/void DelayUs2x(uint t);void DelayMs(uint t);void delay_50us(uint t);void delay_1s(u

3、int t);void delay_0_5s(uint t);void CheckBusy(void);void write_12864com(uchar com);void write_12864date(uchar date) ;void initinal(void) ;void ClrScreen();void Set_Cursor(uchar x, uchar y) ;void writeCGRAM(uchar pos,uchar code *pic) ;void displayCGRAM(uchar x,uchar y,uchar pos) ;void LCD_PutString(u

4、nsigned char x,unsigned char y,unsigned char code *s) ;void LCD_PutGraphic(unsigned char code *img); /显示满屏图片void showpic(uchar x,uchar y,uchar code *pic);void show_welcome() ;void show_life(uchar life) ;void show_level(uchar level) ;void show_time(uchar time) ;void show_score(uint score) ;void IniSc

5、reen() ;void show_mouse(uchar pos); /在指定位置显示老鼠void show_strike(uchar pos) ; /在指定位置显示锤子void show_bomb(uchar pos); /在指定位置显示炸弹void show_squre(uchar pos); /在指定位置显示方框void show_level_up(uchar level,uint score);void show_gameover(uint score);void show_congratulation(uint score);void show_win_newrecord(uint

6、 score, uint top);void show_lose_newrecord (uint score,uint top) ; /void Timers_Init() ; void Timer1reset() ;void Timer0reset() ;void Timer0_ISR() ; /中断处理函数void Timer1_ISR() ;void close_timers() ;void delay_ms(uint t);unsigned char Key_Scan() ;uint long_delay (uchar s) ;uint StarAGame() ;void level_

7、going() ;unsigned char end() ; /12864显示屏函数是队友写的,未经允许不做公开/ / /定时器/void Timers_Init() /配置Timer1为计时器,timer0为计数器,timer1每5ms送出一个interrupt 3 , 使count+,timer0+ TMOD = 0x15; TH0 = TIMS08; TL0 = TIMS0; ET0 = 1; /打开定时器0中断 TH1 = TIMS18; TL1 = TIMS1; ET1 = 1; /打开定时器1中断 EA = 1; /打开总中断 IT0 = 0; triger = 1 ; void

8、Timer0reset() TR0 = 1 ; /timer0允许记时 remtime = 33 ;void Timer1reset() TR1 = 1 ; /timer1允许计时 count = 0 ;void Timer0_ISR() interrupt 1 / 用于每局30s计时 remtime- ; /时间减一秒 show_time(remtime-3); /打印时间 TH0 = TIMS08; TL0 = TIMS0; void Timer1_ISR() interrupt 3 /用于每只老鼠时间计时,具体时间依关数不同。 triger = 0; triger = 1; count+

9、; TH1 = TIMS18; TL1 = TIMS1; void close_timers() TR0 = 0; TR1 = 0; /矩阵键盘/ void delay_ms(uint t) uint i; for(;t0;t-) i = 120; while (i-) ; unsigned char Key_Scan() unsigned char X=0,Y=0,key=255; P1 = 0x0f; if(P1!=0x0f) delay_ms(10); /消抖 if(P1!=0x0f) X = P1; P1 = 0xf0; Y = P1; key = X|Y; switch(key) c

10、ase 0xee: key=12; break; /对键值赋值 case 0xde: key=8; break; case 0xbe: key=4; break; case 0x7e: key=0; break; case 0xed: key=13; break; case 0xdd: key=9; break; case 0xbd: key=5; break; case 0x7d: key=1; break; case 0xeb: key=14; break; case 0xdb: key=10; break; case 0xbb: key=6;break; case 0x7b: key=2;break; case 0xe7: key=15;break; case 0xd7: key=13;break; case 0xb7: key=7;break; case 0x77: key=3;break; default: key = 255;break; while(P1!=0xf0); return key; /游戏进行时/uint long_delay (uchar s) /延时函数 uchar i,j; while(s-) for(i=0;i10;i+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号