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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(模拟乒乓球游戏机控制电路课程设计.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

模拟乒乓球游戏机控制电路课程设计.doc

1、1目录一、基本设计要求 二、STC89C52 芯片介绍三、程序流程图四、 “乒乓球”比赛系统数码管部分五、 “乒乓球”比赛系统模拟“兵乓球”部分六、 “乒乓球”比赛系统控制开关部分七、程序设计八、参考文献2一、基本设计要求:1、设计一个由甲、乙双方参赛。2、用 8 个 LED 排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的 LED 指示球的当前位置,点亮的 LED 依此从左到右,或从右到左,其启动的方向可以由任意一方开始。3、当“球”(点亮的那只 LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。若击中,则球向相反方向移动;若未

2、击中,则对方得 1 分。由失分的一方开球。 4.设置自动记分电路,甲、乙双方各用 2 位数码管进行记分显示,每计满 21 分为 1 局,一局到的时候蜂鸣器响起,并显示局数之比。5、随时可以复位比赛,比赛的比分和状态可以复位。摘要:为了实现模拟乒乓球比赛的过程和规则,我们采用了 STC89C52 单片机来控制模拟,采用用 8 个 LED 排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的 LED 指示球的当前位置,用蜂鸣器来实现响铃,比赛双方用按钮开关来模拟启动球拍击球,用数码管来显示比赛分数,和局数之比。关键词:AT89C51 LED 蜂鸣器。二、芯片介绍2.1、 89C52

3、芯片介绍STC89C52 是 51 系列单片机的一个型号,它是 ATMEL 公司生产的。3STC89C52 是一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元。STC89C52 有 40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外中断口,3 个 16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线

4、,STC89C52 可以按照常规方法进行编程,但不可以在线编程(S 系列的才支持在线编程)。其将通用的微处理器和 Flash 存储器结合在一起,特别是可反复擦写的 Flash 存储器可有效地降低开发成本。兼容 MCS51 指令系统 8k 可反复擦写(1000 次)Flash ROM 32 个双向 I/O 口 256x8bit 内部 RAM 3 个 16 位可编程定时/计数器中断 时钟频率 0-24MHz 2 个串行中断 可编程 UART 串行通道 2 个外部中断源 共 5 个中断源 2 个读写中断口线 3 级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 STC89c52 为 40 脚双

5、列直插封装的 8 位通用微处理器,采用工业标准的 C51 内核,在内部功能及管脚排布上与通用的 8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主 IC 内部寄存器、数据 RAM 及外部接口等功能部件的初始化,会聚调整控制,会4聚测试图控制,红外遥控信号 IR 的接收解码及与主板 CPU 通信等。主要管脚有:XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口,外接 12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和 VSS(20 脚)为供电端口,分别接+5V 电源的正负端。P0P3 为可编程通用 I/O

6、脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与 N1 的相应功能管脚相连接,13 脚定义为IR 输入端,10 脚和 11 脚定义为 I2C 总线控制端口,分别连接 N1的 SDAS(18 脚)和 SCLS(19 脚)端口,12 脚、27 脚及 28 脚定义为握手信号功能端口,连接主板 CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。P0 口P0 口是一组 8 位漏极开路型双向 I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL逻辑门电路,对端口 P0 写“1”时,可作为高阻抗

7、输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写5“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P2 口P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级

8、可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口 P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时,P2 口输出 P2 锁存器的内容。Flash 编程或校验时,P2 亦接收高位地址和一些控制信号。P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲级可驱动(吸收或输出

9、电流)4 个 TTL 逻辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。6RST复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目

10、的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对 Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次

11、PSEN 信号。EA/VPP 外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH),EA 端必须保持低电平(接地)。XTAL1振荡器反相放大器的及内部时钟发生器的输入端。7XTAL2振荡器反相放大器的输出端。特殊功能寄存器在 STC89C52 片内存储器中,80H-FFH 共 128 个单元为特殊功能寄存器(SFE),SFR 的地址空间映象如表 2 所示。并非所有的地址都被定义,从 80HFFH 共 128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据“1”写入未定义的单元,由于

12、这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。STC89C52 除了与STC89C51 所有的定时/计数器 0 和定时/计数器 1 外,还增加了一个定时/计数器 2。定时/计数器 2。STC89C52 有 256 个字节的内部 RAM,80H-FFH 高 128 个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高 128 字节的 RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。当一条指令访问 7FH 以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高 128 字节 RAM 还是访问特殊功能寄存器。如果指令是直接寻

13、址方式则为访问特殊功能寄存器。定时器 0 和定时器 1:STC89C52 的定时器 0 和定时器 1 的工作方式与 STC89C51 相同。8定时器 2定时器 2 是一个 16 位定时/计数器。定时器 2 由两个 8 位寄存器 TH2 和 TL2 组成,在定时器工作方式中,每个机器周期 TL2 寄存器的值加 1,由于一个机器周期由 12 个振荡时钟构成,因此,计数速率为振荡频率的 1/12。在计数工作方式时,当 T2 引脚上外部输入信号产生由 1 至 0 的下降沿时,寄存器的值加 1,在这种工作方式下,每个机器周期的 5SP2 期间,对外部输入进行采样。若在第一个机器周期中采到的值为 1,而在

14、下一个机器周期中采到的值为 0,则在紧跟着的下一个周期的 S3P1 期间寄存器加 1。由于识别 1 至 0 的跳变需要 2 个机器周期(24 个振荡周期),因此,最高计数速率为振荡频率的1/24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。管脚图如下:9三、程序流程图:右拍先发球开始:右向左移动NOYES YES左向右移动NOYESYES按 SB4 开始 右向左移动SB1 是否等于 0SB2 是否等于 0SHU1加 1SHU1 是否等于21SHU1=0、SHU2=0、c+、蜂鸣器响起SHU2加 1SHU2 是否等于21SHU1=0、SHU

15、2=0、d+、蜂鸣器响起10左拍先发球开始:左向右移动NOYES YES右向左移动NOYESYESSB2 是否等于 0SB1 是否等于 0SHU2加 1SHU2 是否等于21SHU1加 1SHU1 是否等于21SHU1=0、SHU2=0、c+、蜂鸣器响起按 SB4 开始 右向左移SHU1=0、SHU2=0、d+、蜂鸣器响起11四、 乒乓球比赛系统数码管部分整个过程由 STC89C52 单片机控制,对分数的显示我们用数码管,数码管有发光亮度强的优点,能够满足我们的要求通过控制数码管的段,就可以控制数码管的数学的显示,我们采用了动态方式来控制数码,该方式是通过让数码管快速切换显示,人眼分辨不出来,

16、不仅节约电能,而且还能够节约单片机的端口,从而减少程序的复杂性。用 P0 口来控制数码管段显,用 P2 口的低三位控制数码管的位选,采用 74LS138 译码器,可以节省单片机得端口。数码管电路图如下图所示:五、 乒乓球比赛系统模拟“兵乓球”部分STC89C52 单片机有价格低,抗干扰能力强的优点,所以完成能够12满足我们的要求,我们用单片机的 P1 控制 8 个 LED 的开关,通过对P1 口的控制就能控制 LED,由于 P1 口内部没有上拉电阻,不能良好的驱动 LED,LED 显示亮度会很暗,所以我们在外部添加了上拉电阻。依次对 P0 口给值0X01、0X02、0X04、0x08、0x10

17、、0X20、0X40、0X80 便可以控制灯得流水。 P2.5 控制蜂鸣器,如下图所示:13六、 “乒乓球”比赛系统控制开关部分P3.0 来控制 LED 由左到右的开关(即左拍) 、P3.1 来控制 LED 由左到右的开关(即右拍) ,P3.2 来控制左向右的开始发球,P3.3 来控制右向左的开始发球。整体图如下所示:(实际中只用到S1、S2、S3、S4)七、程序设计#include #define uchar unsigned char 14#define uint unsigned intsbit SB1=P30; /按键定义 sbit SB2=P31; /按键定义 sbit SB3=P3

18、2; /按键定义sbit SB4=P33; /按键定义sbit Mic=P25; /蜂鸣器定义uchar count=0;uchar i,j,shu1,shu2,a,b,c,d,shi,shi1,ge ,ge1;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数码管显示dengcode=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/流水灯显示void delay(uint x) /延时程序uchar y;while(x-)for(y=0;y125;y+); void ti

19、mer0() /计数器程序 TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; /开总中断15ET0=1;TR0=1;/数码管显示程序void desplay(uchar a,uchar b,uchar c,uchar d) P0=tablec; /局比分数P2=0;delay(5);P0=tabled;P2=1;delay(5);shi1=a/10; /左拍得分数P0=tableshi1;P2=3;delay(5); ge1=a%10; P0=tablege1;P2=4;elay(5);16shi=b/10; /右拍得分数P

20、0=tableshi;P2=6;delay(5);ge=b%10;P0=tablege;P2=7;delay(5);void yidong(uchar fang) /左右移动程序 for(i=0;i8;i+) delay(100);if(fang=0) P1=dengcodei;else P1=dengcode7-i;void mic() /蜂鸣器程序 Mic=1;delay(3000);Mic=0;void main() /主程序17 timer0();while(1) if(SB1=0if(SB1=1 if(shu2=21) shu1=0;shu2=0;d+;mic();yidong(0);if(SB2=0if(SB2=1 if(shu1=21) shu1=0;shu2=0;c+;mic();yidong(1);if(SB3=0) yidong(1);if(SB4=0) yidong(0);18void timer1() interrupt 1 /中断程序 TH0=(65536-50000)/256;TL0=(65536-50000)%256;desplay(shu1,shu2,c,d);八、参考文献单片机原理与应用 李精华 主编高等教育出版社单片机原理与应用 张洪润 编著清华大学出版社电路分析基础 付玉明 主编中国水利水电出版社

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报