《单片机课程设计(论文)简易电子钟设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计(论文)简易电子钟设计.doc(27页珍藏版)》请在三一办公上搜索。
1、课程设计任务书课 程: 单 片 机 课程设计题目: 简 易 电 子 钟 班 级: 电 气 0502 姓 名: 学 号: 指 导 教 师: 时 间: 前 言二十多年来,电子计算机技术已广泛应用于测试领域中。电子计算机对人类社会的进步和发展有着阶层的飞跃,它是现代化社会的象征,是人们工作、学习、生活不可缺少的。在近几年发展起来的智能仪器,无论是在测量的灵敏度、准确度、可靠性、功能等方面,还是在解决测试技术问题的深度及广度方面都有了巨大的发展,它以一种崭新的面貌展现在人们的面前。随着大规模集成电路及计算机技术的迅速发展,智能仪器将会有更广阔的应用前景。而单片机以其高性能、高速度、体积小、价格低廉、稳
2、定可靠而得以在智能仪器中被广泛的应用。本次设计是用51系列单片机中的AT89S52制作简易电子钟。电子钟是智能化仪器仪表的一种,它可广泛应用于工业、农业、日常生活等领域。它以微控制器为核心,与传统钟表相比较,它具有高精度、高可靠性、操作方便、价格便宜、智能化等特点,是钟表发展的新方向,具有一定的实用价值。本次采用的AT89S52 是一种低功耗,高性能的CMOS 8位微型计算机,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。正因为它有这么多特点,所以在实现本次设计的简易电子钟系统中不需外部资源扩展。简易电子钟能正确反
3、映实际时间值,能完成时、分、秒的显示调整。本次简易电子钟课程设计采用ASM51软件完成用汇编语言编写。通过本次设计能让我们对专业的电子画图软件(Protel)、51系列单片机的工作原理、对汇编语言编写程序有更深刻的了解。本次设计由于时间仓促以及设计者水平有限,难免存在着一些不足和错漏之处,诚肯和大家一起研究探讨,在此特别感谢老师提出的宝贵意见和一直以来的耐心指导。 编 者:戴 建 2007.12.05目 录第1章 简易电子钟设计方案的选择和论证.1.1 采用实时时钟芯片.11.2 键盘与显示选择发案.2第2章 单元电路的设计.32.1 电源的设计.32.2 时钟和复位电路.32.2.1 时钟电
4、路.32.2.2 复位电路.42.3 显示接口电路.42.4 键盘接口电路的设计.52.5 主电路原理图、PCB图.62.5.1 主电路原理图.62.5.2 电源电路原理图.72.5.3 主电路PCB电路图.72.5.4 下载线电路PCB板图.8第3章 硬件资源、存储器单元地址分配说明.83.1 硬件资源说明.83.2 数据存储器单元地址分配.83.3 程序存储器单元地址分配.9第4章 程序设计思路与程序流程图.94.1 程序设计思路.104.2 监控程序流程图.104.3 “P.”点显示子程序流程图.114.4 显示子程序流程图.114.5 键盘扫描子程序流程图.114.6 时间设置子程序流
5、程图.124.7 中断自动计时程序流程图.13设计体会.14元器件清单.15参考文献.15附录.16附录A 程序清单.16附录B 简易电子钟操作说明.24第1章 简易电子钟设计方案的选择和论证本次简易电子钟系统功能简单,用单片机的最小系统就能得以实现。而单片机的最小系统设计中实际上最重要的就是对键盘/显示器接口电路的设计,由于系统功能不同所以要求就不同,接口设计也就不同。对一个键盘/显示器接口设计应从整个系统出发,综合考虑软、硬件特点。下面是本人在设计前对各种设计方案的考虑:1.1 采用实时时钟芯片利用各生产厂家生产的一系列实时时钟芯片,如DS1302、DS1287、DS12887等,这引起实
6、时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时器功能,计时数据每秒自动更新一次,不需程序干预。单片机可通过查询或中断方式读取计时数据进行显示,因而计时时不占用CPU的时间,程序简单。此外实时时钟芯片带有锂电池做后备电源,具备京剧不停止的计时功能。由于用实时时钟芯片功能完善,精度高,软件程序设计简单,因此在工业实时测控系统中被多采用。方案一: 利用8051芯片I/O口构成键盘/显示接口电路因此次简易电子钟设计系统功能单一,要用到8051芯片的I/O端口较少,所以可以直接用8051芯片的P0口、P1口、P2口以及P3口来构成键盘、显示的输入输出端口。如图1所示,采用动态显示, AT89C5
7、2的P0口和P2口外接由LED数码管(LED5LED0)构成的显示器,用P0口作LED的段码输出口,P2口作LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。方案二: 采用8155芯片扩展键盘 /显示器接口电路Intel公司研制的8155不仅具有两个8位的I/O端口(A口和B口)和一个6位的I/O端口(C口),而且还可以提供256B的静态RAM存储器和一个14 位的定时/计数器,它和单片机的接口非常简单。此方案(如图2所示)对于I/O的资源比较紧张的电路合适,数据线 控制线单片机经8155扩展后多了22个I/O口,且这些I/O具有寄存器功能,只有新的数据才能将其替换,跟P
8、0不同,所以还可以用来跟其它类型的芯片会传送数据,但是其编程比较繁琐,键盘和显示程序得重新编写,对于智能化应用非常广的今天,这些可以交给专用键盘显示芯片完成。 方案三: 采用8279芯片扩展键盘/显示器接口电路8279是Intel公司生产的专用的可编程键盘、显示器接口芯片,键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。显示显示输出时,它有一个168位显示RAM,其内容通过自动扫描,可由8或16位LED数码管显示。这样可以大大节省CPU对键盘、显示器的操作时间,从而减轻了CPU的负担,而且显示稳定、程序简单,不会出现误动
9、作。如图3所示,此方案对单片机的口线利用较少,对于以后我们进行其它的扩展留了很大的空间,大大减少了我们为键盘按键的前后消抖编程的时间,缩短了开发时间,由它构成的标准键盘、显示接口电路在单片机应用系统中使用越来越广泛。1.2键盘与显示选择方案方案一:独立式按键/LED动态显示独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独站用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立式按键电路配制灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此在按键多较多时,I/O口线浪费较大时,不宜采用。动态显示方式比较节省I/O口,硬件电路较静态显示方式简单,但其亮度不如
10、静态显示方式,而且显示位数较多时,CPU要依次扫描,占用CPU较多的时间。方案二:矩阵式按键/LED静态显示矩阵式(又称行列式)键盘。它由行线和列线组成,按键位于行、列线的交叉点上。显然,在按键数量较多时,矩阵式键盘较之按键式键盘要节省很多I/O口。但需要编程控制,所以适用于按键较多的场合。采用静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于按键较多的场合。综上所述,再根据设计任务书的要求,我们采用1.1的方案一和1.2的方案一利用8051芯片I/O口构成键盘/显示接口电路,该方案不仅能完成简易电子钟的功能,还能减少外部硬件资源,使电路简单明了,所以我们采用此方案。
11、 第2章 单元电路的设计 2.1 电源的设计常用小功率直流稳压电源电路由电源变压器、整流电路、滤波电路、稳压电路等四部分组成,如图4所示。 图4 直流稳压电源基本电路框图稳压电路根据调整元件类型可分为电子管稳压电路、三极管稳压电路、可控硅稳压电路,集成稳压电路等。根据调整元件与向载连接方法,可分为并联型和串联型。根据调整元件工作状态不同,可分为线性和开关稳压电路。作为小功率的稳压电源以三端式串联型的应用最为普遍,三端式集成稳压式,它具有体积小,外围元件少、性能稳定可靠、使用调整方便和价廉等优点,也因此获得广泛使用。三端式是指稳压电路仅有输入、输出、接地三个接线端子。有固定式和可调式两种类型,此
12、外又分为正或负电压类型 。W7800系列为三端固定正电压输出集成稳压器;W7900系列为三端固定负电压输出集成稳压器。型号中最后两位数表示输出电压的稳定值,有5V、6V、9V、12V、18V、和24V。在此次设计中,我们没有要求做直流电源,在此只做理论上的分析。电源电路的总设计图如图5所示:图5 直流稳压电源电路图2.2 时钟和复位电路2.2.1 时钟电路 时钟信号通常由两种方式产生:一是内部振荡方式,二是外部时钟方式。 时钟电路原理图如图6所示,在单片机内部有一个高增益反相放大器,只要在单片机的XTAL1和XTAL2引脚外接晶体振荡器就构成了自激振荡器,并在单片机内部产生时钟脉冲信号。电容器
13、C1和C2的作用是稳定频率和快速起振。 外部时钟方式是把外部已有的时钟信号引入到单片机内。此方式常用于多片单片机同时工作,以便于各单片机的同步。一般要求外部信号高电平的持续时间大于20ns,且为频率低于12MHz的方波。2.2.2 复位电路 复位操作有两种基本形式:一种是上电复位,另一种是按键复位。复位电路原理图如图7所示,上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降ERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单
14、片机运行期间,利用按键也可以完成复位操作。所以本设计选用第二种方案,即上电复位与按键复位均有效的复位电路。2.3 显示接口电路单片机应用系统最常用的显示器是LED(发光二极管显示器)、LED(液晶显示器)。这两种显示器可显示数字、字符及系统的状态。它们的驱动电路简单、易于实现且价格低廉,因此,得到了广泛应用。本次设计只要显示6位数字,不需显示图形或字符,因而采用七段数码管做显示器。LED显示器有共阴极与共阳极两种结构,如图8所示。共阴极LED显示块的发光二极管阴极并接,如图中(a)所示,当某个发光二极管的阳极为高电平时,发光二极管点亮;共阳极LED显示块的发光二极管则阳极并接,如图中(b)所示
15、, 当某个发光二极管的阴极为低电平时,发光二极管点亮。 通常的七段LED显示器块中有八个发光二极管,也有人叫做八段显示器,其中七个发光二极管构成七笔字形“8”,一个发光二极管构成小数点。七段显示块与单片机接口非常容易。只要将一个8位并行输出口与显示块的发光二极管引脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符。通常将控制发光二极度管的8位字节数据称为段选码。LED显示工作方式可分为静态显示和动态显示。在静态显示方式下,共阴极应固定接地,共阳极应固定接高电平。我们采用的是利用8051芯片I/O口构成键盘/显示接口电路,为简化电路,降低成本,显示将采用动态显示。在动态显示中将
16、所有相同位的段控线并联在一起,由一个I/O口线控制,8段由8个I/O口控制,而共阴极点或共阳极点分别由相应的I/O口线控制。LED动态显示电路只需要两个8位I/O口。其中一个8位I/O口控制段控码,另一个8位I/O口控制位选。由于所有段控码都由一个8位I/O控制,因此,在同一瞬间,6只LED都会显示相同的字符。要想每位显示不同的字符,必须采用扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,段选控制I/O口输出相应字符段选码,位选控制I/O口在该显示位送入选通电平(共阴极送低电平,阳极送高电平)以保证该位显示相应字符。如此循环,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉
17、暂留效果。2.4 键盘接口电路的设计由若干个按键组成的键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,如图9所示。矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,如图10矩阵式按键电路所示,故键数目较多时,可节省口线。但这种结构的软件编程较繁。键盘的工作方式可分为编程控制方式和中断控制方式。 CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键
18、处理程序。这种方式为编程扫描方式。单片机在正常应用过程中,并不会经常进行键操作,因而编程控制方式使CPU经常处于空查询状态。在CPU工作任务十分繁重的情况下,为提高CPU的效率,可采用中断控制方式。只要有键按下,便向CPU申请中断,CPU响应中断后,在中断服务程序中进行键盘扫描、查键值与键处理等工作。我们此次设计只有4个按键,因此采用独立式键盘。2.5 主电路原理图、PCB图系统的设计方案以及各电路部分确定以后,为了制作电路板,我们必须用专业软件画出电路原理图,再制PCB板图。2.5.1 主电路原理图主电路原理图如图11所示:图11 主电路原理图 2.5.2 电源电路原理图电源电路原理图如图1
19、2所示: 图12 直流稳压电源电路图2.5.3 主电路PCB电路图 设计PCB主电路图如图13所示: 图13 PCB主电路图2.5.4 下载线电路PCB板图下载线电路PCB板图如图14所示。 图14第3章 硬件资源、存储器单元地址分配说明3.1 硬件资源说明P0口接数码管段控线驱动芯片74LS244的输入端口;P2口接数码管位控线驱动芯片74LS244的输入端口;P1口接4个按键(P1.0P1.3对应接A、B、C、D键);定时器T0工作在定时方式1;中断源为定时器中断T03.2 数据存储器单元地址分配LED6 EQU 7DH ;时的十位显示缓冲区LED5 EQU 7CH ;时的个位显示缓冲区L
20、ED4 EQU 7BH ;分的十位显示缓冲区LED3 EQU 7AH ;分的个位显示缓冲区LED2 EQU 79H ;秒的十位显示缓冲区LED1 EQU 78H ;秒的个位显示缓冲区3.3 程序存储器单元地址分配 内部资源情况 主程序- 0068H-0190H 中断子程序-0414H-060EH 键扫子程序-0191H-0410H 显示子程序-0645H-0686H 显示处理子程序-0611H-0641H RAM分区:37H时值的暂存单元,36H分值的暂存单元,35H秒值的暂存单元 78H,7AH,7CH, 分别为秒.分.时个位的显示缓冲区. 79H,7BH,7DH, 分别为秒.分.时十位的显
21、示缓冲区.第4章 程序设计思路与程序流程图4.1 程序设计思路简易电子钟的运行主要是利用单片机定时/计数器的工作和中断服务的作用完成计时功能的。首先时钟电路产生单片机工作时所需要的时钟信号,这是单片机能够正常工作的前提,而单片机有无定时的基础以及定多长的时间,这些还需要我们人为的确定。钟表的时钟要运行,首先要有“秒”的计时,因为单片机内部是没有规定的“秒”的概念。同时它工作在不同的工作方式时,它的计数初值也是不同的。这就要我们人为首先计算出计数的初值了,这就可以实现所谓的定时了。如果单片机的定时时间到了的话,那么单片机会自动地产生中断使程序转向中断服务程序执行,中断服务程序执行完了就会返回原程
22、序,等待下一次定时时间的到来再产生中断。在此基础上,单片机就会按照人为设定的程序执行下去。使单片机能计算其它时间量。当然,单片机如果要执行多种不同的计时功能的话,还需要选择多种不同的工作方式,这样才不会使单片机产生混乱。因为不同的计时功能它的基本计时单位是不同的。我们知道,时钟的基本计时单位是秒,而秒表的基本计时单位却是毫秒了,因而我们把定时器的初始时间设计为50ms,将其乘以20便可得到我们的时间秒单位。4.2 监控程序流程图监控程序流程图如图14: 4.3 “P.”点显示子程序流程图“P.”点显示子程序流程图如图15:4.4 显示子程序流程图显示子程序流程图如图16:4.5 键盘扫描子程序
23、流程图键盘扫描子程序流程图如图17:4.6 时间设置子程序流程图时间设置子程序流程图如图18:4.7 中断自动计时程序流程图中断自动计时程序流程图如图19: 设计体会在测试简易电子钟过程中,发现存在以下问题:简易电子钟计时时间比实际时间慢,经过分析产生问题的主要原因有以下几点:对一秒钟产生的基准是:对定时器T0定时50ms,每中断一次,判断是否中断满20次,是就产生一秒的基准时间。单片机执行中断的时间是很准确的,但是在中断程序中,中断响应时间为3到8个机器周期。这是产生误差的主要原因。硬件产生的误差,我们的基本时钟是由外部提供的12MHZ的晶振,如晶振的精度不高,也将产生的误差。人为误差,本次
24、测试是用简易电子钟秒表和电脑时钟做比较:首先把电脑时钟打开,然后当电脑电钟到零秒时,马上按下 键,让它和电脑时钟同时从零秒开始计时,记下时间时差。等过了几分钟或是更长时间后,再比较两者的时间差,这是人为的操作,故误差是不可能完全消除的。为了能尽量减小简易电子钟与实际时间的误差,我们将定时器的初始值人为调大,以弥补响应中断时的3至8个机器周期时间,至于人为误差,我们是不可避免的。经过一个多月的努力奋战,我终于完成了简易电子钟的课程设计,在设计过程中,得到指导老师桂友超老师的耐心指导与热情帮助,并提出了许多宝贵的意见,以及同组成员的努力配合,在此表示衷心的感谢。在硬件电路制作阶段,我们到图书馆、网
25、上查阅各种资料,不断在电脑上操作专业软件,使我们在理论分析设计和动手操作能力等各方面得到了极大提高。我们通过对设计任务书的具体要求分析思考,再加上以前在学校进行的各种相关实践和实习积累的经验,首先出色的完成了硬件电路板的制作,虽然在初次制板时因不细心、不熟习制作流程而导致第一块电路板报废,但总结了经验给后面制板的同学提了个醒。硬件电路板制好后,在利用ASM51软件编写程序调试时,遇到了不少困难,这使我们学会了耐心分析问题,并进一步锻炼自己去攻破难题的能力。我们除了完成简易电子钟的设计任务外,还根据各种要求进行进一步的程序设计,这使我们比其他同学学到了更多的知识,这更增加了我们以后参加工作能出色
26、完成任务的信心。这次课程设计整体来说是成功的,但我们也发现了自己许多错漏和不足之处。譬如,最简单的程序没写好就想着写更复杂的程序,做事还是缺乏耐性和细心,当有时遇到问题时,总觉得无从下手,对于课本上的知识不能很好的组织起来。在编写各功能程序时,特别是后来增添的比较复杂的程序,如在编写年、月、日和秒表功能程序时,闰年判断子程序,大小月判断子程序,中断程序等,在软件调试过程未发现问题,但在硬件运行时又与自己想要的结果大不相同,头脑一下变成空白。最后在经过反复检查,反复调试后才把问题解决。问题解决以后再回头一想,其实问题并不是很难,只是自己未细心注意。在本课程设计过程中,桂老师提供了宝贵的设计方法以
27、及程序调式技巧,在此再次给桂老师致以忠心的感谢!元器件清单元器件数量(个)元 器 件数量(个)AT89S521芯片插座(40脚)1LED8芯片插座(20脚)2按键5电阻1K欧姆6晶振12MHz1电阻200欧姆1发光二极管1限流电阻300欧姆830pF2上拉电阻5.1K欧姆4有极性22F1USB线1单面板1排 阻1470F2USB线接口1排 针1ISP下载线1根 参考文献1 刘守义主编,单片机应用技术M,西安:西安电子科技大学出版社,2002.8; 2 陈伟人主编,MCS-51系列单片机实用子程序集锦M,北京:清华大学出版社,1993.3;3 何立民编著,MCS-51 系列单片机应用系统设计 系
28、统配置与接口技术M,北京:北京航空航天大学出版社,1990.1;4 张毅刚主编,MCS-51单片机应用设计M,哈尔滨:哈尔滨工大学出版社,1990.8; 5 李华主编,MCS-51 系列单片机实用接口技术M,北京:北京航空航天大学出版社,1993.8。 附 录附录A-程序清单 PINTO EQU 0400H ORG 0000H LJMP MAIN ORG 000BH LJMP PINT0 ORG 0050H ;* 主 程 序 ;* MAIN: MOV SP, #60H ;内部初始化 MOV PSW, #00H MOV DPTR, #TAB MOV R0, #08H MOV R7, #78H CLR A ML1: MOV R0, A INC R0 DJNZ R7, ML1 MOV TMOD, #01H ;定时器赋初值 MOV TL0, #09BH MOV TH0, #035H SETB EA SETB ET0 MOV 30H, #013H MOV R3, #78H MOV A, #78H MOV R6, #06H MOV 32H, #0FEH LOOP: MOV A, #0CH ;显示P点 MOV P0, A MOV A, 32H MOV P2, #10100000 JB P1.0, LOOP ;键盘扫描等待启动 LCALL DIR LCALL DIR