ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:43.34KB ,
资源ID:30260708      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30260708.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机打地鼠代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机打地鼠代码.docx

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; / ui

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

3、int t);void delay_1s(uint 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)

4、 ;void LCD_PutString(unsigned 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

5、 show_time(uchar time) ; void show_score(uint score) ; void IniScreen() ; 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

6、score);void show_win_newrecord(uint 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_dela

7、y (uchar s) ; uint StarAGame() ; void level_going() ; unsigned char end() ;/12864队友写的,未经允许不做公开 / / void Timers_Init() / 配置 Timer1 为计时器, timer0 为计数 器,timer1 每 5ms送出一个 interrupt 3 , 使 count+ ,timer0+void Timer0reset()TR0 = 1 ; /timer0 允许记时 remtime = 33 ;void Timer1reset()TR1 = 1 ; /timer1 允许计时 count =

8、 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+;TH1 = TIMS18;TL1 = TIMS1;void close_timers()TR0 = 0;TR1 = 0;/ 矩阵键盘/void delay_ms(uint t)uint i;fo

9、r(;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) 对键值赋值case 0xee: key=12; break; / case 0xde: key=8; break; case 0xbe: key=4; break; case 0x7e: key=0; break; case 0

10、xed: 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:

11、 key = 255;break;while(P1!=0xf0);return key;/ 游戏进行时 /uint long_delay (uchar s) / 延时函数uchar i,j;while(s-)for(i=0;i10;i+)for(j=0;j250;j+) if(Key_Scan()!=255) / 按键可结束延时,并将 rand_seed 值定格srand(j); / 种随即种子return 1 ;return 0; / 开机超时未响应uint StarAGame()initinal();writeCGRAM(0,mouse); writeCGRAM(1,squre); wri

12、teCGRAM(2,strike); writeCGRAM(3,bomb);ClrScreen(); show_welcome(); life = 3; /score = 0; level = 1;if (long_delay(1000)=1)Timers_Init() ;return 1;elsereturn 0;void creat_a_mouse() / 处理一只老鼠uchar getkey;show_squre(prepos); / 清除上一次图像 Timer1reset();if(flag!=0)show_mouse(pos); / 画出一只老鼠 while(count=400-5*

13、level)getkey = Key_Scan();if(getkey!=255)if(getkey=pos)score+;show_strike(pos);return;else/ life-;show_squre(pos) ;return;/ life-; / 超时扣分 show_squre(pos); return;elseshow_bomb(pos); / 出现炸弹,几率五分之一 while(count=400-5*level )getkey = Key_Scan();if(getkey=pos)life-;return;show_squre(pos) ;return;void lev

14、el_going() if(life3) show_life(life);show_score(score); delay_ms(500-8*level);if (life 0)prepos = pos; pos = rand()%16; flag = rand()%7;creat_a_mouse(); else close_timers() ;return; close_timers(); return ; unsigned char end()if(level20) / 游戏失败 if(score=top) ClrScreen();show_gameover(score) ;elseClr

15、Screen(); show_lose_newrecord(score,top) ; top = score ;else / 通关if (score0;) 选择是退出还是再来一局。unsigned char temp;Timer0reset() ;temp = Key_Scan() ;if (temp=8 & temp=13*level & level0) level+ ; ClrScreen();show_level_up(level,score) ; delay_1s(8);level_going() ;if (end()=1) close_timers() ; continue;else close_timers() ;ClrScreen(); break; else ClrScreen();break;while(1);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1