1、现代电子技术综合实训 实训报告专业:年级/班级:姓名: 实训时间:实训地点:指导教师:一、 前言:1近些年,人们对数字钟的要求越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,如电子闹钟、数字闹钟等。单片机在多功能数字钟中的应用已是非常普遍,人们对数字钟的功能及工作顺序都非常熟悉,但是却很少知道它的内部结构及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时,实现数字钟的各种功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时。输出设备显示器可以为液晶显示器或数码管。本次设计以 AT89S52 芯片为核心
2、,辅以必要的外围电路,设计了一个简易的电子时钟,它由 5V 直流电源供电。在硬件方面,除了 CPU 外,使用 CD4511 驱动六个 7 段 LED 数码管来进行显示,LED 采用的是动态扫描显示,使用三极管 9015 进行驱动。通过LED 能够比较准确地显示时间。四个简单的按键实现对时间的调整。软件方面采用 C 语言编程。整个电子时钟系统计时比较准确并且方便实用。二、 需求分析单片机自 20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的重视和关注应用很广、发展很快、单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在
3、我国,单片机已广泛的应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而 51 单片机是各单片机中最为典型的和最有代表性的一种。这次设计通过对它的学习、应用,以 AT89S52 芯片为核心,加以辅助电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示时间。2.1 设计要求:1. 以 AT89S52 单片机为核心设计一个时钟控制器。2. 时钟控制器由+5V 直流电源供电。23. 通过六只 7 段数码管准确地显示时间。4. 通过 CD4511 驱动数码管显示。5. 通过按键能够方便的调节时间。2.2 方案比较2.2.1 定时方案一:硬件
4、方法,定时采用专用的时钟芯片如 DS12887,定时较准,但增加了设计成本。方案二:软件方法,利用单片机自身的定时计数功能,设计简单,容易实现并且比较稳定。本设计采用方案二。2.2.2 显示方案一:采用 7 段 LED 数码管。LED 数码管使用 LED 模组作为背光源,具有耗电低、配置灵活、线路简单、安装方便、耐转动、价格低廉且寿命长等优点。方案二:采用 LCD 数码管。LCD 数码管使用“CCFL(冷阴极荧光管) ”作为背光源, CCFL 灯管的发热量大,耗电高,老化较快,LCD 发光不稳定均匀、功耗大,含有害化学物质等但价格相对便宜。LED 在亮度、功耗、可视角度和刷新速率等方面,都更具
5、优势。LED 与 LCD 的功耗比大约为 1:10,而且更高的刷新速率使得 LED 在视频方面有更好的性能表现,可提供宽达 160的视角,故采用方案一。2.2.3 数码管驱动方案一:选用 CD4511 译码驱动芯片。CD4511 能够提供较大的上拉电流,可直接驱动数码管。方案二:利用单片机本身的上拉电阻,虽然外围电路简单,但灌电流和数码管驱动电流不可兼得,即流过数码管电流满足要求,则灌电流会超出单片机的承受极限;灌电流在单片机允许范围内,则流过数码管电流过小。故该方案驱动能力较弱。3为使数码管足够亮,选方案一。三、 器件工作原理3.1 AT89S52 主要的性能参数 8K 字节可擦写 1000
6、 次的在线可编程 ISP 闪存 4.0V 到 5.5V 的工作电源范围 全静态工作:0Hz 24MHz 3 级程序存储器加密 256 字节内部 RAM 32 条可编程 I/O 线 3 个 16 位定时器/计数器 8 个中断源 UART 串行通道 低功耗空闲方式和掉电方式 通过中断终止掉电方式 看门狗定时器 双数据指针 灵活的在线编程(字节和页模式)3.2 AT89S52 引脚说明51 系列单片机 89s52 采用 40Pin 封装的双列直接 DIP 结构。上图是它的引脚配置:40 个引脚中,正电源和地线两根,外置石4英振荡器的时钟线两根,4 组 8 位共 32 个 I/O 口,中断口线与P3
7、口线复用。3.3 引脚的功能:电源引脚:Vcc 40 脚 正电源脚,工作电压为 5V。GND 20 脚 接地端。外接晶体引脚:XTAL2 18 脚,XTAL1 19 脚。复位:RST 9 脚。 输入输出(I/O)引脚:39 脚-32 脚为 P0.0-P0.7 输入输出脚,称为 P0 口,是一个 8位漏极开路型双向 I/O 口。内部不带上拉电阻,当外接上拉电阻时,P0 口能以吸收电流的方式驱动八个 LSTTL 负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。 在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低 8 位)/数据总线,不需要外接上拉电阻。1 脚-8 脚为 P1.0
8、-P1.7 输入输出脚,称为 P1 口,是一个带内部上拉电阻的 8 位双向 I/0 口。P1 口能驱动 4 个 LSTTL 负载。 通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。21 脚-28 脚为 P2.0-P2.7 输入输出脚,称为 P2 口,是一个带内部上拉电阻的 8 位双向 I/O 口,P2 口能驱动 4 个 LSTTL 负载。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收高 8 位地址和控制信息。在访5问外部程序和 16 位外部数据存储器时,P2 口送出高 8 位
9、地址。而在访问 8 位地址的外部数据存储器时其引脚上的内容在此期间不会改变。 10 脚-17 脚为 P3.0-P3.7 输入输出脚,称为 P3 口,是一个带内部上拉电阻的 8 位双向 I/O 口,P3 口能驱动 4 个 LSTTL 负载,这 8 个引脚还用于专门的第二功能。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接控制信息。P13 端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。除此之外 P3 端口还用于一些专门功能,具体请看下表。P3 引脚兼用功能P3.0 串行通讯输入(RXD)P3.1 串行通讯输出(TXD)P3
10、.2 外部中断 0( INT0)P3.3 外部中断 1(INT1)P3.4 定时器 0 输入(T0)P3.5 定时器 1 输入(T1)P3.6 外部数据存储器写选通 WRP3.7 外部数据存储器写选通 RD6其它的控制或复用引脚:ALE/PROG:30 脚 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE 端仍以不变的频率输出脉冲信号(此频率是振荡器频率的 1/6)。在访问外部数据存储器时,出现一个 ALE 脉冲。对 Flash 存储器编程时,这个引脚用于输入编程脉冲 PROGPSEN: 29 脚 该引是外部程序存储器的选通信号输出端。当AT8
11、9C51 由外部程序存储器取指令或常数时,每个机器周期输出2 个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。EA/Vpp: 31 脚 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使 AT89S51 只访问外部程序存储器(地址为 0000H-FFFFH),这时该引脚必须保持低电平。对 Flash 存储器编程时,用于施加 Vpp 编程电压。7四、 硬件设计时钟控制电路由四部分:复位电路、显示电路、晶振电路和控制电路组成如下图所示。4.1 总电路图:正 5V 电源直接接到 AT89S52 的 40 脚(VCC) ,20 脚(GND)接地。电路图如下所示。单片机复位电路
12、晶振电路显示电路按键电路84.2 复位电路该电路采用上电自动复位与手动复位结合接到 89S52 的 9 脚(RST ) 。 由一个 30uF 的电容、一个按键、一个 10K 的电阻和一个220 欧电阻构成。手动按 K5,无论电路处于何种状态,电路都会恢复到初始状态的显示。4.3 显示电路显示电路部分通过 CD4511 驱动七段数码管。CD4511 译码驱动芯片能够提供较高的上拉电流,可以直接驱动七段数码管。三极管可以较为方便的控制七段数码管。电路图如下图所示。94.3.1 CD4511(引脚图如下所示)BI:4 脚是消隐输入控制端,当 BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭
13、(消隐)状态,不显示数字。 LT:3 脚是测试输入端,当 BI=1,LT=0 时,译码输出全为 1,不管输入 DCBA 状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。LE:锁定控制端,当 LE=0 时,允许译码输出。 LE=1 时译码器是锁定保持状态,译码器输出被保持在 LE=0 时的数值。D、C、B、A 为 8421BCD 码输入端。a、b、c、d、e、f、g:为译码输出端,输出为高电平 1 有效。8421 BCD 码对应的显示见下图:4.3.2 数码管101).数码管引脚图2).数码管使用方法LED 数码管分共阳型和共阴型两种,这里我们选择七段共阴型数码管。数码管的 a、
14、 b、c 、d、e、f 引脚分别接到 CD4511 译码驱动芯片对应的引脚。公共端 com 分别与连接在 P2 口的 NPN 的集电极相连接。NPN 的发射极并联接地。CD4511 对应的引脚 ABCD 分别连在 AT89S52 的 P0.0、P0.1 、P0.2、P0.3 引脚。当数码管选通时,通过控制 P0 口来实现七段数码管动态显示数据。4.3.3 三极管1).三极管引脚图2).三极管使用方法11单片机灌电流不易过大。对于数码管每个位选的灌电流约为10mA 左右,六个位选为 60mA,达到了单片机端口极限。可采用三极管,作为开关管,基极接单片机 P2 口,集电极接数码管,发射极并联接地,
15、三极管高电平时导通。导通后集电极电压为 0.3v。满足数码管共阴极接地的要求。4.4 晶振电路18 脚(XTAL1 )和 19 脚(XTAL2 )外接 12MHZ 的晶振和两个 30PF 的电容,震荡频率就是晶体的固有频率。4.5 控制电路本电子钟设计有四个轻触式按键,分别命名为:K1(设置按钮),K2(分钟加 1),K3(小时加 1),K4(确定按钮)。按键电路五、 软件设计121.软件设计总框图1)总框图(如图 5.1)2)程序代码详见附录 1。5.1 主程序流程图2.数码管控制:1)流程图(如图 5.2) 。2)程序代码详见附录 1。NNNNYYYY秒单元加 160s 了吗?秒单元清零,
16、分单元加 160 分了吗?分单元清零,时单元加 1到 24 小时了?时单元清零主程序入口到 1s 了吗?定时器初始化135.2 数码管控制流程图3.定时器中断的使用:1)流程图(如图 5.3) 。2)程序代码详见附录 1。5.3 定时器中断流程图六、 实习心得(设计实物照片)经过几周的努力,感触颇深。从开始的搜索整理资料到程序在电路板上边良好的运行,期间并非是一帆风顺的。但我们克服了重重障碍。终于完成了时钟控制器的制作,看着数码管上的时间一分一秒的跳动,那一刻激动地心情无法用语言来表达,只是感觉身上14的每一个细胞都充满了活力。对于电子信息工程专业即将毕业的我们,本次实训是我们走入职场之前比较
17、有意义的一次实训。实训开始时候漫无目的,不知道从何着手,但是随着资料的整理,之间不断地学习,渐渐地完成了电路板的焊接。本来以为将写好的程序烧到芯片里边,时钟就可以正常的运行了,但是当我在写程序的时候,才发现这部分对于电路的调试却是整个设计环节的重中之重。这里边不但涉及到硬件的调试,还有软件的调试。下面有我的调试记录:1.硬件电路按键部分不起作用由于按键一端接地,另一端接 AT89S52。按键电路接上拉电阻,接+5V。但是用万用表检查后发现按键的引脚接错了。当更改了按键的引脚连接后,问题解决。2.第四个数码管始终选通因为六只数码管中只有一只时钟选通,所以怀疑是位选环节的错误,经过检验,是三极管的
18、问题。更换了一个三极管,问题得到解决。3.放在定时器 T1 中的按键程序没有运行。放在定时器 T1 中的中断程序没有运行,通过检查,发现没有对定时器 T1 重新赋初值。对定时器 T1 赋初值 2ms 之后,按键程序得以运行。随着这次实训的结束,我们真正理解了理论联系实践的重要性。如果空有理论而没有实践,就像一件物品,知道了它的功能,但是不知道如何运用,这样便失去了它实用的价值。如果空有实践没有理论的支持,就像一辆汽车一直在行驶,却没有前进的方向,继续这样前进,那么前方将会是万丈深渊。21 世纪,是一个飞速发展的年代,需要的是复合型人才。这就要求我们既要掌握丰富的理论基础,还要懂得如何将它们灵活
19、的运用。实训虽然结束了,但是要想在本专业有更高更远的发展,那么对于我们的考验才刚刚开始。我们会不断扩展自己的知识面,努力15的进取,踏踏实实的走好今后的每一步。参考文献:1 刘建清.51 单片机 C 语言非常入门与视频演练.北京:电子工业出版社,2010(5).2 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,2010(5).3张瑾,张伟,张立宝.Protel 99SE 入门与提高.北京:人民邮电出版社,2008(2).4孙江宏,李良玉.Protel 99 电路设计与应用.北京:机械工业出版社,2001(2).附件:附件 1:程序代码/*/File name :基于单片机控制的时
20、钟电路/main department:数码管显示模块,按键模块,定时器中断模块/Descriptions :定时器 T0 每 10ms 刷新一次 用于产生系统的时基信号外部中断 0,外部中断 1 和定时器 1 用于控制按键 K1,K2,K3,K4。K1 键按下,时钟走停。当时钟走停时,按 K2 键一次分加 1,按 K3 键一次秒加 1,按 K4 键时钟恢复走时复位按键对时钟进行初始化/Created By : /Created date : 2011-10-3016*/#include“reg52.h“#include“intrins.h“#define uchar unsigned cha
21、r /uchar 为无符号字符型数据uchar hour=0,minute=0,second=0; /时钟初始化uchar second_h=0,second_l=0; /秒的十位、个位uchar minute_h=0,minute_l=0; /分的十位、个位uchar hour_h=0,hour_l=0; /时的十位、个位uchar code led7=0x00,0x08,0x01,0x09,0x02,0x0a,0x03,0x0b,0x04,0x0c; / 19 的字形码uchar th= 0; /对定时器 0 计数uchar key=0;sbit K1=P32; /定义 K1 按键sbit
22、 K2=P33; /定义 K2 按键sbit K3=P34; /定义 K3 按键sbit K4=P35; /定义 K4 按键bit flag = 0; /当时间为 1 秒时 flag 置 1bit K_flag = 1; /按键标志位void delay(); /声明延时函数 /*外部中断 0如果 K1 键按下 时钟走停*/void int_w0() interrupt 0 EX0=0; if(K_flag=1)TR0=0; K_flag=0;else TR0=1;K_flag=1;EX0=1;/*外部中断 1当时钟走停时 有 K2 键按下 分钟加 1*/void int_w1() inter
23、rupt 2 /外部中断 1EX1=0;if(K_flag=0delay();if(K_flag=0minute+;if(minute=60)17minute=0;EX1=1;/*定时器 1 定时 2ms当时钟走停时 有 K3 键按下 小时加 1当时钟走停时 有 K4 键按下 时钟恢复走时*/void int1() interrupt 3 TR1=0; /关闭定时器 1TH1=0xf8; / 对定时器 1 重新赋值 定时 2msTL1=0x30;if(K_flag=0delay(); /去除按键抖动if(K_flag=0 /等待 K3 键释放if(hour以下是显示部分*/while(1)wh
24、ile(flag=1) /当时间为 1 秒时if(second定时器 0 用于产生整个时钟系统的时基信号 定时 10ms 计数 100 次 即为 1s*/ void int0() interrupt 1 TR0 = 0; /关闭定时器 0TH0 = 0xd8; /定时 10msTL0 = 0xf0;if(th以下是延时函数*/void delay()int i;for(i=10;i0;i-)_nop_();21附 2:产品使用说明1接通电源后 ,时钟控制器开始工作。2本电子钟设有四个轻触式按键,分别为 K1,K2,K3,K4。K1 为设置键,按下后可以停止时钟计时,从而进行时间设置。时钟只有按下 K1 键后才可以调节时间,否则按其他键不起作用。K2 键按下一次,分钟加 1,K3 键按下一次,小时加 1。调节时间完成后,按 K4 键,时钟恢复。3如果时钟出现故障,按下复位键,本产品恢复到出厂设置。附 3:元器件清单22元件名称 型号 数量/个单片机 AT89S52 1晶振 12 MHZ 1电容 30pF 2电解电容 10F/10V 1电阻 10k 1电阻 220 1电阻 5K 8电阻 4.7K 6CD4511 1三极管 9015 6按键 57 段数码管 6