基于单片机控制的自动打铃器设计_第1页
基于单片机控制的自动打铃器设计_第2页
基于单片机控制的自动打铃器设计_第3页
基于单片机控制的自动打铃器设计_第4页
基于单片机控制的自动打铃器设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

一、设计要求1.画出主要电路图2.写出程序3.调试好硬件电路和程序二、技术指标1.实现校园作息规定时间的自动打铃器(共计10个打铃点,能扩充)2.能实现基本的时钟功能。3能实现1分钟的打铃控制(打零持续时间可调)。摘要文章介绍了一种以89s51单片机为核心并带有数码LED显示时.分.秒和按键校时自动打铃器。关键词单片机存储器数码管一、引言用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低可靠性好等特点。可用于学校作息,方便了广大师生。二、总体设计方案1.前言学习单片机离不开实验,随着flash型单片机的广泛应用,很多单项机工程师采用软件模拟加写片验证的方法进行开发工作,对于初学者而言,这也是一种很好的入门方法。目前,流行的单片机开发软件很多,并且还可以免费下载,编程器的价格十分低廉,而且编程器也是将来使用单片机必备的工具,相比之下,用万用板搭接,只能做一些简单的电路,稍复杂的电路一般用到双面板,这对初学者来说,一般很难,所以我们在学习单片机的基础上开发出了这一块使用单面板的单片机实验。特别使合于业余爱好者自制2.打铃器设计思路利用单片机及定时器设计的一个时钟,在每次秒加1的计时过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回。3.总体设计框图P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728ALE/PROG30PSEN29EA/VPP31P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8REST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119GND20U1AT89S51C122uFR11KSPEAKQ19014Q29014R25.1KR3470S1S2S3S4D2IN4007K1R45.1DLQI1SPEAKDLQI1S1S2S3S4RESETS512SP12DLQ1NC1NC2NC3GND4SDA5SCL6WP7VCC8U4AT24C02AGNDSCLSDAVCC123DS1820GNDDS1234R/T/LEDDATAWRGNDVCCVCCVCCVCCGNDGNDGNDQ39014D3IN4007K2R95.1DLQI2DLQI212DLQ2VCCGND串串串串串VCCDS1820串串R720012345LCD-UARTCSWRDATA串串LCD串串串串串串串串串串串串串串串串串串串串串串1R114.7K串串串串串串串2串串串串串串串串串串串MCU串串VCCGNDR85.1kR105.1k总图14、电路板介绍主板MCU端口使用介绍:AT24C02:P2.5SCLP2.4SDA继电器:P2.3QLQI1P2.2QLQI2蜂鸣器:P2.1SPEAK温度传感器:P2.0BS1820的DS端(带上拉电阻)开关:S1P1.0S2P1.1S3P1.2S4P1.3LCM103接口:P3.0DATAP3.1WRP3.2CS数码管接口:P3.0DATAP3.1WR5电路板功能介绍:此板属于单片机开发学习板,板上放置了必要的单元电路,而且预留了许多的端口,以供使用者添加电路或功能。按键:总共4个按键,分别接到P1口的P1.0,P1.1,P1.2,P1.3口上。各个按键的功能可以有用户自己定义。其中有一个复位按键,接在单片机的9脚上。蜂鸣器:经过一个驱动三极管接在P2.1端口上,同时有跳线可以将其断开,方便用户。继电器:主板上设置了两个小型继电器。通过驱动三极管接到P2.2,P2,3上。三打铃器介绍1四组工作寄存器的分配工作寄器第0组主要用在主程序。工作寄器第1组主要用在中断程序,和延时子程序。工作寄器第3组主要用在显示子程序2按键简单介绍此打铃器主要有四个按键,分别为S1功能键1,S2功能键2,S3校对键,S4校对确认键。在时钟正常走动时,按下功能键S1,时钟停止走动,在按下功能键S1,进入分校对,这时按S3校对键,可以调整时钟的分,0到60循环,此时按下S4确认键时,确认分校对完毕,这时在按下功能键S1时,进入时校对,此时按S3时,可以调整时钟的时,0到24循环,按下确认键S4时,时钟时校对完毕,在按下S1时,时钟进入正常走动状态,时钟校对完毕。打铃点校对按下功能键S2进入打铃点1的分校对,些时在显示秒的位置显示1,按下校对键S3可以进行打铃点1的分校对,0到60循环,按下确认键S4时,进入时钟正常走动状态,在按功能键S2时,进入打铃点1的时校对,0到24循环,在按S4时,确认校对完毕,其它打铃点校对一样,每一次打铃点的校对,在显示时钟秒的位置显示相应的打铃点次数。3.程序流程图总体软件流程图中断子程序流程图4程序清单;*;*单片机打铃器设计*;*MS100EQU6FH;SECEQU6EH;秒缓冲区MINEQU6DH;分缓冲区HOUREQU6CH;时缓冲区;秒,分,时,显示缓冲区LEDSLEQU6BH;秒显示缓冲区低位LEDSHEQU6AH;秒显示缓冲区高位LEDMLEQU69H;分显示缓冲区低位LEDMHEQU68H;分显示缓冲区高位LEDHLEQU67H;时显示缓冲区低位LEDHHEQU66H;时显示缓冲区高位LEDS_LEQU30H;打铃点次数显示缓冲区LEDS_HEQU31HLEDM_LEQU32HLEDM_HEQU33H;打铃点分显示缓冲区LEDH_LEQU34HLEDH_HEQU35H;打铃点时显示缓冲区;打铃点绶冲区DLD11EQU60HDLD12EQU5FHDLD21EQU5EHDLD22EQU5DH;10个打铃点存储缓冲区DLD31EQU5CHDLD32EQU5BHDLD41EQU5AHDLD42EQU59HDLD51EQU58HDLD52EQU57HDLD61EQU56HDLD62EQU55HDLD71EQU54HDLD72EQU53HDLD81EQU52HDLD82EQU51HDLD91EQU50HDLD92EQU4FHDLD101EQU4EHDLD102EQU4DH;-;定义按键;-S1BITP1.0;功能键1S2BITP1.1;功能键2S3BITP1.2;校对键S4BITP1.3;确认键SPEAKBITP2.1;扬声器JDQ1BITP2.3;继电器1ORG0000H;主程序初始化AJMPMAINORG000BHAJMPTOTIMEORG0030HMAIN:MOVSP,#70HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0MOV20H,#0;功能键1MOV21H,#0;功能键2MOV22H,#0;打铃点比较分MOV23H,#0;打铃点比较时MOVHOUR,#12HMOVMIN,#25HMOVSEC,#00H;时钟初始化;*MOVR7,#20MOVR0,#4DHCLR_LOOP:MOVR0,#00HINCR0DJNZR7,CLR_LOOP;-;按键主程序功能键1START:ACALLXSHACALLT50MSACALLT12MSACALLT12MSJBS1,NET1ACALLT12MSJBS1,NET1S11:JNBS1,S11INC20HMOVA,20HCJNEA,#1,GN1;功能建1CLRTR0GN1:CJNEA,#2,GN2MOVR1,#MINLJMPTIAOZHFGN2:CJNEA,#3,GN3MOVR1,#HOURLJMPTIAOZHHGN3:CJNEA,#4,NET1SETBTR0MOV20H,#0;-;功能键2NET1:JBS2,START;S2不按下,循环键S1ACALLT12MSJBS2,STARTS2222:JNBS2,S2222INC21HMOVA,21HCJNEA,#1,DLD1_1MOVLEDS_L,#1MOVLEDS_H,#0AHACALLDLXSH;显示打铃点1MOVR1,#DLD11LJMPDLDF;跳转到打铃点1的分调整DLD1_1:CJNEA,#2,DLD2MOVR1,#DLD12LJMPDLDH;跳转到打铃点1的时调整DLD2:CJNEA,#3,DLD2_2MOVLEDS_L,#2MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD21LJMPDLDFDLD2_2:CJNEA,#4,DLD3MOVR1,#DLD22LJMPDLDHDLD3:CJNEA,#5,DLD3_3MOVLEDS_L,#3MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD31LJMPDLDFDLD3_3:CJNEA,#6,DLD4MOVR1,#DLD32LJMPDLDHDLD4:CJNEA,#7,DLD4_4MOVLEDS_L,#4MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD41LJMPDLDFDLD4_4:CJNEA,#8,DLD5MOVR1,#DLD42LJMPDLDHDLD5:CJNEA,#9,DLD5_5MOVLEDS_L,#5MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD51LJMPDLDFDLD5_5:CJNEA,#0AH,DLD6MOVR1,#DLD52LJMPDLDHDLD6:CJNEA,#0BH,DLD6_6MOVLEDS_L,#6MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD61LJMPDLDFDLD6_6:CJNEA,#0CH,DLD7MOVR1,#DLD62LJMPDLDHDLD7:CJNEA,#0DH,DLD7_7MOVLEDS_L,#7MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD71LJMPDLDFDLD7_7:CJNEA,#0EH,DLD8MOVR1,#DLD72LJMPDLDHDLD8:CJNEA,#0FH,DLD8_8MOVLEDS_L,#8MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD81LJMPDLDFDLD8_8:CJNEA,#10H,DLD9MOVR1,#DLD82LJMPDLDHDLD9:CJNEA,#11H,DLD9_9MOVLEDS_L,#9MOVLEDS_H,#0AHACALLDLXSHMOVR1,#DLD91LJMPDLDFDLD9_9:CJNEA,#12H,DLD10MOVR1,#DLD92LJMPDLDHDLD10:CJNEA,#13H,DLD10_10MOVLEDS_L,#0;显示打铃点10MOVLEDS_H,#1ACALLDLXSHMOVR1,#DLD101LJMPDLDF;跳转到打铃点10分调整DLD10_10:CJNEA,#14H,DLD111MOVR1,#DLD102MOV21H,#0LJMPDLDH;跳转到打铃点10时的调整DLD111:LJMPNET1;*;时钟中断程序TOTIME:PUSHPSWPUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCMS100MOVA,MS100CJNEA,#10,RETURNMOVMS100,#0MOVA,SECADDA,#1DAAMOVSEC,ACJNEA,#60H,RETURNMOVSEC,#0MOVA,#1HADDA,MINDAAMOVMIN,ACJNEA,#60H,RETURNMOVMIN,#0MOVA,#1HADDA,HOURDAAMOVHOUR,ACJNEA,#24H,RETURNMOVHOUR,#0;*RETURN:SETBRS0MOVR0,#DLD11MOVR1,#DLD12CLRRS0MOV22H,DLD11MOV23H,DLD12MOVR5,#10REPEATT:MOVA,MINCJNEA,22H,REPEATMOVA,HOURCJNEA,23H,REPEATCLRSPEAKCLRP2.2MOVR6,22HINCR6;打铃点分暂存R6MOVA,R6DAA;等待加一分钟后停止继电器MOVR6,A;*REPEAT:MOVA,R6CJNEA,MIN,XIASETBSPEAKSETBP2.2XIA:SETBRS0DECR0DECR0DECR1DECR1MOV22H,R0MOV23H,R1CLRRS0DJNZR5,REPEATT;删分BCD送缓冲区MOV24H,SECMOV26H,SECANL24H,#0FHMOVLEDSL,24HANL26H,#0F0HMOVA,26HSWAPAMOVLEDSH,AMOV24H,MINMOV26H,MINANL24H,#0FHMOVLEDML,24HANL26H,#0F0HMOVA,26HSWAPAMOVLEDMH,AMOV24H,HOURMOV26H,HOURANL24H,#0FHMOVLEDHL,24HANL26H,#0F0HMOVA,26HSWAPAMOVLEDHH,APOPACCPOPPSWRETI;时钟分的调整-;分的调整TIAOZHF:JBS3,LSPPACALLT12MSJBS3,LSPPS33333:JNBS3,S33333BUG:MOVA,#01HADDA,R1DAAMOVR1,ALSPP:JBS4,XIANNACALLT12MSJBS4,XIANNJNBS4,$LJMPSTARTXIANN:MOVA,R1CJNEA,#60H,XIAN0MOVR1,#0XIAN0:ACALLCFENACALLT50MSXIAN:SJMPTIAOZHF;-;时钟时的调整TIAOZHH:JBS3,LSPACALLT12MSJBS3,LSPS333:JNBS3,S333BUG2:MOVA,#01HADDA,R1DAAMOVR1,ALSP:JBS4,BUGGGACALLT12MSJBS4,BUGGGS4_4:JNBS4,S4_4LJMPSTARTBUGGG:MOVA,R1CJNEA,#24H,XIAN2MOVR1,#0XIAN2:ACALLCFENACALLT50MSSJMPTIAOZHH;打铃点分的调?-?DLDF:JBS3,LSPPPACALLT12MSJBS3,LSPPPS3333:JNBS3,S3333MOVA,#01HADDA,R1DAAMOVR1,ALSPPP:JBS4,XIANNNACALLT12MSJBS4,XIANNNS_4:JNBS4,S_4LJMPSTARTXIANNN:MOVA,R1CJNEA,#60H,XIANDDMOVR1,#0XIANDD:ACALLDLDCFFACALLT50MSSJMPDLDF;-;打铃点时的调整DLDH:JBS3,PANS4ACALLT12MSJBS3,PANS4S_3:JNBS3,S_3MOVA,#01HADDA,R1DAAMOVR1,APANS4:JBS4,XIANSHDACALLT12MSJBS4,XIANSHDS_4:JNBS4,S_4LJMPSTARTXIANSHD:MOVA,R1CJNEA,#24H,XIANSHDDMOVR1,#0XIANSHDD:ACALLDLDCFHACALLT50MSSJMPDLDH;-;打铃点分的拆分DLDCFF:PUSHACCPUSHPSWMOV26H,R1MOV27H,R1ANL26H,#0FHMOVLEDM_L,26HANL27H,#0F0HMOVA,27HSWAPAMOVLEDM_H,APOPPSWPOPACCACALLDLXSHRET;打铃点时的拆分-DLDCFH:PUSHACCPUSHPSWMOV26H,R1MOV27H,R1ANL26H,#0FHMOVLEDH_L,26HANL27H,#0F0HMOVA,27HSWAPAMOVLEDH_H,APOPPSWPOPACCACALLDLXSHRET;拆分BCD子程序CFEN:PUSHPSWPUSHACCMOV24H,SECMOV25H,SECANL24H,#0FHMOVLEDSL,24HANL25H,#0F0HMOVA,25HSWAPAMOVLEDSH,AMOV24H,MINMOV25H,MINANL24H,#0FHMOVLEDML,24HANL25H,#0F0HMOVA,25HSWAPAMOVLEDMH,AMOV24H,HOURMOV25H,HOURANL24H,#0FHMOVLEDHL,24HANL25H,#0F0HMOVA,25HSWAPAMOVLEDHH,AACALLXSHPOPACCPOPPSWRETT12MS:SETBRS0MOVR4,#12TM:MOVR3,#128TM6:DJNZR3,TM6DJNZR4,TMCLRRS0RETT50MS:SETBRS0MOVR7,#200D11:MOVR6,#125D12:DJNZR6,D12DJNZR7,D11CLRRS0RET;-XSH:PUSHACCPUSHPSWMOVA,LEDSLMOVDPTR,#TABMOVCA,A+DPTRMOVSBUF,AJNBTI,$CLRTIMOVA,LEDSHMOVDPTR,#TABMOVCA,A+DPTRMOVS

温馨提示

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

评论

0/150

提交评论