1、 西华大学课程设计说明书 课 程 设 计 说 明 书 课程设计名称: 微机控制与接口技术课程设计 题 目: 智能定时器 专 业: 袁世斌 学 号: 312010080608217 指 导 教师: 陈立功 日期:2013 年 12月 13日 成绩 西华大学课程设计说明书 1 摘 要 本次设计以 AT89C51芯片为核心,辅以必要的外围电路,设计了一个简易的电子时 钟,它由 5V直流电源供电。在硬件方面,除了 CPU外,使用四个七段 LED数码管来进行 显示,LED 采用的是动态扫描显示。通过 LED能够比较准确显示时、分。三个简单的按 键实现对时间的调整。软件方面采用汇编语言编程。整个电子钟系统
2、能完成时间的显示, 调时,定时闹钟,报警等功能。 本设计是以 ATMEL 公司的 AT89C51 单片机芯片为系统核心的智能定时控制器 设计,论文具体描述了设计的系统硬件和软件的具体实现过程。智能定时控制器在硬件、 软件设计上均采用模块化的方法,使得在设计 和调试方面取得很大的方便。论文重点阐 述了数字钟硬件中 MCU 模块、按键模块、显示模块等相关模块的模块化设计及制作; 软件同样采用模块化的设计,包括中断模块、时间调整模块等设计,并采用简单流通性 强的 C 语言编写实现。本设计实现 了年、月、日及时、分、秒的显示和时间修改的功 能。通过对比实际的智能定时控制器,查找出误差的来源,确定调整误
3、差的方法,尽可 能的减少误差,使得系统可以达到实际智能定时控制器的允许误差范围内,取得了设计 的预期效果。 关键词:AT89C51 数码管 模块化 数字钟 西华大学课程设计说明书 2 abstract This design USES AT89C51 chip as the core, supplemented by necessary peripheral circuit, design a simple electronic clock, it consists of 5 v dc power supply.In terms of hardware, in addition to the
4、CPU, using four seven-segment LED digital tube display, LED using a dynamic scanning display.Through to compare accurate LED display, points.Three simple button realize adjustment of time.Software using assembly language programming.Can finish the whole electronic clock system time display, adjustme
5、nt, timing alarm clock, alarm, etc. This design is based on AT89C51 chip as the core of the system of ATMEL company smart timing controller design, the paper describes the design of system hardware and software of the concrete implementation process.Smart timing controller in hardware, software desi
6、gn adopt modular approach, made in the design and debugging has made a lot of convenience.Paper expounds the digital clock hardware of MCU module, keys module, display module and other related modules of modular design and production;Software also adopts 西华大学课程设计说明书 3 modular design, including the i
7、nterrupt module, time adjust module design, and USES the simple liquidity strong C language to achieve.This design has realized the years, months, days, minutes and seconds in time display and the function of the time change.By comparing the actual smart timing controller, find out the source of the
8、 error, determine the method of adjusting error, reduce errors, makes the system can achieve the actual intelligence within the scope of permissible error time controller, design the expected results have been achieved. Keywords: AT89C51 digital tube modular digital clock 目 录 1前言 4 2总体设计方案设计 5 2.1要求
9、功能 5 2.2.单片机芯片 .5 2.3显示模块 5 2.4时钟芯片的选择 .5 2.5电路设计方案确定 5 3硬件电路设计 7 3.1硬件系统设计的概述 7 3.2 AT89C51单片机 .7 3.3单片机的定时/中断系统 .8 3.4 显示系统 .10 西华大学课程设计说明书 4 3.5 报警电路 .10 3.6 按键电路 .11 3.7 电源设计 .11 3.8 单片机最小系统 12 3.8.1单片机的复位电路 .12 3.8.2单片机的复位电路 .12 3.9单片机系统的晶振电路 13 4 软件部分设计 .15 4.1主程序 15 4.2初始化程序 17 4.3显示程序 17 4.4
10、中断程序 16 5系统调试 .18 5.1系统调试概述 .18 5.1系统调试结果 .18 7结 论 .19 参 考 文 献 20 附录 1:系统主程序图 .21 附录 2:系统仿真原理图 .23 1前言 随着产业结构的不断调整、生产工艺的飞速发展、人们生活水平的不断提高及家用 电器的逐渐普及, 市场对定时控制系统的需求越来越大. 如, 定时自动报警、定时自动 打铃、定时开关烘箱、定时通断动力设备以及各种电气的定时启动等都属于定时控制系 统 1 . 定时控制系统的实现方法很多, 本文主要介绍以 80C51 系列单片机中的 AT89C51 为核心的智能定时控制系统的设计实现方式. 80C51 系
11、列单片机进入市场时间 早, 总线开放, 仿真开发设备多, 芯片及其开发价格低廉、速度较快、电磁兼容性较好. 本文所述智能时钟控制系统主要包括时钟显示、时间校正、闹铃设置及各种设备定时开 关机( 可扩展功能) 等功能. 实时日历和时钟显示的设计过程在硬件与软件方面进行同 步设计。硬件部分主要由 AT89S52单片机,LED 显示电路,以及调时按键电路等组成,系 统通过 LED显示数据,所以具有人性化的操作和直观的显示效果。软件方面主要包括时 钟程序、键盘程序,显示程序等。 西华大学课程设计说明书 5 本系统以单片机的汇编语言进行软件设计,为了便于扩展和更改,软件的设计采用 模块化结构,使程序设计
12、的逻辑关系更加简洁明了,以便更简单地实现调整时间及日期 显示功能。所有程序编写完成后,在 keil2软件中进行调试,确定没有问题后,在 Proteus软件中嵌入单片机内进行仿真在日新月异的 21世纪里,家用电子产品得到了迅 速发展。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有 CPU控制器 或者是单品具有便携实用,操作简单的特点。 2总体方案设计 2.1要求功能 1、 时间显示:用 4 位数码管显示当前小时和分钟,秒功能用两 LED 灯代替(每秒闪烁 一次) 。 2、 可手动设定时间。 3、 开机流程:系统有红色和蓝色指示灯,上电 10S 内,每秒红色指示灯闪烁一次,并 伴有蜂鸣
13、声,作为开机/重启提醒,此时绿色指示灯灭。 10S 后红色指示灯灭,若光线较 强则绿色指示灯亮,若光线较弱则绿色指示灯亮度减半进入节能模式。 4、具有整点报时功能(四短一长) ,可自行设定报时时间段; 2.2.单片机芯片 方案一: 采用 89C51芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间,能于 3V的超低压工作,而且与 MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不 具备 ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增 功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。 2.3显示模块 方案一: 西华大
14、学课程设计说明书 6 采用 LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样, 清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用 LED液晶显示屏。 方案二: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示 文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显 示。 2.4时钟芯片的选择 方案一:采用实时时钟芯片 直接采用单片机定时计数器提供秒信号,使用程序实现、时、分、秒计数。采用此 种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方 案。 方案二:软件控制: 利用 AT89
15、s51内部定时进行中断,配合软件延时实现时、分、秒的计时,该方案节约成 本,且能综合运用知识 2.5电路设计方案确定 综上各方案所述,对此次作品的方案选定: 以单片机 AT89C51为主控制器,采用单片 机内部定时、行列式键盘和动态 LED显示。 系统方案一如图 2.1所示: 图 2.1 方案一 系统方案二如图 2.2所示: 西华大学课程设计说明书 7 图 2.2 方案二 根据两方案图分析,方案二在方案一的基础上增添了按键控制电路保证了系统的可 控制性和使用性,同时在设计中方案二的系统稳定性更加完善,所以本设计选用的是方 案二。 3硬件电路设计 3.1硬件系统设计的概述 本电路是由 AT89C
16、51单片机为控制核心,具有在线编程功能,低功耗,能在 3V超低 压工作;时钟电路由 DS1302提供,它是一种高性能、低功耗、带 RAM的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU进行同步通信,并可采用突发方式一次传送多个字节 的时钟信号或 RAM数据。DS1302 内部有一个 31*8的用于临时性存放数据的 RAM寄存器。 可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同 时具有掉电自动保存功能;显示部份由 15个数码管,74Hs138、74ls244 构成。使用动 态扫描显
17、示方式对数字的显示。硬件的结构和可靠性直接影响着整个系统的可靠性,所 以合理的安排电路能提高电子产品的性能。 西华大学课程设计说明书 8 图 3.1 系统设计原理图 框图介绍了智能定时控制器系统设计的主要组成部分,系统主要分成核心芯片 AT89C51 单片机、电源模块、时钟模块、报警模块、复位电路模块、键盘输入模块以及 LED 数码管显示模块等七大模块,很好的实现了智能定时控制器的一些主要功能。 本电路是由 AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在 3V超低 压工作。采用内部时钟的驱动方式来驱动 AT89C51单片机工作,内部复位的方式使系统 的外围电路更加简单,减少了硬
18、件的损耗,利用俩个不同颜色的发光二极管来表示秒钟, 其他的显示电路部分由一个 4位 7段数码管构成,使用动态扫描显示方式对数字的显示, 整个系统具有使用寿命长,精度高和低功耗等特点,实现了智能定时控制器的一些主要 功能。 3.2 AT89C51单片机 AT89C51是一种低功耗、性存储器技术制造, 8k字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器, 2 个数据指针,三个 16 位定时器/计数器,一个 6向量 2级 中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C51 可降至 0Hz 静态逻辑 操作,支持 2种软件可选择节电模式。空闲模式下,CPU 停
19、止工作,允许 RAM、定时器/ 计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单 片机一切工作停止,直到下一个中断或硬件复位为止。 80C51:40 个引脚双排直插 DIP封装,大致可分为 3类:电源及时钟、控制和 I/O引脚。 西华大学课程设计说明书 9 图 3.2 89C51单片机引脚图 图 3.3 单片机片内结构图 由如下功能部件组成: 对图 3.2中的片内各部件做简单介绍。 1.CPU(微处理器) 2.数据存储器(RAM) 片内为 128个字节(52 子系列的为 256个字节) 3.程序存储器(ROM/EPROM) 89C51/89C52/89C55:4
20、K/8K/20K 字节闪存。 4. 4个并行可编程的 8位 I/O口 P1 口、P2 口、P3 口、P0 口 5. 串行口 1个全双工的异步串行口,具有四种工作方式。 6. 定时器/计数器 7. 中断系统 8. 特殊功能寄存器(SFR)共有 21个,是一个具有特殊功能的 RAM区。CPU 对各种 功能部件的控制是采用特殊功能寄存器(SFR,Special Function Register)的集中控 制方式。 3.3 单片机的定时/中断系统 51内部集成定时/计数器的基本特征: 51系列单片机内部提供 2个 16位的递增定时/计数器 T0和 T1。 可以设置为定时或者计数器工作。 有多种可选的
21、工作模式,通过 SFR-TMOD选择使用。 对应两个中断源,可用中断处理。 主要作用: 对外部脉冲计数、产生精确定时时间、作串行口的波特率发生器。 西华大学课程设计说明书 10 图 3.4 T0、T1 的结构 TMOD寄存器的 M1,M0位设置四种工作方式 模式 0:13 位定时/计数器 计数寄存器:THx 和 TLx低 5位 最大计数值:2 13: 模式 1:16 位定时/计数器 计数寄存器:THx 和 TLx 最大计数值:2 16 模式 2: 8位自动重载定时/计数器 计数寄存器:TLX 计数初值重载寄存器:THX 最大计数值 28 模式 3:仅 T0可用,将 T0拆为两个独立 8位定时器
22、 80C51的中断源 外部中断 0(INT0) 外部中断 1(INT1) T0溢出中断(TF0) T1溢出中断(TF1) 串行口中断(RI 或 TI) 触发方式设置及中断标志 7 6 5 4 3 2 1 0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 字节地址:88H 外部中断标志 IE1、IE0(用 IEx表示) 电平方式(ITX=0) ,INTx 引脚低电平时 IEx=1,响应中断后 IEx不自动清 0(INTx 引脚状态) 。 边沿方式(ITx=1) ,INTx 引脚负跳变时 IEx=1,响应中断后 IEx自动清 0。 同一优先级中的中断申请不止一个时,则有
23、中断优先权排队问题。同一优先级的中 断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示: 西华大学课程设计说明书 11 3.4显示系统 LED显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。 控制相应的管导通,就能显示出对应字符。各段 LED显示器需要由驱动电路驱动。在七段 LED显 示器 通常将各段发光二极管的阴极或阳极连在一起作为公共端。将各段发光二极管连在 一起的叫共阳极显示器,用低电平驱动;将阴极连在一起的叫共阴极显示器,用高电平 驱动。 静态显示就是每一个显示器各笔画段都要独占具有一个锁存功能的输出口线,CPU 把要显示的字形代码送到输出口
24、上,就可以使显示器上显示所需的数字或符号,此后, 即使 CPU不在去访问它,因为各笔画段借口具有锁存功能,显示的内容也不会消失。 动态显示是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。静 态显示有并行输出和串行输出两种方式。在本系统中数码管使用共阴极接法而且是用动 态显示。本设计利用一个 4位七段数码管显示时钟结果。 3.5报警电路 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的, 因此需要一定的电流才能驱动它,单片机 IO引脚输出的电流较小,单片机输出的 TTL电 平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51 增强型单片机实验 板通过
25、一个三极管 C8550来放大驱动蜂鸣器,原理图见下面图 4.2所示: 西华大学课程设计说明书 12 图 3.5 蜂鸣器驱动电路 如图 3.6所示,蜂鸣器的正极接到 VCC(5V)电源上面,蜂鸣器的负极接到三极 管的发射极 E,三极管的基级 B经过限流电阻 R1后由单片机的 P3.7引脚控制,当 P3.7 输出高电平时,三极管 T1截止,没有电流流过线圈,蜂鸣器不发声;当 P3.7输出低电 平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序 控制 P3.7脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机 P3.7引脚输出波形 的频率,就可以调整控制蜂鸣器音调,产生各种
26、不同音色、音调的声音。另外,改变 P3.7 输出电平则可以控制蜂鸣器的声音大小,这些我们都可以通过实验来显示报警器电路模 块。 3.6按键电路 按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应 的 I/O端口形一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定。 这一过程 是处于高、低电平之间的一种不稳定状态,称为抖动。抖动的持续时间长 短与开关的机 械特性有关,一般在5 10ms之间。为了避免CPU多次处理按键的一 次闭合,应采用 措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单 个按键电路,每个按 键占用一条I/O口线,每个按键的工作状态不会产生相互影
27、响,如图4.3 所示: 西华大学课程设计说明书 13 图3.6 按键电路 3.7 电源设计 在这里因设计分工和侧重点不同,电源模块用通用的 5v变压器。 从图上看 220V 交流电经过一个变压器进行降压,变压器后面由四个二极管组成一 个桥式全波整流电路,整流后就得到一个电压波动很大的直流电,所以在这里接一个 330u/F 的电解电容。 变压器输出端的 9V 电压经过桥式整流并电容滤波,在电容 C1 两端大约会有 11V 多一 点的电压,如果电容两端直接接负载,当负载变化或者交流电波动时会使 C1 两端的电 压变化很大,为得到一个比较稳定的电压因此在此处接一个三端稳压器元件。 三端稳压器是一个集
28、成电路元件,内部有三极管和电阻构成当负载电流大时内部电 阻变小,当负载电流小时内部电阻变大,这样能保持稳压器的输出电压保持基本不变, 本设计要+5V 电压,因此选用 LM7805,LM7805 最大可以输出 1A 的电流,内部有 限流式短路保护,可以很稳定的进行电流输出 图 3.7 电源电路 西华大学课程设计说明书 14 3.8 单片机最小系统 3.8.1单片机的复位电路 图 3.8 手动复位电路 3.8.2复位电路的工作原理 在书本上有介绍,51 单片机要复位只需要在第 9引脚接个高电平持续 2US就可以实 现,那这个过程是如何实现的呢? 在单片机系统中,系统上电启动的时候复位一次,当按键按
29、下的时候系统再次复位, 如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控 制其复位。 开机的时候为什么为复位 在电路图中,电容的的大小是 10uF,电阻的大小是 10k。所以根据公式,可以算出 电容充电到电源电压的 0.7倍(单片机的电源是 5V,所以充电到 0.7倍即为 3.5V),需 要的时间是 10K*10UF=0.1S。 也就是说在电脑启动的 0.1S内,电容两端的电压时在 03.5V增加。这个时候 10K电 阻两端的电压为从 51.5V减少(串联电路各处电压之和为总电压)。所以在 0.1S内, RST引脚所接收到的电压是 5V1.5V。在 5V正常工作的
30、51单片机中小于 1.5V的电压信 号为低电平信号,而大于 1.5V的电压信号为高电平信号。所以在开机 0.1S内,单片机 系统自动复位(RST 引脚接收到的高电平信号时间为 0.1S左右)。 按键按下的时候为什么会复位 在单片机启动 0.1S后,电容 C两端的电压持续充电为 5V,这是时候 10K电阻两端 的电压接近于 0V,RST 处于低电平所以系统正常工作。当按键按下的时候,开关导通, 这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容 开始释放之前充的电量。随着时间的推移,电容的电压在 0.1S内,从 5V释放到变为了 1.5V,甚至更小。根据串联电路电压为各
31、处之和,这个时候 10K电阻两端的电压为 3.5V,甚至更大,所以 RST引脚又接收到高电平。单片机系统自动复位。 在系统运行的过程中,有时可能对系统需要进行复位,为了避免对硬件系统经常加 电和断电造成的损害,设计了手动的复位电路。如图 4-2所示。这种电路的设计,在系 西华大学课程设计说明书 15 统的运行过程中需要复位时,只需使开关闭合,在 RST端就会出现一定时间的高电平信 号,从而使单片机实现复位。 3.9 单片机系统的晶振电路 单片机必须在时钟的驱动下才能进行工作。MCS-51 系列单片机内部都有一个时钟振 荡电路,只需外接晶振源,就能产生一定频率的时钟信号送到单片机的内部的各个单元
32、, 决定单片机的工作速度。图 4-3就是内部时钟工作方式的电路图,这是一种常用的方式。 这种方式是外界振荡源,本设计就采用这种外接晶振的方法。电路中的两个电容的作用 有两个:一是帮助振荡器起振(C1 C2 的值大,起振的速度慢;反之,速度快。);二 是对振荡器的频率起到微调的作用(C1 C2 的值大,频率略有减少,反之,频率略有提 高)。C1 C2 的值采用 30pF,如图 4.5.2所示: 图 3.9 单片机内部晶振电路连接图 内部时钟原理图 (就是一个自激振荡电路) 在内部方式时钟电路中,必须在 XTAL1和 XTAL2引脚两端跨接石英晶体振荡器和两 个微调电容构成振荡电路,通常 C1和
33、C2一般取 30pF,晶振的频率取值在 1.2MHz12MHz 之间。对于外接时钟电路,要求 XTAL1接地,XTAL2 脚接外部时钟,对于 外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于 12MHz即可。晶 体振荡器的振荡信号从 XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个 两相时钟信号 P1和 P2供单片机使用。时钟信号的周期称为状态时间 S,它是振荡周期 的 2倍,P1 信号在每个状态的前半周期有效,在每个状态的后半周期 P2信号有效。CPU 就是以两相时钟 P1和 P2为基本节拍协调单片机各部分有效工作的。 2.指令时序 我们将单片机的基本操作周期称作机
34、器周期,一个机器周期由 6个状态组成,每个 状态由两个时相 P1和 P2构成,故一个机器周期可依次表示为 S1P1,S1P2,S6P1,S6P2,即一个机器共有 12个振荡脉冲。为了大家便于分析 CPU 的时序,在此先对以下几个概念作一介绍。 (1)振荡周期 振荡周期指为单片机提供定时信号的振荡源的周期或外部输入时钟 的周期。 (2)时钟周期 时钟周期又称作状态周期或状态时间 S,它是振荡周期的两倍,它 分为 P1节拍和 P2节拍,通常在 P1节拍完成算术逻辑操作,在 P2节拍完成内部寄存器 之间的传送操作。 (3)机器周期 一个机器周期由 6个状态组成,如果把一条指令的执行过程分作几 个基本
35、操作,则将完成一个基本操作所需的时间称作机器周期。单片机的单周期指令执 行时间就为一个机器周期。 (4)指令周期 指令周期即执行一条指令所占用的全部时间,通常为 14 个机器周 期。 西华大学课程设计说明书 16 在图 2.12中给出了 MCS51 单片机的典型取指、执行时序。由图可知,在每个机器 周期内,地址锁存信号 ALE两次有效,一次在 S1P2与 S2P1之间,另一次在 S4P2和 S5P1之间。 从图 2.12我们可以看出,对于单周期指令,当操作码被送入指令寄存器后,指令的 执行从 S1P2开始。若对于双字节单周期指令,则在同一机器周期的 S4期间读入第二个 字节。如果是单字节单周期
36、指令,则在 S4期间仍然保持读操作,但所进行的读操作为无 效操作,同时程序计数器 PC并不加 1。在图 2.12(a)和(b)给出了单字节单周期和双 字节单周期指令的时序,这些操作都在 S6P2结束时完成指令操作。在图 2.12(c)中给 出了单字节双周期指令时序,在两个机器周期内进行了四次读操作,由于是单字节指令, 故后面的三次读操作是无效的。 在图 2.12(d)中给出了访问外部数据存储器指令 MOVX 的时序,它是一条单字节双周期指令。在执行 MOVX指令期间,外部数据存储器被访问且 选通时跳过两次取指操作,其中在第一个机器周期 S5开始送出片外数据存储器的地址后, 进行读、写数据,在此
37、期间并无 ALE信号,故第二周期不产生取指操作。 4 软件部分设计 4.1主程序 主程序主要有main()组成通过对相关子程序的调用,实现对时间的设置与修改、LCD 显示等主 要功能。相关的调整是靠对功能键的判断来实现的。我们用流程框图来表示,如S图5.1所示: 西华大学课程设计说明书 17 图 4.1 主程序框图 4.2初始化程序 void main() /主函数 TMOD|=0X11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; 4.3显示程序 handle_1(shi); handle_2(fen);
38、 display_1(); /显示时钟初始值 display_2(); /显示分钟初始值 while(1) scan_key(); /调用按键扫描函数 time_1(); /调用时钟函数 handle_1(shi); /对小时拆分 handle_2(fen); /对分钟拆分 display_1(); /显示小时 display_2(); /显示分钟 4.4 中断程序 EA=0; /关中断 if(msec1!=0x28) msec1+; /到 10 毫秒否,不到则 msec1 加 1 else msec1=0; if(msec2!=100)msec2+; /到 1 秒否,不到则 msec2 加
39、1 else if(rtimbit=1)count+; msec2=0; 西华大学课程设计说明书 18 if(clockbuf2!=59) clockbuf2+; /到 1 分否,不到则 clockbuf2加 1 else clockbuf2=0; if(clockbuf1!=59) clockbuf1+; / 到 1 小时否,不到则 clockbuf1加 1 else clockbuf1=0; if(clockbuf0!=23) clockbuf0+; / 到 24 时否,不到则 clockbuf0加 1 else clockbuf0=0; EA=1; /开中断 5系统调试 5.1软件调试概
40、述 单片机系统经过总体设计,完成了硬件和软件设计开发。通过软件和硬件相结合系 统即可运行。但编制好的程序或焊接好的线路不能按预计的那样正常工作是常见的事, 经常会出现一些硬件、软件上的错误,这是软件和硬件开发者经常遇见的,这就需要通 过调试来发现错误并加以改正。调试可分为硬件调试和软件调试。本设计系统的已经在 PC机上用模拟开发软件进行了检测和调试,并运行成功,最后进行实物图的硬件组装与 调试,这样就给开发者在提供了方便。 5.2软件调试 本设计是在 Proteus软件和 Keil2软件相结合调试的,完全用仿真软件在 PC机上对 目标电路原理图和程序进行检测和调试。调试过程中单片机相应输入端由
41、通用键盘和鼠 标设定,运行状态、各寄存器状态、端口状态等都可以在指定的窗口区域显示出来,以 确定程序运行有无错误。 目标程序纠错:该阶段工作通常在目标程序编辑时就完成。一般来说,仿真软件能 为用户输入的程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢出等 错误。 西华大学课程设计说明书 19 整体程序调试:即把各子程序整体连起来进入到综合电路调试,看是否能实现预计 的功能显示。在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,数据缓 冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出,输入输 出状态是否正常等。 234567891RP1ESACK-8 D1
42、LED-YELOW2 LED-YELOW R110R210 R310 R410 R510D3LED-RED D4LED-REDD5LED-RED Q1NPNQ2NPN Q3NPN Q4NPN BUZ1ER 图 5.1 定时器调试的结果 234567891RP1ESACK-8 D1LED-YELOW2 LED-YELOW R110R210 R310 R410 R510D3LED-RED D4LED-REDD5LED-RED Q1NPNQ2NPN Q3NPN Q4NPN BUZ1ER 图 5.2 定时器调试的结果 西华大学课程设计说明书 20 6 结 论 硬件系统关系到所要设计的电子产品好怀,如系
43、统抗干扰性等,所以要合理的安排 尽量减少干扰提高性能。单片机是很容易受干扰的控制器,当采用外部晶振时,应尽量 让其靠近单片机减少对其干扰,防止程序乱飞现象。同时还可以采用隔离等方式减少干 扰,硬件系统设计的好坏很大部分来源于经验,所以我们要有动手的好习惯。 软件设计是核心部分,具有多样化,灵活性高,易移植等优点,要深深理会各指令 的含义才能更加熟练应用,中断的合理利用可以减少 CPU利用资源,具有执行效率高等 优点,本设计用到定时器中断以减少对 CPU的占用,更好的处理其他功能。软件的设计 大部分采用模块化设计的方法以方便调试,并使其可读性大大增强,方便更改和移植。 不知不觉,二个周的课程设计
44、设计结束了。我的课程设计论文已整理完毕,电路调 试进展良好。课程设计是将我所学的理论和实践相结合。首先我要感谢陈老师的大力帮 助和支持。在整个设计过程当中,为我的课程设计带来了很大方便。同时在我完成课程 设计的过程中提供了很多指导性的意见,使我受益匪浅。在此,我衷心感谢老师给予我 的帮助和教育。 此外,还要衷心感谢其他所有对本课题的研究和论文撰写有过帮助的同学。 最后,我要感谢学校能给我这次学习的机会,课程设计整个过程给了我这样一个锻 炼的机会,使我加深了对以前知识的理解和巩固,拓宽了知识面,也提高了我对所学知 识的综合应用能力。使用能够更加熟悉的运用所学的知识。 西华大学课程设计说明书 21
45、 参 考 文 献 1王静霞主编 单片机应用技术(C 语言版) 北京电子工业出版社 2012.5 2胡辉.主编 单片机应用系统设计与训练 北京中国水利水电出版社 2004.9. 3丁亚涛主编 C 语言程序设计 高等教育出版社 2006.8 4王幸之主编 AT89系列单片机原理与接口技术 高等教育出版社 2004.7 5王迎旭主编单片机原理与应用 北京机械工业出版社 2004.3 6何宏主编单片机原理与接口技术 北京国防工业出版社 2006.7 7李光 单片机基础. 北京:北京航空航天大学出版社,1994 8廖常初.现场总线概述.电工技术,1999. 9倪晓军.单片机原理与接口技术教程.北京:清华
46、大学出版社,2009 10姚年春 向华 Protel99SE基础教程. 北京.人民名邮电出版社,2009 11韩颖; Proteus 在单片机技术实训中的应用J;中国科教创新导刊;2008 年 31期 12周灵彬 PROTEUS 的单片机教学与应用仿真J.单片机与嵌入式系统应用。 13爱问资料共享网 西华大学课程设计说明书 22 附录 1:系统主程序 void main() /主函数 TMOD|=0X11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; shi=12;fen=59;miao=0;green=0
47、;beep=0; /十分秒的初始值 handle_1(shi); handle_2(fen); display_1(); /显示时钟初始值 display_2(); /显示分钟初始值 while(1) scan_key(); /调用按键扫描函数 time_1(); /调用时钟函数 handle_1(shi); /对小时拆分 handle_2(fen); /对分钟拆分 display_1(); /显示小时 display_2(); /显示分钟 西华大学课程设计说明书 23 /函数名:clock /函数功能:定时器 T0 定时中断,interrupt 1 /形式参数:无 /返回值:无 void clock() interrupt 1 EA=0; /关中断 if(msec1!=0x28) msec1+; /到 10 毫秒否,不到则 msec1 加 1 else msec1=0; if(msec2!=100)msec2+; /到 1 秒否,不到则 msec2 加 1 else if(rtimbit=1)count+; msec2=0; if(clockbuf2!=59) clockbu