资源目录
压缩包内文档预览:(预览前20页/共44页)
编号:35157051
类型:共享资源
大小:3.36MB
格式:ZIP
上传时间:2019-12-25
上传人:遗****
认证信息
个人认证
刘**(实名认证)
湖北
IP属地:湖北
25
积分
- 关 键 词:
-
基于51单片机的定时开关设计参考论文
基于
51
单片机
定时
开关
设计
参考
论文
- 资源描述:
-
基于51单片机的定时开关设计参考论文,基于51单片机的定时开关设计参考论文,基于,51,单片机,定时,开关,设计,参考,论文
- 内容简介:
-
低成本多路程控定时插座设计与制作 班级:电科0802 学号:200822340210 姓名:吕晨冉一、 前言 早上起来再也不用让单调的闹钟叫醒啦,让音响放一首动听的歌曲把磕睡虫赶跑吧;天冷的时候电热水器乖乖的帮您准备好了热水洗脸;面包机里昨晚放进去的材料,早上也变成了香喷喷的面包了,没热水冲牛奶?呵呵,那懂事的饮水机总是在需要喝的时候提前煮好了哦。上班用的电动自行车的早已充满了电并定时断了,电源不至于过充哦! 中午回到家里,一股冷空气扑面而来,原来是家里的空调偷偷的转了起来;电饭锅里飘出了淡淡的米饭香气,呵呵,吃完别忘了再洗点米准备好下午的晚饭哦;哎呀,早上充电给手机电池忘了拔出来啦,幸好咱们的智能插座可没忘记呢;午睡再也不用担心门铃骚扰啦,让那些乱按门铃的人傻笑去吧! 晚上下班,不再担心黑灯瞎火咯,“超级管家”已经帮你开好了夜灯;吃完饭又可以洗个热水澡啦;另外每天给鱼缸里可爱的小金鱼定时的打点氧气也是它必不可少的工作哦! 现在我们已经可以用已学的单片机有关知识进行设计实现以上功能了。二、 课程设计要求 1、利用单片机设计一定时开关,在24小时内的时间里能预先设定定时范围,每天周而复始地控制用电器具的自动开启和关闭。2、要求最少能独立控制两路220V/10A的交流负载。3、产品的成本应尽量低,不能超过35元。4、产品的功能应尽量多,最少应具有时间显示和校正、定时显示和设置等功能。5、产品的质量应可靠、安全。具体性能指标如下:供电电源:220V 50Hz使用环境温度:-10至40度功率消耗:10A定时范围:1分钟至23小时59分任意设定最小设定单位:1分钟最小设定间隙:1分钟定时精度:1分钟可定时次数:不少于1次工作方式:连续工作制三、 课程设计内容 根据要求自行设计方案并编写程序完成以下任务:1、设计并制作低成本高可靠性的电源供电电路,电压:5V,电流:200mA.2、设计并制作单片机控制电路,要求能够显示时间、通过按键修改时间和设置定时。3、设计并制作输出控制电路,要求能控制两路以上的220V/10A的插座。4、编写产品使用说明书。四、 课程设计步骤(一)为实现要求所需功能,选取元件,设计电路并用仿真软件进行仿真,观察是否能达到定时功能。1、根据设计要求画出流程图:重要部分的文字说明:(1)、电源部分利用电路将220V转变为5V输入单片机中进行正常工作。(2)、显示:利用LED显示(3)、4个按键功能说明 按键K1作用:单片机的启动与关闭按键K1作用:切换正常时间与定时时间显示按键K3作用:正常时间与校准的切换按键K4作用:校准正常时间与设定定时时间(4)、2个插座:利用单片机I/O控制其开关。2、在仿真软件上进行仿真。 (1)打开软件,在元件选取栏中输入所需元件名称,选出各元件。 (2)在画图区域进行电路的连接(二)绘制电路原理图及PCB设计方法,需要注意的问题1、绘制电路原理图 (1)绘制原理图的基本步骤a)首先将所有元件都从库中取出来,如库中没有的要自己制作比如数码管元件图要创建自己的元件库制作,放置在图纸上,并调整好位置,以便布线。b)使用连线工具将元件连接起来。c)设置元件属性。d)使用Tool/Annotate菜单对元件进行编号。e)使用电气检查(ERC)。f)使用Edit/Export to Spread 菜单建立元件列表。h)使用Design/Create Netlist菜单建立网络表,为画电路板图做准备。i)在将这些练习画成电路板图时,特别注意元件封装的正确性以及管脚和封装焊盘之间的对应关系。 (2)绘制电路图应该注意的问题a)核对数码管的引脚号与单片机等引脚的对应关系b)核对单片机的引脚与LED的对应关系c)可能出现的错误:地线符号使用不当,其网络名称为Vcc。器件引脚号没有重新编辑。d)绘制完电路原理图后,要求:1)进行DRC(电器规则检查),排除原理图设计中的错误。2)Create Netlist(创建网络表)。3)列出材料报告表。(电源部分) (单片机部分)(开关部分)2、PCB设计方法(1)制作数码管极有关元件封装图,将DIP-8、DIP-24、DIP-40封装图中的含拍尺寸改为合适大小。(2)使用向导,定义一个合适大小的单面PCB板,根据所设计的原理图,设计该电路的PCB图。(3)将原理图的网络表调入设计的单面板中,进行布局,启动自动拉伸元件,然后进行人工布局,布局一定要合理使线走的最短,最省。(4)先进性布线规则设定(铜膜线线宽设为15mil,地线和电源线宽设为30mil线间距设为15mil)然后进行布线,尽量使过线减少,走跨线的少,不能出现高亮线。 (PCB板连线图)3、PCB设计时碰到的问题(1)PCB尺寸与规定的不一致。元器件排布合理,疏密分布较为均匀(2)数码管的封装不能做少了,两列焊盘兼具不是300mil,应该是600mil(3)注意焊盘号的顺序为逆时针118,焊盘号一定不能放错(4)数码管的位置高位放置方向应正确(5)插口放在PCB的边缘,且要注意方向(6)跳线不宜过长,不要转弯(7)IC两焊盘间尽量少走线(8)铜模线宽度合理(9)姓名用汉语拼音,使用水平镜像(10)PCB设计后的检查和打印:DRC应无错误,无违规,无高亮(绿色)显示,否则,应根据原理图中的网络表,在PCB管理器下逐一核对,找出错误。注意PCB图的打印设置方法(下图为转印用的PCB图) (3D图 正面)4、PCB图的打印、转印与敷铜板的腐蚀加工方法与问题(1)按尺寸剪切敷铜板,并用细砂纸打磨光,清洁(2)将打印的PCB底层图用热转印机转印到敷铜板上(3)修板:用快干漆将少量没有印好的线条修补好(4)腐蚀:将印好了电路板图的敷铜板放入三氯化铁溶液中腐蚀。溶液浓度高、温度高则腐蚀速度快,但浓度和温度要合适。腐蚀时间要掌握好。 (5)清洗、晾干(6)钻孔:选择直径合适的钻头:集成电路引脚及一般电阻、电容用0.8mm直径的钻头,如有元件引脚较粗,可以根据测量值,换相应大些直径的钻头。钻孔过程中,钻头尽量插入夹具深一些,并且夹具要拧。 (3D图 反面)(7)除去铜膜上的油墨:用有机溶剂(酒精、香蕉水、丙酮等)擦除覆盖在铜膜线上的油墨,没有上述溶剂时,也可以用砂纸擦除。(8)打磨并检查电路板 除去油墨后,用较细的砂纸将铜膜线打磨光亮。打磨越好,越好焊接。不过不可打磨过度,以免铜膜厚度损耗过多。打磨后,用面巾纸清洁干净。检查电路板:用万用表检查PCB上线条间有无短路、断路。有短路要割断,有断路要搭上焊锡,将其连接好。(9)上助焊剂将松香溶于无水酒精中制作成助焊剂待用。注意助焊剂的浓度要合适。过浓,干燥后不光亮,过稀,助焊性能较差。用毛刷将酒精松香焊剂均匀地涂在清洁后的PCB板,涂刷时,将PCB板垂直放置,以免焊剂堵塞钻孔。涂刷一遍即可,涂刷次数过多容易起皱纹,不光亮。将涂刷酒精松香焊剂的PCB放置在阳光下凉干或自然凉干。 (打印的PCB底层图)五、装配与调试1.装配(1).焊接:先焊接所有跳线:先确定好跳线长度,两端剥去绝缘层。拧好,上锡,再焊接。也可以用剪下来的元件引脚做跳线。再焊接集成电路插座和其它元件。 注意:所给的数码管插槽和电路板所需要的有所不同,所以要进行改进。(2).检查、排错:根据网络表(或电路原理图)用万用表检查铜膜线有无短路、断路,发现错误,及时排除。比如,2个发光二级管的正负极是否接对,电容的正负极是否接正确等等。(3).确定无错误后,可以插上集成电路器件。(4).注意芯片引脚脚的位置,不能接错,否则将损坏。2.调试(1).掌握正确的调试方法,一是要多实践,二是要弄清楚该电路各部分的原理。(2).通电前,用万用表的欧姆档(1K档)检查电路中有无短路,若短路,应排除故障后在通电;(3)装载以下程序:#includeunsigned char led=0,0,0,0;unsigned int counter; unsigned char n,w=0,flag=0,flag1=0,flag2=0,start=0; unsigned char K1_on=1,K2_on=1;unsigned char h_data=0,m_data=0,s_data=0; unsigned char hdata1_on=0,mdata1_on=3,hdata2_on=0,mdata2_on=7; unsigned char hdata1_off=0,mdata1_off=5,hdata2_off=0,mdata2_off=9; void display(void); void delay(unsigned int j) unsigned int i;for(i=0;i23)H1=H1%10;return H1;unsigned char H0_set(unsigned char H0) if(H0%10=3&H0/10=2) H0=H0/10*10;else H0=H0%10+1+H0/10*10;return H0;unsigned char M1_set(unsigned char M1) M1=(M1/10+1)*10+M1%10;if(M1=60)M1=M1%10;return M1;unsigned char M0_set(unsigned char M0) if(M0%10=9) M0=M0/10*10;else M0=M0%10+1+M0/10*10;return M0; void display(void)char code num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;char code tv=0xfe,0xfd,0xfb,0xf7;unsigned char k,i;switch(flag) case 0:load_LED(h_data, m_data);break; case 1:load_LED(h_data, m_data);break; case 2:load_LED(hdata1_on, mdata1_on);break;case 3:load_LED(hdata1_off, mdata1_off);break;case 4:load_LED(hdata2_on, mdata2_on);break;case 5:load_LED(hdata2_off, mdata2_off);break; case 6:load_LED(hdata1_on, mdata1_on);break; case 7:load_LED(hdata1_off, mdata1_off);break;case 8:load_LED(hdata2_on, mdata2_on);break;case 9:load_LED(hdata2_off, mdata2_off);break;default:P1=0xFF;load_LED(h_data, m_data);break; n+; if(flag) if(n180) n=0; if(k=w) if(n50)flag1=0; flag+; if(flag=10)flag=0;/*对flag清零*/ switch(flag)/*调整模式选择,原理是通过调整键按下的次数来选择*/case 0:P1=0xFF;TR0=1;break; case 1:P1=0xFF;P1_0=0;TR0=0;break; case 2:P1=0xFF;P1_1=0;P1_3=0;P1_5=0;TR0=1;break; case 3:P1=0xFF;P1_1=0;P1_3=0;P1_6=0;TR0=1;break; case 4:P1=0xFF;P1_1=0;P1_4=0;P1_5=0;TR0=1;break; case 5:P1=0xFF;P1_1=0;P1_4=0;P1_6=0;TR0=1;break; case 6:P1=0xFF;P1_2=0;P1_3=0;P1_5=0;TR0=1;break; case 7:P1=0xFF;P1_2=0;P1_3=0;P1_6=0;TR0=1;break; case 8:P1=0xFF;P1_2=0;P1_4=0;P1_5=0;TR0=1;break; case 9:P1=0xFF;P1_2=0;P1_4=0;P1_6=0;TR0=1;break; default:P1=0xFF;TR0=1;break;if(P3_1=0) /*移位控制键,在4个LED上来回移动,选择需要设置的LED位*/delay(100); /*消抖*/while(P3_1=0) display();if(flag)w=w+1;if(w=4) w=0; if(P3_2=0) /*加1操作*/ delay(100); /*消抖*/while(P3_2=0) display();if(flag)/*当处于调整模式时,对所选择的LED进行加1*/switch(flag) case 1:if(w=0)h_data=H1_set(h_data);display();if(w=1)h_data=H0_set(h_data);display();if(w=2)m_data=M1_set(m_data);display(); if(w=3)m_data=M0_set(m_data);display(); break; case 2:if(w=0)hdata1_on=H1_set(hdata1_on);display(); if(w=1)hdata1_on=H0_set(hdata1_on);display();if(w=2)mdata1_on=M1_set(mdata1_on);display();if(w=3)mdata1_on=M0_set(mdata1_on);display();break; case 3:if(w=0)hdata1_off=H1_set(hdata1_off);display(); if(w=1)hdata1_off=H0_set(hdata1_off);display();if(w=2)mdata1_off=M1_set(mdata1_off);display(); if(w=3)mdata1_off=M0_set(mdata1_off);display(); break; case 4:if(w=0)hdata2_on=H1_set(hdata2_on);display();if(w=1)hdata2_on=H0_set(hdata2_on);display();if(w=2)mdata2_on=M1_set(mdata2_on);display(); if(w=3)mdata2_on=M0_set(mdata2_on);display();break; case 5:if(w=0)hdata2_off=H1_set(hdata2_off);display(); if(w=1)hdata2_off=H0_set(hdata2_off);display();if(w=2)mdata2_off=M1_set(mdata2_off);display();if(w=3)mdata2_off=M0_set(mdata2_off);display(); break; default:TR0=1;break; if(P3_3=0) /*启动定时开关按钮*/ delay(100); /*当调整键按下时,延时消抖,flag2控制延迟时间*/while(P3_3=0)flag2+; display();if(flag250)flag2=0; display();if(start) start=0;else start=1; void timer0() interrupt 1/*一号定时器中断T0服务子程序(产生一溢出)*/counter+;/*counter对定时中断进行计数,10000次中断为1秒*/if(counter=100)s_data+; /counter=0; if(s_data=60)/*如果秒计满60则向分进位,并将秒清0*/s_data=0;m_data+;/*分进位 */if(m_data=60)/*如果分计满60则向时进位,并将分清0*/m_data=0;/*分清0*/h_data+;/*时进位 */if(h_data=24)/*如果时计满24则将时清0*/h_data=0;/*时清0*/ main(void)IE=0x82; /*EA|-|-|ES|ET1|EX1|ET0|EX0=10000010,中断允许控制*/TMOD=0x02; TH0=-200; /*计数常数寄存器设置,中断定时时间为(256+200)*12/f0 */TL0=-200; /*定时计数器装初值*/TR0=1; /*启动定时器T0,TCON为TF1|TR1|TF0|TR0|IE1|IT1|IE0|IT0*/P3_6=1; /*关断定时开关1*/P3_7=1; /*关断定时开关2*/while(1) /*以下为死循环*/ adjust(); /*调用调整函数*/K1_on=h_datahdata1_on&h_data=mdata1_on&m_data=mdata1_on&m_datahdata2_on&h_data=mdata2_on&m_data=mdata2_on&m_datamdata2_off,1,0;if(start) /*启动定时功能后才能开启定时开关*/ P1_7=0;/*指示灯亮起*/ if(K1_on) P3_6=0; else P3_6=1; if(K2_on) P3_7=0; else P3_7=1; else P1_7=1; P3_6=1; P3_7=1; display();(4).按照5个键的功能进行调试定时,观察数码管的显示,并记录是否能在定时时间电路开启。五、 小结通过制作低成本多路程控定时插座结合了所学的许多知识,深刻地的体会到了将理论联系到实际的真实含义。当电路板做好并能够实现定时功能时,就能够进一步了解其原理了。通过这次设计性实验,对于单片机有关接口电路的设计有了更清楚的了解。而对于protel 99se这个软件有了一定的掌握,知道了该软件的强大功能:能够在电脑上进行各种电路和电路板的设计,大大避免了用实际电路进行设计中可能出现的错误。以前并没有接触过用PCB图的打印、转印与敷铜板的腐蚀加工制成电路板,这次完成了这个流程,初步的了解其中应该注意的问题。当电路板完成后进行试验,我所做的电路板能够实现定时的功能,能够通过按键进行设定所定时刻,并能够实现实验要求的功能。这次试验基本上成功完成,但在细节方面还有很多可以改进的地方,需要我的深入学习和动手实验。 2010届本科生毕业设计题目: 基于MCS-51单片机的智能控制开关的设计作 者 姓 名: 郝 昊 学 号: 2006080212 系 (院): 电子与电气工程系 专 业: 电子信息工程 指导教师姓名: 李光宇 指导教师职称: 讲师 2010 年 2 月 20 日 SuZhou UniversityYear 2010 Bachelor Graduationl ssignment Title: Based on MCS-51 microcontroller design of intelligent control switch Author: Hao HaoStudent ID: 2006080212Department: Electronic and Electronical EngineeringMajor: Electrical Information EngineeringInstructotr: Li Guangyu Professional Title: Lecturer Feburary 20th, 2010摘 要单片机发展到今天已经是一项很成熟的技术,使用单片机控制能实现长达几小时的定时操作,有较好的市场发展前景和技术应用价值。针对自动测控系统的要求,设计了一种基于MCS-51单片机控制的智能控制开关, 可以满足长时间无人值守的测控系统的要求。设计电路主要由单片机89C51控制电路、掉电存储电路、按键与LCD显示电路以及电源电路组成。系统能实现实时显示和定时控制显示、定时断电保护、准时对开关进行控制等的功能,是一款比较实用的智能开关。关键词: 智能控制; 开关; 单片机; 定时ABSTRACT SCM has been developed to a very mature technology, using SCM to achieve up to a few hours of regular operation, there are good prospects for market development and technology application. The requirements for the automatic control system, designed based on MCS-51 MCU intelligent control switch, to meet long unattended measurement and control systems. Circuit design is composed of 89C51 control circuit, power-down memory circuit, buttons and LCD display circuit and power circuit. System that can display real-time display and timing control, timing power-off protection time of the switch control function, is a more practical intelligent switch. Key words: Intelligent Control; Switch; SCM; Timing 目 录绪论 11设计要求1.1 智能控制开关概述 21.2 本设计任务 22 智能控制开关硬件设计 32.1 系统的硬件构成及功能 32.2 AT89C51单片机及其引脚说明 32.3 键盘控制和实时显示电路. 42.4 时间设置掉电存储电路 52.5 电源电路 62.6 开关控制电路 73 系统软件设计 8 3.1 系统程序流程图 83.2 系统主程序 84 系统调试与测试结果分析 164.1 使用的仪器仪表 164.2 系统调试 16结论 17附录 18参考文献 19致谢 20宿州学院2010届毕业设计 绪论绪 论在自动测控系统中,特别是长时间无人值守的测控系统中,经常需要进行长达几小时的定时操作。若采用专门的计时芯片设计,一方面控制复杂,占用硬件资源,另一方面也不经济,一般的时钟芯片价格都比较贵。由于单片机内部有定时器,因此,可以基于单片机设计一款智能控制开关。由于使用了单片机来控制,因此使得该系统具有很强的灵活性和智能性。单片机发展到今天已经是一项很成熟的技术了,采用单片机控制的产品也比比皆是,虽然单片机的价格比较便宜,但是功能却很强大,因此选择单片机来控制是绰绰有余的!人性化的显示设计更是该系统一大特色,能实时显示当前开关的工作状况。1宿州学院2010届毕业设计 设计要求1 设计要求1.1 智能控制开关概述该智能控制开关是由单片机89C51控制电路、按键与LCD显示电路和掉电存储电路以及电源电路组成,电路十分的简单,主要由51芯片编程实现,功能十分的强大,时间精度非常高,是一款比较实用的智能开关。1.2 本设计任务 要求: (1) 实时显示和定时控制显示; (2) 定时断电保护; (3) 准时对开关进行控制(开和关); (4) 写出详细的设计报告; (5) 给出全部电路和源程序。2宿州学院2010届毕业设计 智能控制开关硬件设计2 智能控制开关硬件设计 2.1 系统的硬件构成及功能智能开关控制的原理框图如图2-1所示。它由以下几个部件组成:单片机89C51、电源电路、掉电存储电路、开关控制、键盘输入和显示以及电源电路组成。时间显示采用LCD1602,以降低对单片机端口数的要求,同时也降低系统的功耗。时间控制电路和键盘输入以及掉电存储都通过89C51的I/O口控制。电源部分:电源部分由整流、滤波和集成稳压器组成,以保证系统稳定工作。AT89C51键盘输入开关控制电 源LCD1602显示EEPROM存储器3宿州学院毕业设计 2 智能控制开关硬件设计4图2-1 智能开关控制系统原理框图2.2 AT89C51单片机及其引脚说明AT89C51单片机是51系列单片机的一个成员,内部自带4K字节可编程FLASH可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C51构成的单片机系统是具有结构简单、造价低廉、效率高的微控制系统,减少了硬件开销,节省了成本,提高了系统的性价比。AT89C51是一个有40个引脚的芯片,与8031相比,AT89C51自带4K的ROM和128B的RAM,因此编写中小型系统就无需任何硬件进行扩展。3宿州学院2010届毕业设计 智能控制开关硬件设计2.3 键盘控制和实时显示电路由于采用软定时器计时,长时间运行会产生一些误差,就要通过按键修改实时时间,根据定时需要只要能够调整小时和分钟即可。采用独立按键占用了单片机I/O口,因此在设计该系统时,为了减少单片机I/O口的使用,采用了行列式键盘,如下图2-2所示。 图2-2 行列式键盘原理图4宿州学院毕业设计 2 智能控制开关硬件设计实时控制和显示分别采用了89C51和1602LCD液晶。首先设计实时时钟,系统利用定时器产生实时时钟,采用中断子程序实现实时时钟的功能,采用软定时的方式产生实时时钟,由定时器T0工作在50ms定时模式,采用中断的响应方式,对50ms中断计数,每20次为1秒,秒计数单元的值加1,每60秒分钟单元计数单元加“1”,同理,完成小时计数单元的改变,从而实现时钟功能。 为了减小整个系统的功耗,不采用数码管作为显示器件,而用1602LCD作为来显示时间和要定时的时间,它具有经济、方便、编程容易等优点,设计中显示的数据较少。1602液晶一共可以显示两行,每行可以显示16个字符。设计中,1602的第一行显示实时时间,第二行显示定时的时间,显示通过编程实现,液晶的外面要接10K的可调电阻,用来调节液晶显示的对比度。并且这两个芯片接通电源可以直接用单片机编程对它进行操作。下图2-3为实时控制和显示电路原理图。4宿州学院2010届毕业设计 智能控制开关硬件设计图2-3 实时控制和显示电路原理图52.4 时间掉电存储电路由于系统要显示的内容比较简单,但是定时的时间设置好了,断电了之后什么都没了,因此为了保护时间,该系统就需要有断电存储电路,由于显示量不多,所以选用I2C器件AT24C02。AT24C02在单片机应用中,作为EEPROM储存器用,与单片机通过I2C通信。优点是掉电后仍可以保存数据。比如单片机运行时,手动设置了一些参数,可以用它保存起来。该存储电路如图2-4所示。 宿州学院2010届毕业设计 智能控制开关硬件设计VCCGNDA1A2A3WPSCLSDA+5VSDAR10R1110KI2CU310KSCL 图2-4 时间掉电存储电路2.5 电源电路为了给该数据采集系统提供一个比较稳定的工作环境,就此为该系统设计了一个稳压电源模块,电路原理如下图2-5所示,该电源模块5V固定输出,采用了稳压模块7805,该系列集成稳压模块具有过流、过热和调整管安全工作区保护,以防止过载而损坏。对于整个系统的工作而言,增加了电路的可靠性能和稳定性能。 图2-5 电源电路原理图6宿州学院毕业设计 2 智能控制开关硬件设计66宿州学院2010届毕业设计 智能控制开关硬件设计2.6开关控制电路该电路采用5V继电器进行隔离控制,JDQ继电器耐压为300V,它的输出级由一个常开开关构成,它控制着主电路的导通与关断,原理图如下图2-6所示。 继电器开关+5VbeepJDQQ1NPN图2-6 开关控制电路7宿州学院2010届毕业设计 系统的软件设计3系统的软件设计本系统的软件系统主要完成修改时间、定时通断电等功能。在程序设计过程中,加强了部分软件抗干扰措施,以达到按键的灵活性,确保整个系统的正常运行。系统流程图如下图1所示。8宿州学院毕业设计 3 系统的软件设计3.1 系统程序流程图系统流程图如下图3-1 所示。开 始系统初始化时间与定时时间显示开关接通,放电开关断开,不通电修改时间子程序修改定时时间子程序修改定时时间修改时间定时时间到否NYYYNN图3-1 程序流程图7宿州学院2010届毕业设计 系统的软件设计3.2 系统程序FM BIT 20H ;分钟到的标志,由中断子程序产生RING BIT P1.0 ;开关接通标志,由比较子程序产生PLUS BIT P3.5MINUS BIT P3.4STP BIT P3.3PWR BIT P2.7 MS EQU 7FHSECN EQU 7EHMINU EQU 7DHHOUR EQU 7CHBCDH EQU 7BH ;伪指令定义压缩BCD码的小时表示,用于比较BCDM EQU 7AH ;伪指令定义压缩BCD码的分钟表示,用于比较NUMB EQU 6BUFF EQU 60HTT EQU 20 ;伪指令设定开关接通的时间长度,设为20秒 ORG 0000HLJMP STARTORG 000BHLJMP INTT0START: LCALL CLEARLCALL INITMAIN: LCALL BTBCDLCALL DISP JBC FM, MAINA LCALL KEYJNB RING, MAIN MOV A, SECN SUBB A, #TT JC MAIN CLR RING SETB PWR LJMP MAINMAINA: LCALL BTBCD LCALL COMPLJMP MAIN9宿州学院2010届毕业设计 系统的软件设计- 清零子程序CLEAR: MOV R0,#7FHMOV R7,#20HCLEA1: MOV R0, #0H ;全部清零DEC R0DJNZ R7, CLEA1RET- 初始化子程序INIT: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0H MOV MS, #20;SETB TR0SETB EASETB ET0MOV SP, #30HRET- 数码转换子程序BTBCD: MOV A, SECN MOV B, #10 DIV AB MOV BUFF, B MOV BUFF+1, A MOV A, MINU MOV B, #10 DIV AB MOV BUFF+2, B MOV BUFF+3, A SWAP A ORL A, B MOV BCDM, A MOV A, HOUR MOV B, #10 DIV AB MOV BUFF+4, B MOV BUFF+5, A SWAP A ORL A, B10宿州学院2010届毕业设计 系统的软件设计MOV BCDH, A RET- 按键扫描子程序KEY: MOV B, MINU INC B INC B SETB STP JNB STP, KEY11 SETB PLUS JB PLUS, KEY2A LCALL BTBCD LCALL DDISP SETB PLUS JNB PLUS, KEY22 ;加一分钟KEY2A: SETB MINUS JB MINUS, KEYDD ;减一分钟 LCALL DDISP LCALL BTBCD LCALL DDISP SETB MINUS JNB MINUS, KEY33 KEYDD: LJMP KEYDKEY11: LCALL DDISP LCALL DDISP SETB STP JNB STP, KEY1 SJMP KEYDDKEY22: LJMP KEY2KEY33: LJMP KEY3KEY1: LCALL DDISP LCALL BTBCD MOV BUFF+2, #11H MOV BUFF+3, #11H MOV BUFF, #11H MOV BUFF+1, #11H SETB PLUSJNB PLUS, KEY5 ;判断小时+ SETB MINUS11宿州学院2010届毕业设计 系统的软件设计JNB MINUS, KEY4 ;判断小时- SETB STP JB STP, KEY1 LCALL DDISP LCALL BTBCD SETB STP JB STP, KEY1KEY6: LCALL DDISP LCALL BTBCD SETB STP JNB STP, KEY6 LJMP KEYDKEY5: LCALL DDISP LCALL DDISP SETB PLUS JB PLUS, KEY1 INC HOUR MOV A, HOUR CLR C SUBB A, #24 JC KEY1 MOV HOUR, #00 LJMP KEY1KEY4: LCALL DDISP LCALL DDISP SETB MINUS JB MINUS, KEY1 DEC HOUR; MOV A, HOUR CLR C SUBB A, #24 JC KEY1 MOV HOUR, #23 LJMP KEY1KEY2: LCALL DDISP SETB PLUS JB PLUS, KEYD INC MINU MOV A, MINU12宿州学院2010届毕业设计 系统的软件设计CLR C SUBB A, #60 JC KEYD MOV MINU, #00 LJMP KEYDKEY3: LCALL DDISP SETB MINUS JB MINUS, KEYD DEC MINU MOV A, MINU CLR C SUBB A, #60 JC KEYD MOV MINU, #59KEYD: RET- 比较子程序COMP: PUSH DPH PUSH DPL PUSH ACC MOV DPTR, #ALARM MOV R6, #NUMBCOMP1: CLR A MOVC A, A+DPTR INC DPTR CJNE A, BCDH, COMP0 CLR A MOVC A, A+DPTR CJNE A, BCDM, COMP0 SETB RING CLR PWR ;定时时间到COMP0: INC DPTR ;指向下一个定时时间COMP2: DJNZ R6, COMP1COMPD: POP ACC POP DPL POP DPH RET13宿州学院2010届毕业设计 系统的软件设计- 扫描显示子程序DISP: MOV R0, #BUFF MOV R2, #06H MOV R3, #01H; MOV DPTR, #TABLEDISP1: MOV A, R3 MOV P2, A RL A MOV R3, A MOV A, R0 MOVC A, A+DPTR MOV P0, A INC R0 LCALL DELAY DJNZ R2, DISP1 RETTABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH- 调用3次显示子程序DDISP: MOV R1, #03HDDIS1: LCALL DISP DJNZ R1, DDIS1 RET- 延时子程序DELAY: MOV R7, #100DELAY0: MOV R6, #10DELAY1: DJNZ R6, DELAY1 DJNZ R7, DELAY0RET- 时钟中断程序INTT0: PUSH PSW PUSH ACC MOV TL1, #0B0HMOV TH1, #3CH DJNZ MS, INTD MOV MS, #14 ;恢复计数值 INC SECN14宿州学院2010届毕业设计 系统的软件设计 MOV A, SECN CJNE A, #60, INTD MOV SECN, #0 INC MINU SETB FM MOV A, MINU CJNE A, #60, INTD MOV MINU, #0 INC HOUR MOV A, HOUR CJNE A, #24, INTD MOV HOUR, #00HINTD: POP ACC POP PSWRETIALARM: DW 0800H,0900H,0930H,1000H,1200H,1500H END15宿州学院2010届毕业设计 系统
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。