版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机课程设计报告单片机课程设计报告 lcd 电子定时闹钟设计电子定时闹钟设计 姓 名: 学 号: 专业班级: 指导老师: 所在学院: 摘要摘要 本本设计是采用单片机技术的电子定时闹钟,近年来集成电路技术的出现和应 用,是推动了人类文明的突飞猛进。基于集成电路技术的单片机产品更是方便 了人们的生活和工作 ,目前以单片机技术的应用为核心的产品种类非常丰富。 应用我们所学过的知识和查阅相关资料,我制作了这个单片机技术为基础的 lcd 可校时可定时电子闹钟,这是一个简单的实用的单片机电子设计产品。 本“lcd 定时电子闹钟设计采用 at89c51 为主控芯片。在充分理解了设 计的要求后,准确的定位
2、了设计的目的,然后构思了总体的方案。在选择和合 适的硬件完成了电路的设计后,又进行了软件的设计和调试。本系统的硬件组 成以及工作原理都有详细的图文说明,所应用的软件技术和各个模块设计的功 能及工作过程也有详细的介绍,最后的部分则详细描述了了软件仿真及调试过 程。 本电子钟设计是以单片机技术为核心,采用了中小规模集成度的单片机 制作的功能较为完善的电子闹钟。硬件设计应用了成熟的数字钟电路的基本设 计方法以,并详细介绍了系统的工作原理。硬件电路中使用了除 at89c51 外, 另外还有 lcd、晶振、电阻、电容、发光二极管、开关、喇叭等元件。在硬件 电路的基础上,软件设计按照系统设计功能的要求,运
3、用所学的汇编语言,实 现的功能包括时时-分分-秒秒显示、设定和修改定时时间的小时和分钟、 校正时钟时间的小时、分钟和秒、定时时间到能发出一分钟的报警声。最后应 用伟福及proteus等软件将硬件电路和软件系统链接在一起对各个部分 及整体进行仿真并调试构成了整个完整的电子闹钟的设计。 最后通过反复的实际仿真和测试表明,该系统能够实现所有要求的功能 包括:(1)能显示时时-分分-秒秒。(2)能够设定定时时间、修改定时时间 及时钟。(3)定时时间到蜂鸣器能发出铃声,另外还在此基础上实现了其他的附 加功能比如万年历。当然这个系统仍然是属于比较简单的单片机应用系统,要 设计功能更强的更复杂的系统还需要我
4、进一步的学习。 目目 录录 1 概述概述.3 1.1 单片机技术和数字钟简介单片机技术和数字钟简介 .3 1.2 设计本电子闹钟的目的设计本电子闹钟的目的 .3 1.3 本本 lcd 电子钟的功能及特点介绍电子钟的功能及特点介绍.3 1.3.1 设计特点.3 1.3.2 本 lcd 电子闹钟的主要功能.3 2 系统总体方案及硬件设计系统总体方案及硬件设计.4 2.1 总体方案设计总体方案设计 .4 2.2 硬件电路的设计硬件电路的设计 .4 2.2.1 电路总体概念图设计.5 2.2.2 主控制芯片 at89c51.7 2.2.3 lcd 显示电路.7 2.2.4 喇叭部分的电路.10 3 软
5、件设计软件设计.10 3.1 软件设计概述软件设计概述 .10 3.2 主函数的设计主函数的设计 .11 3.3 部分设计思想的说明部分设计思想的说明.12 3.3.1 程序初始化.12 3.3.2 闹钟的实现.13 3.3.3 显示程序.13 4 proteus 软件仿真软件仿真 .14 5 课程设计体会课程设计体会.16 附录附录.17 附附 1 源程序代码源程序代码.17 附附 2 系统原理图系统原理图.28 1 概述概述 1.1 单片机技术和数字钟简介单片机技术和数字钟简介 单片机是单片微型计算机的简称,它是一种特殊的计算机。它特别适合于 控制领域,故又称为微控制器 mcu(micro
6、 control unit). 采用了嵌入系统, 通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理 器 cpu,存储器和 i/o 接口电路等。单片机集成度高、功能强、通用性好,而 且体积小、重量轻、能耗、低价格便宜,只要和适当的软件及硬件设备相结合, 便可成为一个独立的单片机控制的功能系统,单片机也成为目前测量控制应用 系统的优选机种和新电子产品的关键部件。 目前,单片机正朝着高性能和多品 种方向发展趋势将是进一步向着 cmos 化、低功耗、小体积、大容量、高性能、 低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于,它 从根本上改变了传统的控制系统设计思想和
7、设计方法。从前必须由模拟电路或 数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种 软件代替硬件的控制技术也称为微控制技术,和传统控制技术相比有革命性的 进步。 时钟是将小时、分种、秒种显示于人的肉眼的计时装置。而单片机模块中 最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装 置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更 长的使用寿命,因此得到了广泛的使用。而 lcd 电子定时闹钟是以单片机为基 础的数字电路实现对小时、分钟、秒的数字显示的数字计时装置,它的计时周期 为 24 小时,另外应有校时功能和一些显示日期、闹钟等附加功能。一
8、个基本的 数字钟电路主要由译码显示器、“时”,“分”,“秒”,“星期”计数器、 校时电路、报时电路和振荡器组成。目前电子种广泛用于各种私人和公众场合, 成为我们生活工作学习中不可缺少的好帮手。 由于时钟的实用性和在人们生活中的重要性,所以尝试设计以单片机为核 心的数字时钟是很有意义的。钟表原先的报时功能已经原不能满足人们日益增 长的要求,现代的电子时钟多带有类似自动报警、按时自动打铃、时间程序自 动控制、定时广播、自动起闭路灯、通断动力设备、甚至各种定时电气的自动 启用等功能,本设计中 lcd 电子时钟采用 lcd 显示时间和日期年月,直观实用, 而且可以方便的校调,附带的万年历和定时功能也是
9、很方便和实用的. 1.21.2 设计本电子定时闹钟的目的设计本电子定时闹钟的目的 复习和巩固所学过的知识,利用此课程设计正好可以对所学习过的知识 进行系统的回顾和总结 拓展知识面,课堂的知识是远远满足不了设计的要求的,这就需要我们 去主动找寻更多的资料,了解更多的知识. 培养了设计能力和解决实际实际问题的能力,同时增强了 自学能力,通过设计完整的单片机系统也初步掌握了组成系统、编程、调 试等能力。 通过本lcd电子种的设计初步了解了单片机应用系统开发研制过程,软件 和硬件设计的方法. 1.3 本本 lcd 电子闹钟电子闹钟的功能和特点介绍的功能和特点介绍 1.3.11.3.1 设计特点 本 l
10、cd 电子定时闹钟是一种种基于单片机技术的多功能、多用途的电子产 品,有电子时钟、日期显示、定时闹铃等多种功能。本设计产品性能卓越,功 能丰富,采用 lcd 显示更加直观,是一个比较实用的电子产品. 1.3.21.3.2 本电子钟的主要功能 (1)可以显示 24 小时制“时时-分分-秒秒”,lcd 显示。 (2)可以显示日期 具有万年历功能 (3)可以方便的设定定时时间、修改定时时间,闹铃功能,预设定时时间 到将发出闹铃声. (4)能够修改时钟时间的时、分、秒,能够修改日期的年月日. 2 系统总体方案及硬件设计系统总体方案及硬件设计 2.1 总体方案设计总体方案设计 本 lcd 电子定时数字闹
11、钟,是以单片机及外围接口电路作为核心硬件,辅 以外围硬件电路,用汇编语言设计的程序来设计并实现的。根据 c51 单片机的 外围接口特点扩展成相应的硬件电路,然后根据单片机的指令设计出数字钟相 应的软件,再利用软件来执行一定的程序实现数字钟的功能。之所以用单片机 来制作电子钟,是因为这样在设计制作简单而且功能多、精确度高,也可方便 的扩充其他功能,淡然实现也十分简单。 本设计是利用 at89c51 单片机为主控芯片,由七段数码管、晶振、电阻、 电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实 现和控制的数字定时闹钟。 2.2 硬件设计硬件设计 2.2. 1 电路总体概念图设计
12、电路总体概念图设计 总体的硬件系统结构框图如下图所示,由于 led 的显示效果比较差因此选 用了更先进的 lcd: at89 c51 震荡震荡 电路电路 调时电路调时电路 喇叭喇叭 lcd 震荡电路震荡电路 片选片选 代码代码 图 1:硬件电路概念示意图 图 2:硬件电路概念图 2.2.22.2.2 主控芯片主控芯片 at98c51at98c51 单片机是 20 世纪 70 年代中期发展起来的一种大规模集成电路器件。它在 一块芯片内集成了计算机的各种功能部件,构成一种单片式的微型计算机。20 世纪 80 年代以来,国际上单片机的发展迅速,其产品之多令人目不暇接,单片 机应用不断深入,新技术层出
13、不穷。在我们日常学习和生活中,常见的有 51 系 列、52 系列、pic 系列等。其中 51 系列的单片机的模块化结构比较典型、应用 灵活,为许多大公司和个人所采纳。 按键与按钮电路 复位等辅助电路 lcd 闹铃电路 电源系统 在本 lcd 电子闹钟设计中就是采用利用我们熟悉的 at89c51 单片机为主 控芯片。at89c51 单片机由微处理器,存储器,i/o 口以及特殊功能寄存器 sfr 等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空 间,片内程序存储器的容量为 4kb,片内数据存储器为 128 个字节。89c51 单片 机有 4 个 8 位的并行 i/o 口:p0
14、口,p1 口,p2 口和 p3 口。各个接口均由接口 锁存器,输出驱动器,和输入缓冲器组成。p1 口是唯一的单功能口,仅能用作 通用的数据输入/输出口。p3 口是双功能口除了具有数据输入/输出功能外,每 条接口还具有不同的第二功能,如 p3.0 是串行输入口线,p3.1 口是串行输出 口线。在需要外部程序存储器和数据存储器扩展时,p0 可作为分时复用的低 8 位地址/数据总线,p2 口可作为高 8 位的地址总线。p3 口也可作为 at89c51 的 一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号. 各口管脚的备选功能如下所示: p3.0 rxd(串行输入口) ; p3.1 txd(串
15、行输出口) ; p3.2 /int0(外部中断 0) ; p3.3 /int1(外部中断 1) ; p3.4 t0(记时器 0 外部输入) ; p3.5 t1(记时器 1 外部输入) ; p3.6 /wr(外部数据存储器写选通) ; p3.7 /rd(外部数据存储器读选通) 。 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电 平时间。 /ea/vpp:当/ea 保持低电平时,则在此期间外部程序存储器(0000h- ffffh)不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定为 reset;当/ea 端保持高电平时,此间内部程序存储器。在 flash
16、 编程期间,此 引脚也用于施加 12v 编程电源(vpp) 。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入; xtal2:来自反向振荡器的输出。 at89c51 单片机由微处理器,存储器,i/o 口以及特殊功能寄存器 sfr 等部 分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间, 片内程序存储器的容量为 4kb,片内数据存储器为 128 个字节。89c51 单片机有 4 个 8 位的并行 i/o 口:p0 口,p1 口,p2 口和 p3 口。各个接口均由接口锁存 器,输出驱动器,和输入缓冲器组成。p1 口是唯一的单功能口,仅能用作通用 的数据输入/输出口。p3
17、 口是双功能口除了具有数据输入/输出功能外,每条接 口还具有不同的第二功能,如 p3.0 是串行输入口线,p3.1 口是串行输出口线。 在需要外部程序存储器和数据存储器扩展时,p0 可作为分时复用的低 8 位地址 /数据总线,p2 口可作为高 8 位的地址总线。p3 口也可作为 at89c51 的一些特 殊功能口,同时为闪烁编程和编程校验接收一些控制信号。 at89c51 单片机的封装及管脚分布如图一: xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.
18、4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51
19、图 3、at89c51 单片机封装及管脚分布图 2.2.2 时钟电路部分时钟电路部分 at89c51 系列的单片机的时钟方式分为内部方式和外部方式。内部方式就 是在单片机的 xtal1 和 xtal2 的两引脚外接晶振,就够成了自激振荡器在单片 机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单 片机内部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工 作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系 统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大 小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。 本
20、lcd 电子闹钟设计是采用内部时钟方式,用一个 12mhz 晶振和两个 30pf 瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.其电路 图如下: x1 crystal c1 220p c2 220p 图 4: 时钟电路 之所以采用高性能的振荡电路,因为: 1. 单片机电子钟的计时脉冲基准是由外部晶振的频率经过 12 分频后提供,采 用内部的定时/计数器来实现计时功能。所以,外接晶振频率精确度直接影响电 子钟计时的准确性。 2. 单片机电 子钟利用内部定时/计数器溢出产生中断(12m 晶振一般为 50ms)再乘以相应的倍率来实现秒、分、时的转换。大家都知道从定时/计数器 产生中
21、断请求到响 应中断需要 3-8 个机器周期,定时中断子程序中的数据入栈 和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断 子程序也要占用一定的 机器周期。 2.2.3 lcd 显示电路部分显示电路部分 为了获得更好的效果本设计并没有采用常见的 led,而是采用了型号为 lm016l 的 lcd。lcd 有 led 数码显示更好的更的直观效果,也更加经久耐用。 液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已经是 单片机应用设计中最常用的信息显示器件之一了。本 lcd 是 2 行 16 列液晶 可 显示 2 行 16 列英文字符,有 8 位数据总线 d0-d
22、7,rs,r/w,en 三个控制端 口(共 14 线) ,工作电压为 5v。没背光,和常用的 1602b 功能和引脚一样 (除了调背光的二个线脚). 该模块也可以只用 d4-d7 作为四位数据分两次传 送。这样的话可以节省 mcu 的 i/o 口资源。 d7 14 d6 13 d5 12 d4 11 d3 10 d2 9 d1 8 d0 7 e 6 rw 5 rs 4 vss 1 vdd 2 vee 3 lm016l 图 5: lm016l lcd 引脚说明: vdd:电源正极,4.55.5v,通常使用 5v 电压; vl:lcd 对比度调节端,电压调节范围为 05v。接正电源时对比度最弱,接
23、地电源时 对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个 10k 的电位器来调整对比 度,或者直接串接一个电阻到地; rs:mcu 写入数据或者指令选择端。mcu 要写入指令时,使 rs 为低电平;mcu 要写入 数据时,使 rs 为高电平; r/w:读写控制端。r/w 为高电平时,读取数据;r/w 为低电平时,写入数据; e:lcd 模块使能信号控制端。写数据时,需要下降沿触发模块。 d0d7:8 位数据总线,三态双向。如果 mcu 的 i/o 口资源紧张的话,该模块也可以只 使用 4 位数据线 d4d7 接口传送数据。本充电器就是采用 4 位数据传送方式; bla: led 背
24、光正极。需要背光时,bla 串接一个限流电阻接 vdd,blk 接地,实测 该模块的背光电流为 50ma 左右; blk: led 背光地端。 2.2.4 喇叭部分的电路喇叭部分的电路 扬声器的电路部分比较简单,如图,通过单片机发出的控制信 号经过简单的放大和处理后直接控制 ls1 喇叭。 r9 1k q1 2n5088 r10 100 ls1 speaker r11 1k k1 图 6: speaker 部分电路图 其中 2n5088 的参数为: 类型:npn 集电极发射集最小雪崩电压 vceo(v):30 集电极最大电流 ic(max)(ma):0.050 直流电流增益 hfe 最小值(d
25、b):350 直流电流增益 hfe 最大值(db): 最小电流增益带宽乘积 ft(mhz):50 封装/温度():to92/-55150 采用 2n5088 将获得更好更纯净的声音信号 ls1 是经典常见的喇叭.。 3 软件设计软件设计 3.1 软件设计概述软件设计概述 这里用汇编的单片机程序构成了本 lcd 电子闹钟的软件系统。该程序实现 时间及定时(时间以 0 点 0 分 0 秒为基准计算,闹铃定时以 0 时 0 分为基准计算) 的显示,有外中断 0 和五个开关实现校时,闹钟功能。其中程序的晶振频率为 12mhz,最小计时单位为 1/20 秒。 主芯片 p0.1-p0.7 输出数据到 lc
26、d 数据总线,p2.0-2.2 输出 lcd 控制信号, p3.7 输出声音信号,.p1.4-p1.5 输入外部控制信号,整个软件系统也是根据这 个关系连接成一个完整的系统。最后经过反复的修改和实验最终确定了主程序 见附录 1,并附有十分详细的注释.因为注释已经详细的介绍了软件设计的细节 过程下面仅就软件系统特定的部分进行详细的说明,其他细节不再一一详述, 3.2 主函数的设计主函数的设计 本 lcd 电子闹钟的的主程序流程图如图 7 所示,。 no yes yes 图 7: 主函数流程图 1 程序初始程序初始化化 p1-4=1?显示闹钟定时 显示日期时间 判断是否到闹钟 定时时间 ls1 喇
27、叭响 图 8: 主函数流程图 2 3.3 部分设计思想的说明部分设计思想的说明 3.3.13.3.1 程序初始化程序初始化 在系统开始上电时,需要对 c51 主芯片和周边电路进行初始化.首先初始化 主芯片: org 0000h ljmp start org 000bh ljmp timer0 org 001bh ljmp timer1 org 0100h start: mov sp,#60h mov r0,#18h mov a,#00h mem_ini: mov r0,a inc r0 系统初始化 定时器初始化 定时器初始化 串口初始化 显示待机指示符 设定闹铃时间 判设置闹铃时间否? 显示刷
28、新 启动走时 有关变量初始化 刷新显示 判断日期是否变化 化否? 秒指示 判断时间是否变化 闹铃 判是否到闹铃时间? 延时 y y y y cjne r0,#5fh,mem_ini 然后就是对 lcd 进行初始化,具体程序见附录 1 3.3.23.3.2 闹钟的实现闹钟的实现 闹钟功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时 间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。 闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个 位中任一位发生改变(进位)时,就必须进行闹铃判别。程序设计思想如图。 图 9:闹铃实现
29、思想流程图 3.3.33.3.3 显示程序显示程序 显示程序包括时钟显示和定时显示程序。具体程序见附 1 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的 忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字 符地址,也就是告诉模块在哪里显示字符,表 3 是 tc1602el 液晶模块的内部显 示地址。 12345678910111213141516 000102030405060708090a0b0c0d0e0f 404142434445464748494a4b4c4d4e4f 比如第二行第一个字符的地址是 40h,那么是否直接写入 40h 就可以将光标定
30、位在第 二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 d7 恒定为高电平 时十位、个位,分十位、个位改变了 设置闹铃标志 是否设置了闹铃 清除闹铃标志 判当前时间是设定时间 中断返回 中断返回 闹铃判别处理 1 所以实际写入的数据应该是 01000000b(40h)10000000b(80h) 11000000b(c0h), 液晶模块内带标准字库,内部的字符发生存储器(cgrom)已经存储了 192 个 57 点阵字符,32 个 510 点阵字符。另外还有字符生成 ram (cgram)512 字节,供用户 自定义字符。如表 1 所示,这些字符有:阿拉伯数字、英文字母的大小写
31、、常用的符号、 和日文假名等,每一个字符都有一个固 定的代码,比如大写的英文字母“a”的代码是 01000001b(41h) ,显示时模块把地址 41h 中的点阵字符图形显示出来,我们就能看到字 母“a”。 指令rsr/wd7d6d5d4d3d2d10 清显示0000000001 光标返回000000001* 置输入模式00000001i/ds 显示开/关控制0000000dcb 光标/字符移位置000000s/cr/l* 置功能00001dlnf* 置字符发生存储器地址0001字符发生存储器地址(acg) 置数据存储器地址001显示数据存储器地址(add) 读忙标志或地址010计数器地址(a
32、c) 写数到 cgram/ddram1要写入的数据 从 cgram/ddram 读数11读出的数据 液晶模块内部的控制器共有 11 条控制指令: 指令 1:清显示,指令码 01h,光标复位到地址 00h 位置 指令 2:光标复位,光标返回到地址 00h 指令 3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕 上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令 4:显示开关控制。 d:控制整体显示的开与关,高电平表示开显示,低电平表 示关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标是 否闪烁,高电平闪烁,低电平不闪烁 指令
33、 5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标 指令 6:功能设置命令 dl:高电平时为 4 位总线,低电平时为 8 位总线 n:低电平 时为单行显示,高电平时双行显示 f: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符 指令 7:字符发生器 ram 地址设置 指令 8:ddram 地址设置 指令 9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命 令或者数据,如果为低电平表示不忙。 指令 10:写数据 指令 11:读数据 时钟显示和定时显示程序都是应用动态显示,即将字形代码送入字形锁存 器;再将所要显示的位置代码送入字位
34、锁存器锁存。为防止闪烁,每位显示时 间都调用延时程序进行短暂延时,然后显示另一位。 4 proteus 软件仿真软件仿真 将完整的单片机程序保存为后缀名为.asm 文件。打开伟福 e6000 软件,, 点击伟福 e6000 主菜单当中的仿真器 ,在下拉菜单中点击仿真器设置 。 在弹出对话框中,语言对话框中选keil c(v5 或更高), 英特尔 pl/m51,英 特尔汇编器,仿真器对话框中g6w-pod-51-8031,晶振频率栏填 12000000(hz ),然后点击好完成仿真器设置。然后点击伟福 e6000 主菜单, 新建项目,导入上述 asm 文件,选择无包含文件,保存此项目文件,再双击
35、 asm 文件打开 ,然后选择项目编译或按 f9,对.asm 文件进行编译, 编译顺利完成,生成.hex 文件。然后用 proteus7.1 软件打开设计好的硬件系 统原理图 dzz.dsn,双击原理图上的 at89c51 单片机加载 dzz.hex 文件。然后点 击 proteus7.1 软件窗口下方的相应仿真运行按纽进行仿真. 经过反复的防真和调试,此闹钟可以实现所有的功能,既可以显示日期时 间,也可以方便的调整日期和时间,定闹钟的功能也正常.实际的防真效果截图 如下图(图 10、图 11),其中图 10 是正在调整定闹钟的时间,图 11 是调整显示 时钟的时间。至此整个设计基本成功的完成
36、. xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a1
37、5 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 d7 14 d6 13 d5 12 d4 11 d3 10 d2 9 d1 8 d0 7 e 6 rw 5 rs 4 vss 1 vdd 2 vee 3 lcd1 lm016l r1 1k r2 1k r3 1k r4 1k r5 1k r6 1k r7 1k r8 1k r9 1k q1 2n5088 r10 100 ls1 speaker r11 1k k1 k2 x1 crystal c1 22
38、0p c2 220p 化 化 04-4 0401010412 化 化 化 图 10:仿真效果截图(调整和显示定时) xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int
39、1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 d7 14 d6 13 d5 12 d4 11 d3 10 d2 9 d1 8 d0 7 e 6 rw 5 rs 4 vss 1 vdd 2 vee 3 lcd1 lm016l r1 1k r2 1k r3 1k r4 1k r5 1k r6 1k r7 1k r8 1k r9 1k q1
40、2n5088 r10 100 ls1 speaker r11 1k k1 k2 x1 crystal c1 220p c2 220p 化 化 04-4 0401010412 化 化 化 图 11:仿真效果截图(调整和显示时钟) 5 课程设计体会课程设计体会 单片机是计算机技术发展的产物,是经济实用开发简便的高科技产品,在 当今工业控制、家电等领域占据广泛的市场。通过此次单片机课程设计来设计 个简单的数字闹钟,我巩固了自己学习的单片机知识,来初步了解了小型单片 机系统的设计和运用,并提高自己实际动手能力。 , 课程设计过程也使我了解了自己能力的不足,不过通过资料收集和文献查 询等方法,找出了设计
41、过程中的一些问题以及解决问题的方法,从而比较顺利 的完成了这个设计任务。这次自己所做的设计取得了一些宝贵的经验,提高了 自己的动手能力,为将来的学习和工作很有好处。 通过这次课程设计我学到了很多全新的在课堂上没法学到的知识,同时也 加深了以前所学知识的理解,也增强了理论联系实际的操作能力。但是,在实 际的编程以及调试程序过程中,我发现自己应该学的还有太多太多。光靠书本 上是远远行不通的! 总之,理论必须和实际结合才有威力,知识必须通过应用才能实现其价值! 所学的东西最终是要面向社会,是在以后的工作能够更好的应用,此时的知识 积累是为以后的工作做好坚实的基础。这个设计总体上不算完美,但是在这个
42、课程设计的经历的好处是不可估量的。 参考文献:参考文献: 1余发山单片机原理及应用技术中国矿业大学出版社 2孙涵芳mcs-51 系列单片机原理及应用m 北京:北京航空航天大学出版社1996-4 3王义军.单片机原理及应用习题与实验指导书m.北京:中国电力出版社,2006 4陈明荧.8051 单片机课程设计实训教材m.北京,清华大学出版社,2004 5唐前辉、丁明亮. 重庆电专 proteus 中文入门教程 6彭小军用单片机实现电子时钟新余高等专科学报,2004 7黄正谨综合电子设计与实践东南大学出版社2002-3 8高峰. 单片机应用系统设计及实用技术,北京机械工业出版社,2004 附附 1
43、1 源程序代码源程序代码 /* ;按 k1 键,依次进入闹钟功能,闹钟时间,年,月,日和时,分,秒模式,直致退出设置状态 * ;按 k2 键,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字 * ;闹钟响时,按 k2 即可停止闹钟的声响 * ;k2 和 k1 需要配合使用 ;设置状态,lcd 上排最前面显示p,下排最前面设置闹钟时显示alarm:,其他显示time: * ;闹钟启用时,在 lcd 下排中间显示一小喇叭,闹钟禁用时,无此小喇叭 * ;年代变化 2000-2099,星期自动转换 * ;*变量的定义* rs bit p2.0 ;lcd 数据/命令选择端(h/l
44、) rw bit p2.1 ;lcd 读/写选择端(h/l) ep bit p2.2 ;lcd 使能控制 pre bit p1.7 ;调整键(k1) adj bit p1.6 ;调整键(k2) spk bit p3.7 ;闹钟声音输出口 year data 18h ;年,月,日变量 month data 19h date data 1ah week data 1bh hour data 1ch ;时,分,秒,百分之一秒变量 min data 1dh sec data 1eh sec100 data 1fh hour_arm data 20h ;闹钟时,分,秒,变量 min_arm data 2
45、1h sec_arm data 22h state data 23h alarm bit state.0 ;闹钟是否启用标志 1-启用, 0-禁止 leap bit state.1 ;是否闰年标志 1-闰年,0-平 年 key_s data 24h ;当前扫描键值 key_v data 25h ;上次扫描键值 dis_buf_u0 data 26h ;lcd 上排显示缓冲区 dis_buf_u1 data 27h dis_buf_u2 data 28h dis_buf_u3 data 29h dis_buf_u4 data 2ah dis_buf_u5 data 2bh dis_buf_u6
46、data 2ch dis_buf_u7 data 2dh dis_buf_u8 data 2eh dis_buf_u9 data 2fh dis_buf_u10 data 30h dis_buf_u11 data 31h dis_buf_u12 data 32h dis_buf_u13 data 33h dis_buf_u14 data 34h dis_buf_u15 data 35h dis_buf_l0 data 36h ;lcd 下排显示缓冲区 dis_buf_l1 data 37h dis_buf_l2 data 38h dis_buf_l3 data 39h dis_buf_l4 d
47、ata 3ah dis_buf_l5 data 3bh dis_buf_l6 data 3ch dis_buf_l7 data 3dh dis_buf_l8 data 3eh dis_buf_l9 data 3fh dis_buf_l10 data 40h dis_buf_l11 data 41h dis_buf_l12 data 42h dis_buf_l13 data 43h dis_buf_l14 data 44h dis_buf_l15 data 45h flag data 46h ;标识调整状态 0-闹钟功能,1- 闹钟时,2-闹钟分,3-闹钟秒 ;4-年,5-月,6-日,7-时,8
48、-分,9-秒,10-退出调 整。 dis_h data 47h dis_m data 48h dis_s data 49h dis_s0 data 4ah dis_s1 data 4bh dis_s2 data 4ch dis_s3 data 4dh dis_s4 data 4eh dis_s5 data 4fh ;*初始化* org 0000h ljmp start org 000bh ljmp timer0 org 001bh ljmp timer1 org 0100h start: mov sp,#60h mov r0,#18h mov a,#00h mem_ini: mov r0,a
49、inc r0 cjne r0,#5fh,mem_ini lcall delay_5ms ;初始化 lcd mov r0,#38h ;设置 lcd 为 16x2 显示,5x7 点 阵,八位数据接口 lcall lcd_wcmd lcall delay_5ms mov r0,#0ch ;设置 lcd 开显示及光标形式(光 标不闪烁,不显示-) lcall lcd_wcmd lcall delay_5ms mov r0,#06h ;lcd 显示光标移动设置(光标地址 指针加 1,整屏显示不移动) lcall lcd_wcmd lcall delay_5ms mov r0,#01h ;清除 lcd 的
50、显示内容 lcall lcd_wcmd lcall delay_5ms ;第一自定义字符: mov r0,#40h lcall lcd_wcmd ;01 000 000第 1 行地址 (d7d6 为地址设定命令形式 d5d4d3 为字符存 放位置 mov r0,#1fh lcall lcd_wdat ;xxx 11111第 1 行数据 (d7d6d5 为 xxx,表示为任意数(一般用 000) , mov r0,#41h lcall lcd_wcmd ;01 000 001第 2 行地址 mov r0,#11h lcall lcd_wdat ;xxx 10001第 2 行数据 mov r0,#
51、42h lcall lcd_wcmd ;01 000 010第 3 行地址 mov r0,#15h lcall lcd_wdat ;xxx 10101第 3 行数据 mov r0,#43h lcall lcd_wcmd ;01 000 011第 4 行地址 mov r0,#11h lcall lcd_wdat ;xxx 10001第 4 行数据 mov r0,#44h lcall lcd_wcmd ;01 000 100第 5 行地址 mov r0,#1fh lcall lcd_wdat ;xxx 11111第 5 行数据 mov r0,#45h lcall lcd_wcmd ;01 000
52、101第 6 行地址 mov r0,#0ah lcall lcd_wdat ;xxx 01010第 6 行数据 mov r0,#46h lcall lcd_wcmd ;01 000 110第 7 行地址 mov r0,#1fh lcall lcd_wdat ;xxx 11111第 7 行数据 mov r0,#47h lcall lcd_wcmd ;01 000 111第 8 行地址 mov r0,#00h lcall lcd_wdat ;xxx 00000第 8 行数据 ;第二个自定义字符: mov r0,#48h lcall lcd_wcmd ;01 001 000第 1 行地址 mov r
53、0,#01h lcall lcd_wdat ;xxx 00001第 1 行数据 mov r0,#49h lcall lcd_wcmd ;01 001 001第 2 行地址 mov r0,#1bh lcall lcd_wdat ;xxx 11011第 2 行数据 mov r0,#4ah lcall lcd_wcmd ;01 001 010第 3 行地址 mov r0,#1dh lcall lcd_wdat ;xxx 11101第 3 行数据 mov r0,#4bh lcall lcd_wcmd ;01 001 011第 4 行地址 mov r0,#19h lcall lcd_wdat ;xxx
54、11001第 4 行数据 mov r0,#4ch lcall lcd_wcmd ;01 001 100第 5 行地址 mov r0,#1dh lcall lcd_wdat ;xxx 11101第 5 行数据 mov r0,#4dh lcall lcd_wcmd ;01 001 101第 6 行地址 mov r0,#1bh lcall lcd_wdat ;xxx 11011第 6 行数据 mov r0,#4eh lcall lcd_wcmd ;01 001 110第 7 行地址 mov r0,#01h lcall lcd_wdat ;xxx 00001第 7 行数据 mov r0,#4fh lc
55、all lcd_wcmd ;01 001 111第 8 行地址 mov r0,#00h lcall lcd_wdat ;xxx 00000第 8 行数据 mov year,#5 ;置年初值 mov month,#1 ;置月初值 mov date,#1 ;置日初值 mov dis_s0,#43h ;c mov dis_s1,#72h ;r mov dis_s2,#61h ;a mov dis_s3,#73h ;s mov dis_s4,#79h ;y mov dis_s5,#20h ; mov r1,#00h ;显示一自定义字符 lcall week_pro lcall update_buf l
56、call display_pro ;屏显初始化 ;*主程序* main: mov ie,#8ah ;cpu 开中断,timer0,timer1 开中断 mov tmod,#11h ;timer0,timer1 工作于模式 1, 16 位定时方式 mov th0,#0dch ;timer0 置 10ms 定时初值 mov tl0,#00h mov th1,#0ffh ;timer1 置闹钟声音初值 mov tl1,#00h setb alarm ;初始启动闹钟功能 clr tr1 ;timer1 禁止 setb tr0 ;timer0 启动 mov key_v,#03h main_1: lcal
57、l key_scan mov a,key_s xrl a,key_v jz main_1 lcall delay_5ms lcall delay_5ms lcall key_scan mov a,key_s xrl a,key_v jz main_1 mov key_v,key_s mov a,key_v xrl a,#01h jnz main_2 clr tr0 ;进入调整状态,禁止 timer0 mov ie,#00h ;cpu 禁止中断 lcall key_pre_pro ;pre 按键按下,调用 pre 按键处理程序 sjmp main_1 main_2: mov a,key_v xr
58、l a,#02h jnz main_1 lcall key_adj_pro ;adj 按键按下,调用 pre 按键处理程序 sjmp main_1 ;*按键扫描程序* key_scan: clr a mov p1,#0ffh mov c,pre mov acc.1,c mov c,adj mov acc.0,c mov key_s,a ;本次扫描键值存入 key_s ret ;*pre 按键处理程序* key_pre_pro: inc flag mov r4,flag cjne r4,#1,key_pre_1 ;注意,该指令不改变操 作 mov r0,#0eh lcall lcd_wcmd ;
59、显示光标_,整个光标不闪 烁 mov dis_s0,#61h ;a mov dis_s1,#6ch ;l mov dis_s2,#61h ;a mov dis_s3,#72h ;r mov dis_s4,#6dh ;m mov dis_s5,#3ah ;: mov r1,#50h ;p mov dis_h,hour_arm mov dis_m,min_arm mov dis_s,sec_arm lcall update_buf lcall display_pro ;更新屏显内容 mov r0,#47h lcall lcd_pos ;使光标位于第一个调整项下 jmp key_pre_e key_
60、pre_1: cjne r4,#2,key_pre_2 mov r0,#49h lcall lcd_pos ;光标置小时报警设置位置 jmp key_pre_e key_pre_2: cjne r4,#3,key_pre_3 mov r0,#4ch lcall lcd_pos ;光标置分钟报警设置位置 jmp key_pre_e key_pre_3: cjne r4,#4,key_pre_4 mov r0,#4fh lcall lcd_pos ;光标置秒时报警设置位置 jmp key_pre_e key_pre_4: cjne r4,#5,key_pre_5 mov dis_s0,#74h ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 讲解养老医疗
- 艾滋病护理知识
- 舒适医疗护理
- 2024年版山东:离婚后住房分配协议3篇
- 2024年赛事志愿服务协议3篇
- 通信系统工程安装与维护生涯发展展示
- 质量信息部管理规程
- 艺术别墅租赁合同范本
- 2024版解除婚姻关系财产处理协议2篇
- 鼻干燥的临床护理
- 手术室专科习题及答案
- 专题04 任务型阅读10道
- 2024年山东省公务员考试《行测》真题及答案解析
- 期中测试卷(1~4单元)(试题)2024-2025学年五年级上册数学北师大版
- 教师课题结题资料汇编培训
- 北师大版六年级上册数学期末考试试卷带答案
- 餐饮服务课件 学习任务3 餐巾折花技能(4)-餐巾折花综合实训
- 22秋军事理论学习通超星期末考试答案章节答案2024年
- 环保设备智能监控系统开发合同
- 北师大版小学数学六年级上册课时练习试题及答案(全册)
- 中国移动自智网络白皮书(2024) 强化自智网络价值引领加速迈进L4级新阶段
评论
0/150
提交评论