毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc

上传人:laozhun 文档编号:4149583 上传时间:2023-04-07 格式:DOC 页数:24 大小:338KB
返回 下载 相关 举报
毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc_第1页
第1页 / 共24页
毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc_第2页
第2页 / 共24页
毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc_第3页
第3页 / 共24页
毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc_第4页
第4页 / 共24页
毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于STC89C52单片机的可调闹铃时长万历设计.doc(24页珍藏版)》请在三一办公上搜索。

1、目 录摘要2关键词2一 概述2 (一)概述2 (二)单片机的发展历程2二 系统原理与硬件设计3 (一)硬件选择3(二)原理图3 (三)STC89C52单片机简介4 (四) LED数码管简介6 (五) 74hc573简介7三 软件设计8 (一)主程序8 (二)软件行走时间的子程序9 (三)显示刷新子程序11 (四)调整时间子程序12四 调试过程及数据分析17 (一)硬件调试17 (二)软件调试17结论18致谢18参考文献20基于STC89C52单片机的可调闹铃时长万年历设计摘 要本次设计根据STC89C52单片机系统扩展的基本原理和方法、常用总线标准和典型接口电路的应用,结合本次设计的题目要求进

2、行系统扩展,通过单片机控制驱动电路驱动LED动态显示的方式完成设计任务,设计论文中附有电路图、程序清单。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序.本次设计采用74hc573芯片做驱动,使用5V电源供电。由15块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。 关键词:STC

3、89C52;时钟日历;74hc573锁存芯片一 概 述(一) 概述随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了极大的方便。走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。目前,单片机以其可靠性高和智能性等特点被广泛应用到工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等领域中,并已经进入家庭,因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之一。(二)单

4、片机的发展历程单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段,以INTEL公司制造的MSC-48系列单片机为代表。第三阶段为高性能单片机阶段,这个阶段推出的单片机普遍带有穿行接口,多级中断系统,16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。第四阶段是8位单片机巩固发展以及16位单片机、32位单片机推出阶段,以满足不同的用户需要。纵

5、观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。二 系统原理与硬件设计本次的设计题目是电子万年历设计,要求实现年、月、日、时、分、秒的正常显示,需要硬件和软件的结合来实现。本次设计利用STC89C52单片机的功能利用实现的。,STC89C52单片机计算时间信号后从P0将信号送出经过到LED数码管显示,同时将信号通过P1、P2口送往到数码管位选端。这样,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。根据设计的要求万年历要显示年、月、日、时、分、秒的显示就需要15个显示数码管

6、。根据设计要求,用按键来实现时间及闹铃的调整,另外闹铃响的时间长短根据自己需要可自行设定。在明确本次设计思路之后,画出设计框图,总体框图如图2.1所示。 图2.1 设计总体框图(一) 硬件选择(1)单片机的选择 选用STC89C52系列单片机原理与接口技术单片机,并配备12MHz晶振,复位电路采用上电复位。(2)显示电路选择,采用74hc573作驱动,共阴极数码管显示。(3)电源选择 采用直流5V电源供电。(4)驱动器的选择 采用锁存器74hc573。(二) 原理图(三) STC89C52单片机简介STC89C52单片机是一种低功耗,高性能的片内含有4KB可编程/擦除只读存储器(FPEROMF

7、lash Programmable and Erasable Read Only Memory)的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与STC89C52系列单片机原理与接口技术引脚和指令系统完全兼容。芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对存储器重复编程。1 单片机的构成STC89C52单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件。2 STC89C52单片机性能及特点(1)与MCS-51微控制器产品系列兼容。(2)片内有8KB可在线重复编程的快闪擦写存储器(Flash Memor

8、y)。(3)存储器可循环写入/擦除100000次以上。(4)存储数据保存时间为10年。(5)工作电压范围:Vcc可为2.7V6V。(6)全静态工作:可从0HZ到16MHZ。(7)程序存储器具有3级加密保护。(8)1288位内部RAM。(9)32条可编程I/O线。(10)三个16位定时器/计数器。(11)中断结构具有5个中断源和2个优先级。(12)可编程全双工串行通道。(13)空闲状态维持低功耗和掉电状态保存存储内容。STC89C52单片机采用40条引脚双列直插式器件,引脚除5V( 40脚)和电源地( 20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,逻辑框图及引脚图分别如图2.4(

9、a)(b)所示 (a) (b) 图2.4 STC89C52单片机逻辑图(a)与引脚图(b)STC89C52单片机的内部硬件结构中除了程序存储器由FPEROM取代了87C51单片机的EPROM外,其余部分完全相同,其管脚说明如下:(1)VCC:供电电压(2)GND:接地(3)时钟电路 XTAL1(19脚)芯片内部振荡电路(单级反相放大器)输入端。 XTAL2(18脚)芯片内部振荡电路(单级反相放大器)输出端。 (4)I/O接口P0口(P0.0P0.7,3932脚)三态双向口;P1口(P1.0P1.7,18脚)准双向口;P2口(P2.0P2.7,2128脚)通用I/O接口;P3口(P3.0P3.7

10、,1017脚)双功能口:P3口也可作为STC89C52系列单片机原理与接口技术的一些特殊功能口使用如: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(外部数据存储器读选通);(四) LED数码管简介LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.7(a)是共阴

11、和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。LED数码管的结构图如图2.7(b)所示。(a)内部结构图图(b) LED分类结构图和结构图1 LED显示电路(1)静态显示电路LDE显示器工作在静态显示时,其公共阳极(或阴极) 接VCC(或GND) ,一直处于显示有效状态,所以每一位的显示内容必须由锁存器加以锁存,显示各位相互独立。(2) 动态显示电路 将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多位复用。而各位的公共阳极或公共阴极则分别由相应的I/O口线控制

12、,实现各位的分时选通,即同一时刻只有被选通位是能显示相应的字符,而其他所有位都是熄灭的。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。这就需要单片机不断地对显示进行控制,CPU需要不断地进行显示刷新。 (五) 74HC573简介 74hc573的管脚图如图2.9(b)所示。 (b)三 软件设计本次设计采用c语言编程,主程序主要实现显示的初始化和调用各子程序工作的功能,时间信息由程序完成。在显示刷新子程序中采用动态显示方式,按要求将时间信号(年、月、日、时、分、秒)送出以供显示。(一) 主程序程序功能:设定数码管的初始状态、不停地调用子程序,使系统循环工作。并判断按

13、键的状态。主程序如下所示:#include#define ui unsigned int#define uc unsigned charunsigned int i,t;uc a,b,cc,c,d,dd,e,ee,f,ff,g,h,j,jj,k,l,m,n,nn,o,oo,p,pp,q,qq,r,rr,s,ss,u,uu,v,vv,aa,bb,ccc,rrr;uc code bmb=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uc code bm=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0

14、x6f;uc code xq=0x7f,0x06,0x5b,0x4f,0x66,0x6d,0x7d;void xy();sbit wei=P20;sbit weii=P22;sbit duan=P21;void cs()a=0;b=0;c=0;d=0;e=2;f=1;g=0;h=12;j=4;k=0;l=0;m=1;n=0;o=9;p=0;qq=0;q=0;rr=0;r=2;s=1;u=1;v=0;aa=0;bb=0;cc=0;dd=0;ee=0;ff=0;jj=0;nn=0;uu=0;oo=0;pp=0;qq=0;rr=0;vv=0;ss=0;TMOD=0x11;TH0=(65536-499

15、54)/256;TL0=(65536-49954)%256;TH1=(65536-49954)/256;TL1=(65536-49954)%256;EA=1;EX0=1;EX1=1;ET0=1;ET1=1;IT0=0;IT1=0;TR0=1;TR1=1;void main()cs();while(1)xs();void xy()/延时函数ui x,y;for(x=10;x0;x-)for(y=10;y0;y-) (二) 软件行走时间的子程序程序功能:实现年月日时分秒的行走。软件行走时间子程序如下所示void ds0() interrupt 1TH0=(65536-49954)/256;TL0=

16、(65536-49954)%256;g+;if(g=20)g=0;a+;if(a=10)a=0;b+;if(b=6)b=0;c+;if(c=10)c=0;d+;if(d=6)d=0;e+;h+;if(h=24)h=0;a=0;b=0;c=0;d=0;e=0;f=0;j+;if(j=7)j=0;k+;if(k=l)k=0;s=0;v=0;m+;if(m=13)m=1;u=0;n=0;o+;if(o=10)o=0;p+;if(p=10)p=0;q+;if(q=10)q=0;r+;u+;if(u=10)u=0;n+;s+;if(s=10)s=0;v+;if(e=10)e=0;f+;if(f=3)f=

17、0; (三) 显示刷新子程序程序功能:将数据以动态的方式显示出来。程序下所示:void xs()t=(r*1000+q*100+p*10+o*1);m=(10*n+u);h=(10*f+e);k=(10*v+s-1);if(m=1)l=31;if(m=2)l=28;if(t%4=0)l=29;if(m=3)l=31;if(m=4)l=30;if(m=5)l=31;if(m=6)l=30;if(m=7)l=31;if(m=8)l=31;if(m=9)l=30;if(m=10)l=31;if(m=11)l=30;if(m=12)l=31;if(ff=0)P1=0x79;P0=bmf;xy();if

18、(ee=0)P1=0xb9;P0=bme;xy();if(bb=0)P1=0xd9;P0=0x80;xy();if(dd=0)P1=0xe9;P0=bmd;xy();if(cc=0)P1=0xf1;P0=bmc;xy();P1=0xfd;P0=bmbb;xy();P1=0xfb;P0=bmba;xy();if(jj=0)P1=0xf8;P0=xqj;xy();P1=0xf9;if(rr=0)P2=0x7f;P0=bmr;xy();if(qq=0)P2=0xbf;P0=bmq;xy();if(pp=0)P2=0xdf;P0=bmp;xy();if(oo=0)P2=0xef;P0=bmo;xy()

19、;if(nn=0)P2=0xf7;P0=bmn;xy();if(uu=0)P2=0xfb;P0=bmu;xy();if(vv=0)P2=0xfd;P0=bmv;xy();if(ss=0)P2=0xfe;P0=bms;xy();P2=0xff;(四)调整时间子程序程序功能:调整年月日十分及闹铃。程序下所示:void xuan() interrupt 2i=20000;while(i-);aa+;if(aa=1)TR0=0;if(aa=2)rr=0;if(aa=3)qq=0;if(aa=4)pp=0;if(aa=5)oo=0;if(aa=6)nn=0;if(aa=7)uu=0;if(aa=8)vv

20、=0;if(aa=9)ss=0;if(aa=10)jj=0;if(aa=11)ff=0;if(aa=12)ee=0;if(aa=13)dd=0;if(aa=14)cc=0;TR0=1;aa=0;void tiao() interrupt 0i=20000;while(i-);if(aa=1)r+;if(r=10)r=0;if(aa=2)q+;if(q=10)q=0;if(aa=3)p+;if(p=10)p=0;if(aa=4)o+;if(o=10)o=0;if(aa=5)n+;if(n=2)n=0;if(n=0)u=1;if(n!=0)u=0;if(aa=6)u+;if(n=0)if(u=10

21、)u=1;if(n=1)if(u=3)u=0;if(aa=7)v+;if(v=3)if(m=2)v=0;if(v=4)v=0;if(v=0)s=1;if(v!=0)s=0;if(aa=8)s+;if(v=0)if(s=10)s=1;if(v=1)if(s=10)s=0;if(v=2)if(m!=2)if(s=10)s=0;if(m=2)if(t%4=0)if(s=10)s=0;if(t%4!=0)if(s=9)s=0;if(v=3)if(m=1)if(s=2)s=0;if(m=3)if(s=2)s=0;if(m=5)if(s=2)s=0;if(m=7)if(s=2)s=0;if(m=8)if(

22、s=2)s=0;if(m=10)if(s=2)s=0;if(m=12)if(s=2)s=0;if(m=4)s=0;if(m=6)s=0;if(m=9)s=0;if(m=11)s=0;if(aa=9)j+;if(j=7)j=0;if(aa=10)f+;e=0;if(f=3)f=0;if(aa=11)e+;if(f=0)if(e=10)e=0;if(f=1)if(e=10)e=0;if(f=2)if(e=4)e=0;if(aa=12)d+;if(d=6)d=0;if(aa=13)c+;if(c=10)c=0;void ds1() interrupt 3TH1=(65536-49954)/256;T

23、L1=(65536-49954)%256;if(aa=0)ccc+;if(ccc=10)bb=1;if(ccc=20)ccc=0;bb=0;if(aa=1)rrr+;if(rrr=5)rr=0;if(rrr=10)rrr=0;rr=1;if(aa=2)rrr+;if(rrr=5)qq=0;if(rrr=10)rrr=0;qq=1;if(aa=3)rrr+;if(rrr=5)pp=0;if(rrr=10)rrr=0;pp=1;if(aa=4)rrr+;if(rrr=5)oo=0;if(rrr=10)rrr=0;oo=1;if(aa=5)rrr+;if(rrr=5)nn=0;if(rrr=10)r

24、rr=0;nn=1;if(aa=6)rrr+;if(rrr=5)uu=0;if(rrr=10)rrr=0;uu=1;if(aa=7)rrr+;if(rrr=5)vv=0;if(rrr=10)rrr=0;vv=1;if(aa=8)rrr+;if(rrr=5)ss=0;if(rrr=10)rrr=0;ss=1;if(aa=9)rrr+;if(rrr=5)jj=0;if(rrr=10)rrr=0;jj=1;if(aa=10)rrr+;if(rrr=5)ff=0;if(rrr=10)rrr=0;ff=1;if(aa=11)rrr+;if(rrr=5)ee=0;if(rrr=10)rrr=0;ee=1;

25、if(aa=12)rrr+;if(rrr=5)dd=0;if(rrr=10)rrr=0;dd=1;if(aa=13)rrr+;if(rrr=5)cc=0;if(rrr=10)rrr=0;cc=1;四 调试过程及数据分析(一) 硬件调试硬件调试的调试比较困难。因为是调试所以不能对元件进行焊接,只能把各个元件用导线连接起来。调试的整体过程是:各个系统逐个调试,各部分调试成功后再进行组装后的整体调试。调试过程包括:1. 显示部分的调试问题:数码管的显示不稳定,不停的闪烁。分析:没有考虑到干扰及环境的制约。于是我们把在面包板上连好的电路焊接在印刷板上,并采用电容滤波尽可能去除纹波和干扰。2. 控制部分

26、的调试问题:按下按键后数据有时正常有时又不正常,数据的加减不稳定。分析:根据分析有两个问题可以导致此种现象,一是按键接触不良可能有短路,二是程序部分有问题。用万用表测量后发现按键按下后不稳定,更换质量更好的按键后故障即排除。(二) 软件调试程序的调试分几个步骤,首先要在Keil软件中编译通过,然后通过stc软件把程序下载到单片机中最终调试出满意的效果才算成功。 启动Keil软件,选择“Project”菜单下的“New Project”命令,输入项目的文件名,选择存储路径,点击“保存”按钮。在“Select Device”窗口中选择“Atmel”下的“AT89C51” 芯片,单击“确定”按钮。展

27、开“Project Workspace”窗口中的“Target 1”, 右击 “Target 1”,选择“Options for Target Target 1”,选择“Target”选项在Keil (MHZ)右边输入“11.0592”。选择“Debug”选项,选择“Use Keil Monitor-51 Driver”。单击“Settings”按钮,串口选择“COM1”,波特率选择“38400”,单击“OK”按钮。右击“Source Group 1”,选择“Add files to Group Source Group 1,在文件类型中选择“Asm Source file”,找到将要编译的程

28、序,单击 “ADD”按钮,然后再单击“CLOSE”按钮。单击“Rebuild all target files”,在“Build”窗口中观察编译结果,根据提示修改程序,直到没有错误出现。结 论经过几周的努力,终于顺利完成了基于89C51单片机控制的电子万年历LED显示系统的设计,所完成的工作主要包括以下几个方面:1 准备阶段的工作准备阶段的工作主要包括:查阅国内外相关文献,了解单片机微控制器的主要作用,发展过程及发展趋势和使用方法,了解用LED数码管显示电子时钟日历的工作原理、分析LED显示系统。详细了解了STC89C52 单片机应用中的数据转换显示、数码管显示原理、动态扫描显示原理。2 系统

29、硬件设计本次的设计基于STC89C52单片机的LED显示系统主要由89C52单片机处理器控制、位扫描控制电路、驱动电路、端码显示驱动电路组成。此外还包括一些基本的电路如电源电路,晶振电路,及接口电路。本次设计使用了动态扫描方式进行LED显示,在显示驱动电路中用74hc573驱动数码管进行显示。3 系统软件设计根据LED显示管控制器的功能和系统硬件电路,进行系统软件设计。本系统软件设计采用模块化设计,即控制系统中的各个功能块都按照模块化方式进行程序设计。软件由行走时间的子程序和显示刷新子程序及调整子程序组成,显示刷新子程序负责进行显示,按要求将时间信号(年、月、日、时、分、秒)送出以供显示。致

30、谢首先,我向信息工程系的全体老师和各位领导,致以我最诚挚的问候,祝愿老师和各位领导在以后的日子里,工作顺心,身体健康!经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个专科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。几年的学业即将结束了,作为一个大三的学生,此时的心情很复杂,我们将要离开奋斗三年的大学校园,将要带着一种很复杂的感情,迎接下一段人生路程。“谁言寸草心,报的三春辉。”,在大学的生活中,老师和领导们对我很多关怀,也非常感谢各位专业课老师对我的培养,更感谢我的毕业设计辅导老师李晓平,从

31、做毕业设计来,学生不仅从导师那里学到许多专业知识,更重要的是学会了进行科研的学术方法,所有这些都是以后人生生活的重大财富,在此特向导师表示衷心的感谢和崇高的敬意。同时作者还要向帮助我的同学门表示感谢,感谢他们在毕业设计的过程中给予了我热心的帮助。最后,再一次向两个月来所有支持和帮助过我的老师、同学们表示衷心的感谢。参考文献1 徐维祥,刘旭敏.单片微型机原理与应用.辽宁:大连理工大学出版社,20033 梅丽凤,王艳秋.单片机原理及接口技术.北京:清华大学出版社,20052 王幸芝,钟爱琴,王闪. STC89C51系列单片机原理与接口技术.北京:北京航空航天大学出版社,20044 付家才.单片机控

32、制工程实践技术M. 北京:化学工业出版社,2004.55 潘新民.微型计算机控制技术 M.北京:人民邮电出版社,1999.96 胡汉才.单片机原理及其接口技术.北京:清华大学出版社, 19957 杨文龙.单片机原理及应用.陕西: 西安电子科技大学出版社,19998 于晓平.数字电子技术.北京: 科学出版社,2004.1Employment tribunals sort out disagreements between employers and employees.You may need to make a claim to an employment tribunal if: you d

33、ont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You can make a claim to an employment tribunal, even if you haventappeale

34、dagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employment tribunal within three months of

35、 the date when the event you are complaining about happened. If your application is received after this time limit, the tribunal will not usually accept i.If you are worried about how the time limits apply to you, take advice from one of the organisations listed underFurther help.Employment tribunal

36、s are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation.Most people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employment tribunal, you should get help str

37、aight away from one of the organisations listed underFurther help.If you are being represented by a solicitor at the tribunal, they may ask you to sign an agreement where you pay their fee out of your compensation if you win the case. This is known as adamages-based agreement. In England and Wales, your solicitor cant charge you more than 35% of your compensation if you win the case.If you are thinking about signing up for a damages-based agreement, you should make sure youre clear about the te

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号