《单片机原理及接口》课程设计报告题目:时钟系统设计姓名:专业:电信班级:1学号:20131指导教师:信息工程学院二0一六年一月2时钟系统设计摘要:本系统是基于AT89C51单片机的具有准点报时、调时、以及可设闹钟功能的简单数字时钟系统的设计。以AT89C51为核心控制器,系统分为时钟模块、显示模块、按键模块及闹钟模块。系统以单片机内部定时器作为时钟模块的主要控制模块,通过频率计数实现计时功能,采用了8位数码管来显示时间,采用独立按键做为时间调时以及闹钟设置按键,采用蜂鸣器作为报时闹钟系统。通过Keil软件C语言程序的编写、编译、调试以及硬件单片机的连接,实现了时间显示(24小时制)、闹钟设置、时间调试以及准点报时,可复位的功能,并运行了该电路的程序,得出了符合实验设计要求的结果。关键字:数字时钟;AT89C51;数码管;C语言;闹钟;调时1系统设计内容1.1前言随着近年来科技的进步,单片机在近十年也取得了飞速的发展。目前,单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。现在虽然单片机的品种繁多,各具特色,但仍以MCS-51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WinBond系列单片机。以8031为核心的单片机占据了半壁江山,在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。数字电子时钟作为单片机基础学习的一个重要的典型,是很多初学的学习单片机的很好的例子,是对单片机的定时器的一个重要的应用。可以说,学习单片机的两个重点就是中断和定时器,学会了数字时钟的编程就是对单片机学习的一个很好的综合应用。1.2设计要求应用知识:I/O口应用、数码显示、定时/计数器、中断。基本要求:设计一时钟系统,系统具有时钟功能,能准确显示时、分、秒。系统还应具有校正功能:能够修改当前的时间。扩展部分:具备设定闹钟和定时闹钟响功能。1.3设计思路3通过软件程序的编程,硬件电路的调试,实现了简单时钟系统的设定,使得该系统具有正常走时,能够正确的显示时、分、秒;能够进行调时,修改当前的时间,并且能够设定闹钟,使闹钟能够定时响。首先是时间的调试:若要进行正常的时间调试需要有进入时间的调时试状态按键以及调试是加或者是减的按键,即每个状态要3个按键,共有时、分、秒三个状态,这样就一共需要9个按键,这样的编程太过复杂,硬件需要的按键也比较多。考虑到,可通过同一个按键来控制定时器的走与停,以及通过按键的次数来控制所进入的调试状态是时、分还是秒。当调试进入某一状态时,需要分别通过两个按键来控制时间的加与减,而此时的加与减的按键相当于是局部变量,可以在三个状态中分别使用。这样一共就只需要3个按键,大大节省了硬件并且简化了软件的编程。设3个按键分别为key1、key2和key3,设计为当按键key1被按下时,停止走时,进入调时状态,当key1被按下1次,进行秒的调整;当key1被按下2次,进行分的调整,当key1被按下3次,进行时的调整;当key1被按下4次,停止调时,继续进行走时。在key1被按下4次以下的情况下,若按下key2键,则进行时间加,若按下key3,则进行时间减。其次是闹钟设定:基于时间调试的设置思路,同样将进入闹钟状态以及闹钟设定的按键分开,考虑到此时闹钟设置时,数码管的显示问题以及定时器的走时问题,故将进入闹钟的设定状态和时设定、分设定的按键分开,而分和时的设定又都需要时间的加和减,即各需要两个按键,再加上进入闹钟设定状态的一个按键,共需要5个按键来实现闹钟的设定。设这5个按键分别为key0、key4、key5、key6和key7,其中,key0为进入闹钟状态按键,key4和key6分别为分钟设定的加和减的按键,key5和key7分别为时设定的加和减设定的按键。依照思路可设定为当key0一直被按住的情况下,此时进入闹钟设定状态,但是定时器仍然在工作。在key0一直被按住的情况下,若key4或key5被按下,则分别进行分和时的累加状态;若key6和key7被按下,则分别进行分和时的减状态,当放开key0时,继续进行走时。若想再次进行闹钟的设定,重复上述的步骤,不过当再次按下按键key0时,则显示上次设置的闹钟时间。2系统方案设计2.1方案论证(1)、核心控制模块方案一:采用FPGA作为核心控制模块。由于FPGA具有强大的资源,使用方便灵活,易于进行功能扩展,特别是结合了EDA,可以达到很高的效率。此方案逻辑虽然简单一点,但是一块FPGA的价格很高,对于做数字钟来说有一点浪费,而且FPGA比较难掌握,本设计中不作过多研究,也不采用此方案。;方案二:采用AT89C51作为核心控制模块。此方案中AT89C51单片机的入门学习相对交容易,易于理解,外围电路比较简单,成本比较低,此系统控制灵活能很好地满足本课题的基本要求和扩展要求,因此选用该方案。4(2)、显示模块方案一:采用LCD1602液晶显示屏,液晶极其省电,但是使用有温度范围限制,且因是反光式的,在外界光线很明亮的情况下很容易看不清楚。数码管是LED发光的效果,液晶是分子偏转引起的暗影效果,显示不是很清晰。方案二:采用LED数码管显示,数码管在低电压小电流的驱动下就能够发光,发光响应时间短,高频性好,单色性好,亮度高,显示相对而言比较清晰。而且体积小,重量轻,抗冲击性能好,寿命长,成本低。(3)、按键模块方案一:采用矩阵按键,矩阵按键需要通过扫描控制和译码,设计时需要有数值移位寄存器对已有数值进行存储和调用。软件程序设计比较繁琐,硬件连接复杂。方案二:采用独立按键。单片机仿真板上有专用独立按键,连接方便,使用简单。且易于软件编程,适合本系统的设计。2.2设计原理本系统数字时钟设计原理主要利用AT89C51单片机,由单片机的P0口控制数码管的位显示,P2口控制数码管的段显示,P3口与按键相接用于时间的校正以及闹钟的设定。设计的主要方面有计时原理,中断及定时器原理以及调时方式、按键的消抖。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。在本设计中,24小时时钟显示、秒表的设计和显示都是依靠单片机中的定时器完成。使用定时器T0产生1s的中断,在中断程序中完成每一秒数字的变化,并在主程序中动态显示该字符。典型的8051单片机有5个中断源(外部中断0、1,内部定时器中断0、1,串口中断),具有两个中断优先级。与中断系统有关的特殊功能寄存器有中断允许寄存器IE、中断优先级控制寄存器IP、中断控制寄存器TCON和SCON中有关位。MCS-51单片机基本的中断系统结构如下图所示。5图2-1MCS-51的中断系统MCS-51的CPU对中断源的开放或屏蔽,即每一个中断源是否被允许中断,是由内部的中断允许寄存器IE(地址A8H)控制的。IE中具体各位的意义如下所示:EA:CPU的中断开放标志。EA=1,CPU开放中断;EA=0,CPU屏蔽所有的中断申请。EX0:外部中断0中断允许位。EX0=1,允许中断;EX0=0,禁止中断。ET0:T0的溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。ET1:定时器/计数器T1的溢出中断允许位。ET1=1,允许T1中断;ET1=0禁止T1中断。ES:串行口中断允许位。ES=1,允许串行口中断;ES=0禁止串行口中断。中断优先级管理寄存器IP(地址8BH):MCS-51有两个中断优先级,一个正在被执行的低优先级中断服务程序能被高优先级中断所中断,但不能被另一个同级的或低优先级中断源所中断。CPU的查询顺序是:①外部中断0,②定时器T0中断,③外部中断1,④定时器T1中断,⑤串行口中断(先外部后内部,先0后1)。中断服务函数的格式如下所示:void函数名(void)interruptnusingm{函数体语句}其中,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。每个中断源都有系统指定的中断编号:表1中断编号表中断源外部中断0定时器中断T0外部中断1定时器中断T1串行口中断中断编号01234651单片机有三个内部中断,16位定时器/计数器T0、T1的溢出中断源和串行口的发送/接收中断。对T0和T1中断,当定时计数回‘0’溢出时,由硬件自动置位TCON中的TF0或TF1中断请求标志位。定时/计数器实际上是一个加1计数器,它可以工作于定时方式,也可以工作于计数方式。两种工作方式实际上都是对脉冲计数,只不过所计脉冲来源不同。定时器的脉冲是由51单片机的内振荡器经过12分频后产生的,故当单片工作于定时状态时,计数脉冲的最高频率为f=fosc/12。51单片机的寄存器有方式控制寄存器TMOD;加法计数寄存器TH0、TH1(高八位),TL0、TL1(低八位);定时/计数到标志TF0、TF1(中断控制寄存器TCON);定时/计数器启停控制位TR0、TR1(TCON);定时/计数器中断允许位ET0、ET1(中断允许寄存IE);定时/计数器中断优先级控制位PT0、PT1(中断优IP)。在定时器工作前,必须将控制命令写入定时器的控制寄存器,即进行初始化。TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下:1.工作方式选择位M1、M0:M1、M0的状态决定定时器的工作方式:表2工作方式选择表M1M0功能说明00工作方式0(13位方式)01工作方式1(16位方式)10工作方式2(8位自动装入计数初值方式)11工作方式3(T0为两个8位方式)2.定时和计数方式选择位C/T。当C/T=1时为计数方式;C/T=0时为定时方式。3.门控位GATE。GATE与TR0、TR1配合决定定时/计数器的启停。当GATE=0时,软启动。定时器/计数器的启停只受定时器运行控制位(TR0、TR1)的控制。当GATE=1时,软硬启动。定时器/计数器的启停除受TR0、TR1控制外,还受外部引脚(INT0、INT1)输入电平的控制(为高)。即TR0和INT0控制T0的运行,TR1和INT1控制T1的运行。MCS-51的定时器有方式0、方式1、方式2和方式3这4种工作方式。以方式1为例,当M1M0=01时,定时/计数器工作在方式1。MCS-51单片机定时计数器在方式1时的工作原理如下图所示:÷12振荡器T1端TR1GATEINT1端C/T=0C/T=1TL1(8位)TH1(8位)TF1中断控制定时/计数器÷12振荡器T1端TR1GATEINT1端C/T=0C/T=1TL1(8位)TH1(8位)TF1中断控制定时/计数器÷12振荡器T1端TR1GATEINT1端C/T=0C/T=1TL1(8位