单片机课程论文_第1页
单片机课程论文_第2页
单片机课程论文_第3页
单片机课程论文_第4页
单片机课程论文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、 塔里木大学信息工程学院单片机原理及外围电路课程论文篮球赛计时计分器姓名:迪丽努尔·阿力甫学号: 5011212238 班级:计算机16-2 目录摘要1正文2技术背景2设计意义2设计目标3硬件电路设计31、CPU部分32.管脚说明:43. 振荡器特性:74.按键部分8软件设计12结论21参考文献22摘要篮球是一项充满乐趣的运动,打篮球可以学到很多课本里没有的东西,比如信任,合作,鼓励等,现在篮球普及率已经很高,不仅仅是专业运动员的运动,也是普通老百姓的活动,不管是走在学校里,还是公园里,甚至是乡村里,都能看到篮球场,都能看到打篮球的人,篮球已成为我们大部分人生活里不可或缺的组成部分,

2、每天都能听到有人在谈论篮球,说说自己喜欢的NBA巨星因为喜欢篮球,所以打篮球,时不时会来场激烈的比赛,篮球计分器将让我们摆脱用粉笔或记分牌计分带来的不便,轻轻松松几个按钮开关就能让我们记下分数,让我们感受到科技给我们带来的巨变。随着微电子技术的不断发展与进步,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。利用一些与单片机相关的硬器件设计一个关于篮球计时计分器对的设计,其中最主要设计俩部分:一是数码管显示器的显示部分,二是按键处理的判断。在此处输入中文摘要(字数一般不少于300字)

3、。摘要必须反映全文中心内容,内容应包括目的、过程及方法、结论。要求论述简明、逻辑性强、尽量用短句。采用第三人称的写法,并请用过去时态叙述作者工作,用现在时态叙述作者结论。【关键词】词1单片机;词2数码管;词3定时器;正文技术背景单片机是现代电子技术的新兴领域,它的出现极大地推动了电子工业的发展,已成为电子系统设计中最为普遍的应用手段。近年来单片机技术得到了突飞猛进的发展,各种单片机开发工具层出不穷。虚拟仿真就是近年来兴起的一种新型应用技术,采用虚拟仿真技术,在原理图设计阶段就可以对单片机应用设计进行评估,验证所设计电路是否达到所要求的技术指标,还可以通过改变元器件参数使整个电路性能达到最优化。

4、这样就无须多次购买元器件及制作印刷电路板,节省了设计时间与经费,提高了设计效率与质量。设计意义 通过篮球计分计时器的制作,可以使我熟悉,了解单片机开发设计实例的过程,并能使读者加深对单片机的理解和运用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下的一些方面:(1)篮球计分计时器包含了AT89C51系列单片机的最小应用系统的构成,同时在此基础上扩展了一些实用性强的外围接口。(2)掌握键盘接口原理,能正确地把键盘使用到单片机系统中,可以了解到LED显示器的结构,工作原理以及这种显示器的接口实例。(3)学会调试电路,分析电路故障,积累电路调试经验。设计目标 设计并制作一个用于赛场的篮球赛

5、计时计分器,实现如下基本功能:(1)能记录整个赛程的比赛时间,并能修改比赛时间,暂停比赛时间。(2)能随时刷新甲,乙两队在整个赛程中的比分。(3)中场交换场地时,能交换甲,乙两队比分的位置。(4)比赛时间结束时,能发出报警指令。硬件电路设计电路主要包括CPU部分、电源部分、按键部分、LED显示部分。1、CPU部分51单片机为单芯片微控制器,常见封装形式为40脚双列直插式塑料封装DIP-40,其引脚识别为:正面面向用户,缺口向上,左上面第一脚为1脚,然后按逆时针方向依次为240脚。通常第一脚有标志符号。51单片机管脚图如图2所示。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPER

6、OMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2 单片机引脚图2.管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一

7、个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势

8、,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输

9、入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR

10、8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL

11、1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3. 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。单片机是一种微控制器,任何为控制器正常工作最基本的条件是要有正确的电源、时钟电路好复位信号,三者缺一不可。 单片机正常工作最基本条件是:正确的电源、时钟信号、复位信号。51系列单片机第40引脚接电源+5V,第20引脚

12、接地。电压过高或者过低均会引起单片机CPU部工作。单片机指令执行时在时钟脉冲控制下进行的,时钟脉冲信号是由单片机内部时钟电路及18脚、19脚外接晶振和电容组成的时钟电路产生的。时钟电路异常,也会引起单片机CPU部工作,可通过测量30脚(ALE) 是否有时钟脉冲六分频信号输出来判断振荡电路是否起振。复位电路时在CPU通电后,给复位端9脚(RST)一个复位脉冲,使CPU内部处于初始工作状态。51系列单片机是高电平复位,在正确的复位后(工作状态)9脚应保持低电平。如果复位电路出现故障,CPU也将无法工作。由于CPU的复位电路只有在开机瞬间产生复位脉冲,周期一般为几毫秒,用万用表无法鉴别正常与否。对于

13、只有上电复位的复位电路,快速判断CPU是否有故障可以采取强制复位的方法,将复位瞬时接电源正端,如果此时CPU恢复工作,说明CPU的复位电路出现故障。对于有按键复位的复位电路,按下复位键,测量复位端是否有高电平产生来判断复位电路工作是否正常。图3 CPU控制电路2、电源部分 图4 电源部分4.按键部分ADD1,DEC1,EXCHANGE,ADD2,DEC2,RUN/STOP其中: ADD1 甲队比分加1键,(暂停时为调整时间分钟加1) DEC1 甲队比分减1键,(暂停时为调整时间分钟减1) EXCHANGE 换场键,半场休息时换场。 ADD2 乙队比分加1键,(暂停时为调整时间秒钟加1) DEC

14、2 乙队比分减1键,(暂停时为调整时间秒钟减1) RUN/STOP 启动暂停键,比赛开始时按下启动计时,比赛开始。比赛开始后,按下为暂停计时,比赛暂停。甲乙队比分默认000,此时按下ADD1键,可以对比赛时间分钟加1,按下DEC1键,可以对比赛时间的分钟减1,按下ADD2键,可以对比赛时间秒加1,按下DEC2键,可以对比赛时间秒减1。 图6 按键部分 系统的总电路图图7 系统总电路图在proteus下的仿真。图7 AT89C51单片机部分图8 排阻部分图9 蜂鸣器部分图10 按键部分图11 时间显示部分图12 比分显示部分图13 仿真全图软件设计代码程序就是从主程序开始执行的,在主程序里可以调

15、用子程序,调用完成后还要返回主程序继续执行。我们在主程序里对各个模块进行初始化,用一个while循环不断地循环执行各个子程序,例如按键扫描程序在这里可以一次一次地扫描按键,这样实现简单易行。延时子程序此次程序中单独设立了一个带有参数传输的延时子程序,以供其他程序块的调用,且延时可以通过参数方便的控制,使程序更加的简洁。 :中断服务子程序当T0中断发生时转入执行中断服务子程序,本程序主要用于提供一个精确的时钟实现定时。另外还用对数码管的循环扫描显示,每中断一次就对数码管进行扫描一次,从而提供一个稳定的显示输出,不受其他程序的延时影响。数码管显示子程序数码管显示采用动态显示方式,这样占用

16、I/O口资源比较少,且易于实现。在运行中可以随时修改显示分数及时间。 按键处理模块按键识别及处理程序主要由键盘识别和键值处理组成。其中键盘识别子程序不断地对键盘进行判断是否有键按下。当有键按下时则转到相应按键进行相应处理,即可实现对甲、乙两队总分的计算与处理和对比赛时间的相应操作。源程序代码#include<reg51.h>#define LEDData P0/定时数码管的段值从P0口输出unsignedcharcodeLEDCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数码管0-9的编码unsigned

17、 char minit,second,count,count1; /分,秒,计数器unsigned char set_minit=12,set_second=0;sbit add1=P10; /甲队加分,每按一次加1分 /比赛前为时间加1分sbit dec1=P11; /甲队减分,每按一次减1分/比赛前为时间减1分sbit exchange=P12;/交换场地sbit add2=P13;/乙队加分,每按一次加1分/比赛前为时间加1秒sbit dec2=P14;/乙队减分,每按一次减1分/比赛前为时间减1秒sbit secondpoint=P07;/秒闪动点/-数码管的位选控制脚,共有10位数码

18、管-sbit led1=P27;sbit led2=P26;sbit led3=P25;sbit led4=P24;sbit led5=P23;sbit led6=P22;sbit led7=P21;sbit led8=P20;sbit led9=P37;sbit led10=P36;sbit alam=P17;/报警bit playon=0;/比赛进行标志位,为1时表示比赛开始,计时开启bit timeover=0;/比赛结束标志位,为1时表示比赛结束bit AorB=0;/甲乙队交换位置标志位bit halfsecond=0;/半秒标志位unsigned int scoreA;/甲队得分u

19、nsigned int scoreB;/乙队得分/=延时=void Delay5ms(void)unsigned int i;for(i=100;i>0;i-); void display(void)/-显示时间(分钟)-LEDData=LEDCodeminit/10; /显示分钟的十位led1=0;/开启位选Delay5ms();/延时,以便足以点亮数码管。led1=1;/关闭位选LEDData=LEDCodeminit%10;/显示分钟的个位led2=0;Delay5ms();led2=1;/-秒点闪动-if(halfsecond=1)LEDData=0x80;elseLEDData

20、=0x00;led2=0;Delay5ms();led2=1;secondpoint=0;/-显示时间(秒钟)-LEDData=LEDCodesecond/10;/显示秒钟的十位led3=0;Delay5ms();led3=1;LEDData=LEDCodesecond%10;/显示秒钟的个位led4=0;Delay5ms();led4=1;/-显示1组的分数百位-if(AorB=0)LEDData=LEDCodescoreA/100;elseLEDData=LEDCodescoreB/100;led5=0;Delay5ms();led5=1;/-显示1组分数的十位-if(AorB=0)LED

21、Data=LEDCode(scoreA%100)/10;elseLEDData=LEDCode(scoreB%100)/10;led6=0;Delay5ms();led6=1; /-显示1组分数的个位-if(AorB=0)LEDData=LEDCodescoreA%10;elseLEDData=LEDCodescoreB%10;led7=0;Delay5ms();led7=1;/-显示2组分数的百位-if(AorB=1)LEDData=LEDCodescoreA/100;elseLEDData=LEDCodescoreB/100;led8=0;Delay5ms();led8=1;/-显示2组分

22、数的十位-if(AorB=1)LEDData=LEDCode(scoreA%100)/10;elseLEDData=LEDCode(scoreB%100)/10;led9=0;Delay5ms();led9=1; /-显示2组分数的个位-if(AorB=1)LEDData=LEDCodescoreA%10;elseLEDData=LEDCodescoreB%10;led10=0;Delay5ms();led10=1; /=按键检测程序=void keyscan(void)if(playon=0)/在比赛未开始的状态下if(add1=0)/当add1按键按下时display();/调用显示,同时

23、作为延时消抖if(add1=0);/延时消抖后,依然检查到按键按下if(minit<99)/当分钟小于99时,分钟加1minit+;elseminit=99;/否则,分钟仍然为99,调整为99分钟do/当按键未松开时,一直调用显示,防止数码管闪动,display();while(add1=0);if(dec1=0)/当dec1键按下时,dec1的原理与add一样,display();if(dec1=0);if(minit>0)minit-;elseminit=0;dodisplay();while(dec1=0); if(add2=0)/调整秒,原理同上display();if(a

24、dd2=0);if(second<59)second+;elsesecond=59;dodisplay();while(add2=0); if(dec2=0)display();if(dec2=0);if(second>0)second-;elsesecond=0;dodisplay();while(dec2=0); if(exchange=0)/换场键display();if(exchange=0);TR1=0;/关闭T1计数器alam=1;/关报警 AorB=AorB;/开启交换minit=set_minit;/并将时间预设为12:00second=0;dodisplay();

25、while(exchange=0);else/比赛开始。if(add1=0)/add1键按下display();/调用显示,同时延时消抖if(add1=0);if(AorB=0)/当场地标志位=0时,if(scoreA<999)/当A方的比分小于999时,比分加1scoreA+;elsescoreA=999;/否则最大值为999分else/当场地标志位=1时,if(scoreB<999)/当B方的比分小于999时,比分加1scoreB+;elsescoreB=999;/否则最在值为999分dodisplay();while(add1=0);if(dec1=0)/当dec1键按下时,

26、原理与add1一样,比分减1display();if(dec1=0);if(AorB=0)if(scoreA>0)scoreA-;elsescoreA=0;elseif(scoreB>0)scoreB-;elsescoreB=0;dodisplay();while(dec1=0);if(add2=0)/原理同上 display();if(add2=0);if(AorB=1)if(scoreA<999)scoreA+;elsescoreA=999;elseif(scoreB<999)scoreB+;elsescoreB=999;dodisplay();while(add2

27、=0);if(dec2=0)display();if(dec2=0);if(AorB=1)if(scoreA>0)scoreA-;elsescoreA=0;elseif(scoreB>0)scoreB-;elsescoreB=0;dodisplay();while(dec2=0);/*主函数void main(void)TMOD=0x11;/TMOD设置 TL0=0xb0;/定时器0,初值为0x3CB0,既定时0.05s TH0=0x3c; TL1=0xb0;/定时器1,初值为0x3CB0,即定时0.05s TH1=0x3c;minit=set_minit;/初始值为12:00se

28、cond=0; EA=1;/开总中断ET0=1;/开T0中断ET1=1;/开T1中断 TR0=0;TR1=0;EX0=1;/开外部中断0IT0=1;IT1=1;/EX1=1;PX0=1;/PX1=1;PT0=0;P1=0xFF;P3=0xFF; while(1) keyscan();/按键检查display();/显示程序 /=外部中断0中断程序=void PxInt0(void) interrupt 0Delay5ms();EX0=0;/关中断使能alam=1;/关蜂鸣器TR1=0;/关定时器0if(timeover=1)/当一节比较时间结束时,结束标志位=1timeover=0;/清除标志位if(playon=0)/当比赛结束或暂停时playon=1;/开始标志位TR0=1;/开启计时elseplayon=0;/开始标志位清零,表示暂停TR0=0;/暂停计时EX0=1;/重新开中断/=定时器0中断服务函数=void time0_int(void) interrupt 1 TL0=0xb0;/重赋初值 TH0=0x3c; TR0=1;/启动计时 count+;/软件计数器加1if(count=10)/0.05s*10=0.5s,即0.5秒钟时halfsecond=0;/半秒标志位清零 if(c

温馨提示

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

评论

0/150

提交评论