51单片机课设报告

  • 格式:doc
  • 大小:178.00 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、系统硬件设计

1、课程设计目的

①进一步熟悉和掌握单片机的结构及工作原理

②掌握单片机的接口技术及相关外围芯片的特性,控制方法

③通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。

④通过实际程序的设计和调试,逐步掌握模块化程序设计方法和调试技术。

⑤通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程。

⑥通过课程设计,培养学生综合运用所学专业知识分析问题和解决问题的能力。

2、系统工作原理

本系统采用51单片机内部的定时器0进行秒计数,用两个七段LED显示器显示秒时间(0~59s),同时由一个按键控制秒表的计数和清零。定时器0采用方式1,单次定时100ms,共循环10次达到定时一秒的目的。每定时1s计数时间加一,并将计时时间送七段LED显示。单片机通过两片74LS273与P0口相连进行I/O口的扩展,再与LED相连,LED显示方式为静态显示。按键入口选用P1口的P1.6引脚,同时按键采用软件去抖,保证只有当按键按下时间超过10ms并且弹开后超过10ms时系统才响应。

3、电原理图

说明:上方的74LS273(控制用来显示秒时间十位的LED)的CLK信号由读写信号和P2.0引脚控制,因此地址为FEFFH,下方的74LS273(控制用来显示秒时间个位的LED)的CLK信号由读写信号和P2.1引脚控制,因此地址为FDFFH。

4、系统工作过程

系统开始运行后,两LED均显示0,即等待有效按键信号开始计时。当产生一个有效的按键信号(P1.6引脚上查询到又高电平变为低电平且低电平持续时间超过10ms,再由低电平变为高电平且高电平持续时间超过10ms)时,定时器开启,系统开始计时,并且在两个LED上显示当前的计时时间(计时时间为0~59s)。每计时1s查询一次按键,当无有效按键信号产生时,系统循环计时。当有有效按键信号产生时系统停止计数,LED保持显示当前计时时间。同时查询按键,当无有效按键信号产生时,LED保持显示当前计时时间。当有有效按键信号产生时,系统对定时时间清零,同时使两LED均显示为0。继续等待有效按键信号开始计时,重复上述过程。

二、系统软件设计

1、程序设计说明

①主程序设计

主程序包含系统初始化,等待按键,响应按键三个部分。

系统初始化后,等待有效按键信号,当出现信号时,开启定时器0,不断查询中断标志TF0判断1s定时是否到,到了则秒表时间加一,送LED显示,否则继续等待信号。每加一秒则查询是否又出现有效按键信号,如无,则继续查询定时器中断标志,循环计时;如有,则关闭定时器,LED显示当前计时时间。继续查询是否有有效按键信号,如无,等待;如有则将计数时间清零,继续等待,重复上述过程。

②按键程序设计

在按键输入程序中,本系统设计了软件去抖功能。按键信号由P1.6引脚输入。当P1.6引脚从高电平转为低电平时,调用10ms延时子程序,当低电平维持10ms以上才进行下一步判断,否则认为是干扰。当P1.6引脚从低电平转为高电平时,继续调用10ms延时子程序,当高电平维持10ms以上才认为这是一个有效的按键信号,否则认为是干扰。达到了软件去抖的效果。

③显示程序设计

本系统用R7保存计时时间。进入现实子程序时,将R7中的数值对十取商(计时时间的十位),送入地址为FEFF的74LS273,由LED显示;将R7中的数值对十取余(计时时间的个位),送入地址为FDFF的74LS273,由LED显示。

④延时程序设计

由软件编程实现10ms延时。

0000 ORG 0000H

0000 020003 LJMP MAIN

0003 7F00 MAIN: MOV R7,#00H;数码管初始化显示“00”

0005 1171 ACALL LED

0007 780A MOV R0,#0AH;定时器循环10次,单次100ms,共定时1s 0009 758901 MOV TMOD,#01H;定时器方式字

000C 758C3C MOV TH0,#3CH;定时器初值

000F 758AB0 MOV TL0,#0B0H

0012 114E LP0: ACALL KEY;判断是否有键按下,有则开始计数,无则继续等待0014 D28C SETB TR0;启动定时器0

0016 108D02 LPPP2: JBC TF0,LPPP1;查询法等中断

0019 0116 AJMP LPPP2

001B 758C3C LPPP1: MOV TH0,#3CH

001E 758AB0 MOV TL0,#0B0H

0021 DB1D DJNZ R0,LP1

0023 780A MOV R0,#0AH

0025 0F INC R7;定时时间1s到,R7加1,送LED显示

0026 BF3C02 CJNE R7,#60,LPPP;计时时间到59则从0重新计时

0029 7F00 MOV R7,#00H

002B 1171 LPPP: ACALL LED

002D 2096E6 KEY1: JB P1.6,LPPP2;计时过程判断是否有键按下,有则停止计时,无则继续计时

0030 1165 ACALL DELAY

0032 309603 JNB P1.6,LP12

0035 020016 LJMP KEY1

0038 3096FD LP12: JNB P1.6,LP12

003B 1165 ACALL DELAY

003D 209603 JB P1.6,LP13

0040 020016 LP1: LJMP LPPP2

0043 C28C LP13: CLR TR0

0045 114E ACALL KEY;判断是否有键按下,有则清零,无则保持

0047 7F00 MOV R7,#00H

0049 1171 ACALL LED

004B 020012 LJMP LP0;以三次有效按键为周期(开始计数、停止计数、清零),循环执行程序

004E 2096FD KEY: JB P1.6,KEY;判断是否有键按下子程序(采用软件去抖,只有当按键又高到低后低电平持续10ms,再由低到高后高电平持续10ms才被认为是有效的按键信号)

0051 1165 ACALL DELAY

0053 309603 JNB P1.6,LP2

0056 02004E LJMP KEY