1、基于单片机的简易电子钟设计基于单片机的简易电子钟设计专业课设说明:本次专业课程设计通过对本专业知识的学习、应用,以STC89C51单片机为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,调整时间。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。本次课设由本人(傅锦城136712117)孙龙龙(136712116)黄
2、宗旭(136712107)为一组共同完成。本人负责搜集简易时钟的设计和制作原理以及所用电路元件的参数资料和使用方法等相关资料。并且负责电路的焊接工作。孙龙龙负责单片机程序的编写。黄宗旭负责电路原理图的绘制和模拟。1. 系统基本设计思路此设计是在数码管上显示时、分和秒,电路包括:键盘、单片机及显示驱动电路。各部分说明:(1) 键盘用于校正、调节数码管上显示的时间。(2) 单片机通过输出各种电脉冲信号开驱动控制各部分正常工作。(3) 单片机发送的信号经过显示电路通过译码最终在数码管上显示出来。(4) 按键还可以切换12小时制和24小时制,并有指示灯。系统工作过程:时间的主要处理过程是在CPU中完成
3、的。CPU会随时对时间进行读取数据的操作。在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把数据显示在数码管上。2. 单元电路方案根据设计要求,本系统主要由控制器模块、显示驱动模块和输入模块构成。2.1 控制器模块采用51系列作为系统控制器单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。而且抗干扰性能好。2.2 计时模块本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器
4、内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。2.3 显示模块 采用LED数码管显示用LED数码管。虽然显示的内容有限,但是也可以显示数字和几个英文字母,在此设计中已经足够了,并且价格比液晶字符式要低的多,为了降低设计制作的成本,在此设计中我们选用LED数码管显示。3. 系统硬件介绍本设计采用STC89C51单片机作为主控制器,外部加
5、上74HC573驱动数码管。系统总体框图如下:单片机电源模块晶振电路数码管驱动模块按键模块复位电路指示灯模块图1 系统总体框图3.1 STC89C51单片机STC89C51是一种低功耗、高性能CMOS8位微控制器,具有 4K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 4k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工
6、串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。图2 STC89C51单片机引脚图单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。(一)STC89C51主要功能、性能参数如下:(1)内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟;(2)工作频率范
7、围:040MHZ,相当于普通8051的080MHZ;(3)STC89C51RC对应Flash空间:4KB;(4)内部存储器(RAM):512B;(5)定时器计数器:3个16位;(6)通用异步通信口(UART)1个;(7)中断源:8个;(8)有ISP(在系统可编程)IAP(在应用可编程),无需专用编程器仿真器;(9)通用IO口:3236个;(10)工作电压:3.85.5V;(11)外形封装:40脚PDIP、44脚PLCC和PQFP等。(二)STC89C51单片机的引脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第
8、一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻
9、拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3.0 RXD(串行
10、输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指
11、令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。RST:复位输入。当振荡器
12、复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部
13、程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。(三)STC89C51单片机最小系统:最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正
14、常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图3所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。时钟电路复位电路51系列单片机I/O接口图3 单片机最小系统原理框图(1) 时钟电路STC89C51单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2-
15、4所示。在STC89C51单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在530pF,典型值为30pF。晶振CYS的振荡频率范围在1.212MHz间选择,典型值为12MHz和6MHz。图4 STC89C51内部时钟电路(2) 复位电路当在STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的
16、上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。按键手动复位电路见图5。时钟频率用11.0592MHZ时C取10uF,R取10k。图5 STC89C51复位电路(四) STC89C51中断技术概述中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求
17、时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。图6为整个中断响应和处理过程。 图6 中断响应和处理过程3.2 数码管驱动模块数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工
18、程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。图7数码管
19、 本设计采用共阴数码管,显示方式为动态显示,利用数码管的dp点将小时、分钟和秒分隔开。3.3 74HC573芯片介绍74HC573包含八路D 型透明锁存器,每个锁存器具有独立的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。OE端的操作不会影响锁存器的状
20、态。表2 74HC573电气参数表74HC573 参数74HC573 基本参数电压2.06.0V驱动电流+/-7.8 mA传输延迟14 ns5V74HC573 其他特性逻辑电平CMOS功耗考量低功耗或电池供电应用74HC573 封装与引脚SO20, SSOP20, DIP20, TSSOP2074HC573特征:1. 输入输出分布在芯片封装的两侧,为微处理器提供简便的接口 2. 用于微控制器和微型计算机的输入输出口 3. 三态正相输出,用于面向总线的应用 4. 共用三态输出使能端 本设计只用到了74HC573的驱动作用,来驱动数码管的形,使得数码管更亮,单片机直接控制数码管的位,实现数码管的驱
21、动显示,电路中的应用图如下:图8 74HC573驱动电路3.4 按键调时模块单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机内部的上拉电
22、阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时1020
23、0毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O 口的值,这一次的值如果为1 表示低电平的时间不到10200 毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。硬件电路如图9所示: 图9 键盘控制电路图本设计的按键功能是:当K0按下的时候可以切换小时制,当K1按键的时候是小时加一,当K2按下的时候分钟加一,当K3按下的时候秒清零。就是通过这3个按键实现对时间的校正。3.5 指示灯模块指示灯提示模块包括LED和限流电阻。发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光;它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用
24、电场发光。据分析,LED的特点非常明显,寿命长、光效高、辐射低与功耗低。作为目前全球最受瞩目的新一代光源,LED因其高亮度、低热量、长寿命、无毒、可回收再利用等优点,被称为是21世纪最有发展前景的绿色照明光源。近几年来,随着人们对半导体发光材料研究的不断深入,LED制造工艺的不断进步和新材料(氮化物晶体和荧光粉)的开发和应用,各种颜色的超高亮度LED取得了突破性进展,其发光效率提高了近1000倍,色度方面已实现了可见光波段的所有颜色,其中最重要的是超高亮度白光LED的出现,使LED应用领域跨越至高效率照明光源市场成为可能。曾经有人指出,高亮度LED将是人类继爱迪生发明白炽灯泡后,最伟大的发明之
25、一。 本设计中半点的时候LED小灯会闪烁5次,整点的时候会闪烁10次。图10 LED提示电路4. 系统软件设计4.1 编程软件Keil C51Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开
26、发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 Keil_c软件界面如图12: 图12 Keil_c软件界面该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程。4.2 绘制原理图图13 Prtel99SE软件界面 4.3 仿真软件proteus图14 proteus仿真软件4.4 程序流程图程序流程图如图15所示:图15 程序流程图开始定时器初始化并打开定时器小时加键是否按下分钟加键是否按下小时加一并存入寄存器秒清零并存入寄存器将小时、分钟和秒数据显示结束秒清零键是否按下分钟加一并存入寄存器 5. 调试与实现在本次课设制作过程中
27、,我负责查找相关资料,并根据电路原理图来焊接元器件。焊接时电路中的飞线用导线相连接。焊接好后,不要忙于通电,首先要检测有没有短路,万一有短路几通电,将会很麻烦,容易烧毁电路板或元器件,更容易引发安全隐患。确保无短路再通电。6. 结 论我在这一次数字电子钟的设计过程中,很是受益匪浅。通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和团队合作能力及书面表达能力,最终完成了。这为自己今后进一步深化学习,积累了一定宝贵的经验。撰写论文的过程也是专业知识的学习过程,它使我学会搜集相关资料,了解元器件的参数及使用方法。通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践
28、相整合,理论知识服务于教学实践,以增强自己的动手能力。这个实验十分有意义我获得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。参考文献1 谢自美电子
29、线路设计实验测试M武汉:华中理工大学出版社,1992.2 何立民单片机应用系统设计M北京:北京航空航天大学出版社,1993.3 楼然笛单片机开发M北京:人民邮电出版社,1994.4 付家才单片机控制工程实践技术M北京:化学工业出版社 2004.3.5 李光才单片机课程设计 实例指导M 北京:北京航空航天大学出版社 2004.6 朱定华单片机原理及接口技术实验M北京:北方交通大学出版社2002.11.7 刘湘涛江世明单片机原理与应用M. 北京:电子工业出版社,2006.附录 1 原理图附录 2 仿真图附录 3 主要源程序#include#define uc unsigned char#defin
30、e ui unsigned intsbit LED=P32;/定义LEDsbit key0=P33;/定义小时切换sbit key1=P34;/定义调小时sbit key2=P35;/定义调分钟sbit key3=P36;/定义秒清零sbit wan=P37;uc min,hour,sec,num;bit bdata zhi;uc code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*0,1,2,3,4,5,6,7,8,9,.*/共阴极编码void delay(ui x)/延时函数 ui i,j; for(i=0;ix;i+)
31、 for(j=0;j121;j+);void display()/扫描显示函数,高位到低位 P0=tabhour/10; P2=0xdf;/11011111 delay(1); P2=0xff; P0=(tabhour%10)|0x80;/给第二位后加“点 P2=0xef;/11101111 P2=0xf7;/11110111 delay(1); P2=0xff; P0=(tabmin%10)|0x80;/给第四位后加“点” P2=0xfb;/11111011 delay(1); P2=0xff; P0=tabsec/10; P2=0xfd;/11111101 delay(1); P2=0xff; P0=tabsec%10; P2=0xff;void keyscan()/键盘扫描,开关接地
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1