单片机定时器设计报告_第1页
单片机定时器设计报告_第2页
单片机定时器设计报告_第3页
单片机定时器设计报告_第4页
单片机定时器设计报告_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

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

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

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

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

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

6、计2.1系统总体设计框架结构4总体结构图如下:图2.1总体结构图按键输入电路:对定时器输入定时时间、时钟时间,并对其调整。时钟电路:给单片机一个时钟信号,让其工作。复位电路:使单片机为初始状态,并从初态开始工作。LED显示电路:表明定时器的工作状态。数码管显示电路:显示数字钟时间或定时时间或心情。继电器电路: 是用较小的电流去控制较大电流的一种自动开关42.2系统硬件单元电路设计2.2.1 时钟电路设计时钟电路对单片机是不可缺的,单片机的每个功能都要以时钟电路为基础工 作。单片机内部自带一个时钟电路,外部接入定时控制元件即可构成一个稳定的 自激振荡器。其中机器周期共有12个振荡脉冲周期,因此,

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

8、来实现12个键盘的连接。对于这种矩阵式的键盘连接,扫描时依次将行线置为低电平,即在置某根行 线为低电平时,其它都线为高电平。在确定某根行线位置为低电平后,再逐行检 测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键矩阵式键盘如就是闭合的按键。注意在按键时一定要调延时子程序来消除抖动。 下所示:按键电路图:SH IFT一+L1 一 Y4O O115L0 一 .广 丫 3O 056L0 一 ,一 丫 4O O6L1Y2O O-127L1 .一 ,一, Y 5O O78L0 一 一丫 5O O8图2.3按键电路2.2.4 LED 显示电路设计本次实验中要用发光二极管显示状态。由下

9、图知发光二极管阴极以经接地,当其阳极为高电平时,二极管就发光显示所处状态。LE DLED显示电路图:D 3D 6D 5L6 wLE DP1 .22 kR42kP1 .6R 62kQ 5|"图2.4 LED显示电路图2.2.5 数码管显示电路设计实验中所用的数码管为共阴极数码管,当给其引脚加入高电平时,数码管中 对应的那一段就亮。图2.6为外部显示图,其内部结构如下:V2VqVST/讣寸寸秫abw4广fjidp图2.5共阴极数码管内部结构?PY X-EEG DPDPY .EEC? DP图2.6共阴极数码管显示2.2.6 继电器电路设计继电器是一种电子控制器件,它具有控制系统(又称输入回

10、路)和被控制 系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流 去控制较大电流的一种 自动开关”。故在电路中起着自动调节、安全保护、转换 电路等作用。图2.7继电器电路4 2.3系统硬件总电路总电路图由时钟电路、复位电路、继电器电路、键盘电路、LED显示电路、数码管显示电路组成来实现定时功能。其中四个数码管为共阴极的数码管。74LS138为38译码器,74LS07为输出缓冲器,74LS00为与非门,7805为三端稳压器,电容的作用基本都是滤波来减少噪声对实验的影响。电路图如下:DS2VCCJiVCCJ40.33KST5W-PBy-C1010ufDPYDS110 O7F2O

11、1oiaacomDS4e de ddp bdp bO4F3O5 1comf g bge2cf dpcomDPY_7-SEG_DVCC10 O7c8 loiuf IIICC8II中IC'IIP1.01Ptl2P1.23O24P1.45O4P1.56O5P1.67O6-8ORSI9VCC P0.7P3010T"P3.111ALEP3212/pseNP3.313,P2TP3414P26P3.515P2.5P3.616P2.4P3.717P2.3XIAL218P2.2XIAL119P2.120P2.0J3VCC123456781 2 3 4 5 6 7 8VCCLJeddp9 O6C

12、6 0.1DPY_7-SEG_DPDS3DPYedt u o VIf38DPYP1.0VCCP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RSTP0.7P3.0/EAP3.1ALEP3.2/PSENP3.3P2.7P3.4P2.6P3.5P2.5P3.6P2.4P3.7P2.3XTAL2P2.2XTAL1P2.1VSSP2.089S51JP220aeeRSTddO110O7corcoc35348comcom233GNDDPY_7-SEG_DPDPY_7-SEG_DP32 P0.731JP57805CON20CON2026 P2.

13、5C112F14 mjp1VCCXIAL19A1VCCJB1A4GNDY4Y1B474LS0710567S4SW-PBR72kSW-PBR102kP122kL1R6R9LEDP1.72kL5L6P1.3L72kA2B2R2 10KY4A3B3Y31291019201112131415161718.1.0A1Y1A2Y2A3Y3Y6A5Y5A4Y2GNDVCCA6:-S10SW-PBS12SW-PBb acdp1 2D1 L LEDO5 1O5 1O2O374LS00CON3 J69 O6O2 6O4 2O4 2O4O5-l8 F3P2.1 1P2.0 2S11SW-PBP1.2 3 '

14、P1T-,;NLEDCON228 P2.7-27 P2.6O6O725 P2.424 P2.3.2RSI 9 "P3.010P3.111 :P3.212 T二 30 ALE=129 /PSENP1.6 7P1.7 811LED>mf g bgVCC14 I13rP3.313P3.414dp e 1 c a 'dpf"736P3.515P3.616-P3.7171kfF-9一8RELAY-SPDT*LEDP1.5VCCR4LEDJP4VCCY0C /G2A/G2BG1Y7GND74LM138L2L3L4R8Y5Y6Y1Y2Y3Y4115 Y09 Y3S8SW-P

15、B2k图2.8总电路图第三章系统软件设计3.1 系统软件流程图&3.1.1 主程序流程图主程序在执行时,通过单片机内部中断对程序不断的扫描判断、 刷新显示, 当有键按下时,将数字钟中的时间与定时时间相比较, 然后根据比较程序显示状 态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周 期循环。3.1.2 子程序流程图1 .延时子程序流程图YEND此延时子程序在实验中被主程序调用,当有按键按下时,调用此程序可以 达到消除振动的作用,避免发光二极管一直闪烁,此程序延时时间不能太短,要 不然不能很好的起到消振作用,也不能够太长,避免按键很长时间后才反应。并 且因为此程序用C

16、语言编程,延时时间没有汇编语言精准。2 .比较子程序流程图开始LED7=1LED7=0END此程序通过将定时时间不断与数字钟时间相比较来表明定时器是否开启 当LED7亮的时候表明定时开启;当LED7灭的时候表明定时关闭。3 .刷新缓冲子程序流程图开始1F1F1T1F-1r1!F1r1F=-2F=-1F=0F=1F=2F=3F=4F=5F=61F1 1r1ri!刷新 心情刷新 秒表 时间刷新 时钟 时间刷新 一路 开启 时间刷新 一路 关闭 时间刷新 二路 开启 时间刷新 二路 关闭 时间刷新 三路 开启 时间刷新 三路 关闭 时间此程序为刷新缓冲区流程图,其中 F为状态量,当F为不同的值时,数

17、码管 显示不同的状态,同时此程序不断的刷新来显示此状态下的数码管显示的值。4.按键处理子程序流程图此为按键处理子程序流程图,主程序在不停的扫描中,每当有按键按下时, 就会根据状态量STATE勺值跳转到此程序进行处理,此程序中还包含显示时所需 的状态量的定义和加减键及键值的输入,按不同的键实现不同的功能。5 .LED显不'子程序流程图此为LED显示子程序流程图,显示当 STAT。个状态量为不同的值时,表 明不同的状态,而这种状态通过不同的的发光二极管显示出来。这对于判断实验 的正确性提供了不可缺少的帮助。6 .数码管显示子程序流程图此为数码管显示的流程图,此程序与刷新缓冲区流程图相似,都

18、与状态量F相关。不同的的F值显示不同的状态所对应的数值。7 .1.3中断程序流程图1. T0中断程序流程图此图为T0中断程序流程图,用于计数器的计时,一直执行中。当 60秒到 时,分加1,秒单元清零,当60分到时,时家1,分单元清零。24时到时,时 单元清零。2. T1中断程序流程图此为T1中断流程图,用于键值判断和中断扫描,它一直保持着扫描按 键判断是否有键按下,然后让按键处理子程序能准确的进行执行。4 3.2系统程序设计3.2.1 系统主程序void main(void)P1=0x00;EA=1; /CPU 允许中断TMOD |=0x01;/定时器0计时50ms in 12M crysta

19、l定时器T0选择方式0工作其前七位没影响,开始是什么还是什么,最后一位变成0=方式0TH0=0x3C;TL0=0xB0; / 初值 0011 1100 1011 0000 65535-15536=49999 50msET0=1; TR0=1; / 开启 T0TMOD |=0x10;/定时器1用于动态扫描 T1TH1=0xFa; 初值 65535-64240=12950.13msTL1=0xF0;ET1=1; TR1=1;开启 T1while(1) RefreshTab();LED_Display();if(!L1|!L0) compare();Delay(200);Key_Process();

20、 只要有键按下,就比较时间,延时后进行按键处理。3.2.2 定时中断子程序/*定时器 0 用于数字钟的计时*/void Timer0(void) interrupt 1TH0=0x3C; TL0=0xB0; count+;/ 重新赋值50ms 溢出if(count=10) LED1=LED1; /LED1 半秒亮if (count=20) count=0;second+;/秒加1 20*50=1Sif(second=60) second=0;minute+; /分加 1if(minute=60) minute=0;hour+;/时加1if(hour=24) hour=0; / 小时到 24 时

21、,清零/*定时器 1 中断扫描显示+键值判断*/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

22、 时,键值时4;当按下L0 时,键值是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();br

23、eak;当num为0时,选择Y4,当按下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 时清零3.2.3 时间比较子程序void compare(void)if(sg0=sg4&&sg1=sg5&&sg2=sg6&&sg3=sg7&&a

24、mp;flog=1) LED7=1;/当数字钟时间与一路定时的开启时间相同时,LED7 亮if(sg0=sg8&&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&&sg

25、1=sg17&&sg2=sg18&&sg3=sg19&&flog=1) LED7=0/当数字钟时间与二路定时的关闭时间相同时,LED7 灭if(sg0=sg20&&sg1=sg21&&sg2=sg22&&sg3=sg23&&flog=1) LED7=1;/当数字钟时间与三路定时的开启时间相同时,LED7 亮if(sg0=sg24&&sg1=sg25&&sg2=sg26&&sg3=sg27&&flog=1) LED7=0;

26、/当数字钟时间与三路定时的关闭时间相同时,LED7 灭3.2.4 延时子程序void Delay( uint x) /自定义延时约0.1ms ,大约为120*xuint t;while(-x)for(t=0;t<120;t+);3.2.5 刷新缓冲区子程序void RefreshTab(void) if(F=-2) XQ0=Tabkx0; XQ1=Tabkx1; XQ2=Tabkx2; XQ3=Tabkx3;/当 F=-2 时,数码管刷新显示今天心情if(F=-1) MB0=Tabsecond/10; MB1=Tabsecond%10;/当 F=-1 时,数码管刷新显示倒计时的秒表if(

27、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;/当 F=2 时,数码管刷新显示一路定时关闭时间if(F=3)STab10=Tabsg12;STab11=Tabsg13;

28、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) FTab20=Tabsg24; FTab21=Tabsg25;FTab22=Tabsg26;FTab23

29、=Tabsg27;/当 F=6 时,数码管刷新显示三路定时关闭时间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=10)STATE=2;F=0; break;case 2: if(Keyno<10)sgn=Keyno;n+

30、;if(sg0>2|(sg0=2&&sg1>4)sg0=sg1=0;if(sg2>5)sg2=sg3=0;if(n>3)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; b

31、reak; /case3:if(Keyno=11)sg3=sg3+1;if(sg3>9)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)STA TE=4;F=1; break;case 4: if(Keyno<10)sgn=Keyno;n+; if(sg4=2&&sg5>4)sg4=sg5=0

32、;if(sg6>5)sg6=sg7=0;if(n>7)n=8;if(Keyno=11)sg5=sg5+1;if(sg5=6)sg4=sg5=0;if(Keyno=12)sg5=sg5-1;if(sg4!=0&&sg5=-1)sg4=sg4-1;sg5=9; if(sg4=0&&sg5=-1)sg4=2;sg5=3; if(Keyno=10)STA TE=5; flog=0; break;case5:if(Keyno=11)sg7=sg7+1;if(sg7>9)sg6=sg6+1;sg7=0;if(sg6=6) sg6=sg7=0; if(Key

33、no=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 6: if(Keyno=10)STA TE=7;if(Keyno<10)sgn=Keyno;n+; if(sg8=2&&sg8>4)sg8=sg9=0; if(sg10>5)sg10=sg11=0;if(n>11)n=12; if(Keyno=11)sg9=sg9+1;if(

34、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(sg11>9)sg10=sg10+1;sg11=0;if(sg10=6) sg10=sg11=0;if(Keyno=12)sg11=sg11-1; if(sg10!=0&&sg11=-1)sg10=sg10-1;sg11=9; if(sg10

35、=0&&sg11=-1)sg10=5;sg11=9;if(Keyno=10)flog=1;STATE=8;F=3; break;case 8: if(Keyno<10)sgn=Keyno;n+;if(sg12>2|(sg12=2&&sg13>4)sg12=sg13=0;if(sg14>5)sg14=sg15=0;if(n>15)n=16;用可以改变按键计数器初if(Keyno=11)sg13=sg13+1;if(sg12=2&&sg13=4)sg12=sg13=0; if(Keyno=12)sg13=sg13-1;i

36、f(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(sg15>9)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&&am

37、p;sg15=-1)sg14=5;sg15=9; if(Keyno=10)flog=1;STATE=10;F=4; break;case 10: if(Keyno<10)sgn=Keyno;n+;if(sg16>2|(sg16=2&&sg17>4)sg16=sg17=0; if(sg18>5)sg18=sg19=0;if(n>19)n=20;/用可以改变按键计数if(Keyno=11)sg17=sg17+1;if(sg16=2&&sg17=4)sg16=sg17=0; .if(Keyno=12) sg17=sg17-1;if(sg1

38、6!=0&&sg17=-1)sg16=sg16-1; sg17=9; if(sg16=0&&sg17=-1)sg16=2;sg17=3; if(Keyno=10)STATE=11; flog=0; break;/case11:if(Keyno=11)sg19=sg19+1;if(sg19>9)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&&s

39、g19=-1)sg18=5;sg19=9; if(Keyno=10)flog=1;STATE=12;F=5; break;case 12:if(Keyno<10)sgn=Keyno;n+;if(sg20>2|(sg10=2&&sg21>4)sg20=sg21=0; if(sg22>5)sg22=sg23=0;if(n>23)n=24; if(Keyno=11)sg21=sg21+1;if(sg20=2&&sg21=4)sg20=sg21=0; if(Keyno=12)sg21=sg21-1;if(sg20!=0&&s

40、g21=-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(sg23>9)sg22=sg22+1;sg23=0;if(sg22=6) sg22=sg23=0;if(Keyno=12)sg23=sg23-1;if(sg22=0&&sg23=-1)sg22=5;sg23=9; if(sg23!=0&&sg24=-1)sg23=sg23-1;sg

41、24=9; if(Keyno=10)flog=1;STATE=14;F=6; break;case 14: if(Keyno<10)sgn=Keyno;n+; if(sg24=2&&sg25>4)sg24=sg25=0;if(sg26>5)sg26=sg27=0;if(n>27)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&&

42、;sg25=-1)sg24=2;sg25=3; if(Keyno=10)STATE=15; flog=0; break;case15:if(Keyno=11)sg27=sg27+1;if(sg27>9)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; /

43、 default: break;3.2.7 数码管显示子程序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;/分别显示的是二路关闭,

44、三路开启、关闭时间3.2.8 LED显示子程序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;数字钟的分钟

45、状态、一路定时开启的的时钟状态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;bre

46、ak; case 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;三路定时关闭的的分钟状态第四章实验结果和分析4.1 实验使用的仪器设备与元件&4.1.1 实验使用的仪器设备焊烙铁、能够给单片机烧入程序的电脑、电源4.1.2 实验使用的元件如图所示AB

47、CDr 1Port TypeDesignatorFootprintinstruction20.1 ufCT、C6.04、C8RADO 1电容30.33K1SIPS33。排阴r 40.33kR5AXIAL 0 3电阻SO.ufC3RADO 1电容GIkJ7SIPS化排阻7%R1、R3-R10AX1AL03电阻310KR2AXIALD.3电阻910ufC10RB-.1/.2电容W12MY1KTAL112M晶报1120pfCKC2RADO 1电答1274LM138JP4DIP1G3T译码器1374LS00JP1DIP14与非门1489551JP2DIP40单片机1574LSQ7JP5DIPU输出缓冲

48、器167B05U1TO220H三端稳压器179013Q1Q8TOS2C三极直ieCOM2J5SIP2二脚楼线踪子19COM3J6SIP3插针20COM2。J4SIP20插针21CON20J3SIP20插针22DIODED9DIDDE0.4小4。01二机管23DPY 7-SEG DP0S1DS41DIP1D一位其明梃二樵管24LEDD1DSSIP2发光二极管26RELAY-SPDTK1HKE+5U维电器26SW-PBRSTAN 6.6*6 5微动开关27SW-PBSiS11AN 6 5*6 5微动开关26上 4.2测试结果分析这次实验中,在自己没编写程序前,用同学给的基本程序,输入 +5V后,检

49、 查电路板的焊接问题和数码管的好坏, 接好后发现电路板是好的,首云显示秒表 的发光二极管能够一直闪亮;其次就是显示电路通电标志是二极管也能够正常发 亮;再就是数码管能够完整的显示,调加减键时,所有的数码管都能够显示正确 的数据,这说明数码管是好的,焊接也问题。然后写完程序后,烧入自己的程序, 再连接电路,所以的效果都与仿真中的效果相同,能够显示我所需的状态。但是,就是当用银色发光二极管时,由于亮度太强,自己将其更改为另一种 颜色,虽然这是一件比较简单的事,但这说明在焊电路板时,应该注意元件的选 择并且明白元件的属性来减少调试中出现的问题。结束语对于本次课题-家用定时器的设计已经完成了,达到了自己预想中的效果 了。定时器的选择上选择了 4个数码管显示当前状态时间,LED显示目前状态, 通过3X4的阵列式键盘来设定时间,数字钟、三路定时初始实现显示为 0000, 然后通过键盘来输入数字钟和定时器的时间, 当设定好时间后,当定时器的时间与数字钟时间第一次一样时,表明一路定时开始了,此时LED7变亮,当定时器时间再次与数字钟时间一样时,表明一路定时结束,同时LED7灯灭。LED7 表示是否

温馨提示

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

评论

0/150

提交评论