单片机定时器设计报告_第1页
单片机定时器设计报告_第2页
单片机定时器设计报告_第3页
单片机定时器设计报告_第4页
单片机定时器设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 绪论l 1.1系统背景u 1.1.1单片机的介绍单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写mcu表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有cpu的专用处理器发展而来。最早的设计理念是通过将大量外围设备和cpu集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。intel的z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了i/o设备。

2、概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的cd4000系列这些纯硬件来搞定的话,电路一定是一块大pcb板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!u 1.1.

3、2单片机的应用目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能ic卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域l 1.2多功能家用定时器u

4、1.2.1多功能家用定时器的概述人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。 1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀门。 定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多,家用电器都安装了定时器来控制开关或工作时间。u 1.2.2多功能家用定时器的功能与实现步骤1. 能够调整数字钟、定时开启、关闭时间的显示 当时间分别显示小时、分钟状态时,按11键,实现将当前显示的小时或分钟减1;按12键时,实现将当前显示的小时

5、或分钟加1。2. 能过实现三路定时 通过按10键来选择显示的时间。从而实现三路定时的开启与关闭,实现三路定时功能。3. 既能够实现按键输值,也可用加减键来对其调时 当在小时状态时,不管是在数字钟还是定时状态,都可以通过按键来对其调时,同时此时如果觉得时间按错还可以通过加减键进行调整时间。4. 能够时间倒计时的秒表功能 当一开始接通是,显示的是60秒倒计时功能,这一功能有助于对准确时间更好的把握。5. 能够显示今天心情 当在时钟状态时,按加减键,可显示出今天心情。如果按减号键时,显示sad,并且led灯全灭;如果按加号键时,显示fine,并且灯全亮。第二章 系统电路设计l 2.1 系统总体设计框

6、架结构 总体结构图如下:单片机按键输入电路时钟电路复位电路蜂鸣器电路数码管显示电路继电器电路led显示电路图2.1总体结构图按键输入电路:对定时器输入定时时间、时钟时间,并对其调整。时钟电路:给单片机一个时钟信号,让其工作。复位电路:使单片机为初始状态,并从初态开始工作。led显示电路:表明定时器的工作状态。数码管显示电路:显示数字钟时间或定时时间或心情。继电器电路:是用较小的电流去控制较大电流的一种“自动开关”。l 2.2 系统硬件单元电路设计u 2.2.1 时钟电路设计 时钟电路对单片机是不可缺的,单片机的每个功能都要以时钟电路为基础工作。单片机内部自带一个时钟电路,外部接入定时控制元件即

7、可构成一个稳定的自激振荡器。其中机器周期共有12个振荡脉冲周期,因此,机器周期是时钟周期的12倍。本实验中时钟电路中使用的晶体是12mhz,则时钟周期为(1/12)us,机器周期为1us。实验图如下:时钟电路图: 图2.2时钟电路图u 2.2.2 复位电路设计复位操作有上电自动复位、按键电平复位和外部脉冲复位三钟方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保证复位信号高电平持续时间大于2个机器周期。电路图如下:复位电路图: 图2.2按键电平复位 u 2.2.3按键电路设计本课题要用数码管显示数字钟、定时时间。这就需要键盘来设定,键盘可以分为独立连接式和矩阵式

8、。本实验用的是矩阵式。为了减少所以的i/o口,利用三八译码器来实现12个键盘的连接。对于这种矩阵式的键盘连接,扫描时依次将行线置为低电平,即在置某根行线为低电平时,其它都线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。注意在按键时一定要调延时子程序来消除抖动。矩阵式键盘如下所示:按键电路图:图2.3按键电路u 2.2.4 led显示电路设计本次实验中要用发光二极管显示状态。由下图知发光二极管阴极以经接地,当其阳极为高电平时,二极管就发光显示所处状态。 led显示电路图: 图2.4 led显示电路图u 2.2

9、.5 数码管显示电路设计实验中所用的数码管为共阴极数码管,当给其引脚加入高电平时,数码管中对应的那一段就亮。图2.6为外部显示图,其内部结构如下:图2.5共阴极数码管内部结构图2.6共阴极数码管显示u 2.2.6 继电器电路设计 继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。图2.7继电器电路l 2.3系统硬件总电路总电路图由时钟电路、复位电路、继电器电路、键盘电路、led显示电路、数码管显示电路组成来实现定时功能。其中四个

10、数码管为共阴极的数码管。74ls138为38译码器,74ls07为输出缓冲器,74ls00为与非门,7805为三端稳压器,电容的作用基本都是滤波来减少噪声对实验的影响。电路图如下:图2.8总电路图第三章 系统软件设计l 3.1 系统软件流程图u 3.1.1主程序流程图开始初始化、允许中断、方式1刷新缓冲区led显示是否有键按下比较时间延时按键处理 主程序在执行时,通过单片机内部中断对程序不断的扫描判断、刷新显示,当有键按下时,将数字钟中的时间与定时时间相比较,然后根据比较程序显示状态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周期循环。u 3.1.2子程序流程图1.延时子

11、程序流程图开始x-x=0t=0t120t+endy 此延时子程序在实验中被主程序调用,当有按键按下时,调用此程序可以达到消除振动的作用,避免发光二极管一直闪烁,此程序延时时间不能太短,要不然不能很好的起到消振作用,也不能够太长,避免按键很长时间后才反应。并且因为此程序用c语言编程,延时时间没有汇编语言精准。2.比较子程序流程图开始时钟=定时开始时间?led7=1时钟=定时结束时间?led7=0end 此程序通过将定时时间不断与数字钟时间相比较来表明定时器是否开启。当led7亮的时候表明定时开启;当led7灭的时候表明定时关闭。 3.刷新缓冲子程序流程图开始判定f的值值f=-2刷新心情刷新秒表时

12、间f=-1f=0f=1f=2f=3f=4f=5f=6刷新三路关闭时间刷 新三 路开 启时间刷新二路关闭时间刷新二路开启时间刷新一路关闭时间刷新一路开启时间刷新时钟时间 此程序为刷新缓冲区流程图,其中f为状态量,当f为不同的值时,数码管显示不同的状态,同时此程序不断的刷新来显示此状态下的数码管显示的值。 4.按键处理子程序流程图开始判断state的值根据不同的state值,在不同的状态下,按不同的键显示不同的作用。定义状态量 此为按键处理子程序流程图,主程序在不停的扫描中,每当有按键按下时,就会根据状态量state的值跳转到此程序进行处理,此程序中还包含显示时所需的状态量的定义和加减键及键值的输

13、入,按不同的键实现不同的功能。 5.led显示子程序流程图开始state=0state=2state=12state=13state=3state=4state=5testate=6state=7state=8state=9state=10state=11心情好,全亮;心情不好,全灭时钟的小时状态时钟的分钟状态一路定时开启的小时状态一路定时开启的分钟状态一路定时关闭的小时状态一路定时关闭的分钟状态二路定时开启的小时状态二路定时开启的分钟状态二路定时关闭的小时状态二路定时关闭的分钟状态三路定时开启的小时状态三路定时开启的分钟状态state=14state=15三路定时关闭的小时状态三路定时关闭的

14、分钟状态 此为led显示子程序流程图,显示当state这个状态量为不同的值时,表明不同的状态,而这种状态通过不同的的发光二极管显示出来。这对于判断实验的正确性提供了不可缺少的帮助。 6.数码管显示子程序流程图开始判定f的值值f=-2显示心情显示秒表时间f=-1f=0f=1f=2f=3f=4f=5f=6显示三路关闭时间显示三 路开 启时间显示二路关闭时间显示二路开启时间显示一路关闭时间显示一路开启时间显示时钟时间 此为数码管显示的流程图,此程序与刷新缓冲区流程图相似,都与状态量f相关。不同的的f值显示不同的状态所对应的数值。u 3.1.3中断程序流程图1. t0中断程序流程图 此图为t0中断程序

15、流程图,用于计数器的计时,一直执行中。当60秒到时,分加1,秒单元清零,当60分到时,时家1,分单元清零。24时到时,时单元清零。 2. t1中断程序流程图 开始设初值键按下?扫描并判断num的值,选择相应的引线设键值、判断数码管的显示num+此为t1中断流程图,用于键值判断和中断扫描,它一直保持着扫描按键判断是否有键按下,然后让按键处理子程序能准确的进行执行。l 3.2 系统程序设计u 3.2.1系统主程序void main(void)p1=0x00;ea=1; /cpu允许中断tmod |=0x01;/定时器0计时50ms in 12m crystal 定时器t0选择方式0工作其前七位没影

16、响,开始是什么还是什么,最后一位变成0=方式0th0=0x3c;tl0=0xb0; /初值 0011 1100 1011 0000 65535-15536=49999 50mset0=1; tr0=1; /开启t0tmod |=0x10; /定时器1用于动态扫描 t1th1=0xfa; /初值65535-64240=1295 0.13mstl1=0xf0;et1=1; tr1=1; /开启t1 while(1) refreshtab();led_display();if(!l1|!l0) compare();delay(200);key_process(); /只要有键按下,就 比较时间,延时

17、后进行按键处理。 u 3.2.2定时中断子程序/* 定时器0用于数字钟的计时 */ void timer0(void) interrupt 1 th0=0x3c; tl0=0xb0; count+;/重新赋值50ms溢出if(count=10) led1=led1; /led1半秒亮 if (count=20) count=0;second+; /秒加1 20*50=1s if(second=60) second=0;minute+; /分加1if(minute=60) minute=0;hour+; /时加1 if(hour=24) hour=0; /小时到24时,清零 /* 定时器1中断扫

18、描显示+键值判断 */void timer1(void) interrupt 3th1=0xfa; tl1=0xf0; 定时2ms显示下一个数码管switch(num)case 0: p2=0x0f; if(!l1)keyno=1; if(!l0)keyno=10; seg_display();break; /当num为0时,选择y0,当按下l1时,键值时1;当按下l0时,键值是10,显示 case 1: p2=0x1f; if(!l1)keyno=4;if(!l0)keyno=7; seg_display();break;/当num为0时,选择y1,当按下l1时,键值时4;当按下l0时,键值

19、是7,显示case 2: p2=0x2f;if(!l1)keyno=3;if(!l0)keyno=12;seg_display();break;/当num为0时,选择y2,当按下l1时,键值时3;当按下l0时,键值是12,显示case 3: p2=0x3f;if(!l1)keyno=5;if(!l0)keyno=8;seg_display();break;/当num为0时,选择y3,当按下l1时,键值时5;当按下l0时,键值是8,显示case 4: p2=0x4f;if(!l1)keyno=2;if(!l0)keyno=11;seg_display();break;/当num为0时,选择y4,

20、当按下l1时,键值时2;当按下l0时,键值是11,显示case 5: p2=0x5f;if(!l1)keyno=6;if(!l0)keyno=9;seg_display();break;/当num为0时,选择y5,当按下l1时,键值时6;当按下l0时,键值是9,显示default: break;num+; if(num=6)num=0;/当num为6时清零u 3.2.3时间比较子程序void compare(void) if(sg0=sg4&sg1=sg5&sg2=sg6&sg3=sg7&flog=1) led7=1; /当数字钟时间与一路定时的开启时间相同时,led7亮 if(sg0=sg8

21、&sg1=sg9&sg2=sg10&sg3=sg11&flog=1) led7=0;/当数字钟时间与一路定时的关闭时间相同时,led7灭 if(sg0=sg12&sg1=sg13&sg2=sg14&sg3=sg15&flog=1) led7=1;/当数字钟时间与二路定时的开启时间相同时,led7亮 if(sg0=sg16&sg1=sg17&sg2=sg18&sg3=sg19&flog=1) led7=0;/当数字钟时间与二路定时的关闭时间相同时,led7灭 if(sg0=sg20&sg1=sg21&sg2=sg22&sg3=sg23&flog=1) led7=1;/当数字钟时间与三路定时的开启

22、时间相同时,led7亮 if(sg0=sg24&sg1=sg25&sg2=sg26&sg3=sg27&flog=1) led7=0;/当数字钟时间与三路定时的关闭时间相同时,led7灭u 3.2.4延时子程序void delay( uint x) /自定义延时约0.1ms ,大约为120*x uint t;while(-x)for(t=0;t120;t+) ; u 3.2.5刷新缓冲区子程序void refreshtab(void) if(f=-2) xq0=tabkx0; xq1=tabkx1; xq2=tabkx2; xq3=tabkx3;/当f=-2时,数码管刷新显示今天心情 if(f=

23、-1) mb0=tabsecond/10; mb1=tabsecond%10; /当f=-1时,数码管刷新显示倒计时的秒表 if(f=0) timetab0=tabsg0;timetab1=tabsg1;timetab2=tabsg2; timetab3=tabsg3;/当f=0时,数码管刷新显示数字钟时间if(f=1)stab0=tabsg4; stab1=tabsg5;stab2=tabsg6;stab3=tabsg7;/当f=1时,数码管刷新显示一路定时开启时间if(f=2) ftab0=tabsg8; ftab1=tabsg9;ftab2=tabsg10;ftab3=tabsg11;/

24、当f=2时,数码管刷新显示一路定时关闭时间if(f=3)stab10=tabsg12;stab11=tabsg13;stab12=tabsg14;stab13=tabsg15;/当f=3时,数码管刷新显示二路定时开启时间if(f=4) ftab10=tabsg16; ftab11=tabsg17; ftab12=tabsg18;ftab13=tabsg19;/当f=4时,数码管刷新显示二路定时关闭时间if(f=5) stab20=tabsg20; stab21=tabsg21; stab22=tabsg22;stab23=tabsg23;/当f=5时,数码管刷新显示三路定时开启时间if(f=6

25、) ftab20=tabsg24; ftab21=tabsg25; ftab22=tabsg26;ftab23=tabsg27;/当f=6时,数码管刷新显示三路定时关闭时间u 3.2.6按键处理子程序void key_process(void)/根据不同状态量state的值,在不同的状态按不同的键实现不同的功能,能够按键输值 时刻别忘时间显示的范围 switch(state) case 0:if(keyno=11)kx0=5;kx1=10;kx2=11;kx3=15;h=0; if(keyno=12)kx0=12;kx1=1;kx2=13;kx3=14;h=1; /心情状态 if(keyno=

26、10)state=2;f=0; break;case 2: if(keyno2|(sg0=2&sg14)sg0=sg1=0; if(sg25)sg2=sg3=0;if(n3)n=4; /用可以改变按键计数器初值 if(keyno=11)sg1=sg1+1;if(sg0=2&sg1=4)sg0=sg1=0;/加1键 if(keyno=12)sg1=sg1-1;if(sg0!=0&sg1=-1)sg0=sg0-1;sg1=9; if(sg0=0&sg1=-1)sg0=2;sg1=3;/减1键,时间设定范围 if(keyno=10)state=3; break;/case3:if(keyno=11)

27、sg3=sg3+1;if(sg39)sg2=sg2+1;sg3=0;if(sg2=6) sg2=sg30; /加1键 if(keyno=12)sg3=sg3-1;if(sg2!=0&sg3=-1)sg2=sg2-1;sg3=9; if(sg2=0&sg3=-1)sg2=5;sg3=9; /减1键 if(keyno=10)state=4;f=1;break;case 4: if(keyno4)sg4=sg5=0; if(sg65)sg6=sg7=0;if(n7)n=8; if(keyno=11)sg5=sg5+1;if(sg5=6)sg4=sg5=0; if(keyno=12)sg5=sg5-1

28、;if(sg4!=0&sg5=-1)sg4=sg4-1;sg5=9; if(sg4=0&sg5=-1)sg4=2;sg5=3; if(keyno=10)state=5;flog=0; break; case5:if(keyno=11)sg7=sg7+1;if(sg79)sg6=sg6+1;sg7=0;if(sg6=6) sg6=sg7=0; if(keyno=12)sg7=sg7-1;if(sg6!=0&sg7=-1)sg6=sg6-1;sg7=9;if(sg6=0&sg7=-1)sg6=5;sg7=9; if(keyno=10)flog=1;state=6;f=2; break; /case

29、 6: if(keyno=10)state=7; if(keyno4)sg8=sg9=0; if(sg105)sg10=sg11=0;if(n11)n=12; if(keyno=11)sg9=sg9+1;if(sg5=6)sg8=sg9=0; if(keyno=12)sg9=sg9-1;if(sg8!=0&sg9=-1)sg8=sg8-1;sg9=9; if(sg8=0&sg8=-1)sg8=2;sg9=3; flog=0; break;case7:if(keyno=11)sg11=sg11+1;if(sg119)sg10=sg10+1;sg11=0;if(sg10=6) sg10=sg11=

30、0; if(keyno=12)sg11=sg11-1; if(sg10!=0&sg11=-1)sg10=sg10-1;sg11=9;if(sg10=0&sg11=-1)sg10=5;sg11=9; if(keyno=10)flog=1;state=8;f=3; break;case 8: if(keyno2|(sg12=2&sg134)sg12=sg13=0; if(sg145)sg14=sg15=0;if(n15)n=16; /用可以改变按键计数器初if(keyno=11)sg13=sg13+1;if(sg12=2&sg13=4)sg12=sg13=0; if(keyno=12)sg13=s

31、g13-1;if(sg12!=0&sg13=-1)sg12=sg12-1;sg13=9; if(sg12=0&sg12=-1)sg12=2;sg13=3; if(keyno=10)state=9;flog=0; break;/case9: if(keyno=11)sg15=sg15+1;if(sg159)sg14=sg14+1;sg15=0;if(sg14=6)sg14=sg15=0; if(keyno=12)sg15=sg15-1; if(sg14!=0&sg15=-1)sg14=sg14-1;sg15=9; if(sg14=0&sg15=-1)sg14=5;sg15=9; if(keyno

32、=10)flog=1;state=10;f=4;break;case 10: if(keyno2|(sg16=2&sg174)sg16=sg17=0; if(sg185)sg18=sg19=0;if(n19)n=20; /用可以改变按键计数 if(keyno=11)sg17=sg17+1;if(sg16=2&sg17=4)sg16=sg17=0; .if(keyno=12) sg17=sg17-1;if(sg16!=0&sg17=-1)sg16=sg16-1;sg17=9; if(sg16=0&sg17=-1)sg16=2;sg17=3; if(keyno=10)state=11;flog=0

33、; break;/ case11:if(keyno=11)sg19=sg19+1;if(sg199)sg18=sg18+1;sg19=0;if(sg18=6)sg18=sg19=0; if(keyno=12)sg19=sg19-1;if(sg18!=0&sg18=-1)sg18=sg18-1;sg19=9;if(sg18=0&sg19=-1)sg18=5;sg19=9; if(keyno=10)flog=1;state=12;f=5; break;case 12:if(keyno2|(sg10=2&sg214)sg20=sg21=0; if(sg225)sg22=sg23=0;if(n23)n

34、=24; if(keyno=11)sg21=sg21+1;if(sg20=2&sg21=4)sg20=sg21=0; if(keyno=12)sg21=sg21-1;if(sg20!=0&sg21=-1)sg20=sg20-1;sg21=9; if(sg20=0&sg21=-1)sg20=2;sg21=3; if(keyno=10)state=13; flog=0; break;/case13:if(keyno=11)sg23=sg23+1;if(sg239)sg22=sg22+1;sg23=0;if(sg22=6)sg22=sg23=0; if(keyno=12)sg23=sg23-1;if

35、(sg22=0&sg23=-1)sg22=5;sg23=9;if(sg23!=0&sg24=-1)sg23=sg23-1;sg24=9; if(keyno=10)flog=1;state=14;f=6; break;case 14: if(keyno4)sg24=sg25=0; if(sg265)sg26=sg27=0;if(n27)n=0; if(keyno=11)sg25=sg25+1;if(sg25=6)sg24=sg25=0; if(keyno=12)sg25=sg25-1;if(sg24!=0&sg25=-1)sg24=sg24-1;sg25=9; if(sg24=0&sg25=-1

36、)sg24=2;sg25=3;if(keyno=10)state=15; flog=0; break;case15:if(keyno=11)sg27=sg27+1;if(sg279)sg27=sg27+1;sg28=0;if(sg26=6) sg26=sg27=0;if(keyno=12)sg27=sg27-1;if(sg26=0&sg27=-1)sg26=5;sg27=9;if(sg26!=0&sg27=-1)sg26=sg26-1;sg27=9; if(keyno=10)flog=1;state=2;f=0; break; / default: break; u 3.2.7数码管显示子程序

37、void seg_display(void) /根据不同的f值,数码管来显示不同是时间 if(f=-2) p0=xqnum;if(f=-1) p0=mbnum;if(f=0) p0=timetabnum; /分别显示的是心情、秒表、数字钟if(f=1) p0=stabnum; if(f=2) p0=ftabnum; if(f=3) p0=stab1num;/分别显示的是一路定时开启、关闭,二路定时开启时间if(f=4) p0=ftab1num;if(f=5) p0=stab2num;if(f=6) p0=ftab2num;/分别显示的是二路关闭,三路开启、关闭时间u 3.2.8 led显示子程

38、序void led_display(void) switch(state) case 0:if(h=0)led3=0;led6=0;led7=0;/心情不好时,灯全灭 if(h=1) led2=1;led3=1;led4=1;led5=1;led6=1;led7=1; break; /心情好时灯全部亮case 2:led2=1;led3=0;led4=0;led5=0;led6=0;led7=0;break;/数字钟的时钟状态case 3:led2=0;led3=1;break; case 4:led2=1;led3=0;led4=1;break; /数字钟的分钟状态、一路定时开启的的时钟状态

39、case 5:led2=0;led3=1;break; case 6:led2=1;led3=0;break; /一路定时开启的的分钟状态、一路定时关闭的时钟状态 case 7:led2=0;led3=1;break; case 8:led2=1;led3=0;led4=0;led5=1;break; /二路路定时关闭的的分钟状态、二路定时开启的时钟状态case 9:led2=0;led3=1;break; case 10:led2=1;led3=0;led4=0;break; /二路定时开启的的分钟状态、二路定时关闭的时钟状态case 11:led2=0;led3=1;break; case

40、 12:led2=1;led3=0;led5=0;led6=1;break; /二路定时关闭的的分钟状态、三路路定时开启的时钟状态case 13:led2=0;led3=1;break; case 14:led2=1;led3=0;led5=0;break; /三路定时开启的的分钟状态、三路定时关闭的时钟状态case 15:led2=0;led3=1;break; default: break; /三路定时关闭的的分钟状态第四章 实验结果和分析l 4.1实验使用的仪器设备与元件u 4.1.1实验使用的仪器设备 焊烙铁、能够给单片机烧入程序的电脑、电源u 4.1.2实验使用的元件如图所示l 4.

41、2测试结果分析这次实验中,在自己没编写程序前,用同学给的基本程序,输入+5v后,检查电路板的焊接问题和数码管的好坏,接好后发现电路板是好的,首先显示秒表的发光二极管能够一直闪亮;其次就是显示电路通电标志是二极管也能够正常发亮;再就是数码管能够完整的显示,调加减键时,所有的数码管都能够显示正确的数据,这说明数码管是好的,焊接也问题。然后写完程序后,烧入自己的程序,再连接电路,所以的效果都与仿真中的效果相同,能够显示我所需的状态。但是,就是当用银色发光二极管时,由于亮度太强,自己将其更改为另一种颜色,虽然这是一件比较简单的事,但这说明在焊电路板时,应该注意元件的选择并且明白元件的属性来减少调试中出

42、现的问题。结束语对于本次课题-家用定时器的设计已经完成了,达到了自己预想中的效果了。定时器的选择上选择了4个数码管显示当前状态时间,led显示目前状态,通过34的阵列式键盘来设定时间,数字钟、三路定时初始实现显示为0000,然后通过键盘来输入数字钟和定时器的时间,当设定好时间后,当定时器的时间与数字钟时间第一次一样时,表明一路定时开始了,此时led7变亮,当定时器时间再次与数字钟时间一样时,表明一路定时结束,同时led7灯灭。led7表示是否处于定时状态。二路、三路与此类似。当定时器开启时,继电器常开变成常闭,成导通状态,动态数码管显示help you,定时器达到了定时效果,能够控制电风扇,台灯等等家用电器,具有一定的实用功能。但是,在本设计自己也在软件程序上走了一点路,刚开始编写程序时,没有头绪,在同学帮忙讲解之后,自己编写了一路程序,数字钟,定时时间都是靠加减键来调的,这样觉得太过麻烦,并且在使用中如果一直用某几个键,会导致按键不灵的情况,因此想用其他九个键来实现键值的

温馨提示

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

评论

0/150

提交评论