基于单片机AT89C51控制的篮球计分器课程设计报告.doc_第1页
基于单片机AT89C51控制的篮球计分器课程设计报告.doc_第2页
基于单片机AT89C51控制的篮球计分器课程设计报告.doc_第3页
基于单片机AT89C51控制的篮球计分器课程设计报告.doc_第4页
基于单片机AT89C51控制的篮球计分器课程设计报告.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

28宁波技师学院电气系流水灯课程设计 宁波技师学院 课 程 设 计 报 告 设计课题:单片机篮球计分器 专业班级: 学生姓名: 指导教师: 宁波技师学院电气技术系 二零一三 年 9月摘 要进入21世纪,伴随着电子,信息通信技术的应用与普及开发,人们对电子技术的要求也越来越高。目前嵌入式单片机渗透到我们生活的各个领域,按照历史性、本质性普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统”。对于嵌入式即可分软件部分和硬件部分。以mcu为核心,就是各种各样的单片机,是嵌入式硬件部分的实现方式之一,它主要是因为把处理器和存储器等部件集成在一块芯片上。在探索单片机的发展道路时,有过两种模式,即“模式”与“创新模式”。“模式”将通用计算机系统中的基本单元进行裁剪后,集成在一个芯片上,构成单片微型计算机“创新模式”则完全按嵌入式应用要求设计全新的,满足嵌入式应用要求的体系结构、微处理器、指令系统、总线方式、管理模式等。intel公司的mcs-48、mcs-51就是按照创新模式发展起来的单片形态的嵌入式系统。mcs-51是在mcs-48探索基础上,进行全面完善的嵌入式系统,成为单片嵌入式系统的典型结构体系。 体育比赛计分器是对体育比赛过程中所产生的比分等数据进行快速采集记录、加工 处理、传递利用的工具。篮球比赛的计分器是一种得分类型的工具。它由计分器等多种 电子设备组成。虽然篮球比赛中很早就开始研究应用了电子计分器,通常都是利用模拟 电子器件、数字电子器件或是模拟、数字混合组成的,其稳定性和高准确度计分仍存在 一些问题。以单片机为核心的篮球比赛计分器,计分准确,具有体积小,重量轻,能耗 低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点。 目录 一 总体设计方案11.1系统设计方案11.2系统结构框图1二 系统硬件设计22.1晶振电路22.2复位电路32.3数码管电路42.4led指示电路52.5按钮加分电路.6三 软件设计.73.1主流程图.73.2程序图.9四 制作与调试.18五 结论.19六 致谢.20附录1 系统实物原来图.212实验原理图.233系统仿真图.244pcb原理图.25 5分工表.29一 总体设计方案1.1系统设计方案篮球计分系统主要由:复位电路、晶振电路、数码管显示电路、led灯指示输赢电路、甲乙加分电路等部分电路组成。各器件的选用:1 单片机的选用:单片机芯片选用at89c51。2数码管的选用:数码管选用四位共阴极数码管和两位共阳极数码管。3晶振的选用:晶振选用的是12mhz。 1.系统结构框图 图1.2-1系统结构框图二系统硬件设计复位电路、晶振电路、数码管显示电路迪电路组成。2.1晶振电路图2.1-1晶振电路内部方式时钟电路如图2.1-1所示。在xtal2和xtal2引脚上外接定时元件,内部振荡电路就产生自激振荡。2.2复位电路图2.2-1按键复位电路按键手动复位有电平方式和脉冲方式。而此次选用的便是按键电平复位。按键电平复位是通过复位端经电阻与vcc接通而实现的。电路如图2.2-1所示。2.3数码管电路图2.3-1数码管电路 注:此电路可以十分清楚的体现出当前比赛的分数指示。 图2.3-2数码管2.4led指示电路图2.4-1 led指示电路注:此电路可以明显的反映出led的运行状态(输赢状态),如图2.4-1所示。2.5按钮加分电路图2.5-1 按钮加分电路注:此电路可以选择甲、乙的加分,如图2.5-1所示。三 软件设计3.1主程序流程图 图3.1-1流程图注:篮球计分程序根据流程图所写,根据按钮是否按下跳起来判断是否执行下一条令,从而使led指示灯与数码管显示出值。 3.2程序图;篮球记分器org 0000hjmp loop3 ;主程序org 0003hjmp kai ;外部中断0:判断输赢org 0013hjmp jiao ;外部中断1:比分交换loop3:setb ea ;中断开启setb ex0setb it0setb ex1setb it1mov p0,#0ffh ;赋初值mov p1,#0ffhmov p2,#00hmov p3,#0chmov a,#00hmov r5,#00hmov r1,#00hmov r2,#00hmov r3,#00hmov r4,#00hmov r6,#00hclr cyloop2:mov dptr,#table1 ;比分显示 开始扫描lcall day1 ;扫描左移mov a,r1 ;左边比分十位数值传送到p2口movc a,a+dptrmov p2,alcall day2 ;延时扫描时间lcall day1 ;扫描左移mov dptr,#table2 ;左边比分个位数值传送到p2口mov a,r2movc a,a+dptrmov p2,alcall day2 ;延时扫描时间lcall day1 ;扫描左移mov dptr,#table3mov a,r3movc a,a+dptrmov p2,alcall day2 ;延时扫描时间lcall day1 ;扫描左移mov dptr,#table4 mov a,r4movc a,a+dptrmov p2,alcall day2 ;延时扫描时间lcall day1 ;扫描左移 mov dptr,#table5 ;右边比分十位数值传送到p2口mov a,r5movc a,a+dptrmov p2,alcall day2 ;延时扫描时间lcall day1 ;扫描左移mov dptr,#table6 ;右边比分个位数值传送到p2口mov a,r6movc a,a+dptrmov p2,alcall day2 ;延时扫描时间mov p1,#0ffhclr cyjnb p3.0,loop20 ;判断左边有没有加1分键按下lcall dayjb p3.0,$;去抖动lcall dayjb p3.0,$mov a,#01;左边加1分并判断分数有没有超过十分add a,r2mov r2,amov b,#10div abmov r2,bmov b,r1;左边个位数值超过10分, 十位数加上原来的十位数值传到r1add a,bmov r1,ajmp loop2loop20: jnb p3.1,loop21 ;判断左边有没有加2分键按下lcall daysetb p0.0setb p0.1setb p0.2jb p3.1,$ ;去抖动lcall dayjb p3.1,$mov a,#2 ;左边加2分并判断分数有没有超过十分add a,r2mov r2,amov b,#10div abmov r2,bmov b,r1 ;左边个位数值超过10分, 十位数加上原来的十位数值传到r1add a,bmov r1,ajmp loop2loop21: jnb p3.4,loop22 ;判断左边有没有加3分键按下lcall daysetb p0.0setb p0.1setb p0.2jb p3.4,$ ;去抖动lcall dayjb p3.4,$mov a,#3 ;左边加3分并判断分数有没有超过十分add a,r2mov r2,amov b,#10div abmov r2,bmov b,r1;左边个位数值超过10分, 十位数加上原来的十位数值传到r1add a,bmov r1,ajmp loop2loop22: jnb p3.5,loop30 ;判断右边有没有加1分键按下lcall daysetb p0.0setb p0.1setb p0.2jb p3.5,$ ;去抖动lcall dayjb p3.5,$mov a,#01 ;右边加1分并判断分数有没有超过十分add a,r6mov r6,amov b,#10div abmov r6,bmov b,r5 ;右边个位数值超过10分, 十位数加上原来的十位数值传到r5add a,bmov r5,ajmp loop2loop30: jnb p3.6,loop31 ;判断右边有没有加2分键按下lcall daysetb p0.0setb p0.1setb p0.2jb p3.6,$ ;去抖动lcall dayjb p3.6,$mov a,#2 ;右边加2分并判断分数有没有超过十分add a,r6mov r6,amov b,#10div abmov r6,bmov b,r5 ;右边个位数值超过10分, 十位数加上原来的十位数值传到r5add a,bmov r5,ajmp loop2loop31: jnb p3.7,loop32 ;判断右边有没有加3分键按下lcall daysetb p0.0setb p0.1setb p0.2jb p3.7,$ ;去抖动lcall dayjb p3.7,$mov a,#3 ;右边加3分并判断分数有没有超过十分add a,r6mov r6,amov b,#10div abmov r6,bmov b,r5 ;右边个位数值超过10分, 十位数加上原来的十位数值传到r5add a,bmov r5,ajmp loop2loop32:jmp loop2day1:mov a,p1;扫描左移rlc amov p1,aret;跳转返回day2:mov r7,#10;扫描时间loop5:mov r0,#250loop:nopnopdjnz r0,loopdjnz r7,loop5ret;跳转返回table1:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;左边十位数值的表格table2:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;左边个位数值的表格table3:db 40htable4:db 40htable5:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;右边十位数值的表格table6:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;右边个位数值的表格kai:setb p0.0;判断输赢 先赋初值setb p0.1setb p0.2lcall dayjnb p0.7,loop34jmp loop33loop34:push acc;开始判断mov a,#10mov b,r1mul abmov b,r2add a,bmov 100h,a;用乘法和加法算出左边的数值并传到100hmov a,#10mov b,r5mul abmov b,r6add a,bmov 110h,a;用乘法和加法算出右边的数值并传到100hmov a,100hcjne a,110h,loop201;开始比较clr p0.1;右边赢 p0.1亮pop accsetb p0.7jmp loop33loop201:jnc loop200;平局 p0.2灯亮clr p0.2setb p0.7pop accjmp loop33loop200:clr p0.0;左边赢 p0.0亮setb p0.7pop accloop33:retijiao:push acc;2边比分交换 输赢灯赋初值setb p0.0setb p0.1setb p0.2mov a,r1xch a,r5mov r1,amov a,r2xch a,r6mov r2,apop accretiday:mov r7,#50;去抖动延时d1:mov r0,#250djnz r0,$djnz r7,d1ret 四 制作与调试根据自己的设计题目,用protel99 se软件绘出电子草图,交与指导老师检查。之后在proteus软件里搭出电子图,并且写出程序,放于proteus软件里进行仿真,并且通过。通过以后在protel99 se软件里把pcb板制作,同时要注意板子的外观,和元器件的摆放,使之达到理想状态。pcb板子做好以后,把图打印在热转印纸上,之后再和板子通过热转印机把图转印至板子上。在把板子放置腐蚀液里,把露铜部分经行腐蚀,留下被覆盖的部分。腐蚀好之后,用清水和砂纸打磨,露出铜线。然后用机子把洞打出来,把元器件焊在上面。在调试时,按步骤一步一步的经行,在出现问题时,应及时记录,并且及时修改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论