《单片机自动控制打铃系统设计.docx》由会员分享,可在线阅读,更多相关《单片机自动控制打铃系统设计.docx(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机自动控制打铃系统设计单片机自动控制打铃系统,是以一片8位单片机为核心的实时时钟及控制系统.我们知道单片机的外接石英晶体震荡器能提供稳定、准确的基准频率,并经12分频后向内部定时器提供实时基准频率信号,设定定时器工作在中断方式下,连续对此频率信号进行分频计数,便可得到秒信号,再对秒信号进行计数便可得到分、时等实时时钟信息.假如石英晶体震荡器的频率信号为6MHZ,设定定时器定时器工作在方式1下,定时器为3CB0H,则定时器每100ms产生1次中断,在定时器的中断定时处理程序中,每10次中断,则向秒计数器加1,秒计数器计数到60则向分计数器进位(并建立分进位标志),分计数器计数到60,则向时计
2、数器进位,如此周而复始的连续技术,便可获得时、分、秒的信号,建立一个实时时钟.接下来便能够进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开场比拟当前时间(小时与分、存放在RAM中)与信息时间表上的作息时间(小时与分,存放在ROM)能否一样,如有一样者,则进行报时处理并控制打铃,如有不一样则返回主程序,如此便实现了报时控制的要求.2.2ISP下载电缆的电路及程序设计简介能实现ISP功能的硬件电路,通常被称为“下载电缆。ATMEL公司推出的AT89S51/52单片机就具有ISP功能。用计算机并行口实现ISP功能,在电路设计上非常灵敏。1下载电缆的电路设计:计算机并行接口共有25个口线,主
3、要包括数据端口D0D7端口地址为378H,用于数据输出;状态端口Busy、nAck、PE、Select、nError端口地址为379H,用于数据输入;控制端口nSelin、nlnit、nStrobe端口地址为37AH,用于输出控制。从中选出4个口线来模拟ISP所需的引脚,就非常灵敏,只需考虑数据的输入、输出方向及操作方便即可。但要注意同一端口的数据方向必须一致,例如数据端口是8位同时操作的,只能全部作为输入或输出,而不能将一部分做输入,另一部分做输出。下载电缆的电路如图附件一所示。该电路主要包括并行接口电路、驱动隔离电路和JTAG接口电路3大部分,这里只所以讲JTAG接口电路,是由于ISP传输
4、固然在协议上符合SPI协议,但引脚是根据JTAG标准而定义的,它们的对应关系如下:TCK对应SCK,D0对应MOSI,TMS对应RST,TDO对应MISO。2并行接口电路该电路是按计算机并行口标准定义的,在电路中采用nStrobe模拟TCK,用D0模拟TDI,用nSelin模拟TMS。用nACK模拟TDO。这样的定义方法就决定了TCK时钟和TMS的产生要由并行口的控制端口产生;TDI由并行口的数据端口产生,TDO要由状态端口获取,不同的端口操作地址不同,涉及程序的编写。这些对应关系见表:3驱动隔离电路该电路采用74HC244作为驱动隔离芯片。74HC244具有2组驱动器,分别由1G和2G控制使
5、用。当控制引脚为低电平常,A到Y通路,能够进行数据传输,当控制引脚为高电平常A到Y相当断路,起到隔离作用。图中R1R14为限流电阻,防止电流过大烧毁驱动器芯片,R15R18为上拉电阻,确保空闲时各个点的电平状态。第三章设计内容及要求3.1设计要求设计一作息时间自动打铃控制系统,要求:1、走时准确,日误时时钟的时、分、秒,用24小时制进行计时.3、具有调节和校对时间的功能.4、作息时间预制功能,最差1S.2、用6个数码显示实多能够预制36个打铃报时点.5、具备定时打铃输出的功能.6、掉电时有备用电池继续走时,不能停机.3.2硬件设计、单片机选用AT89S51,它与8051系列单片机全兼容,但其内
6、部带有4KB的FLASHROM,并支持在线编程技术,设计时无需外接程序存储器,样品能够直接与PC机连机下载程序,为设计和调试带来极大方便.、LED显示系统:6位LED数码管从左至右依次显示时2位、分2为、秒2位,采用24小时制计时.设计时可利用单片机的P0口和P1口作为时钟信号输出,经驱动芯片后驱动数码管显示时间,LED采用动态方式显示.、键盘系统:设置4个程序按键,包括:选择键、调节键、打铃时间设定键、铃声选择键,键盘系统可由P2口构成.另需配置一个非程序按键:系统复位键.选择键:按动选择键,能够选择小时、分钟或回复正常走时,选定的内容快速闪烁.调节键:按一次调节键,所选定的内容加1,长按调
7、节键(按下的时间超过1秒钟以上),则所选定的内容按每秒钟增加10的速度快速增加.当分钟增加到59、小时增加到23时,自动回到0,再丛开场增加.打铃时间设定键:将数码管的显示从走时状态转换到打铃时间设定状态,并根据所按该键的次数,显示相应的打铃时间编组号.然后能够用选择键和调节键设定或修改该组的打铃时间.铃声选择键:从两种不同的打铃输出方式中选择一种铃声输出.、电源供电系统:本系统采用220V的电源供电,应设计响应的稳压电源电路.当220V停电时,由备用电池向单片机供电,为了延长电池的工作时间,只需维持实时时钟的运行和计时,而耗电量较大的数码管显示系统和输出驱动等电路应停止工作.、打铃输出控制:
8、当实时时钟运行到报时点对应的时间时,应输出控制信号,一路信号使本系统的一个发光而极管发光,起提示作用;另一路信号通过继电器去控制电铃,使电铃自动打铃.打铃的铃声分两种:1种是连续响铃,持续时间为10秒;另一种断续响铃,停1秒钟,持续时间也是10秒.本系统的工作流程、时间显示:通电或系统复位后,系统自动进入时钟显示,从00:00:00开场计时,此时能够设定当前时间.、时间校对:用选择键和调节键来调节时间.第一次按选择键时,小时的两位数快速闪烁,这时能够用调节键来修改小时数.第二次按选择键时,分钟的两位数快速闪烁,这时能够用调节键来修改分钟数.第三次按选择键时,退出时间校对状态,按新的设定时间修复
9、走时.用调节键来修改所选定的内容时,则每按一次调节键,所选定的内容加1,长按调节键(按下的时间超过1秒以上),则所选的内容按每秒增加10的速度快速增加.当分钟增加到59、小时增加到23时,自动回复到0,再从开场增加.时钟设置正确后,再次按选择键(即第三次按选择键),时间校对从00开场计时.如在时间校对经过中,超过30秒时钟时间没按任何按键,则自动恢复原来的时间走时和显示.、打铃时间设置:用户最多能够设定32组自动打铃时间点,当按动打铃时间设定键后,数码管显示01*,其中01(前2位)表示报时点的组别,其值从02到32,第三、四位为打铃时间的小时数,第五、六为打铃时间的分钟数.第一次按打铃时间设
10、定键时,则显示01,01则表示第一组报时点,表示该组的报时时间还未设置,为无效状态,此时能够用选择键、调节键来设置该组的打铃时间:如显示的为01*(*表示详细是时间数据),表明该组的打铃时间已经设置,此时可以以用选择键、调节键来更改该组的打铃时间.当该组的打铃时间设置或更改完毕,按动打铃时间设定键,可将该组的打铃时间数据存入RAM中,同时组别数据加1,如显示02*或02,然后能够对第二组的打铃时间数据进行修改或设置,再次按动打铃时间设定键,则将第二组打铃时间存储起来,显示变为03*或03,再对第三组的打铃时间进行修改和设置,依次类推,直到设置完毕.当某一组别的打铃时间显示为*(则未设置,为无效
11、组别),而继续按打铃时间设定键,则该组的数据不存储,退出打铃时间设置状态,恢复实时始终走时和显示状态.、打铃时间的查询和消除:按动打铃时间设定键,能够对各组已设置的打铃时间进行查看,如有错误,则可用上述方法进行修改.假如清楚某组的打铃时间,先用打铃时间设定键找到并显示该组的打铃时间,再用选择键、调节键将该组的打铃时间设定为*0000.再次按动打铃时间设定键,则可去除该组的时间数据,而后面的各组时间数据的组别依次往前移一位,保证各打铃时间之间不出现空组别或无效组别.如:去除第7组数据后,第8组数据就移至第7组,第9组的数据移至第8组在时间校对、打铃时间设置、查询与修改正程中,超过30秒钟没按任何
12、一个有效按键,则自动恢复原来的时间走时和显示.、打铃的铃声类别设置:在打铃时间设置经过中,能够用铃声选择键来设置打铃的铃声类别.在设置某组别的打铃时间时,默认铃声为连续铃声,即不按铃声选择键时为连续铃声.用此方法能够对每组打铃时间的铃声进行设置或更改.不同的铃声用两个发光二极管进行指示.3.3软件设计、系统资源分配:为了便于程序的设计、阅读及修改,需要先对系统的存储器资源进行分配和讲明.、软件流程:根据上述工作流程和设计要求,软件设计能够分为下面几个功能模块:、主程序:初始化及键盘控制.、计时程序模块:为定时器0中断服务子程序,完成刷新计时缓冲区的功能.、时间校对模块:完成实时时钟的时间设定.
13、、打铃时间设置模块:完成打铃时间的设置与去除.、显示程序模块:完成6位LED数码管的动态显示.、键盘扫描程序模块:判定能否有键按下,并求取键号.、定时比拟程序模块:判定报时时间能否,如时间到,则启动打铃处理程序.、打铃程序模块:设置两种不同的打铃形式,并选择其一输出.、其他辅助功能程序:如选择键处理、调节键处理、打铃时间设定键处理等键盘设置程序;拆字、合字处理程序等.当前位置:文档视界单片机自动控制打铃系统设计单片机自动控制打铃系统设计4.1.2软件流程根据上述工作流程,软件设计可分为下面几个功能模块:1主程序:初始化与键盘监控。2计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。3时
14、间设置与报时设置:由键盘输入设置当前时间与定时启闭时间。4显示:完成5位LED动态显示。5键盘扫描:判定能否有键盘按下,并求取键号。6定时比拟:判定报时时间到否,如时间到,则启动报时处理程序。7其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间选择及假日停止报时等。下面分模块进行软件设计:4.2程序模块设置:1、主程序模块MAIN1、定时中断服务程序模块CTCINT2、扫描显示子程序DISP3、键扫描子程序CHECKEY4、键值处理子程序KEYACC5、选择键处理子程序SHIFTP6、调节键处理子程序TIAOJIE7、打铃时间设定键处理子程序USECLR8、铃声选择键处理子程序BELSE
15、T9、打铃处理模块TIMER10、打铃时间显示子程序USEXS11、打铃时间存储子程序USECC12、恢复走时显示子程序FFZSXS13、打铃输出子程序DLSC14、恢复走时显示子程序(FFZSXS):15、打铃输出子程序(DLSC):一、主程序模块(MAIN)在主程序模块中,先对各端口进行初始化,对内部RAM区清零,设置堆栈和定时初值,关闭显示器,启动定时及其中断。然后标志位F3能否建立,如有则进行报时处理,否则再检测有无按键按下,若有则进行按键处理,无则返回循环点。ORG0000HSTART:AJMPMAINORG000BH;定时器T0中断入口地址000BHAJMPCTCINT;跳转定时器
16、T0的中断服务程序入口ORG0030H;主程序如口地址MAIN:NOP;主程序模块MOVA,#0FFH;关闭个各输出口MOVP0,A;P0为字段输出口,低电平有效MOVP1,A;P1为7个键输入口,低电平有效MOVP2,A;P2为显示字位输出口,高电平有效MOVP3,A;P3为铃声选择指示灯输出及打铃控制输出,低电平有效MOVA,SPCJNEA,#07H,NOT1;复位后SP=07H,SP07H,跳转MOVR0,#7FH;RAM初始化清零MOVR1,#7DH;内部RAM从03H到7FH均清零CLRALOOP0:MOVR0,ADECR0DJNZR1,LOOP0NOT1:MOVSP,#70H;设置
17、栈底指针为07HMOVIP,#02H;设置定时器T0为最高中断优先级MOVIE,#82H;定时器T0开中断MOVTMOD,#01H;定时器T0工作方式为方式1MOVTL0,#0B0H;设置定时器T0的初值MOVTH0,#3CH;T0的高字节=3CHSETBTR0;启动定时器T0,TR0为T0的启动控制位NEXTT:NOPMOVSP,#70H;重置堆栈底指针为70HLCALLDISP;调用显示子程序JNB0F1H,NEXT1;0F1为分钟值变更标志位0F1=0,跳转LCALLTIMER;0F1=1,调用打铃处理子程序NEXT1:LCALLCHECKEY;调用键扫描子程序,判定有无键按下JNZNE
18、XT2;有键按下,转NEXT2,A中存放键值JNB0F2H,NEXTT;无键按下,返回LCALLFFZSXS;有键处理标志位,调用恢复走时显示子程序SJMPNEXTTNEXT2:LCALLK;有键按下,调用键值处理子程序MOVR4,#;R4清零,R4在FFZSXZS子程序中作计数用SJMPNEXTT二、定时中断服务程序模块CTCINT,完成下述工作:1对100ms20H,分(22H),时23H进行累加计数。2假如秒钟计数发生变化,并且无键按下键处理标志位F2H=0。3如分钟数发生变化,则将分钟值变更标志位置位。三、扫描显示程序模块DISP:为6位LED动态显示模块,P0口为字段码输出口,低电平
19、有效;P2口为字位码输出口,高电平有效。显示缓冲区2FH2AH共6个字节,2FH,2EH存放显示的小时十位与个位,2DH,2CH存放显示的分钟十位与个位,2BH,2AH存放显示的秒钟的十位与个位。其数字范围在00HOFH内时不显示该位的小数点,在10H1FH时,则显示小数点。四、键扫描子程序CHECKEY:检测P1端口,判定能否有键按下,如有键按下,则进行延时去抖动并读取键值,存入A中。五、键值处理子程序KEYACC:根据键值,转相应键处理子程序。六、选择键处理子程序SHIFTP:通过按键来选定小时,分钟位选定位则闪烁,并在选定位可进行加一处理。分两种情况:、进行时间校时时,在高四位闪小时的十
20、位,个位,分钟的十位,个位。、进行打铃时间点设置是,在底四位进行闪。七、调节键处理子程序TIAOJIE:在闪烁的对应位上进行十进制加1处理LMOVA,24HANLA,#0FHMOV2CH,ALOOP:RETC1:MOV24H,2BH;2AH,2BH合成一个字节MOVA,24HSWAPAMOVA,2AHADDA,#01H;加1MOV24H,ACJNEA,#60,C4;判定能否=60MOV2BH,#00H;等于就归零MOV2AH,#00HLJMPLOOPC4:ANLA,#0F0H;加一数分别送回2AH,2BHSWAPAMOV2BH,AMOVA,24HANLA,#0FHMOV2AH,ALOOP:RE
21、T八、打铃时间点设定键处理子程序USESET:该子程序主要完成下面功能。1打铃时间点设定状态的显示。2打铃时间点的存储。3判定打铃时间点设置能否有效,无效则退出,返回计时状态。USESET:NOP;用户打铃时间点设定程序SETBRS1CLRRS0JB0F0H,USE1;OFOH为打铃时间点,设定标志位SETB0F0H;第一次按该键的处理程序SETB0F2H;OF2H为该键处理标志位MOVR6,#01HMOVR7,#01HLCALLUSEXSNOPCLRRS1;重新选择工作寄存器组2区CLRRS0;RS1=1,RSO=0为2区MOVR6,#01H;打铃时间点设定组别,开场为01组MOVR7,#01HLCALLUSEXS;调用打铃时间显示子程序NOPCLRRS1;返回原工作寄存器组0区CLRRS0RETNOPUSE1::NOP;第2次及以后按打铃时间设定键的处理程序NOP;判定上次设定的打铃时间能否有效MOVA,2DH;将小时的十位2DH与个位2CH合成一个字节,存R4中ANLA,#0FHSWAPAMOVR1,AMOVA,2CHANLA,#0FHADDA,R1MOVR4,A;小时数存R4CLRCCJNEA,#24H,USE2AJMPUSE6;小时数=24,退出USE2:JNCUSE6;小时数24,退出NOPMOVA,2BH;将分钟的十位2BH与个位2AH合成一个字节
限制150内