1、单片机综合设计报告 学前训练综合设计报告(基于AT89S52的篮球计分器的设计实现)学院名称计算机科学与技术学院专业名称信息安全学生姓名学号 指导教师 二一二年四月目 录功能设计: 2(一) 可以实现加分功能 2(二) 可以实现减分功能 2(三) 可以实现分数显示功能 2设计开发平台简介: 3硬件平台 3软件平台 3硬件设计及实现: 4软件设计及实现: 5实现效果测试: 6设计总结: 7功能设计:(一) 可以实现加分功能 本设计可以利用4*4键盘实现篮球比赛的加分功能,罚球+1分 2分球 3分球的分数都可以实现。(二) 可以实现减分功能 如果加分出现错误,可利用键盘按键实现减分。(三) 可以实
2、现分数显示功能 分数可显示利用数码管显示。设计开发平台简介:硬件平台CSIII CS-III 型单片机实验开发设备是由计算机学院独立设计开发,用于单片机原理及应用课程的实验教学。这套设备的设计和开发采用模块化组合设计,可以结合不同类型的单片机模块进行实验开发。针对课程的教学采用了ATMEL 公司的AT89S52 单片机芯片,同时配合keil 集成开发环境,支持汇编语言和C语言的程序设计。1. 功能特点* 使用CPU 主模块与实验板分离设计的方式,同时可以兼容不同类型的单片机模块,并可根据用户需要独立设计模块。* 采用ISP 通信技术,支持在线编程,方便用户开发。* 采用开关电源设计,安全可靠(
3、板上最高电压不超过18v),驱动电流最高可达5V/3A,过载自动保护,方便用户其他设备的引入* 所有IO 端口全部引出,方便与外部端口连接搭配。* 实验板上的功能器件可直接采用跳线器直接连接,减少过多的飞线连接。* 2 个端口模拟显示,可直接模拟端口高低电平状态,方便用户观察。* 8 个数码管显示,方便开发秒表,时钟,计算器,以及显示特殊提示信息等。* 一个4*4 矩阵键盘,可作键盘全扫描和逐行扫描。* 独立脉冲产生模块,可产生脉冲及方波,配合中断和计数器使用。* 普通键盘/鼠标接口,方便用户开发通信协议。* 采用串转并的方式进行端口扩展,同时配合汉字点阵模块显示,可作汉字显示和字库开发。*
4、扩展显示模块。* 具有发声器,配合定时器方便用户开发电子音乐盒。* 具有RS232 转换电路,完成UART 通信实验,可与上位机进行通信设计。* 具有液晶显示模块接口,方便用户开发液晶显示以及菜单系统的设计。* 红外模块,数据传输载波可调,用户作红外产品开发以及无线通信协议开发。2. 开发板硬件原理2.1 实验开发板功能框图软件平台:Keil C51 Keil C51 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理
5、和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 图2uVision2 IDE 是一个基于Window的开发平台,包含一个高效的编辑器,一个项目管理器和一个MAKE工具. uVision2支持所有的KEIL AT89S52工具,包括C编译器,宏汇编器,连接/定位器,目标代码到HEX的转换器。uVision2通
6、过以下特性加速你的嵌入式系统的开发过程: 全功能的源代码编辑器. 器件库用来配置开发工具设置. 项目管理器用来创建和维护你的项目. 集成的MAKE工具可以汇编,编译和连接你的嵌入式应用 . 所有开发工具的设置都是对话框形式的. 真正的源代码级的对CPU和外围器件的调试器 . 高级GDIAGDI接口用来在目标硬件上进行软件调试,以及和Monitor-51 进行通信 .与开发工具手册和器件数据手册和用户指南有直接的链接 .硬件设计及实现: 图1 八段数码管 图2 键盘软件设计及实现:1、 键盘操作功能实现 /*键盘分布*/ /* K15 K14 K13 K12 */ /* K11 K10 K9 K
7、8 */ /* K7 K6 K5 K4 */ /* K3 K2 K1 K0 */ /*/K3主队罚球+1分 K7 2分球 K11 3分球 K15客队减1分K0客队罚球+1分 K4 2分球 K8 3分球 K12客队减1分设计代码#include at89x52.hconst unsigned int Dis_code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;const unsigned int Dis_bit= 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned int key=0;int
8、Repeat=0;int Count=0;int Count1=0; /全局变量int a,b,c,d;void delay()int time;for(time=0;time100;time+); /延时void Display1() a=Count1%10; b=Count1/10; P1=Dis_bit1; P0=Dis_codea; delay(); P1=Dis_bit0; P0=Dis_codeb;void Display() c=Count%10; d=Count/10; P1=Dis_bit7; P0=Dis_codec; delay(); P1=Dis_bit6; P0=Di
9、s_coded; /计数函数void Keyboard() int tmp,x=0,y=0,g; P2=0x0f; tmp=P2&0x0f; if(tmp=0x0e) y=1; if(tmp=0x0d) y=2; if(tmp=0x0b) y=3; if(tmp=0x07) y=4; P2=0xf0; tmp=P2&0xf0; if(tmp=0xe0) x=1; if(tmp=0xd0) x=5; if(tmp=0xb0) x=9; if(tmp=0x70) x=13; / 键盘扫描 g=x+y; if (g=Repeat) g=0; if(g!=0) /按键时 key=g; Repeat=k
10、ey; if(g=2|g=3) Count-; if(g=4|g=5) Count1-; if(g=6|g=7) Count+=3; if(g=11|g=10) Count+=2; if(g=15|g=14) Count+; if(g=8|g=9) Count1+=3; if(g=12|g=13) Count1+=2; if(g=16|g=17) Count1+; /加减分控制 void zhongduan() interrupt 1 Display(); Display1(); Keyboard(); /键盘全扫描 TH0=0xff;void Timer0Init(void) TMOD=0X
11、01; TH0=0Xdf; TL0=0X00; /初始化 IE=0X82; /设置计时器void main(void) Timer0Init(); TR0=1; /开启计时器 while(1) 实现效果测试:初始比分 0:02分球3分球罚球+1分减分设计总结:本次的课程设计,使关于51系列单片机的,正是我们刚刚学到的51单片机,在平时课程的学习中,我们仅限于理论知识的讲解,即使知识是很扎实的,实际应用并不是这样的。开始时我也觉得自己的理论知识已经够了,但当我拿到课题时,在脑海里想的是非常好的,但真正编成和控制时,理论和实际结合不到一起,甚至于51芯片的使用我都感觉很迷茫,还是经过搜集大量资料才
12、将理论与实际结合到一起了。本次课程设计我主要负责编程,这次不仅锻炼了我C语言的知识,更加我们正在学习的51的定时与中断结合在一起,进行了实际的操作,让我的知识掌握得更加牢固。本次的实际经验之后,让我对单片机定时赋初值有了更新的认识,对程序的循环顺序、结构类型都有了非常深刻的认识,对真正硬件的连接也有了认识,不再将自己的知识局限于自己狭隘的空间中。通过这次课程设计秒表/时钟计时器,使我又重新开始学习C语言,因为C语言是大一学的,至从学完就再也没用过,所以开始很陌生,我又找了有关资料来了解,才有了一点眉目。在课堂上学习的都理论的,跟实际永远有一定的差距,不实践就不会发现问题。通过这次课程设计使我把课堂上学习的东西都用到了实践中,例如:定时/计数器的应用与中断。学习的时候不怎么理解,但是在实践中应用了以后就自然了解了。这次课程设计使我受益匪浅,而且都是实际的东西。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1