单片机课程设计-打地鼠.doc下载

weixin_39821746 2023-03-19 15:30:15
摘 要 随着社会的发展进步,各式有趣的小电动玩具已经遍布我们得生活。大街上随处可见 拿着只有几个按键的打地鼠游戏机。简单的几个按键,就可以给人们带来娱乐。 打地鼠游戏是电子技术发展的产物。打地鼠有软件版也有硬件版得。而软硬件打地鼠 的游戏规则类似。现在我们来讨论用单片机制作打地鼠游戏机。根据打地鼠的游戏规则 ,先制定特定位置,在确认按下了该位置的按钮。这种这种规则很容易用单片机实现。 单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成 为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件,设计一个 打地鼠游戏机。以单片机作为主控核心,与键盘、蜂鸣器、数码管等模块组成核心主控 制模块,在主控模块上设有4×4的矩阵键盘、数码管和蜂鸣器。本系统运行稳定,其优点 是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参 考价值。 关键词:STC89C52单片机 打地鼠游戏机 数码管 蜂鸣器 目 录 摘 要 1 目 录 2 1.引 言 3 2. 总体设计 4 2.1基本原理 4 2.2系统总体框图及设计思路 4 3.详细设计 5 3.1 硬件设计 5 3.2 软件设计. 6 3.2.1程序设计思路 6 3.2.2 程序流程图 7 3.2.3 程序代码 8 4. 系统调试及分析 22 5.心得体会 23 参考文献 23 1.引 言 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高 性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传 统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的 一项重大课题。 打地鼠游戏机是现代电子技术发展的产物。是一种按键式的游戏机。是人们的休闲娱乐 的好选择。单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的 生活中,成为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件 ,设计一个打地鼠游戏机。以单片机作为主控核心,4×4矩阵键盘、蜂鸣器等模块组成核 心主控制模块。 本文主要对使用单片机设计打打地鼠游戏机进行了分析,并介绍了基于单片机打地鼠游 戏机硬件组成。利用单片机产生随机数来点亮指定的位置的led发光管。在判断是否按下 了对应位置的按键。根据游戏规则判断是该加分还是加错。错5次则本次游戏结束。并且 本文分别从原理图,主要芯片,以及程序的调试来详细阐述。 游戏流程是先由单片机产生随机数,点亮对应位置的了点发光管,并记录被点亮的位置 。这时就开始扫描键盘,按键结果用来判断游戏规则。如果正确游戏的分加1,如果错误 错分加1。错分加到5则游戏结束。游戏期间还得用数码管动态显示游戏的分,游戏结束 后显示over。用单片机产生随机数类似电脑上产生随机数。需要开系统时钟,即定时器 。我们可以利用单片机的定时/计数器T0来提供系统时钟。矩阵键盘需要扫描才能应用。 数码管显示位数是动态的,即有几位数就显示几位数,数据的前面不会有0出现。 2. 总体设计 2.1基本原理 先由单片机产生随机数,点亮对应位置的了点发光管,并记录被点亮的位置。这时就开 始扫描键盘,按键结果用来判断游戏规则。用单片机产生随机数类似电脑上产生随机数 。需要开系统时钟,即定时器。我们可以利用单片机的定时/计数器T0来提供系统时钟。 矩阵键盘需要扫描才能应用。数码管显示位数是动态的,即有几位数就显示几位数,数 据的前面不会有0出现。 若要产生随机数,只要提供系统时钟,即定时器,然后调用rand()函数获得随机数 。期间一定要保证系统时钟一直开着,这就要求一定是用中断方式处理定时器/计数器0 ,是定时器/计数器一直开着。另外,经过试验发现,单片机产生随机数的随机性和单片 机的时钟值和要获得的数据范围有关。 利用STC89C52的内部定时器使其工作在定时器方式1下,设置计数值TH0及TL0初值,根据 要去数据范围合理设定。 2.2系统总体框图及设计思路 总体设计思路: 本设计利用单片机P0口连接4×4矩阵按键,作为功能控制键。其中,左上角的是1号键 右下的是16号键。进行编号是为了处理游戏功能是方便。硬件部分是用点阵连接成4×4的 矩阵,与矩阵键盘的位置相对应。一个数码管用于显示得分和游戏结束时显示over。蜂 鸣器用于添加游戏声音。 3.详细设计 3.1 硬件设计 1.芯片及原理介绍 1. STC89C52   STC89C52与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz~33MHz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空 , 相关下载链接:https://download.csdn.net/download/qq_43934844/87506259?utm_source=bbsseo
...全文
16 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
摘 要 随着社会的发展进步,各式有趣的小电动玩具已经遍布我们得生活。大街上随处可见 拿着只有几个按键的打地鼠游戏机。简单的几个按键,就可以给人们带来娱乐。 打地鼠游戏是电子技术发展的产物。打地鼠有软件版也有硬件版得。而软硬件打地鼠 的游戏规则类似。现在我们来讨论用单片机制作打地鼠游戏机。根据打地鼠的游戏规则 ,先制定特定位置,在确认按下了该位置的按钮。这种这种规则很容易用单片机实现。 单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成 为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件,设计一个 打地鼠游戏机。以单片机作为主控核心,与键盘、蜂鸣器、数码管等模块组成核心主控 制模块,在主控模块上设有4×4的矩阵键盘、数码管和蜂鸣器。本系统运行稳定,其优点 是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参 考价值。 关键词:STC89C52单片机地鼠游戏机 数码管 蜂鸣器 目 录 摘 要 1 目 录 2 1.引 言 3 2. 总体设计 4 2.1基本原理 4 2.2系统总体框图及设计思路 4 3.详细设计 5 3.1 硬件设计 5 3.2 软件设计. 6 3.2.1程序设计思路 6 3.2.2 程序流程图 7 3.2.3 程序代码 8 4. 系统调试及分析 22 5.心得体会 23 参考文献 23 1.引 言 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高 性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传 统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的 一项重大课题。 打地鼠游戏机是现代电子技术发展的产物。是一种按键式的游戏机。是人们的休闲娱乐 的好选择。单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的 生活中,成为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件 ,设计一个打地鼠游戏机。以单片机作为主控核心,4×4矩阵键盘、蜂鸣器等模块组成核 心主控制模块。 本文主要对使用单片机设计打打地鼠游戏机进行了分析,并介绍了基于单片机地鼠游 戏机硬件组成。利用单片机产生随机数来点亮指定的位置的led发光管。在判断是否按下 了对应位置的按键。根据游戏规则判断是该加分还是加错。错5次则本次游戏结束。并且 本文分别从原理图,主要芯片,以及程序的调试来详细阐述。 游戏流程是先由单片机产生随机数,点亮对应位置的了点发光管,并记录被点亮的位置 。这时就开始扫描键盘,按键结果用来判断游戏规则。如果正确游戏的分加1,如果错误 错分加1。错分加到5则游戏结束。游戏期间还得用数码管动态显示游戏的分,游戏结束 后显示over。用单片机产生随机数类似电脑上产生随机数。需要开系统时钟,即定时器 。我们可以利用单片机的定时/计数器T0来提供系统时钟。矩阵键盘需要扫描才能应用。 数码管显示位数是动态的,即有几位数就显示几位数,数据的前面不会有0出现。 2. 总体设计 2.1基本原理 先由单片机产生随机数,点亮对应位置的了点发光管,并记录被点亮的位置。这时就开 始扫描键盘,按键结果用来判断游戏规则。用单片机产生随机数类似电脑上产生随机数 。需要开系统时钟,即定时器。我们可以利用单片机的定时/计数器T0来提供系统时钟。 矩阵键盘需要扫描才能应用。数码管显示位数是动态的,即有几位数就显示几位数,数 据的前面不会有0出现。 若要产生随机数,只要提供系统时钟,即定时器,然后调用rand()函数获得随机数 。期间一定要保证系统时钟一直开着,这就要求一定是用中断方式处理定时器/计数器0 ,是定时器/计数器一直开着。另外,经过试验发现,单片机产生随机数的随机性和单片 机的时钟值和要获得的数据范围有关。 利用STC89C52的内部定时器使其工作在定时器方式1下,设置计数值TH0及TL0初值,根据 要去数据范围合理设定。 2.2系统总体框图及设计思路 总体设计思路: 本设计利用单片机P0口连接4×4矩阵按键,作为功能控制键。其中,左上角的是1号键 右下的是16号键。进行编号是为了处理游戏功能是方便。硬件部分是用点阵连接成4×4的 矩阵,与矩阵键盘的位置相对应。一个数码管用于显示得分和游戏结束时显示over。蜂 鸣器用于添加游戏声音。 3.详细设计 3.1 硬件设计 1.芯片及原理介绍 1. STC89C52   STC89C52与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz~33MHz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空
任务三 打地鼠 NO5.2.1 任务要求 游戏开始时,闪烁显示得分0,玩家需要同时按下复合按钮开始,(本例CD键)当松 开复合按钮后,数码管任意的跳出10个数,速度由慢到快,每跳出一个数玩家需按下相 应的按钮,如果命中得1分,且发光二极管发光提示命中,如果没有命中,不得分发光二 极管不发光,当10个结束之后,最后闪烁显示出玩家的积分。打中1个积1分,如果需要 重新开始则需再次按下复合按钮。 NO 5.2.2 任务分析 本任务是一个综合设计题,它把前面两个任务很好的整合在一起,并且用到前面学的很 多细节方面,比如说速度由慢到快怎么编,比如说显示的成绩闪烁显示怎么编,比如说 复合按钮做某件事情怎么编。 上图和前面学到的图不同的地方时多了一个发光二极管LED-BLUE。 软件流程图: NO 5.2.3 相关知识: 1 速度由慢到快的做某件事怎么编? 方法: for(i=0;i地鼠让x- =2;当一个周期结束之后即10个地鼠全跳出之后,让x回到初值即x=30; 2 显示的成绩闪烁怎么编? 方法: void T0_PRG() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; scan(); c++; if(c==30) c=0; if(r==0&&c<15) DM=0X00; if(r==0&&c>15) DM=~seg[m]; } 通过中断的形式来实现的,每调用一次中断让变量c++;当10个地鼠打完之后,r=0;r为 结束标志,此时如果c<15;数码管消隐,否则显示即可。 3 复合按钮做某件事情怎么编? 方法: 用到A&&B,同时满足AB两个条件时做某件事 switch(key_val) { case 12: {a=1;break;} case 13: {b=1;break;} } 在键盘扫描中:用到switch选择如果12号和13号按下会相应的标志位为1。 在主程序中: if(a==1&&b==1) {r=1; a=0; b=0;} if(r==1) { random();} 如果a=1并且b==1 则标志位r=1,调用随机函数;并且给ab清零,为下一次做准备。 NO 5.2.4 任务实施: 1 PROTEUS 画图 比较上个任务多了一个发光二极管 2 KEILC软件编程: #include #include #define DM P0 unsigned int tt; unsigned int k; unsigned int x=30; unsigned int c; unsigned char n,m,r ; sbit H0=P1^0;//键盘 sbit H1=P1^1; sbit H2=P1^2; sbit H3=P1^3; sbit L0=P1^4; sbit L1=P1^5; sbit L2=P1^6; sbit L3=P1^7; sbit D=P3^0;//灯 unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x08,0x03,0xc6,0xa1 ,0x86,0x8e}; unsigned char key_val,a,b; void scan(); void delay(unsigned int t); void random(); void scan()//键盘扫描 { H0=0;H1=0;H2=0;H3=0;L0=1;L1=1;L2=1;L3=1; if(L0==0""L1==0""L2==0""L3==0) { delay(500); if(L0==0""L1==0""L2==0""L3==0) { H0=0;H1=1;H2=1;H3=1;L0=1;L1=1;L2=1;L3=1; if(L0==0) key_val=0; if(L1==0) key_val=1; if(L2==0) key_val=2; if(L3==0) key_val=3; while(L0==0""L1==0""L2==0""L3==0); H0=1;H1=0;H2=1;H3=1;L0=1;L1=1;L2=1;L3=1; if(L0==0) key_val=4; if(L1==0) key_val=5; if(L2==0) key_val=6; if(L3==0) key_val=7; while(L0==0""L1==0""L2==0""L3==0); H0=1;H1=1;H2=0;H3=1

13,656

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧