




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
姓名:学号:系别:物理与电子信息工程系专业:电子信息工程班级:09电信1班时间日期:2012年5月29日指导老师:I摘要摘要这个设计时基于AT89C2051设计的电子时钟,通过对硬件资源和软件的编写,初步了解设计的思路以及实现过程。电子闹钟是采用电子电路实现对时、分、秒进行数字显示的装置,广泛应用于个人家庭、医院、车站、码头、办公室等公共场所,成为人们日常生活中不可缺少的必需品。本设计基于单片机技术原理,以AT89SC2051作为核心控制器,通过硬件电路的制作及软件程序的编制,设计制作了一种利用四位LED数码管动态扫描显示时间的电子闹钟系统。整个电子闹钟系统主要由时间显示模块、时间设置、闹铃模块、闹钟响应模块。可实现时间显示、时间调整、闹钟设置和整点闹铃功能,具有制作简单、调整方便、稳定性好、便于扩展等特点。电子时钟还通过对比实际的数字电子时钟,来校正和调整,从而找出误差的来源,尽可能的减少误差,是系统可以达到实际数字电子时钟允许的误差范围内。关键词关键词:单片机AT89SC2051、电子闹钟、LED动态显示II目录目录摘要摘要.I1.1.引引言言.122系统设计系统设计.12.1设计要求.12.2总设计方案.12.2.1系统实现.133系统硬件电路设计系统硬件电路设计.23.1时钟电路设计.33.2显示模块的设计.43.3按键模块的设计.53.4复位电路设计.53.5闹铃的设计.63.6发光二极管闪烁电路设计.644软件设计软件设计.74.1程序流程.74.1.1主程序.84.1.2时钟走时模块.94.1.3时间设置模块.104.1.4闹钟设置模块.114.1.5奏乐模块.1455系统测试系统测试.155.1硬件调试.155.2软件调试.1566结论结论.15附录附录.16附录1器件清单.16附录2调试仪器.16附录3原理图和PCB图.17附录4实物.18附录5程序清单.1811.1.引引言言本文主要介绍用单片机内部的定时计数器来实现电子闹钟的方法,本设计由单片机AT89C2051芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子闹钟。实现以24小时制,同时可以设置多个闹钟,闹钟到的时候,会播放音乐,由于课程设计要求,这个设计的秒没有用数码管显示,用LED灯一秒闪烁一次以替代,分和时在数码管显示。单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面。单片机就是在半导体硅片上集成了CPU、存储器和各种接口,这样一块集成电路芯片具有一台计算机的属性,主要应用于测控领域。电子闹钟是现代电子技术在时钟领域的具体实现方式。如今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行校对,片灵活性好。122系统设计系统设计2.1设计要求本系统设计是基于单片机的电子闹钟。1能实现走时功能24小时制。2能设定闹铃时间,至少能设置两个或者以上的闹铃,即预设定时间,到该时间,电子钟能闹铃唱出歌曲。3用四位共阳极LED数码管来显示时间。4二个发光二极管作为秒表,1S闪烁一次。5.多段时钟提醒闹铃。2.2总设计方案本系统的功能设计目标应该包括以下几个方面:时间走时模块、时间设置模块、闹钟设置模块、闹钟响应(奏乐)模块和按键功能模块及数码管动态显示模块。电子时2钟主要有单片机最小系统,按键,显示电路等。2.2.1系统实现本设计使用单片机AT89C2051作为核心控制器,LED数码管显示时间,按键输入修改值再加上相应的软件设计可实现上电复位、切换模块、调整时间和调整状态等要求及调整相应闹钟。33系统硬件电路设计系统硬件电路设计AT89C2051AT89C2051简介简介AT89C2051是一个低电压,高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读Flash程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入输出3(IO)端口,其中P1是一个完整的8位双向IO口,两个外中断口,两个16位可编程定时计数器两个全双向串行通信口,一个模拟比较放大器。同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。主要功能特性:兼容MCS51指令系统2k可反复擦写(1000次)FlashROM15个双向IO口6个中断源两个16位可编程定时计数器2.7-6.V的宽工作电压范围时钟频率0-24MHz128x8bit内部RAM两个外部中断源两个串行中断可直接驱动LED两级加密位低功耗睡眠功能内置一个模拟比较放大器可编程UARL通道软件设置睡眠和唤醒功能AT89C2051引脚图如下:图3-0AT89SC2051引脚图3.1时钟电路设计振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号。AT89C2051单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU的时钟源;也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。34本设计采用内部时钟模式,需在XTAL1和XTAL2端口加晶振电路,单片机工作速度也是由晶振电路决定的。在晶振电路中,电路中电容C1和C2对振荡频率有微调作用,通常的取值范围3010pF;石英晶体选择12MHz。电路如下图:C630pC530pjz12MX1X2图3-2晶振电路设计3.2显示模块的设计LED显示有静态扫描和动态扫描两种,由于本系统要显示四位LED,所以选择的动态扫描方式。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了IO口,降低了能耗。由于AT89C2051单片机的IO口的带载能力不强,故本系统选用共阳型的八段LED数码管。P1口传送的是显示段码,P3.2P3.5口传送的是显示位码。P3.0用于控制两个LED灯的选亮。动态扫描周期的确定,所谓动态驱动实际就是分时点亮不同位置的数码管,由于人眼的惰性,当亮度熄灭的时间小于125秒时,给人们感觉是亮度没变。每段LED正常显示是的电流为2mA20mA,此处每段LED接330的电阻,则每段LED的电流为数码管的电流为(5-1.8)470=6.8mA,满足要求。5电路如图3-5所示:5图3-4数码管显示电路3.3按键模块的设计独立式按键是最简单的键盘输入设计,每个键盘单独占用一个IO口,当按下和释放按键时,输入到IO口的电平是不一样的。按照端口电平的不同判断是否有按键按下,并执行相应的程序段。6本设计中将4个按键分别接P3.1和P3.2P3.5口。设计中按键解释:SW1:功能按键,在设置闹钟时是确定键,按下即返回时钟走时模块;SW2:数码管闪烁按键,在设置时间时配合SW1返回时钟走时模块;SW3:赋值键,按下一次加一;Sw4:闹钟设置按键,依次按下则显示不同的闹钟时间;电路如下图:图3-5按键部分原理图63.4复位电路设计在理论上复位电路的实质是一阶充放电电路,系统上电时该电路提供有效的复位信号RST(高电平)直至系统电源稳定后撤销复位信号(低电平)。7理论上说,AT89C2051单片机复位引脚只要外加2个机器周期的有效信号即可复位,即只要保证tRC2M(机器周期)。由于本系统所用的晶振为12M则单片机的一个机器周期为1uS,所以可选电解电容为104,点电阻为10K。则高电平时间为左右,msRC1148满足要求。单片机运行期间,还可以利用按键完成复位。由于设计的是时钟,故没有设置按键复位,即上电时,时钟就会自动上电复位,其复位电路如下图所示:图3-6按键上电复位电路3.5闹铃的设计本块实验板,是通过无源蜂鸣器其基本工资原理:无源蜂鸣器蜂鸣器是靠压电效应的原理来发声的,压电材料一般常见的是各种压电陶瓷陶瓷.这种材料的特别之处在于当电压作用于压电材料时就会随电压和频率的变化产生机械变形.另一方面当振动压电陶瓷时则会产生电荷.就是说这种材料能把机械变形和电荷相互转化,压电式蜂鸣器里面的起振片就是一种压电陶瓷.如上所述要让它振动除了压电陶瓷本身还需要适当大小和频率变化的电压作用于压电陶瓷.压电式(有源)蜂鸣器内部带有多谐振荡器可以产生1.52.5kHZ的电压信号.由此压电式蜂鸣器才能发声。电路原理图如下:7图3-7闹铃电路3.6发光二极管闪烁电路设计本系统当时间为走时时间时,两个发光二极管闪烁。在一秒钟闪烁一次,(亮暗一次)代表时钟的秒表;电路如下:图3-8发光二极管闪烁电路44软件设计软件设计设计并实现基于AT89C2051单片机的电子闹钟,软件实现的功能有:1上电时,LED数码管显示7120一秒尔后所有数码管显示00:00,发光二极管LED开始1S闪烁1次,并且开始走时。2根据需要设置现在的时间:k0为功能键和确认键,按下k0键,发光二极管LED停止闪烁,表明进入时间设置的状态或者确认设置的时间。k2键分别为增加键即是赋值键,按下键可以相应时间的加1。k3为调整键和关闭闹钟键,当按下k3时可以跳到相应的小时、分钟之间的相互转换或者是关闭闹钟。K1是数码管闪烁标志位(flh)的设置位,当要对数码管赋值送显时,要根据(flh)的闪烁位,对应对该位赋值,当闹钟时间和走时时间相同时,蜂鸣器奏乐40秒。3当走时时间正常走时时,蜂鸣器没有奏乐,相应的LED灯一秒闪烁一次。4当有设置闹钟,并将闹钟设置完后,按下确定键(flh=5且k2按下),则开启闹钟,当走时时间等于闹钟时间时,则蜂鸣器播放音乐。5设置闹钟时,时钟继续走时,按下k0键则返回时钟走时模块,设置当前时间时,LED不闪烁,当设置完成时,同时按下k0和k1则从设置的时间开始走时。6定时器t0来实现关闭闹钟和读取节拍、音频的功能。4.1程序流程4.1.1主程序主程序主要完成系统的初始化和按键的捕获,在键没有按下时调用显示子程序。程序流程图如图4-1所示。8图4-1系统主流程图4.1.2时钟走时模块本设计在空闲模块时电子闹钟的数码管显示走时间,LED发光二极管以每0.5s闪烁。当走时时间与设置的闹钟时间相同、走时时间为整点、走时时间为设置的提醒时间时,扬声器奏乐。空闲模块的程序流程图如下:94.1.3时间设置模块每次上电时,数码管显示00:00:00,然后开始走时。若要设置为当前时间,需经过一系列的按键调整设置。在时间设置状态下,LED发光二极管不闪烁。时间设置模块的程序流程图如下:10图4-3时间设置模块流程图4.1.4闹钟设置模块在时钟正常走时状态下,按下K3,LED发光二极管不闪烁。则跳转到闹钟设置模块,第一次按下K3,对第一个闹钟进行设置,再次按下,对第二个闹钟进行设置,设置好闹钟响应的时间时,按下K1,另数码管的闪烁值等于5即,数码管不闪烁后,按下K2,开启闹钟。尔后,按下K0,返回时钟走时模块,等到现在时间和闹钟设置时间一样时,蜂鸣器奏乐。闹钟设置模块的程序流程图如下所示:11图4-4闹铃时间设置流程图4.1.5奏乐模块单片机奏乐原理单片机奏乐原理单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。周期为频率的倒数,可以通过音符的频率计算出半周期。演奏时,要根据音符频率的不同,把对应的、半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。有两个数据表,其中存放了事先算好的、各种音符频率所对应的、半周期的定时时间初始值。有了这些数据,单片机就可以演奏从低音、中音、高音和超高音,四个八度共28个音符。演奏乐曲时,就根据音符的不同数值,从半周期数据表中找到定时时间初始值,送入定时器即可控制发音的音调。比如把表中的0 xF2和0 x42送到定时器,定时器按照这个初始值来产生中断,输出的方波,人们听起来,这就是低音1。乐曲的数据,也要写个数据表,程序中以codeunsignedcharsszymmh命名。这个表中每三个数字,说明了一个音符,它们分别代表:第一个数字是音符的数值1234567之一,代表多来咪发.第二个数字是0123之一,代表低音、中音、12高音、超高音第三个数字是时间长度,以半拍为单位。乐曲数据表的结尾是三个0。程序如下:#includesbitspeaker=P37unsignedchartimer0htimer0ltime单片机晶振采用12MHz频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据。如下,对世上只有妈妈好的数据表加以解释。单片机晶振采用12MHz频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据codeucharFREQH=0 xF20 xF30 xF50 xF50 xF60 xF70 xF8低音12345670 xF90 xF90 xFA0 xFA0 xFB0 xFB0 xFC0 xFC1234567i0 xFC0 xFD0 xFD0 xFD0 xFD0 xFE高音2345670 xFE0 xFE0 xFE0 xFE0 xFE0 xFE0 xFF超高音1234567频率-半周期数据表低八位codeucharFREQL=0 x420 xC10 x170 xB60 xD00 xD10 xB6低音12345670 x210 xE10 x8C0 xD80 x680 xE90 x5B0 x8F1234567i0 xEE0 x440 x6B0 xB40 xF40 x2D高音2345670 x470 x770 xA20 xB60 xDA0 xFA0 x16超高音1234567世上只有妈妈好codeucharsszymmh=623521322522132621521624322521621522322121611521321224223321522521621322222124523321221121611121516000其中表格是定义存储在ROM里面,不用去占用RAM的资源,每个表中的数据以三个为一组,如623其中6为“啦”2代表中音,3代表半拍的个数,为1.5拍,表格以三个0代表结尾。单片机产生不同频率脉冲信号的原理:单片机产生不同频率脉冲信号的原理:(1)要产生音频脉冲,只要算出某一音频的脉冲(1频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的IO反相,然后重复计时此半周期的时间再对IO反相,就可以在IO脚上得到此频率的脉冲。1013(2)利用AT89S52的内部定时器T1使其工作在定时方式1下,改变定时值TH1及TL1以产生不同频率的方法如下:例如,频率为523Hz,其周期T=1523S=1912uS,因此只要令计数器计时956uS1us=956,在每计数956次时就将IO反接,就可得到中音DO(532Hz)。计数脉冲值与频率的关系公式如下:N=Fi2Fr(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)(3)其计数值的求法如下:T=65536-N=65536-Fi2Fr(4)C调个音符频率与计数值T的对照表如下表所示:表3-1C调各音符频率与计数值T的对照表音符频率(Hz)简谱码(T值)音符频率(Hz)简谱码(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164923#2RE#31163928中6LA88064968低3M33064103#693264994低4FA34964103中7SI98865030#4FA#37064260高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565124#6LA#46664463高3M131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198(5)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。若1拍为1秒,则14拍是0.25秒。表3-214节拍对应编码节拍数节拍码节拍数节拍码节拍数节拍码114拍61又12拍B2又34拍224拍71又34拍C3拍334拍82拍D3又14拍1441拍92又14拍E3又12拍51又14拍A2又12拍F3又34拍表3-3各调节拍的时间设定表14节拍18节拍曲调值延时曲调值延时调44125毫秒调4462毫秒调34187毫秒调3494毫秒调24250毫秒调24125毫秒程序流程图如下:15图4-6奏乐模块流程图55系统测试系统测试5.1硬件调试硬件调试的方法有静态调试和动态调试2种。静态调试是在不通电的情况下,用直观的办法和使用万用表电阻挡检查有无断线、脱焊、短路、接触不良,检查绝缘情况、核对元器件的型号、规格、安装,特别要检查电源系统,防止电源短路和极性错误等。动态调试是电路在检查无误后,给电路和仿真器加上电源进行联机仿真调试。5.2软件调试软件的调试是通过程序的汇编、连接、执行来发现程序中的语法错误与逻辑错误并加以纠正的过程。对于本系统而言,软件程序所实现的功能比较多,所以软件程序的调试显得相当的烦琐。整个程序是使用c语言。总结调试,在供电的情况下主要实现24小时的走时、闹铃和整点报时的功能。66结论结论本系统以单片机AT89S52芯片为核心部件,利用单片机技术、数码管动态扫描原理,设计了电子闹钟。此设计具有电路简单、功能齐全、制作成本低、性能价格比高等特点,只需单电源供电,适合使用于家庭、办公室等场所。经实际使用,该电子时钟计时准确、显示直观、使用方便。附录附录附录1器件清单序号名称型号及规格数量1单片机AT89C205112共阳极数码管LED43晶振12M14发光二极管LED25蜂鸣器16三极管9012616由附录2调试仪器8按键49电阻4.7k510电阻470711电阻1K112电阻10K113电容10pf214电容1042序号名称、型号、规格数量备注1TOP200012学生电源15V3万用表1-4KeilC51单片机编译软件美国KeilSoftware公司17附录3原理图和PCB图R14K7R24K7R34K7R1KR44K712345678161514131211109R5-1247010kSW2+5VSW4SW1C4104SW3Q4VCCQ3Q2abfcgdeDPY1234567gfedcba8dpdpcom9com10abfcgdeDPY1234567gfedcba8dpdpcom9com10abfcgdeDPY1234567gfedcba8dpdpcom9com10abfcgdeDPY1234567gfedcba8dpdpcom9com10+5V+5V+5VP3.0R131KD1D2CS0CS1CS2CS3+5VC3104R14+5VQ1VCCR14470CS0CS11RST2P3.03P3.14X15X26P3.27P3.38P3.49P3.510GND11P3.712P1.013P1.114P1.215P1.316P1.417P1.518P1.619P1.720VCCCS212MHZCS3VCCP1.7P1.6P1.5P1.4P1.3P1.2P1.1P3.1P1.0C1C2P3.5P3.4P3.3P3.2PCB18附录4实物图如下:19附录5程序清单主程序:主程序:#include#include#include#includedefine.h#includekeyscan.h#includedisplay.h#includeclock.h#includetime_set.h#includeclock_set.h#includeclock_ring.hvoidinitial()初始化函数voidmain()主函数initial()while(1)while(!TF1)TF1=0TH1=(65536-4000)2564ms初值重赋TL1=(65536-4000)%256keyscan()display()switch(sta)case0:clock()break时钟模块case1:time_set()break时间设置模块case2:clock_set()break闹钟设置模块case3:clock_ring()break闹钟响应模块default:sta=0break冗余跳回时钟模块初始化函数voidinitial()LED=0sta=0cnt=0TMOD=0 x11ET0=120EA=1TH1=(65536-4000)256TL1=(65536-4000)%256m1:TR1=1while(!TF1)TF1=0TH1=0 xf0TL1=0 x60display()buf0=student0%10显示学号1sbuf1=student010buf2=student1%10buf3=student110if(cnt+!=250)gotom1cnt=0buf0=0buf1=0buf2=0buf3=0定义模块程序:定义模块程序:#defineuintunsignedint#defineucharunsignedcharuchar4闹钟时间寄数组ucharnum_miaonum_fennum_shi时间寄存变量分别为秒,分,时ucharflh=5闪烁数码管闪转变量ucharoclk闹钟个数寄存器ucharsta模块状态值ucharf300=0数码管开关延时变量uintcntcnt1=1延时变量ucharktmr键去抖延时器ucharbuf0buf1buf2buf3数码管数字显示变量bitLEDflag=0led灯闪烁标志位bitSMGflag=0数码管开关控制位bitoclk1_runoclk2_runoclk3_runoclk4_run1为启动相应的第几个闹钟ucharbdatalastkey1lastkey2键状态字sbitlk0=lastkey15K0键sbitlk1=lastkey14K1键sbitlk2=lastkey13K2键sbitlk3=lastkey12K3键ucharbdataKEY1KEY2键前沿字sbitk0=KEY15K0键前沿sbitk1=KEY14K1键前沿sbitk2=KEY13K2键前沿sbitk3=KEY12K3键前沿-常数定义-constucharstudent0=20constucharstudent1=71对蜂鸣器发出音乐的定义-sbitspeaker=P37蜂鸣器控制位uchartimer0htimer0l音调寄存变量ucharpart节拍寄存变量-单片机晶振采用12MHz频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据codeucharFREQH=0 xF20 xF30 xF50 xF50 xF60 xF70 xF8低音12345670 xF90 xF90 xFA0 xFA0 xFB0 xFB0 xFC0 xFC1234567i0 xFC0 xFD0 xFD0 xFD0 xFD0 xFE高音2345670 xFE0 xFE0 xFE0 xFE0 xFE0 xFE0 xFF超高音1234567频率-半周期数据表低八位codeucharFREQL=0 x420 xC10 x170 xB60 xD00 xD10 xB6低音1234567210 x210 xE10 x8C0 xD80 x680 xE90 x5B0 x8F1234567i0 xEE0 x440 x6B0 xB40 xF40 x2D高音2345670 x470 x770 xA20 xB60 xDA0 xFA0 x16超高音1234567-世上只有妈妈好数据表要想演奏不同的乐曲只需要修改这个数据表codeucharsszymmh=623521322522132621521624322521621522322121611521321224223321522521621322222124523321221121611121516000AT89C2051相关硬件资源定义ucharcodetable=段码表0 x810 xED0 x430 x490 x2D0 x190 x110 xCD0 x010 x09sbitLED=P30sbitcs0=P32个位位选sbitcs1=P33十位位选sbitcs2=P34百位位选sbitcs3=P35千位位选sbitROW=P31sw14键列选择时间走时模块函数:时间走时模块函数:时钟模块-voidH_BCD(ucharaucharb)时间送缓函数voidtime_run()时钟走时函数voidalarm_Y_N()判断闹钟函数voidclock()time_run()时钟走时H_BCD(num_fennum_shi)将时间送显缓if(k1)sta=1cnt=0LEDflag=0SMGflag=0flh=5LED=0elseif(k3)sta=2SMGflag=0flh=5if(num_miao=0)alarm_Y_N()时钟走时函数voidtime_run()if(cnt+=125)500mS到了没有?cnt=0LEDflag=LEDflagLED灯闪烁标志位取反(1S钟亮暗一次)if(LEDflag=1)LED=0num_miao+led灯每秒闪一次elseLED=1if(num_miao=60)num_miao=0num_fen+if(num_fen=60)num_fen=0num_shi+if(num_shi=25)num_shi=0-时间送显缓voidH_BCD(ucharaucharb)buf0=a%10buf1=a10buf2=b%10buf3=b10时间设置模块函数:时间设置模块函数:时间设置模块-22voidsetting()voidtime_set()setting()if(k0&k1)k0按下返回时钟模块num_miao=0sta=0LEDflag=0SMGflag=0f300=0num_fen=buf110+buf0从设置的时间开始走时num_shi=buf310+buf2-时间赋值函数voidsetting()if(k1)flh-if(flh=0)flh=5elseif(f300+=75)300ms数码管开或关一次SMGflag=SMGflagf300=0开关控制位flag1switch(flh)case1:个位数码管赋值if(SMGflag=1)cs0=1if(k2)buf0+if(buf0=10)buf0=0breakcase2:十位数码管赋值if(SMGflag=1)cs1=1if(k2)buf1+if(buf1=6)buf1=0breakcase3:百位数码管赋值if(SMGflag=1)cs2=1if(k2)buf2+if(buf3=2)if(buf2=4)buf2=0elseif(buf2=10)buf2=0breakcase4:千位数码管赋值if(SMGflag=1)cs3=1if(k2)buf3+if(buf3=3)buf3=0breakdefault:break闹钟设置模块函数:闹钟设置模块函数:闹钟设置模块-23voidclock_set()time_run()时钟继续走时if(k3)flh=5oclk+if(oclk=2)oclk=0闪烁数码管闪转变量,flh=5数码管不闪switch(oclk)不同闹钟的闪转变量case0:第一个闹钟时间设置H_BCD(01)闹钟时间送显缓time_set()闹钟时间设置0=buf110+buf0将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论