欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    基于单片机定时控制器的设计.doc

    • 资源ID:1091085       资源大小:274.15KB        全文页数:32页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机定时控制器的设计.doc

    1 / 32毕毕 业业 论论 文文课课 题:题:基于单片机定时控制器的设计基于单片机定时控制器的设计摘摘 要要随着单片机技术的全面发展,单片机应用技术多年来在智能化仪器仪表、机电一体化、家用电器、各类数据采集、控制等领域起着无可替代的作用。单片机,更确切的称作微控制器,其特点是功能强、体积小、可靠性高、价格低廉、灵活性好、开发较为容易。单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。数子时钟在日常生活中最常见,应用也最广泛。本次设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性,而且系统具有一定的可扩展性。而 51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以 AT89S51 芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由 4.5V 直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。关键字关键字 单片机; keil 编程开发环境; Protel 99SE 电路图设计; AT89S51 芯片2 / 32目目 录录第一章绪论第一章绪论 1 11.1 单片机定义 11.2 单片机的分类 11.3 单片机的发展概况 21.3.1 芯片化探索阶段 21.3.2 结构体系的完善阶段 21.3.3 从 SCMC 向 MCU 化过渡阶段 31.3.4MCU 的百花齐放阶段 31.4 时钟介绍 3第二章系统总体方案及硬件设计第二章系统总体方案及硬件设计 5 5设计系统的主要功能 52.1 系统的总体方案 52.2 系统设计方框图 52.3 硬件设计 62.3.1 80C51 芯片介绍 62.3.2 蜂鸣器 92.3.3 时钟电路 92.3.4 显示器模块的设计 102.3.5 键盘设计 132.4 电路仿真 15第三章软件设计及编程第三章软件设计及编程 16163.1 划分模块 163.2 程序设计 17结论 28致 29参考文献 301 / 32第一章第一章绪绪 论论数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历 、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。1时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203 等都可以满足高精度的要求。1.11.1 单片机定义单片机定义单片机就是将计算机的基本部件集成到一块芯片上,包括 CPUCentral Processing Unit 、ROM、RAMRandom Access Memory 、并行口Parallel Port 、串行口、定时器计数器、中断系统、系统时钟及系统总线等。1.21.2 单片机的分类单片机的分类单片机按照其用途可分为通用型和专用型两大类。通用型单片机具有比较丰富的部资源,性能全面且适应性强,能覆盖多种应用需求。专用单片机是专门针对某个特定产品的,例如,专用于电机控制的单片机、车载电子设备、语音信号处理和家用电器中的单片机等。2 / 321.31.3 单片机的发展概况单片机的发展概况单片机的发展经历了探索-完善-MCU 化-百花齐放四个阶段。1.3.11.3.1 芯片化探索阶段芯片化探索阶段20 世纪 70 午代,美国的 Fairchild公司首先推出了第一款单片机 F8,随后Intel 公司推出了影响面大、应用更广的 MCS48 单片机系列。MCS48 单片机系列的推出标志着在工业控制领域,进入到智能化嵌入式应用的芯片形态计算机的探索阶段。参与这一探索阶段的还有 Motorola、Zilog 和 Ti 等大公司,它们都取得了满意的探索效果,确立了在SCMC 的嵌入式应用中的地位。这就是 Single Chip Microcomputer 的诞生年代,单片机一词即由此而来。这一时期的特点是:1. 嵌入式计算机系统的芯片集成设计。2. 少资源、无软件,只保证基本控制功能。1.3.21.3.2 结构体系的完善阶段结构体系的完善阶段在 MCS-48 探索成功的基础上很快推出了完善的、典型的单片机系列 MCS-5l。MCS-51系列单片机的推出,标志着 Single Chip Microcomputer 体系结构的完善。它在以下几个方面奠定了典型的通用总线型单片机的体系结构。一完善的总线结构1.并行总线:8 位数据总线、16 位地址总线及相应的控制总线,两个独立的地址空间;2.串行总线:通信总线,扩展总线。二完善的指令系统1.具有很强的位处理功能和逻辑控制功能,以满足工业控制等方面的需要;2功能单元的 SFR集中管理。三完善的 MCS-51 成为 SCMC 的经典体系结构日后,许多电气商在 MCS-51 的核和体系结构的基础上,生产出各具特色的单片机。1.3.31.3.3 从从 SCMCSCMC 向向 MCUMCU 化过渡阶段化过渡阶段Intel 公司推出的 MCS96 单片机,将一些用于测控系统的模数转换器、程序运行3 / 32监视器、脉宽调制器、高速 I/O 口纳入片中,体现了单片机的微控制器特征。由于 MCS-51 单片机系列向各大电气商的广泛扩散,许多电气商竞相使用 80C51 为核,将许多在测控系统中使用的电路技术、接口技术、可靠性技术应用到单片机中;随着单片机外围功能电路的增强,进一步强化了智能控制器的特征。微控制器成为单片机较为准确表达的名词。其特点是:一满足嵌入式应用要求的外围扩展,如 WDT、PWM、ADC、DAC、高速 I/0 口等。二众多计算机外围功能集成,如:1.提供串行扩展总线:SPI、I2C、BUS、Microwire;2.配置现场总线接口:CAN BUS。三CMOS 化,提供功耗管理功能。四提供 OTP 供应状态,利于大规模和批量生产。1.3.4MCU1.3.4MCU 的百花齐放阶段的百花齐放阶段单片机发展到这一阶段,表明单片机已成为工业控制领域中普遍采用的智能化控制工具-小到玩具、家电行业,大到车载、舰船电子系统,遍及计量测试、工业过程控制、机械电子、金融电子、商用电子、办公自动化、工业机器人、军事和航空航天等领域。为满足不同的要求,出现了高速、大寻址围、强运算能力和多机通信能力的 8 位、16 位、32 位通用型单片机,小型廉价型、外围系统集成的专用型单片机,以及形形色色各具特色的现代单片机。可以说,单片机的发展进入了百花齐放的时代,为用户的选择提供了广阔的空间。1.41.4 时钟介绍时钟介绍时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置。而单片机模块中最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。而 LCD 电子定时闹钟是以单片机为基础的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为 24 小时,另外应有校时功能和一些显示日期、闹钟等附加功能。一个基本的数字钟电路主要由译码显示器、时,分,秒,星期计数器、校时电路、报时电路和振荡器组成。目前电子钟广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手。4 / 32由于时钟的实用性和在人们生活中的重要性,所以尝试设计以单片机为核心的数字时钟是很有意义的。钟表原先的报时功能已经原不能满足人们日益增长的要求,现代的电子时钟多带有类似自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、通断动力设备、甚至各种定时电气的自动启用等功能。5 / 32第二章章 系统总体方案及硬件设计系统总体方案及硬件设计本文设计的定时闹钟采用 80c51 芯片,用汇编语言进行编程,时、分、秒用 6 位 LED 数码管显示。在电路过四个按键 S1、S2、S3 和 S4 来进行定时和调时,定时时间到通过喇叭发出报警声。设计系统的主要功能能显示时时分分秒秒。能够设置定时时间、修改定时时间。到定时时间能发出报警2.12.1 系统的总体方案系统的总体方案一、由于要显示数字时间,需要 6 位数码管。二、时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。三、80c51 单片机加上外围器件6 个共阳数码管,8 个限流电阻和一个蜂鸣器和应用程序progisp 写入软件和 KEIL 编译软件,构成相应的应用系统。2.22.2 系统设计方框图系统设计方框图晶振及复位按钮 单片机80C518 个限流电阻蜂鸣器6 位共阳数码管显示选位图 1 系统设计方框图6 / 322.32.3 硬件设计硬件设计硬件设计分为 :1.时钟模版设计2.显示模版设计3.按键模版设计2.3.12.3.1 80C5180C51 芯片介绍芯片介绍80C51芯片不包含一个8位中央处理器cpu,4kb程序存储器ROM,128B随机存取存储器,RAM,4个8位并行I/O接口,1个全双工串行通信接口,2个16 位定时器、计数器级及21个特殊功能寄存器。外部具有64KB程序存储器寻址能力和64KB数据存储器寻址能力。指令系统中增加了乘法指令,提高了运算及数据处理能力,且具有位操作能力。由先进CMOS 工艺制造并带有非易失性 Flash 程序存储器 全部支持12 时钟和6 时钟操作 P89C51X2 和P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM 32 条I/O 口线 3 个16 位定时/计数器 6 输入4 优先级嵌套中断结构 1 个串行I/O 口 可用于多机通信 I/O 扩展或全双工 UART以及片振荡器和时钟电路。此外 ,由于器件采用了静态设计 ,可提供很宽的操作频率围 ,频率可降至 0 。可实现两个由软件选择的节电模式 ,空闲模式和掉电模式 ,空闲模式冻结 CPU但RAM定时器,串口和中断系统仍然工作掉电模式保存 RAM的容 但是冻结振荡器 导致所有其它的片功能停止工作。由于设计是静态的时钟可停止而不会丢失用户数据 运行可从时钟停止处恢复 。37 / 32图为80C5180c51管脚说明:VCC:供电电压,接+5V.GND:接地。P0口:P0口是一个8位三态双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写1时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有部上拉电阻。在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个 8 位准双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1 端口写1时,部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流IIL 。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入P1.0/T2和时器/计数器2的触发输入P1.1/T2EX,具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。P2口: :P2 口是一个具有部上拉电阻的8 位准双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写1时,部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流IIL。在访问外部程序存储器或用16位地址读取外部数据存储器例如执行MOVX DPTR时,P2 口送出高八位地址。在8 / 32这种应用中,P2 口使用很强的部上拉发送1。在使用8位地址如MOVX RI访问外部数据存储器时,P2口输出P2锁存器的容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有部上拉电阻的8 位准双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写1时,部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流IIL。P3口亦作为89C52特殊功能第二功能使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。P3口也可作为AT89S52的一些特殊功能口,如下表所示:P3口管脚 备选功能:RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号ALE是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚PROG也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置1,ALE操作将无效。这一位置1,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被端口引脚第二功能P3.0RXD串行输入口P3.1TXD串行输出口P3.2/INT0外部中断0低电平有效P3.3/INT1外部中断1低电平有效P3.4T0记时器0外部输入P3.5T1记时器1外部输入P3.6/WR外部数据存储器写选通P3.7/RD外部数据存储器读选通9 / 32微弱拉高。这个ALE 使能标志位地址为8EH的SFR的第0位的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号PSEN是外部程序存储器选通信号。当 AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.3.22.3.2 蜂鸣器蜂鸣器由 P3.7 口控制蜂鸣器,使其定时时间到能发出报警声。2.3.32.3.3 时钟电路时钟电路单片机的时钟产生方法有两种:部时钟方式和外部时钟方式。本系统中单片机采用部时钟方式。最常用的部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在 1.2MHz12MHz 之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在 20pF100pF 之间取值。系统的时钟电路设计是采用的部方式,即利用芯片部的振荡电路。AT89 单片机部有一个用于构成振荡器的高增益反相放大器。引脚 XTAL1 和 XTAL2 分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容 C1 和 C2 构成并联谐振电路,接在放大器的反馈回路中。复位及时钟电路如下图:10 / 32图为时钟电路限流电阻:8 个 220 电阻控制按键:本系统要进行时间的调整和定时,因此用 4 个手动按键对其进行控制。22.3.42.3.4 显示器模块的设计显示器模块的设计利用2个七段数码管6个选位引脚连接C51单片机 P2.5 P2.0接口,其他8个引脚分别通过限流电阻与C51单片机的P0.0 - P0.7和共阳极数码管连接。数码管:单片机常使用 7 段 LED,LED 是发光二极管显示器的缩写。LED 显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛应用。LED 显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。数码管是一种把多个 LED 显示段集成在一起的显示设备。有两种类型,一种是共阴极型,另一种是共阳极型。共阳性就是把多个 LED 显示断的阳极接在一起,又称为公共端。共阴极型就是把多个 LED 的阴极接在一起,即为公共端。阳极即为二极管的正极又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为 8 段,即 8 个 LED 显示段,分别为11 / 32A、B、C、D、E、F、G、H,器 DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即所有的 A 段都会连在一起,其它段也是如此,这是最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示的原理是各个数码管的相同段连接在一起,共同占用 8 段引管线,每位数码管的阳极连接在一起组成公共端,利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来数码管的驱动方式 :表 2 0在不同结构中的编码4D7D6D5D4D3D2D1D0字段码显示数结构形式Dpgfedcba共阴极001111113FH0共阳极11000000C0H0数码管要正常显示 ,就要用驱动电路来驱动数码管的各个段码 ,从而显示出我们要的数字,因此根据数码管的驱动方式的不同 ,可以分为静态式和动态式两类。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O 端口进行驱动 ,或者使用如 BCD 码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单 ,显示亮度高 ,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5840 根 I/O 端口来驱动 ,要知道一个 89S51 单片机可用的I/O 端口才 32 个呢:,实际应用时必须增加译码驱动器进行驱动 ,增加了硬件电路的复杂性。12 / 32动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划 a,b,c,d,e,f,g,dp的同名端连在一起 ,另外为每个数码管的公共极 COM 增加位选通控制电路 ,位选通由各自独立的 I/O 线控制,当单片机输出字形码时 ,所有数码管都接收到相同的字形码 ,但究竟是那个数码管会显示出字形,取决于单片机对位选通 COM 端电路的控制 ,所以我们只要将需要显示的数码管的选通控制打开 ,该位就显示出字形 ,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的 COM 端,就使各个数码管轮流受控显示 ,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮 ,但只要扫描的速度足够快 ,给人的印象就是一组稳定的显示数据 ,不会有闪烁感 ,动态显示的效果和静态显示是一样的 ,能够节省大量的 I/O 端口,而且功耗更低。为了充分利用单片机 I/O 口本设计采用动态显示 ,单片机 P0 口接段码,P2 口接位选,然而 P0 不能直接驱动数码管 ,所以我们选择 9015 - PNP 外延型晶体管作为驱动它是一种小电压,小电流,小信号的 PNP 型硅普通三极管。本例中主要用于: 开关应用。其特性如下:型号:9015 - PNP 外延型晶体管集电极电流 Ic:Max -100mA 集电极-基极电压 Vcbo:-50V 工作温度:-55 to +150功率:0.45 fT:190. hFE :40013 / 32图为时钟显示电路52.3.52.3.5 键盘设计键盘设计该设计使用四个键盘控制分别为 S1、S2、S3、S4。可以进行时间调整、闹钟调整。键盘为独立键盘。其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总 希望某个命令只执行一次,而在按键按下的 图为按键信号过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候。要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示: 14 / 32图为键盘电路6从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时 5ms 以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程。15 / 322.42.4 电路仿真电路仿真在制作硬件电路之前我们选采用模拟电路来仿真,本设计使用 Proteus 6 Professosr 模拟电路图如下:图为仿真图16 / 32第三章第三章 软件设计及编程软件设计及编程3.13.1 划分模块划分模块根据设计要求,定时闹钟程序可分为以下几个模块:1显示时间的设置;2闹钟时间的设置:3定时响应。显示时间S4按下?S3按下?S1按下?显示闹钟时间调整闹钟调整响铃主程序响铃判断YYYNYNNN初始化开始17 / 323.23.2 程序设计程序设计ORG 0000H LJMP START ORG 000BH LJMP TIME;初始化;START: MOV SP, #50H MOV 20H,#00H ;定义秒 MOV 21H,#00H ;定义分 MOV 22H,#00H ;定义时 MOV 23H,#01H ;定义闹钟分钟 MOV 24H,#01H ;定义闹钟小时 MOV 25H,#00H MOV 26H,#01H MOV 30H,#00H ;BCD SECOND MOV 31H,#00H MOV 32H,#00H ;BCD MINUTE MOV 33H,#00H MOV 34H,#00H ;BCD HOUR MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H MOV 50H,#00H ;按键次数 MOV TMOD,#01H ;16 位计数器 MOV TH0, #03CH ;赋初值 MOV TL0, #0B0H MOV IE, #87H ;中断允许18 / 32 SETB TR0 ;启动 T0 MOV R2,#14H MOV P2,#0FFH CLR P3.7;主程序;MAIN: LCALL TIMEPRO ;调用闹钟判断GB: LCALL DISPLAY1;调用时间显示 P1.7,M1 ;P1.7=1 时转移 S4 没有按下 LCALL SETTIME ;调用 SETTIME 调时子程序 LJMP MAINM1: P1.6,M2 ;P1 g.2=1 时转移S3 LCALL SETATIME ;调用 SETATIME 子程序 LJMP MAINM2: P1.4,M4 ;P1.41 时转移 S1 LCALL LOOKATIME ;调用 LOOKATIME 显示闹钟子程序M4: LJMP MAIN;延时子程序 ;DELAY: MOV R4,#030HDL00: MOV R5,#0FFHDL11: MOV R6,#9HDL12: DJNZ R6,DL12 DJNZ R5,DL11 DJNZ R4,DL00 RET;时间调整;SETTIME: ;设置时间L0: LCALL DISPLAY1MM1: P1.7,L1 ;P1.7=1 时转移 MOV C,P1.7 JC MM119 / 32 LCALL DELAY1 ;延时 JC MM1MSTOP1: MOV C,P1.7 ;P1.7 为 0 时转移 JNC MSTOP1 LCALL DELAY1 ;延时 MOV A,50H INC 50H CJNE A,#00H,HJ1 LJMP L0HJ1: MOV C,P1.7 JNC MSTOP1 INC 22H ;小时自加一 MOV A,22H CJNE A,#18H,GO12 ;小时计数循环 MOV 22H,#00H ;复位 MOV 34H,#00H MOV 35H,#00H LJMP L0L1: P1.5,L2 ;P1.5=1 时转移 MOV C,P1.5 JC L1 LCALL DELAY1 ;延时 JC L1MSTOP2: MOV C,P1.5 ;P1.50 时转移 JNC MSTOP2 LCALL DELAY1 ;延时 MOV C,P1.5 JNC MSTOP2 INC 21H ;分钟加一 MOV A,21H20 / 32 CJNE A,#3CH,GO11 ;分钟计数循环 MOV 21H,#00H ; 复位 MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11: MOV B,#0AH DIV AB MOV 32H,B ; 将 A 的低 4 位存入 32 单元 MOV 33H,A ; 将 A 的高 4 位存入 33 单元 LJMP L0GO12: MOV B,#0AH DIV AB MOV 34H,B ;将 A 的低 4 位存入 34 单元 MOV 35H,A ; 将 A 的高 4 位存入 35 单元 LJMP L0L2: P1.4,L0 ; P1.41 时转移 MOV C,P1.4 JC L2 LCALL DELAY1 ;延时 MOV C,P1.4 JC L2STOP1: MOV C,P1.4 ; P1.40 时转移 JNC STOP1 LCALL DELAY1 ;延时 MOV C,P1.4 JNC STOP1 MOV 50H,#00H LJMP MAIN; 设置闹钟;SETATIME:LCALL DISPLAY2 ; 调用 DISPLAY2 显示闹钟21 / 32N0: LCALL DISPLAY2MM2: P1.6,N1 ;P1.6=1 时转移 MOV C,P1.6 JC MM2 LCALL DELAY1 ; 延时 JC MM2MSTOP3: MOV C,P1.6 ; P1.60 时转移 JNC MSTOP3 LCALL DELAY1 ; 延时 MOV A,50H INC 50H CJNE A,#00H,HJ2 LJMP N0HJ2: MOV C,P1.6 JNC MSTOP3 INC 24H ;小时加一 MOV A,24H CJNE A,#24,GO22 ;小时计数循环 MOV 24H,#00H ;复位 MOV 38H,#00H MOV 39H,#00H LJMP N0N1: P1.5,N2 ;P1.51 时转移 MOV C,P1.5 JC N1 LCALL DELAY1 ;延时 JC N1MSTOP4: MOV C,P1.5 ;P1.50 时转移 JNC MSTOP4 LCALL DELAY1 ;延时22 / 32 MOV C,P1.5 JNC MSTOP4 INC 23H ;分钟加一 MOV A,23H CJNE A,#60,GO21 ;分钟计数循环 MOV 23H,#00H ;复位 MOV 36H,#00H MOV 37H,#00H LJMP N0GO21: MOV B,#0AH DIV AB MOV 36H,B ;将 A 的低 4 位存入 36 单元 MOV 37H,A ;将 A 的高 4 位存入 37 单元 LJMP N0GO22: MOV B,#0AH DIV AB MOV 38H,B ;将 A 的低 4 位存入 38 单元 MOV 39H,A ;将 A 的高 4 位存入 39 单元 LJMP N0N2: P1.4 ,N0 ;P1.41 时转移 MOV C,P1.4 JC N2 LCALL DELAY1 ;延时 MOV C,P1.4 JC N2STOP2: MOV C,P1.4 JNC STOP2 LCALL DELAY1 MOV C,P1.4 JNC STOP223 / 32 MOV 50H,#00H LJMP MAINTIMEPRO: MOV A,21H MOV B,23H CJNE A,B,BK ;判断定时闹钟的分钟 MOV A,22H MOV B,24H CJNE A,B,BK ;判断定时闹钟的小时 SETB 25H.0 MOV C,25H.0 LCALL TIMEOUT ;调用 TIMEOUT BK:RETTIMEOUT: X1: LCALL BZ ;调用喇叭响应程序 LCALL DISPLAY2 ;延时 CLR 25H.0 ;调用喇叭响应程序结束 P1.4, X1 ;P1.41 时转移 LCALL DELAY ;延时 CLR 25H.0 LJMP DISPLAY1 BZ: CLR P3.7 MOV R7,#250 ;喇叭响应时间 T2: MOV R6,#124 T3: DJNZ R6,T3 DJNZ R7,T2 SETB P3.7 RETLOOKATIME:LCALL DISPLAY2 MM: JNB P1.4,LOOKATIME 24 / 32 LCALL DELAY1 LJMP MAINDELAY1: MOV R4,#14H ;时间延时DL001: MOV R5,#0FFHDL111: DJNZ R5,DL111 DJNZ R4,DL001 RET;*定时*TIME: PUSH ACC ;保护现场 PUSH PSW MOV TH0,#03CH ;初值 MOV TL0,#0B0H DJNZ R2,RET0 MOV R2,#14H MOV A,20H CLR C INC A ;秒自加一 CJNE A,#3CH,GO1 ;秒计数循环 MOV 20H,#0 ;复位 MOV 30H,#0 MOV 31H,#0 MOV A,21H INC A ;分钟自加一 CJNE A,#3CH,GO2 ;分钟计数循环 MOV 21H,#0H ;复位 MOV 32H,#0 MOV 33H,#0 MOV A,22H INC A ;小时自加一 CJNE A,#18H,GO3 ;小时计数循环25 / 32 MOV 22H,#00H ;复位 MOV 34H,#0 MOV 35H,#0 AJMP RET0GO1:MOV 22H,A ; MOV B,#0AH DIV AB MOV 31H,A ;将 A 的低 4 位存入 31 单元 MOV 30H,B ;将 A 的高 4 位存入 30 单元 AJMP RET0GO2: MOV 21H,A MOV B,#0AH DIV AB MOV 33H,A ;将 A 的低 4 位存入 33 单元 MOV 32H,B ;将 A 的高 4 位存入 32 单元 AJMPRET0GO3:MOV 20H,A ; MOV B,#0AH DIV AB MOV 35H,A ;将 A 的低 4 位存入 35 单元 MOV 34H,B ;将 A 的高 4 位存入 34 单元 AJMPRET0RET0: POP PSW ;恢复现场 POP ACC RETI;*显示子程序*DISPLAY1:MOV R0,#30H MOV R3,#0FEH MOV A,R3PLAY1: MOV P2,A26 / 32 MOV A,R0 ;取要显示的数据 MOV DPTR,#DSEG1 ;指向字形段码首地址 MOVC A,A+DPTR CPL A ;查表取字形段码 MOV P0,A ;指向 P0 口 LCALL DL1 MOV P2,#0FFH MOV A,R3 ;判断是否显示到最低位 RL A ;左移一位 JNB ACC.6,LD1 INC R0 ;缓冲器地址加一 MOV R3,A LJMP PLAY1LD1: RETDISPLAY2: PUSH ACC ;保护现场 PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3PLAY2: MOV P2,A MOV A,R0 ;取要显示的数据 MOV DPTR,#DSEG1 ;指向字形段码首地址 MOVC A,A+DPTR CPL A ;查表取字形段码 MOV P0,A ;指向 P0 口 LCALL DL1 ;调用 DL1 MOV P2,#0FFH MOV A,R3 ;判断是否显示到最低位 RL A ;左移一位27 / 32 JNB ACC.6,LD2 INC R0 ;缓冲器地址加一 MOV R3,A LJMP PLAY2 ;调用 PLAY2LD2: POP PSW POP ACC ;恢复现场 RET ;DELAY;DL1: MOV R7,#20HDL: MOV R6,#20HDL6: DJNZ R6,$ DJNZ R7,DL RETDSEG1: DB 3FH,06H,5BH,4FH,66H ;七段码表 DB 6DH,7DH,07H,7FH,6FH END28 / 32结结 论论单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时四个星期,解决一个又一个的困难,终于完成任务。在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。另外,要非常感我的指导老师,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。我学会对困难无所畏惧,以及对问题的一些很重要

    注意事项

    本文(基于单片机定时控制器的设计.doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开