单片机课程设计个性化电子时钟设计

上传人:无*** 文档编号:77916985 上传时间:2022-04-20 格式:DOC 页数:18 大小:217.50KB
收藏 版权申诉 举报 下载
单片机课程设计个性化电子时钟设计_第1页
第1页 / 共18页
单片机课程设计个性化电子时钟设计_第2页
第2页 / 共18页
单片机课程设计个性化电子时钟设计_第3页
第3页 / 共18页
资源描述:

《单片机课程设计个性化电子时钟设计》由会员分享,可在线阅读,更多相关《单片机课程设计个性化电子时钟设计(18页珍藏版)》请在装配图网上搜索。

1、单片机课程设计个性化电子时钟设计 学 院: 07电子信息工程班 级: 电子(1)班姓 名:组 员: 指导老师: 目录摘 要2一、电子时钟21.1电子时钟简介21.2 电子时钟的基本特点21.3 电子时钟的原理3二、 单片机识的相关知识32.1 单片机简介32.2 单片机的发展史31 . 4位单片机32 . 8位单片机33 . 16位单片机44 . 32位单片机45 . 64位单片机42.3 单片机的特点42.4 AT89C51单片机介绍5三、 控制系统的硬件设计73.1 单片机型号的选择73.2 数码管显示工作原理73.3 74LS373介绍83.4 整个电路原理图9四、 控制系统的软件设计9

2、4.1程序清单94.2仿真结果15五、心得16六、参考文献17摘 要 单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于AT89C51单片机的电子时钟。在数码管通过一个控制键转换来显示相应的时间和日期。并通过多个控制键用来实现时间和日期的调节。应用keil软件实现单片机电子时钟系统的程序设计,用Proteus的ISIS软件实现仿真。该方

3、法仿真效果真实、准确,节省了硬件资源。关键字:单片机 时钟 键盘控制一、电子时钟 1.1电子时钟简介 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式

4、电子钟用集成电路计时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间和日期,减小了误差,这种表具有时、分、秒显示时间的功能和年月日显示日期的功能,还可以进行校对,片选的灵活性好。1.3 电子时钟的原理 该电子时钟由AT89C51,74LS373,BUTTON,数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天,满三十天(闰年二月满二十九天,平年二月满二十八天)为一个月,满十二个月为一年。电路中的键控1实现“年”和“分”的调节,键控2实现“月”和“时”的调节,键控3实现“日”和“分”的调节

5、。每按一次就加一。二、 单片机识的相关知识 2.1 单片机简介 单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。2.2 单片机的发展史1 . 4位单片机 1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各个计算机公司竞相推出四位单片机。日本松下公司的MN1400系列,美国洛克威尔公司的PPS/1系列等。四位单片机的主要应用领域有:PC机的输入装置,电

6、池充电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩具,钟表,计算器,多功能电话等。 2 . 8位单片机 1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。这类单片机的寻址能力达64KB,片内ROM容量达4-8KB,片内除

7、带有并行IO口外,还有串行IO口,甚至还有AD转化器功能。8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。3 . 16位单片机 1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。4 . 32位单片机 随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理,

8、复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降,将会与8位单片机并驾齐驱。5 . 64位单片机 近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已有应用,如英国Inmos公司的Transputer T800是高性能的64位单片机。2.3 单片机的特点 1 . 单片机的存储器ROM和RAM时严格区分的。ROM称为程序存储器,只存放程序,固定常

9、数,及数据表格。RAM则为数据存储器,用作工作区及存放用户数据。 2 . 采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。 3 . 单片机的I/O口通常时多功能的。由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。 4 . 单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。2.4AT89C51单片机介绍 VCC:电源;GND:接地。 P0口:P0

10、口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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

11、口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 图1 AT89C51单片机 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,

12、并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示: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(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许

13、的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信

14、号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。三、 控制系统的硬件设计3.1 单片机型号的选择 通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将

15、多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。3.2 数码管显示工作原理数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D

16、、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。 图2 共阴数码管3.3 74LS373介绍:37

17、3为三态输出的八 D 透明锁存器,373 的输出端 O0O7 可直接与总线相连。 当三态允许控制端 OE 为低电平时,O0O7 为正常逻辑状态,可用来驱动负载或总 线。当 OE 为高电平时,O0O7 呈高阻态,即不驱动总线,也不为总线的负载,锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,O 被锁存在 已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。 引出端符号: D0D7 数据输入端;OE 三态允许控制端(低电平有效;LE 锁存允许端;O0O7 输出端图3 74LS3733.4 整

18、个电路原理图 图4 系统电路原理图四、 控制系统的软件设计 4.1程序清单#include #includesbit P20=P20; /*定义端口*/sbit khour=P30; sbit kmin=P31;sbit knian=P32;sbit tiaonian=P33 ;sbit speaker=P37 ;int j=-1 ; /*定义变量,j用以控制扫描*/bit flag=0,leap=0; /*定义flag控制时分秒和年月日的显示,leap判断是否为闰年*/char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;char

19、 dayshi=0,dayge=0,monthshi=0,monthge=0,yearshi=0,yearge=0 ;unsigned int num=0,sec=0,min=0,hour=0; /*设置初始时间为00时0分0秒*/unsigned int day=1,month=1,year=10; /*设置初始日期为2010年1月1日*/char saomiao8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; /*扫描数组,控制位选*/char shijian10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,

20、0x90; /*共阴数码管的0,1,2,3,4,5,6,7,8,9*/void delay(unsigned int z) /*延时子程序*/ unsigned int x,y;for(x=z;x0;x-)for(y=10;y0;y-) ; void timer() interrupt 1 /*定时器中断0*/ TH0=(65535-5000)/256; /*重新装入初值*/ TL0=(65535-5000)%256; num+; j+; if(year%4=0&year%100!=0)|(year%400=0) /*判断是否为闰年*/ leap=1; /*闰年,使leap=1*/else l

21、eap=0; /*平年,使leap=0*/ if(num=150) /*实验微调得num=150时大概为1s*/ num=0; sec+; /*秒自动加1*/ if(sec=60) sec=0; min+; /*60s时,分自动加1,秒归0*/ if(min=60) min=0; hour+; /*60分时,小时自动加1,分归0*/ if(hour=24) hour=0; min=0; sec=0; day+; /*24时,天自动加1,时分秒归0*/ /*月份的判断,平年时的2月和闰年时的2月,以及30天和31天的判断*if(leap=1&month=2&day=30)|(leap=0&mon

22、th=2&day=29) day=1; month+; /*2月28天或29天时月自加1*/ if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) if(day=32) day=1; month+; /*月为31天达到时月自动加1*/ if( month=4|month=6|month=9|month=11) if(day=31) day=1; month+; /*月为30天达到时月自动加1*/ if(month=13) year+; month=1; /*新的一年的开始*/ secge=sec%10; secshi=sec

23、/10; minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; dayge=day%10; dayshi=day/10; monthge=month%10; monthshi=month/10; yearge=year%10; yearshi=year/10; P1=saomiaoj; /*数码管的位选设置*/if(flag=1) /*flag=1,显示年月日*/ if(P1=0x80) P2=shijiandayge;if(P1=0x40) P2=shijiandayshi;if(P1=0x20) P2=0xbf; /*年

24、与月之间的分隔符“”的显示*/if(P1=0x10) P2=shijianmonthge;if(P1=0x08) P2=shijianmonthshi;if(P1=0x04) P2=0xbf; /*月与天之间的分隔符“”的显示*/if(P1=0x02) P2=shijianyearge;if(P1=0x01) P2=shijianyearshi; else /*flag=0,显示时分秒*/ if(P1=0x80) P2=shijiansecge;if(P1=0x40) P2=shijiansecshi;if(P1=0x20) P2=0xbf;if(P1=0x10) P2=shijianming

25、e;/xian shi if(P1=0x08) P2=shijianminshi;if(P1=0x04) P2=0xbf;if(P1=0x02&hour24) P2=shijianhourge; /*显示小时023*/if(P1=0x01&hour23) hour=0; if(flag=1) /*显示年月日的情况下做年月日的调整*/ if(kmin=0) day+; while(kmin=0); if(khour=0) month+; while (khour=0); if(month12) month=1; if(tiaonian=0&speaker=1) year+; while (tia

26、onian=0); void baoshi() /*整点报时子程序*/ if(min=0&sec10) /*整点闹钟响,响10秒*/ speaker=0; delay(1) ;speaker=1 ; else speaker=1;void alarm() / *闹钟子程序*/ bit ring=1;char xx=10;if(tiaonian=0) ring=0; delay(100);while(tiaonian=0); /*关闭正在叫的闹钟*/if(hour=6&min=xx&ring=1) /*闹钟按时鸣叫1分钟*/ speaker=0; delay(1) ; speaker=1 ;if

27、(hour=6&min=xx+1) /*1分钟后闹钟停止鸣叫*/ speaker=1; void main() TMOD=0x01; /*设置工作方式*/TR0=1;P2=0; TH0=(65535-5000)/256; /*装入计时初值*/ TL0=(65535-5000)%256; IE= 0x82; IP=0x00; /*设置中断优先级*/ EA=1; EX0=1; /*开外部中断0*/ while(1) control() ; alarm() ; baoshi() ; 4.2仿真结果 图5.a 时间仿真图(此时时间为0点10秒) 图5.b 日期仿真图(此时日期为2010年1月1日)五、

28、心得进过不懈的努力,我们顺利完成了这次单片机课程设计课题中的个性化电子时钟设计,本次仿真总的来说是实现了预期的效果,但是喇叭把的效果不是很好。功能还不够完善,设计还比较简单。不过通过此次设计我们还是学会了不少东西。首先,学会了keil和proteus软件。然后,由于此次程序是用C语言编写的,以前的C语言知识的到了巩固。同时,我们还领悟到了团队精神的真谛。通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义总的来说,本次的设计使我从中学到了最重要的东西,那就是如何从理论到实践的转化,怎样

29、将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。最后,我觉得应该感谢李京兵老师在平时课堂上的启发。使得我们在课程设计过程中,巩固和学习了单片机知识。相信这对我以后的课程设计和毕业设计将会有很大的帮助!六、参考文献1刘乐善等.微型计算机接口技术及应用.武汉:华中科技大学出版社,2009.2胡汉才.单片机原理及其接口技术.北京:清华大学出版社,2009.3李秉操等.单片机接口技术及在工业控制中的应用.西安:陕西电子编辑部,199117

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!