《课程设计(论文)基于单片机系统的电子钟设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机系统的电子钟设计.doc(30页珍藏版)》请在三一办公上搜索。
1、课程设计任务书学院_专业_班级_姓名_一、 课程设计题目:_二、 课程设计主要参考资料:(1)_(2)_(3)_(4)_三、 课程设计应解决的主要问题:(1)_(2)_(3)_(4)_四、 课程设计相关附件(如:图纸、软件等):(1)_(2)_(3)_(4)_五、 课程设计开始日期:_ 课程设计完成日期:_指导老师签字:_指导老师对课程设计的评语 指导老师签字:_ _年_月_日 基于单片机系统的电子钟设计一、引言3二、总体设计42.1电子钟系统硬件组成42.1.1、AT89S51单片机简介52.1.2、74HC164芯片简介82.1.3、8段共阳数码管简介122.2、设计原理图132.3 设计
2、综述14三、程序设计143.1程序框图143.2、程序的主要模块153.2.1、初始化程序153.2.2、中断服务子程序163.2.3、显示程序173.2.4、主函数17四、电路实现20五、设计总结22六、附录:程序清单23一、 引言单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存
3、储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点。在
4、我国,单片机的开发应用已有15年左右,已经形成一支庞大的技术开发队伍,为我国单片机应用积累了丰富的经验。随着电子技术、计算机芯片技术和微电子技术的飞速发展促进了单片机技术一日千里的变化。随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。数字钟采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的
5、精度、稳定度远远超过老式机械钟。在这次设计中,以AT89S51为核心采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用6MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整以及显示年月日及其的调整。二、总体设计2.1电子钟系统硬件组成电子钟系统硬件主要由AT89S51单片机、移位寄存器74HC164、七段数码管等元器件组成。AT89S51单片机C源程序74HC164七段数码管显示按键输入2.1.1、AT89S51单片机简介AT89S51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,其内部
6、程序代码容量为4KB(一)、AT89S51主要功能列举如下:1、为一般控制应用的 8 位单芯片2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程式存储器(ROM)为 4KB4、内部数据存储器(RAM)为 128B5、外部程序存储器可扩充至 64KB6、外部数据存储器可扩充至 64KB7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制8、5 个中断向量源9、2 组独立的 16 位定时器10、1 个全多工串行通信端口11、8751 及 8752 单芯片具有数据保密的功能12、单芯片提供位逻辑运算指令(二)、AT89S51各引脚功能介绍:VCC:AT89S51 电源正
7、端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文Extern
8、al Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S51可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存
9、器中,因为AT89S51是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.
10、7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I
11、/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.
12、0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。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,外部数据存储器的读取信号。2.1.2、74HC164芯片简介8 位串入、并出移位寄存器1. 概述74HC164、
13、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,
14、同时非同步地清除寄存器,强制所有的输出为低电平。2. 特性 门控串行数据输入 异步中央复位 符合 JEDEC 标准 no. 7A 静电放电 (ESD) 保护:HBM EIA/JESD22-A114-B 超过 2000 VMM EIA/JESD22-A115-A 超过 200 V 。 多种封装形式 额定从 -40 C 至 +85 C 和 -40 C 至 +125 C 。3. 功能图图 1. 逻辑符号图 2. IEC 逻辑符号图 3. 逻辑图图 4. 功能图4. 引脚信息图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置引脚说明符号引脚说明DSA1数据输入DSB1数据
15、输入Q0Q336输出GND7地 (0 V)CP8时钟输入(低电平到高电平边沿触发)/M/R9中央复位输入(低电平有效)Q4Q71013输出VCC14正电源5. 功能表工作模式输入输出/M/RCPDSADSBQ0Q1 至 Q7复位(清除)LLXXLL 至 L移位HllLq0 至 q6HlhLq0 至 q6HhlLq0 至 q6HhHHq0 至 q6H = HIGH(高)电平h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIGH(高)电平L = LOW(低)电平l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平q = 小写字母
16、代表先于低-至-高时钟跃变一个建立时间的参考输入 (referenced input) 的状态 = 低-至-高时钟跃变 2.1.3、8段共阳数码管简介 8段共阳数码管,A,B,C,D,E,F,G,DP端为低电平时,相应端数码管段发光。2.2、设计原理图2.3 设计综述本设计采用AT89S51单片机为核心,采用串行移位方式输出数据到7段数码管显示,接6个七段数码管采用6个74LS164移位寄存器串联将串行数据转并行输出。内部中断采用定时器T0,结合软件计数。3个按键接P0口,采用循环检测方式检测按键输入。3个按键分别控制显示模式,时间数值的调整。三、程序设计3.1程序框图初始化显示按键判断调时按
17、下mod按键调分调秒增加减少增加减少增加减少按下mod按键按下mod按键按下mod按键3.2、程序的主要模块3.2.1、初始化程序void init(void) TMOD=0x01; TL0=(65536-100000/2)%256; TH0=(65536-100000/2)/256; TR0=1; ET0=1; EA=1; SCON=0x00;初始化程序完成程序初始化任务,设置各变量的初值,采用T0定时器计时,中断一次时间为0.1s,计数10次为1s。3.2.2、中断服务子程序void T0_int(void) interrupt 1 using 1 TL0=(65536-100000/2)
18、%256; TH0=(65536-100000/2)/256; Int_timers+;if(Int_timers=5)Flash_flag =1;elseFlash_flag=0;if(Int_timers=10) Int_timers=0; Sec+; if(Sec=60) Sec=0; Min+; if(Min=60) Min=0; Hour+; if(Hour=24) Hour=0; ; ; ;程序进入定时器中断后,重新装填计数初值,若经过0.5s,改变半秒标志。中断记满10次后为一秒。经60秒后为1分,以此类推。3.2.3、显示程序void display(void) unsigne
19、d char i; for(i=0;i6;i+) SBUF=DispBufi;while(TI=0); /等待发送完毕TI=0; /把发送完标志清掉以备下次再用 显示程序把显示缓冲区中的数发到串行口输出。循环检测来保证数据不被覆盖。3.2.4、主函数main() init(); for(;) / if(DisPlay_Back!=Flash_flag) /是否显示? ChangeToDispCode(); DisPlay_Back=Flash_flag; /显示过后要半秒后再显示 if(Flash_flag) /更新双点闪烁 if(point!=0) switch(point) case(1)
20、:DispBuf0=0xff;DispBuf1=0xff;break;case(2):DispBuf2=0xff;DispBuf3=0xff;break;case(3):DispBuf4=0xff;DispBuf5=0xff;break; DispBuf2=DispBuf2|0x10; /双点熄灭 DispBuf4=DispBuf4|0x20; else DispBuf2=DispBuf2&0xef; /点亮双点 DispBuf4=DispBuf4&0xdf; ; display(); / if(P1&0x07)!=0x7) delay(); if(P1&0x07)!=0x7) if(P1_2
21、=0) point=(point+1)%4; else if (P1_1=0) switch(point) case 1: Hour=(Hour+1)%24; break; case 2: Min=(Min+1)%60; break; case 3: Sec=(Sec+1)%60; break; ; display(); else if (P1_0=0) switch(point) case 1: Hour=(Hour+24-1)%24; break; case 2: Min=(Min+60-1)%60; break; case 3: Sec=(Sec+60-1)%60; break; ; d
22、isplay(); ; ; ;主函数的主要任务为按键检测和数据显示。按键检测时采用延时消抖。当调整时间时,调整某位,某位显示时闪亮。四、电路实现PCB版图的绘制PCB版图的绘制采用protel 99se软件,绘制双层板。Top层 Bottom层五、设计总结我在这一次单片机时钟的设计过程中,受益匪浅。通过对自己在课堂里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考,最终在实践中调试成功,完成了。这为自己今后进一步深化学习,积累一定宝贵的经验。撰写论文的过程也是专业知识的一部分,一个学习的过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决实际问题的能力。 通过这次课程设计
23、我发现,只有理论水平提高了,才能够将书本上的知识与实践相互结合,理论知识服务于实践,以增强自己的动手能力。这个毕业设计十分有意义,我获得很深刻的经验。通过这次的设计,我们知道了理论和实际的距离,也知道了理论和实践相互结合的重要性,也从中得到了很多书上无法得知的知识。 我们的学习不但要立足于书本,以解决理论和实践中的问题为目的,还要加强自己解决实际遇到的问题,通过自己的手来解决问题比用脑解决问题更加深刻,这次的设计既巩固了我的理论知识,又加强了我的动手能力和解决问题的能力。六、附录:程序清单#include unsigned char Hour=0,Min=0,Sec=0,Int_timers=
24、0,dp1=1,dp2=1;unsigned char point=0;code unsigned char LEDCode=0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80; /数码管显示代码code unsigned char ErrorLEDCode=0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80;/绘制错误图纸的数码管显示代码unsigned char DispBuf6; /显示缓冲区unsigned char Flash_flag=0; /闪烁标志,每半秒闪烁unsigned cha
25、r DisPlay_Back=0; sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;/*void delay(void) unsigned int i; for(i=0;i1200;i+);/*void ChangeToDispCode(void) DispBuf0=LEDCodeHour/10; DispBuf1=LEDCodeHour%10; DispBuf2=LEDCodeMin/10; DispBuf3=LEDCodeMin%10; DispBuf4=ErrorLEDCodeSec/10; DispBuf5=LEDCodeSec%10;/void display(void) unsigned char i; for(i=0;i=5)Flash_flag =1;elseFlash_flag=0;if(Int_timers=10) Int_timers=0; Sec+; if(Sec=60) Sec=0; Min+; if(Min=60) Min=0; Hour+; if(Hour=24) Hour=0; ; ; ;/ / display(); ;
链接地址:https://www.31ppt.com/p-3993541.html