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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(单片机课程论文Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程论文Word格式.docx

1、(4)比赛时间结束时,能发出报警指令。硬件电路设计电路主要包括CPU部分、电源部分、按键部分、LED显示部分。1、CPU部分51单片机为单芯片微控制器,常见封装形式为40脚双列直插式塑料封装DIP40,其引脚识别为:正面面向用户,缺口向上,左上面第一脚为1脚,然后按逆时针方向依次为240脚。通常第一脚有标志符号。51单片机管脚图如图2所示。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C单片机为很多嵌入式控制系统提供

2、了一种灵活性高且价廉的方案.图2 单片机引脚图2.管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位.在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在F

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

4、接收输出4个TTL门电流.当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3。0 RXD(串行输入口)1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1)4 T0(记时器0外部输入)5 T1(记时器1外部输入)6 /WR(外部数据存储器写选通)7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个

5、机器周期的高电平时间. ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高.如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号.在由外部程序存储器取指期间,每个机器周

6、期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP). XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出. 3。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时

7、钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。单片机是一种微控制器,任何为控制器正常工作最基本的条件是要有正确的电源、时钟电路好复位信号,三者缺一不可。 单片机正常工作最基本条件是:正确的电源、时钟信号、复位信号。51系列单片机第40引脚接电源+5V,第20引脚接地。电压过高或者过低均会引起单片机CPU部工作.单片机指令执行时在时钟脉冲控制下进行的,时钟脉冲信号是由单片机内部时钟电路及18脚、19脚外接晶振和电容组成的时钟电路产生的.时钟电路异常,也会引起单片机CPU部工作,可通过测量30脚

8、(ALE) 是否有时钟脉冲六分频信号输出来判断振荡电路是否起振。复位电路时在CPU通电后,给复位端9脚(RST)一个复位脉冲,使CPU内部处于初始工作状态。51系列单片机是高电平复位,在正确的复位后(工作状态)9脚应保持低电平。如果复位电路出现故障,CPU也将无法工作。由于CPU的复位电路只有在开机瞬间产生复位脉冲,周期一般为几毫秒,用万用表无法鉴别正常与否。对于只有上电复位的复位电路,快速判断CPU是否有故障可以采取强制复位的方法,将复位瞬时接电源正端,如果此时CPU恢复工作,说明CPU的复位电路出现故障。对于有按键复位的复位电路,按下复位键,测量复位端是否有高电平产生来判断复位电路工作是否

9、正常.图3 CPU控制电路2、电源部分图4 电源部分4.按键部分ADD1,DEC1,EXCHANGE,ADD2,DEC2,RUN/STOP其中: ADD1 甲队比分加1键,(暂停时为调整时间分钟加1) DEC1 甲队比分减1键,(暂停时为调整时间分钟减1) EXCHANGE 换场键,半场休息时换场。 ADD2 乙队比分加1键,(暂停时为调整时间秒钟加1) DEC2 乙队比分减1键,(暂停时为调整时间秒钟减1) RUN/STOP 启动暂停键,比赛开始时按下启动计时,比赛开始。比赛开始后,按下为暂停计时,比赛暂停。甲乙队比分默认000,此时按下ADD1键,可以对比赛时间分钟加1,按下DEC1键,可

10、以对比赛时间的分钟减1,按下ADD2键,可以对比赛时间秒加1,按下DEC2键,可以对比赛时间秒减1. 图6 按键部分 系统的总电路图图7 系统总电路图在proteus下的仿真。图7 AT89C51单片机部分图8 排阻部分图9 蜂鸣器部分图10 按键部分图11 时间显示部分图12 比分显示部分图13 仿真全图软件设计代码程序就是从主程序开始执行的,在主程序里可以调用子程序,调用完成后还要返回主程序继续执行。我们在主程序里对各个模块进行初始化,用一个while循环不断地循环执行各个子程序,例如按键扫描程序在这里可以一次一次地扫描按键,这样实现简单易行.延时子程序此次程序中单独设立了一个带有参数传输

11、的延时子程序,以供其他程序块的调用,且延时可以通过参数方便的控制,使程序更加的简洁。:中断服务子程序当T0中断发生时转入执行中断服务子程序,本程序主要用于提供一个精确的时钟实现定时。另外还用对数码管的循环扫描显示,每中断一次就对数码管进行扫描一次,从而提供一个稳定的显示输出,不受其他程序的延时影响。数码管显示子程序数码管显示采用动态显示方式,这样占用I/O口资源比较少,且易于实现。在运行中可以随时修改显示分数及时间.按键处理模块按键识别及处理程序主要由键盘识别和键值处理组成。其中键盘识别子程序不断地对键盘进行判断是否有键按下。当有键按下时则转到相应按键进行相应处理,即可实现对甲、乙两队总分的计

12、算与处理和对比赛时间的相应操作。源程序代码#includereg51.h#define LEDData P0 /定时数码管的段值从P0口输出unsignedcharcodeLEDCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数码管0-9的编码unsigned char minit,second,count,count1; /分,秒,计数器unsigned char set_minit=12,set_second=0;sbit add1=P10; /甲队加分,每按一次加1分 /比赛前为时间加1分sbit dec1=P11; /甲

13、队减分,每按一次减1分/比赛前为时间减1分sbit exchange=P12; /交换场地sbit add2=P13; /乙队加分,每按一次加1分/比赛前为时间加1秒sbit dec2=P14; /乙队减分,每按一次减1分/比赛前为时间减1秒sbit secondpoint=P07; /秒闪动点/-数码管的位选控制脚,共有10位数码管-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

14、 led10=P36;sbit alam=P17; /报警bit playon=0; /比赛进行标志位,为1时表示比赛开始,计时开启bit timeover=0; /比赛结束标志位,为1时表示比赛结束bit AorB=0; /甲乙队交换位置标志位bit halfsecond=0; /半秒标志位unsigned int scoreA; /甲队得分unsigned int scoreB; /乙队得分/=延时=void Delay5ms(void) unsigned int i; for(i=100;i0;i-); void display(void)/-显示时间(分钟)- LEDData=LEDC

15、odeminit/10; /显示分钟的十位 led1=0; /开启位选 Delay5ms(); /延时,以便足以点亮数码管. led1=1; /关闭位选 LEDData=LEDCodeminit10; /显示分钟的个位 led2=0; led2=1;/-秒点闪动- if(halfsecond=1) LEDData=0x80; else LEDData=0x00; led2=0; Delay5ms(); led2=1; secondpoint=0;/-显示时间(秒钟)- LEDData=LEDCodesecond/10; /显示秒钟的十位 led3=0; led3=1; LEDData=LEDC

16、odesecond%10; /显示秒钟的个位 led4=0; led4=1;/-显示1组的分数百位- if(AorB=0) LEDData=LEDCodescoreA/100; LEDData=LEDCodescoreB/100; led5=0; led5=1;/-显示1组分数的十位- LEDData=LEDCode(scoreA%100)/10; LEDData=LEDCode(scoreB%100)/10; led6=0; led6=1; /-显示1组分数的个位- LEDData=LEDCodescoreA%10; LEDData=LEDCodescoreB%10; led7=0; led

17、7=1;/-显示2组分数的百位- if(AorB=1) LEDData=LEDCodescoreA/100; LEDData=LEDCodescoreB/100; led8=0; led8=1;/-显示2组分数的十位- LEDData=LEDCode(scoreA100)/10; LEDData=LEDCode(scoreB%100)/10; led9=0; led9=1; /-显示2组分数的个位- LEDData=LEDCodescoreA%10; LEDData=LEDCodescoreB10; led10=0; led10=1; /=按键检测程序=void keyscan(void) i

18、f(playon=0) /在比赛未开始的状态下 if(add1=0) /当add1按键按下时 display(); /调用显示,同时作为延时消抖 if(add1=0); /延时消抖后,依然检查到按键按下 if(minit0) second-; second=0; display(); while(dec2=0); if(exchange=0) /换场键 display(); if(exchange=0); TR1=0; /关闭T1计数器 alam=1; /关报警 AorB=AorB; /开启交换 minit=set_minit; /并将时间预设为12:00 second=0; while(ex

19、change=0); else /比赛开始。 if(add1=0) /add1键按下 /调用显示,同时延时消抖 if(AorB=0) /当场地标志位=0时, if(scoreA999) /当A方的比分小于999时,比分加1 scoreA+; else scoreA=999; /否则最大值为999分 else /当场地标志位=1时, if(scoreB999) /当B方的比分小于999时,比分加1 scoreB+; scoreB=999; /否则最在值为999分 while(add1=0); if(dec1=0) /当dec1键按下时,原理与add1一样,比分减1 if(dec1=0); if(AorB=0) if(scoreA0) scoreA-; scoreA=0; if(scoreB0) scoreB; scoreB=0; while(dec1=0); if(add2=0) /原理同上 if(add2=0); if(AorB=1) if(scoreA scoreB-; while(de

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1