毕业设计新颖60秒LED旋转电子钟_第1页
毕业设计新颖60秒LED旋转电子钟_第2页
毕业设计新颖60秒LED旋转电子钟_第3页
毕业设计新颖60秒LED旋转电子钟_第4页
毕业设计新颖60秒LED旋转电子钟_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕毕 业业 设设 计计题目 新颖 60 秒 LED 旋转电子钟 系别 机电系 专业 班级 姓名 学号 指导教师 日期 设计任务书设计题目设计题目新颖 60 秒 LED 旋转电子钟设计要求:设计要求:1用单片机设计一个新颖 60 秒 LED 旋转电子钟;2.该电子钟具有停(掉)电保护,年计时误差小于 30 秒。还应具有定闹,整点报时功能。3.设计完成该功能的硬件电路;4.设计完成上述功能的相应软件;设计进度要求:设计进度要求:第一周:了解题目、弄清题目的要求;第二周:查找相关书籍,了解各个元件、软件的使用方法及注意事项;第三周:设计硬件原理图;第四周:设计软件系统;第五周:编写所需程序;第六周

2、:调试程序并纪录相关的数据和错误;第七周:写毕业论文草稿并修改;第八周:毕业答辩。指导教师(签名):指导教师(签名): 摘 要现在市场上也出现了一些电子钟,它以六只 LED 数码管来显示时分秒,与传统的以指针显示秒的方式不同,违背了人们传统的习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。针对以上存在的问题,我们设计了一款采用 LED 显示器件显示的电子时钟,有效克服了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以 60 只发光管实现秒显示,接近于

3、传统的秒针来显示秒的形式,用户容易接受,而且美观大方。另加七只装饰用的 LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。关键词: 电子钟,单片机,AT89C51,汇编语言,模块化目 录前 言 .11 总体方案设计 .31.1 系统框图.31.2 系统功能介绍 .31.3 计时控制方案.41.4 显示控制方案 .41.5 键盘控制方案 .41.6 软件总体设计方案 .52 硬件设计.62.1 AT89C2051 单片机的介绍 .62.2 AT89C2051 单片机引脚说明 .62.3 单片机硬件资源分配.82.4 AT89C2051 单片机的附属电路 .82.4.1 振荡电路.82.

4、4.2 复位电路.92.5 CD4017 的功能 .92.6 CD4069 的功能 .122.7 七段 LED 显示工作原理.123 软件设计 .153.1 系统主程序设计.153.2 定时中断程序设计.153.3 节电模式程序设计.163.4 整点报时程序设计.173.5 误差消除程序设计.184 系统调试 .204.1 在伟福中的调试.204.2 在 KEIL 中的调试.224.3 硬件故障检查.244.3.1 单片机不工作的硬件检查.244.3.2 数码管显示的问题及解决方法.244.3.3 二极管循环点亮的问题.245 结论 .25致 谢 .26参考文献 .27附录 A 硬件电路板 .

5、28附录 B 硬件原理图.29附录 C 材料清单.30前 言现在计算机系统已明显地朝巨型化、单片化、网络化三个方向发展。巨型化发展的目的在于不断提高计算机的运算速度和处理能力,以解决复杂系统计算和高速数据处理,比如系统仿真和模拟、实时运算和处理。单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算简称单片机。单片机的内部硬件结构和指令系统主要是针对自动控制应用而设计的所以单片机又称微控制器 MCU(Micro Controller Unit) 。用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(Embed

6、ded MCU) 。单片机自 20 世纪70 年代问世以来,以其鲜明的特点得到迅猛发展,已广泛应用于家用电器、智能玩具、智能仪器仪表、工业控制、航空航天等领域,经过 30 多年的发展,性能不断提高,品种不断丰富,已经形成自动控制的一支中坚力量。据统计,我国的单片机年容量已达 13亿片,且每年以大约 16的速度增长,但相对于国际市场我国的占有率还不到 1。这说明单片机应用在我国有着广阔的前景。对于从事自动控制的技术人员来讲,掌握单片机原理及其应用已经成为必不可少的学习任务。单片机经过 30 多年的发展,已经形成一个规格齐全、品种繁多的大家族,用户有非常大的选择余地。下面为读者简单介绍目前市面上常

7、见的主流单片机。 单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有重要的用途。其主要的用途可以分为以下方面。显示:通过单片机控制发光二极管或是液晶,显示特定的图形和字符。机电控制:用单片机控制机电产品做定时或定向的动作。检测:通过单片机和传感器的联合使用,用来检测产品或者工况的意外发生。通信:通过 RS-232 串行通信或者是 USB 通信,传输数据和信号。科学计算:用来实现简单的算法。那么单片机是不是解决上述应用的唯一选择呢?当然不是!目前,在自动控制中,一般有三种选择,分别是嵌入式微机、DSP 和单片机。单片机最明显的优点是价格便

8、宜,从几元人民币到几十元人民币。这是因为这类芯片的生产量很大,技术也很成熟。其次,单片机的体积也远小于其他两种方案。单片机本身一般用 40 引脚封装,当然功能多一些的单片机也有引脚比较多的,如 68 引脚,功能少的只有 10 多个或 20 多个引脚,有的甚至只有 8 只引脚。当然,单片机无论在速度还是容量方面都小于其他两种方案,但是在实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能。例如,控制电冰箱的控制器就不需要使用嵌入式系统,用一片 51 就可以轻松实现。所以应用的关键是看能否够用,是否有很好的性能价格比。51 系列的单片机已经面世十多年,依然没有被淘汰,还在不断发展中,这就说

9、明是他有广阔的应用前景。目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。要知道当前的时间,必须先开灯,故较为不便。而我所设计的电子钟在晚上完全可以看见,不用开灯就能看见。这个新颖 60 秒旋转电子钟是以单片机为核心设计的,本设计采用的是 ATMEL 公司的 AT89C2051 芯片,美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 2K bytes 的可反复擦写的只读程序存储器(PEROM)和 128 bytes 的随机存取数据存储器(RAM) ,器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置

10、用 8 位中央处理器和 Flash 存储单元,功能强大。在这里,我们设计的是一个可以设置新颖 60 旋转电子钟。1 总体方案设计1.11.1 系统框图系统框图按照设计要求,本电子钟需要由单片机 AT89C2051、显示驱动器(上拉电阻) 、七段数码管、60 秒旋转译码驱动电路(CD4017 和 CD4069 组成) 、电源等组成。如图 1.1 所示图 1.1 系统框图1.21.2 系统功能介绍系统功能介绍电子钟的周边 60 只发光管顺时旋转来显示秒,中间四只 LED 数码管用于显示时间,中下方的七只 LED 灯顺时旋转(如图 1.2),供装饰用。其主要功能有:整点报时;四只 LED 数码管显示

11、当前时分;每隔一秒钟周边的 60 只LED 发光管旋转一格,装饰用的 LED 每隔一秒旋转一次。当发生停电事件时,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,同时又保证了 CPU 继续计数,不至于因停电而时钟停止运行。当恢复供电后,系统自动恢复工作状态,不影响计时。图 1.2 电子钟外表1.31.3 计时控制方案计时控制方案利用 MCS-51 内部的定时器/计数器进行定时,配合软件延时实现到计时。该方案节省硬件成本,切能够使读者在定时器/计数器的使用、中断及程序设计方面得到锻炼与提高,1.41.4 显示控制方案显示控制方案单片机显示系统显示分为静态示和动态

12、显示。静态显示由于占用较多的接口,在单片机设计中常采用串行扩展来完成。该方案占用接口资源多,显示亮度由保证,但硬件开销大,电路复杂,信息刷新速度慢,实用于并行接口资源较少以及对显示没有要求的场合。LED 动态显示硬件连接简单,但动态扫描的显示方式需占用 CPU 较多的时间,在该系统中由于单片机除了扫描 AT89C2051 芯片外没有太多的实时测控任务,故选用动态扫描方式。 1.51.5 键盘控制方案键盘控制方案键盘分为独立式键盘和行列式键盘,独立式键盘接口电路配置灵活,硬件结构简单,工作可靠但每个按键必须占用一跟 I/O 接口线,I/O 接口线浪费较大,在单片机应用系统中,有时只需要几个简单的

13、按键向系统输入信息,可将按键直接在一根 I/O 接口线上,故只在按键数量不多时采用。而行列式键盘每条行线与列线在交叉处不直接相通,而是通过一个按键加以连接,当按键较多时可采用行列式键盘以节省 I/O 接口。本设计采用三个按键,所以这里选用独立式键盘。如图 1.3 所示图 1.3 独立式键盘1.61.6 软件总体设计方案软件总体设计方案1设置闹钟时间,小时,分钟的缓冲区,把闹钟时间的缓冲区设置在 72H73H 中,小时的缓冲区设置在 70H73H 中,分钟的缓冲区设置在 70H71H 中.2. 要有键盘扫描子程序,当按下时间调整键后,送时间调整键处理程序到显示子程序,以便显示.当按下闹钟设置键后

14、,送闹钟设置键处理程序到显示子程序,以便显示.3.要有停电检测子程序,若停电,则调用停电检测子程序,将系统进入低功耗状态,用电池电压维持单片机计时工作,若不停电,则调用时分显示子程序.4.要有定闹子程序,若设置闹钟时,则显示定闹的时间。5.要有节能子程序,在白天不调用节能子程序,使数码管正常发光。到晚上调用节能子程序,使数码管变暗。2 硬件设计2.12.1 AT89C2051AT89C2051 单片机的介绍单片机的介绍AT89C2051 单片机是 51 系列单片机的一个成员,是 8051 单片机的简化版。它是美国ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 2K byt

15、es 的可反复擦写的只读程序存储器(PEROM)和 128 bytes 的随机存取数据存储器(RAM) ,器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置用 8 位中央处理器和 Flash 存储单元,功能强大。 AT89C2051 单片机可为用户提供许多高性价比的应用场合。AT89C2051 单片机的主要性能参数有:1. 与 MCS-51 产品指令系统完全兼容2. 2k 字节可重擦写闪存速存储器3. 1000 次擦写周期4. 2.7V-6V 的工作电压范围5. 全静态操作:0Hz-24MHz6. 两级加密程序存储器7. 128*8 字节内部 R

16、AM8. 15 个可编程 I/O 口线9. 2 个 16 位定时/计数器10.6 个中断源11.可编程串行 UART 通道12.可直接驱动 LED 的输出端口13.内置一个模拟比较器14.低功耗空闲和掉电模式2.22.2 AT89C2051AT89C2051 单片机引脚说明单片机引脚说明AT89C2051 如图 2.1 所示是一个有 20 个引脚的芯片,引脚配置如图 2.1 所示。与8051 相比,AT89C2051 减少了两个对外端口(即 P0、P2 口) ,使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。AT89C2051 芯片的 20 个引脚功能为:图 2.1 单片机 AT89C2

17、051 引脚图VCC 电源电压。GND 接地。RST 复位输入。当 RST 变为高电平并保持 2 个机器周期时,所有 I/O 引脚复位至“1” 。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P1 口 8 位双向 I/O 口。引脚 P1.2P1.7 提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0 和 P1.1 需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1) ,P1 口输出缓冲器能接收 20mA 电流,并能直接驱动 LED 显示器;P1 口引脚写入“1” 后,可用

18、作输入。在闪速编程与编程校验期间,P1 口也可接收编码数据。P3 口 引脚 P3.0P3.5 与 P3.7 为 7 个带内部上拉的双向 I/0 引脚。P3.6 在内部已与片内比较器输出相连,不能作为通用 I/O 引脚访问。P3 口的输出缓冲器能接收 20mA 的灌电流;P3 口写入“1”后,内部上拉,可用输入。P3 口也可用作特殊功能口,其功能见表 2.1 所示。P3 口同时也可为闪速存储器编程和编程校验接收控制信号。表 2.1 P3 口特殊功能P3 口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断 0)P3.3(外部中断 1)P3.4T0(定时器 0

19、外部输入)P3.5T1(定时器 1 外部输入)2.32.3 单片机硬件资源分配单片机硬件资源分配7 段数码管共四个,分别用来显示小时和分钟的个位和十位。P1.0P1.7 接数码管的 adpP3.0 接小时十位数码管的 comP3.1 接小时个位数码管的 comP3.4 接分钟十位数码管的 comP3.5 接分钟个位数码管的 comP3.2 接按键用于小时加 1P3.3 接按键用于分钟加 1P3.7 接 4017 的 INE 端2.42.4 AT89C2051AT89C2051 单片机单片机的附属电路的附属电路单片机附属电路主要有晶体振荡电路和复位电路。2.4.12.4.1 振荡电路振荡电路石英

20、晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。本设计所用的晶体振荡电路如图2.2所示:图 2.2 晶体振荡电路此晶振电路所选用的石英晶振频率为12MHz。时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是(1/12s),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1s;若采用4MHz的时钟频率,则时钟周期为250s。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种

21、机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周期频率范围也不一定相同。设计中使用到的单片机的时钟范围是12MHz或11.0592MHz。2.4.22.4.2 复位电路复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以必须弄清楚AT89C51型单片机复位的条件、复位电路和复位后状态。单片机复位的条件是:必须使RST/Vpd或RST引脚加上持续两个机器周期

22、(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每个机器周期为1s,则只需2s以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常用的复位电路如图2.3所示:图2.3 复位电路2.52.5 CD4017CD4017 的功能的功能CD4017集成电路是十进制计数/时序译码器,共有10个译码输出Q0Q9;CP、CR、INH输入端。时钟输入端的斯密斯触发器具有脉冲整形功能,对输入时钟上升和下降时间无限制。INH为低电平时,计数器在时钟上升沿计数;反之,计数功能无效。CR为高电平时,计数器清零。CD4017,提供了快速操作、2输入译码输出。防锁选通,保证了正常的计数

23、顺序。译码输出一般为低电平。只有在对应时钟周期内保持高电平。在每10个时钟输入周期CO信号完成一次进位,并用作多级计数链的下级,脉动时钟。本设计中用的封装形式是双列直插式。CD4017功能引脚与时序图如图2.4所示。 图 2.4 CD4017 功能引脚与时序图真值表如表2.2所示。表2.2 CD4017真值表为实现对发光二极管的驱动,将每一个译码输出端口接一只发光二极管,并将二极管串联限流电阻后接地。当译码端口 Q0Q9 中任一端口为高电平,则对应的发光二极管点亮,如图 2.5(左)所示。仔细考查 CD4017 的功能,可发现其 10 个输出的高电平是相互排斥的,即任一时刻只有一只发光二极管点

24、亮,因此可将图 2.5(左)电路进一步简化为如图 2.5(右)所示,从而简化电路设计。图 2.5 CD4017 控制发光二极管原理图在本电子钟设计中,每秒点亮一个发光二极管,循环点亮一周共需 60 个发光二极管,若用上述的 6 片 CD4017 实现驱动,显然电路复杂。为此我们选用两片 CD4017 和一片 6反相器,采用“纵横双译码”技术,巧妙地实现 60 秒旋转译码驱动,其中一片接成 10进制,一片接成 6 进制,实现 610=60 的功能,具体连接方法如图 2.6 所示。图 2.6 发光二极管“纵横双译码”循环点亮 LED 原理图将周期为 1 秒的输入脉冲作为其中一片 CD4017 的时

25、钟脉冲,而此片的级联进位输出端(QC)作为另一片的时钟输入,并将 Q6 与复位端相连。在两片译码输出端交叉点上接入发光二极管,构成 610 矩阵。根据 CD4017 时序特点,在初始状态,作为高位(纵)的 CD4017 译码器输出端口 Q0 处于高平,经反相器反相后为低电平。当作为低位(横)的 CD4017 译码器输出端口 Q0Q9 依次输出高电平后,则对应的二极管 LD1LD10 依次点亮;此后由于 QC端的进位,高位 CD4017 译码输出端口 Q1 输出高电平,反相后输出低电平,当低位的 CD4017 译码输出端口 Q0Q9 依次输出高电平后,二极管 LD11LD20 依次点亮。如此往复

26、,直至高位 Q6 向复位端输入高电平,CD4017 复位,60 秒循环点亮重新开始。2.62.6 CD4069CD4069 的功能的功能CD4069 为六反向器。当一端输入为高电平时,另一端输出为低电平。CD4069 的引脚封装如图 2.7 所示:图 2.7 CD4069 的引脚图2.72.7 七段七段 LEDLED 显示工作原理显示工作原理由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED 有共阴极和共阳极两种。如图 2.8 所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V 的电压。一位显示器由 8 个发光二极管组成

27、,其中 7 个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为 dp 发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段 LED 不被损坏,需外加限流电阻。R8R8+5Vabcdefgdpabcdefgdpe1d2GND3c4dp5b6a7GND8f9g10dpabcdefg(a)(b)(c)图 2.8 LED 数码管结构原理图众所周知,LED 显示数码管通常由硬件 7 段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件

28、完成从数字到显示码的转换。从 LED 数码管结构原理可知,为了显示字符,要为 LED 显示数码管提供显示段码,组成一个“8”字形字符的 7 段,再加上 1 个小数点位,共计 8 段,因此提供给 LED数码管的显示段码为 1 个字节。各段码位与显示段的对应关系如表 2.3 所示。表 2.3 各段码位的对应关系段码位D7D6D5D4D3D2D1D0显示段dpgfedcba需说明的是当用数据口连接 LED 数码管 adp 引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。通常数据口的 D0 位与 a 段连接,D1 位与 b 段连接,D7 位与 dp 段连接,表 2.4 为用于 LED 数码管

29、显示的十六进制数和空白字符与 P 的显示段码。根据 AT89C2051 单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将 AT89C2051 的 P1.0P1.7 分别与共阳数码管的 ag 及 dp 相连,高电平的位对应的LED 数码管的段暗,低电平的位对应的 LED 数码管的段亮,这样,当 P0 口输出不同的段码,就可以控制数码管显示不同的字符。例如:当 P0 口输出的段码为 1100 0000,数码管显示的字符为 0。表 2.4 LED 显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH

30、3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:(1)本表所列各字符的显示段码均为小数点不亮的情况。 (2) “空白”字符即没有任何显示。数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解决多位 LED 数码管的“段控”和“位控”问题,本电路的“段控” (即要显示的段码的控制)通过 P0 口实现;而每一位的公共端,即 LED 数码管的“位控” ,则由 P3 口控制。这种连接方式由于多位字段

31、线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过 PNP 三极管的导通与截止来控制,即三极管处于“开关”状态。系统的时分显示部件由 4 只 7 段共阳 LED 数码管构成,前两只用于时的显示,后两只用于分的显示。值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只 LED 数码管倒置摆放,这样就形成了两个很自然的闪烁点。与此同时,为了能使两点显示能够形象的表示

32、时钟“秒”的变化,设计时,将两个点由 P1.7 单独控制,每隔一秒使 P1.7 发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒。3 软件设计 本系统的软件系统主要可分为主程序和定时器中断程序两大模块。在程序过程中,加入了抗干扰措施。下面对各个模块作介绍。3.13.1 系统主程序设计系统主程序设计主程序的功能是完成系统的初始化,在显示时间之前,对系统是否停电状态进行检测;若停电,将系统进入低功耗状态,用电池电压维持单片机计时工作,但此时不显示时间,用节省用电;若不停电,则将时分发送显示。程序流程如图 3.1 所示系统参数初始化设定闹钟?整点时间?开始N调整时间?时间显示、等待定时中断

33、时间调整子程序YN定闹设置子程序YN定闹时间到?发“嘀”一声YN闹铃一分钟Y图 3.1 系统主程序流程图3.23.2 定时中断程序设计定时中断程序设计中断程序(如图 3.2 所示)完成时间计数,时间调整,误差消除等功能。中断采用AT89C2051 内部 T0 中断实现,定时时间为 125ms,当时间到达 125ms8,即 1 分钟时,分计数缓冲器 MINBUFFER 增加 1,到达 1 小时,则时计数缓冲器 HOURBUFFER 增加 1,并将分、时的个位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达60min、24h 时,则对它们清零,以便从新计数。在中断设计中,还通过软件实现了

34、累计误差消除功能,使整个系统时间的精确度得到保证。NNYY中断返回整点报时否整点报时YN定时器中断是否到1秒秒指针步进一次是否整分整分旋转复位调整当前时分积累误差消除图 3.2 定时中断程序3.33.3 节电模式程序设计节电模式程序设计首先判断现在时间是否为 7 点以前 21 点以后,如果是 7 点以前 21 点以后,那么就调用晚上子程序。如果不是,则调用白天子程序。流程图如图 3.3 所示START1: MOV A , HBUFF ; 显示时,7 点以前及 21 点以后亮度调暗 SUBB A , #7H JC START2 MOV A , HBUFF SUBB A , #21H JNC ST

35、ART2 ACALL DISPLAY ACALL ZDBS AJMP START3START2: ACALL NIGHTDISPLAY图 3.3 节电模式程序流程图3.43.4 整点报时程序设计整点报时程序设计当响应定时中断时,先判断分是否为 60,若不是则返回子程序。若是则继续判断秒是否为 60,若不是则返回子程序。若是则小时加 1 并蜂鸣 0.5s。流程图如图 3.4 所示MOV A , MBUFF ;在整点时,响半秒 JNZ ZDBSEND MOV A , SBUFF CJNE A , #3CH , ZDBSEND CLR P3.2 ACALL DL0FIVE SETB 图 3.4 整点

36、报时程序流程图3.53.5 误差消除程序设计误差消除程序设计首先对定时器 1 进行初始化,然后判断是否有按键按下。如果是 P3.2 的按键按下了,则 keynum1 中的数加 1.否则将 keynum2 中的数加 1.最后判断 keynum1 或 keynum2 中的数是否为 5,如果是 5 则将 keynum1 或 keynum2 清零时间加快 0.5s.流程图如图 3.5 所示图 3.5 误差消除程序流程图INTERT1:NOP MOV TH1 , #3CH ;T1 置初值,进行 100ms 计时,用于调整时间 MOV TL1 , #0B0H PUSH ACC PUSH PSW CLR E

37、T0 CLR ET1 ;关 T1 中断 MOV A , NUMT1 INC A MOV NUMT1 , A ;中断一次则相应的增加 NUMT1 CJNE A , #5 , INTERT1NEXT ;每中断五次,即半秒,都增加 KEYNUMT1 MOV A ,KEYNUMT1 INC A MOV KEYNUMT1 , A MOV NUMT1 , #00H ;NUMT1 已经是 5 了,则处理过 KEYNUMT1 后,重置NUMT1INTERT1NEXT:NOP MOV A , NUMT2 ;中断一次则相应的增加 NUMT1 INC A MOV NUMT2 , A CJNE A, #5,ENDIN

38、TERT1 ;每中断五次,即半秒,都增加 KEYNUMT1 MOV A , KEYNUMT2 INC A MOV KEYNUMT2 , A MOV NUMT2 , #00H ;处理过 KEYNUMT1 后,重置 NUMT1ENDINTERT1: SETB ET1 SETB ET0 POP ACC POP PSW RETI4 系统调试4.14.1 在伟福中的调试在伟福中的调试完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个单片机系统,其运行是软硬件相结合的,因此,软硬件的调试也是绝对不可能分开的。首先在

39、伟福中进行调试,打开伟福仿真软件的界面,对仿真器进行参数设置。图 4.1 仿真器的选择我们所选的是8751的仿真器,在目标生成文件中选择生成BIN和HEX文件(即二进制和十六进制文件)其设置如图4.2所示,设置完成后点“好”就可以了。图 4.2 目标文件的选择界面在伟福中比较常见的错误有符号为定义的现象,如下图 4.3 所示。图 4.3 调试界面这种错误是由于在输入程序时,可能在调用的子程序前忘记写标号了。只要在子程序前输入标号即可解决。编译成功如下图 4.4 所示图 4.4 调试界面除了忘记输入标号以外,还有一些错误象指令的输入错误,直接地址应是两位十六进制数表示,但用了四位表示。在中断子程

40、序的末尾应该有 RETI 但是没有造成的错误等。4.24.2 在在 KeilKeil 中的调试中的调试在伟福内调试通过以后,再在Keil中下载到实验箱上进行验证,显现出所要求的效果。而在Keil中也要进行一些参数的设置,首先打开Keil仿真软件,首先要新建一个项目,点菜单ProjectNew Project,在弹出的对话框中选择保存的路径并输入项目名称“电子钟”后保存,然后在弹出新的项目窗口中选择参数,其参数的设置如下,由于我们使用的是Atmel公司的芯片,所以要选Atmel后确定。如图4.5所示:图4.5 KEIL里面的设备选择界面在弹出的对话框中选择AT89C51这个芯片,确定。如图4.6

41、所示:图4.6 CPU选择界面然后开始设置它的参数值,如图4.7所示:图4.7 晶振频率的选择界面在Xtal中输入频率为110592MHZ,然后再选Debug这个标签,选中第二个Use复选框后点击Setting在弹出的对话框中选择Baudrate这一项,设置它的参数为38400,后OK。如图4.8所示:图4.8 串行通讯参数设定界面把以上的参数设置完成以后把程序添加进来编译,编译通过后接上把编好的程序通过单片机编程器写入单片机里。4.34.3 硬件故障检查硬件故障检查4.3.14.3.1 单片机不工作的硬件检查单片机不工作的硬件检查1检查电源,检测电源是否供电正常。单片机的正常工作电压是 5V

42、,不能高过5.5V。2检查晶振是否起振。主要检查 XTAL1 与 XTAL2 之间的电压。3检查 EA 非是否接高电平。4检查复位电路是否接的正确。5仔细检查程序。如果程序出错单片机也不会工作。4.3.24.3.2 数码管显示的问题及解决方法数码管显示的问题及解决方法1检查数码管是否能正常工作。检查方法是用锂电池的一个极性接数码管的 COM 端(如果是共阳极,将锂电池的负极接 COM 端。如果是共阴极,将锂电池的正极接 COM 端) ,另一端接 a-dp 的任一端,看数码管的断码是否能亮。2检查接数码管位码的三极管是不是坏的。3如果显示的太暗,可能是限流电阻选择较大。4在本设计中,如果显示 4

43、 位都不亮或显示不正常,要检查程序。4.3.34.3.3 二极管循环点亮的问题二极管循环点亮的问题1如果二极管不循环点亮,首先检查 P1.7 是否有脉冲输出。2检查 CD4017、CD4069 是否供电。3检查 CD4017、CD4069 之间是否连接正确。特别是纵横双译码法的连接。5 结论通过这段时间的设计,终于完成了我的新颖 60 秒旋转电子钟的设计,虽然在做的时候遇到一些困难,但经过一翻很大的努力也完全达到设计要求的,从心底里说,还是挺高兴的,毕竟这次设计所要求的东西都做了出来,然而高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机的设计重点就在于软件程序的设计,需要有很巧妙的编程方法,在编程时,由于粗心大意马虎,有些语句看似没问题,可就是不出效果,经仔细揣摩修改后,程序才正常运行。学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高

温馨提示

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

评论

0/150

提交评论