ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:526.60KB ,
资源ID:10480623      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10480623.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(yan河南理工大学单片机课程设计四路定时控制器副本.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

yan河南理工大学单片机课程设计四路定时控制器副本.docx

1、yan河南理工大学单片机课程设计四路定时控制器副本微机原理与单片机接口技术课程设计题目名称: 四路定时器 专业班级: 电气本13-03 姓名: 楚雪玲 侯 璐 学 号: 321308010301 321308010302 指导教师: 苏 珊 摘 要随着科技的发展,单片机的应用正不断深入,本次设计的目的就是让我们在理论学习的基础上,通过完成一个涉及MCS51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使我们学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备

2、的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。这里我们采用单片机STC10F08XE芯片为中心器件,结合实用性和器件条件,设计了一个简单的四路定时控制器,系统操作简单、实用性强、扩展性强。单片机定时控制系统最基本的要求是可以实现定时控制,要实现这一功能只要在定时器程序中加判断指令,当判断成立时,即执行预设的动作,达到定时控制的目的。其主要应用于定时控制四个回路的电源通断,通过定时来实现以当前时间为基准,以24小时为周期,可以任意设定哪个回路于某时刻开,到某时刻关,也可以自己设定时间段,来控制电路的通断,同时我们也利用了数码管来显示当前

3、时间,利用四个发光二极管分别显示四路控制电路是否工作,更加直接明了。关键字:四路定时器 智能 控制 开关 1 概 述1.1 实验要求 1.主要应用于定时控制四个回路的电源通断。2. 以当前时间为基准,以24小时为周期,可以任意设定哪个回路于某时刻开,到某时刻关。如可以设置第一个回路在8:30-11:30开,14:30-18:00开,其他时间段为关。3. 能通过按键任意设置某回路某时间段的开关状态,并利用数码管显示当前时间,利用四个发光二极管分别显示四路控制电路的通断,直接明了。1.2 实验原理结合我们对理论知识的学习,完成一个涉及MCS51单片机都种资源应用并具有综合功能的小系统目标板的设计与

4、编程应用。这里我们采用单片机STC10F0 8XE 芯片为中心器件,结合实用性和器件条件,设计了一个简单的四路定时控制器,系统操作简单、实用性强、扩展性强。单片机定时控制系统最基本的要求是可以实现定时控制,要实现这一功能只要在程要在定时器程序中加判断指令,当判断成立时,即执行预设的动作,达到定时控制的目的。其主要应用于定时控制四个回路的电源通断,通过定时器来实现时钟和定时功能,当判断成立时,即通过程序命令预设的I/O口输出相应电平来控制外围的控制电路,即继电器控制显示电路。继电器工作原理:其一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产

5、生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。所以我们就利用继电器此特性,加上单片机IO口电压的控制,即完成了四路定时控制器。9012三极管驱动电路:当控制端电压为0

6、时,Q1基极电压为(12-0.7=11.3V),改变R1的大小便可改变基极电流,当基极电流足够大时,三极管饱合。为了验证以上的分析,我们搭了一个电路,R1取4.7K,此时基极电流为2.4ma,测得Q1ec电压为0.2V,继电器两端电压为11.8V。注意:R1的取值不能太小,要保证基极电流在安全范围,也不能太大,要保证三极管能完全饱合,这个可以通过电压和电阻算出来。第一种电路能工作,那是因为继电器有较宽的电压范围,有时它欠电压也能勉强工作,但状况是不稳定的,因此我们在设计时不建议采用这种方式。正确的电路应该是电路二,正确的连接方式,大小合适的基极电阻才能保证设计的合理和稳定性。最后注明一下,本次

7、实验采用的12V继电器,因此该电路的控制极不能直接用单片机IO口驱动,否则会关不断。若选用5V继电器则可以,原理同2 总体方案及硬件设计2.1 总体方案整个定时控制系统电路可分为四大部分:电源电路、核心芯片、显示部分、控制部分。电源电路、核心芯片、显示部分,由开发板集成真题提供。 开发板2.2 硬件设计1.核心芯片:STC11/10xx系列单片机是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成高可靠复位电路,针对高速通信,智能控制,强干扰场合。定时器0/定时器1/串行口与传统8051兼容,增加了独立波特率发生器,省去了定时器2.传统8

8、051的111条指令执行速度全面提速,最快的指令快24倍,最慢的指令快3倍1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统80512.2. 显示部分:数码管是时钟最为重要的部分,共需要8位LED显示器。采用动态显示方式,由于端口的问题以及动态显示方式的优越性,在此设计的连接方式上采用共阴级接法。显示器LED有段选和位选两个端口,首先说段选端,它由LED八个端口构成,通过对这八个端口输入的不同的二进制数据使得它的显示也不同,可以通过控制输入二进制的信息来达到我们所需的时间的动态显示,从而满足我们时间准确显示的目的。3.控制电路:此电路主要是利用四个继电器工作组集成的继电器

9、电路:只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。3 软件设计3.1 程序设计 程序流程如下:4 仿真模拟4.1 proteus模拟5 心得体会通过这次实训,我发现在现实设计中还需要注意很多的细节,包括程序设计和硬件设计都要我们小心仔细,一个地方出错就可能会整个系统失效。在硬件设计时,我们得注意3

10、方面:1,我们在设计电路时一定要事先把相关的参数计算正确,否则焊出来的电路毛病百出;2如果有条件一定要进行仿真模拟,这样可以对自己设计的电路有一定的监测作用;3最后在焊接电路时一定先进行模拟排布,达到美观实用可靠。在软件调试过程中我们需要注意四方面,就拿我们这个定时器电路来说吧,1,先整体把握,先把主要的重要的程序段写出来,先进行调试,调试成功后,在进行下一步操作,切不可一下子把程序全部写完,在调试监测;2,写程序时最好按功能分段进行处理,一方面美观,有条理,另一方面也方便我们进行调试和修改;3,关于定时器程序,一方面我们必须把计数初值计算正确,另一方面得把程序的逻辑时间很清楚,4,对于按键监

11、测,我们最好加上消抖程序,谨防按键操作时,出现混乱情况;在写调整时间程序时,当按选择键择选要调整时还是秒或分时,看不出是要调整那一位为了方便用户看出现在是在调整那一位,就必须使调整位闪烁,但显示的时候已经用动态显示,如果直接改显示时间,就会使所有的位都闪烁,这样根本就不能实现,后面经过和同学讨论,我使不调的位显示4到5次再显示调整位1次,这样做最后就可以实现了,而且这样做还可以改变闪烁速度。在软件设计时,还遇到了许多问题,毕竟想像和现实还是有很大的区别的,然而到了最后这些问题都一一被解决了,我也在这次实训中学会了很多东西,总结出自已的一套解决问题的方法,这让我觉得自已有了很大的收获,为今后的学

12、习和工作打下了坚定的基础。参考文献1 余发山 王福忠 杨凌霄 王 荷.微机原理与单片机接口技术.北京:煤炭工业出版社,2013。 2康华光.电子技术基础.北京:高等教育出版社,2006。3艾永乐 付子义.模拟电子技术基础.北京:中国电力出版社,2008。4藏春华.电子线路设计与应用.高等教育出版社,2004。附1:源程序代码#includereg51.h#define uint unsigned int#define uchar unsigned charsbit D9=P32;sbit D10=P33;sbit D11=P34;sbit D12=P35;sbit H1=P36;sbit H2

13、=P37;sbit out1=P04;sfr P1M1=0x91;sfr P1M0=0x92;bit sflag;uchar num,shi,fen,k;uchar shi1k,fen1k,shi2k,fen2k,shi3k,fen3k,shi4k,fen4k;uchar shi1g,fen1g,shi2g,fen2g,shi3g,fen3g,shi4g,fen4g;uchar s1;unsigned int table1=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数组共阴数码管显示从0到9unsigned int table2=

14、0xf7,0xfb,0xfd,0xfe; /数码管位定义unsigned int table34=0;void display(unsigned char shi,unsigned char fen);unsigned char key();void Delay10ms(); void main() P1M0=0xff; P1M1=0x00; TMOD=0x10; TH1=0xd8; TL1=0xf0; EA=1; /总中断 ET1=1; /定时器中断 TR1=1; /开启定时器 while(1) if(s1=0) display(shi,fen); k=key(); if(k=1) s1+;

15、 if(s1!=0) TR1=0; if(s1=1) if(k=2) shi+; if(k=3) shi-; if(k=5) fen+; if(k=6) fen-; P2=0xfe; display(shi,fen); if(s1=2) if(k=2) shi1k+; if(k=3) shi1k-; if(k=5) fen1k+; if(k=6) fen1k-; P2=0xfd; display(shi1k,fen1k); if(s1=3) if(k=2) shi1g+; if(k=3) shi1g-; if(k=5) fen1g+; if(k=6) fen1g-; P2=0xff; disp

16、lay(shi1g,fen1g); if(s1=4) if(k=2) shi2k+; if(k=3) shi2k-; if(k=5) fen2k+; if(k=6) fen2k-; P2=0xfb; display(shi2k,fen2k); if(s1=5) if(k=2) shi2g+; if(k=3) shi2g-; if(k=5) fen2g+; if(k=6) fen2g-; P2=0xff; display(shi2g,fen2g); if(s1=6) if(k=2) shi3k+; if(k=3) shi3k-; if(k=5) fen3k+; if(k=6) fen3k-; P

17、2=0xf7; display(shi3k,fen3k); if(s1=7) if(k=2) shi3g+; if(k=3) shi3g-; if(k=5) fen3g+; if(k=6) fen3g-; P2=0xff; display(shi3g,fen3g); if(s1=8) if(k=2) shi4k+; if(k=3) shi4k-; if(k=5) fen4k+; if(k=6) fen4k-; P2=0xef; display(shi4k,fen4k); if(s1=9) if(k=2) shi4g+; if(k=3) shi4g-; if(k=5) fen4g+; if(k=

18、6) fen4g-; P2=0xff; display(shi4g,fen4g); if(s1=10) s1=0; TR1=1; sflag=1; if(s1=0&sflag=1) if(shi=shi1k&fen=fen1k) out1=0; D9=0; if(shi=shi1g&fen=fen1g) out1=1;D9=1; if(shi=shi2k&fen=fen2k) D10=0; if(shi=shi2g&fen=fen2g) D10=1; if(shi=shi3k&fen=fen3k) D11=0; if(shi=shi3g&fen=fen3g) D11=1; if(shi=shi

19、4k&fen=fen4k) D12=0; if(shi=shi4g&fen=fen4g) D12=1; unsigned char key() uchar temp1,temp2,k=0; P0=0xff; /将P0口(列线)全部送高电平 H1=0; H2=1; temp1=P0; /读取P0口当前的状态赋给temp,例如为11011111 temp1=temp1&0xe0;/将temp和0xe0进行与运算(11100000),结果为11000000 if(temp1!=0xe0) /如果temp不等于0xe0,则说明有按键按下 Delay10ms(); /延时去抖操作 temp1=P0; /

20、再重复一次上述操作 temp1=temp1&0xe0; if(temp1!=0xe0) temp1=P0; /如果有按键按下,则将标志位置1? switch(temp1) /判断按下的是该行的第几列 case 0xdf:k=1;break; /11011111,第一行第一列 case 0xbf: k=2;break; /10111111,第一行,第二列 case 0x7f: k=3;break; /01111111,第一行,第三列 while(temp1!=0xe0) /等待按键释放,只要结果不等于0xe0,则说明按键没有被释放 temp1=P0; temp1=temp1&0xe0; P0=0

21、xff; /将P0口(列线)全部送高电平 H1=1; H2=0; temp2=P0; /读取P0口当前的状态赋给temp,例如为11011111 temp2=temp2&0xe0;/将temp和0xe0进行与运算(11100000),结果为11000000 if(temp2!=0xe0) /如果temp不等于0xe0,则说明有按键按下 Delay10ms(); /延时去抖操作 temp2=P0; /再重复一次上述操作 temp2=temp2&0xe0; if(temp2!=0xe0) temp2=P0; switch(temp2) /判断按下的是该行的第几列 case 0xdf: k=4;br

22、eak; /11011111,第二行第一列 case 0xbf:k=5;break;/10111111,第二行,第二列 case 0x7f: k=6;break;/01111111,第二行,第三列 while(temp2!=0xe0) /等待按键释放,只要结果不等于0xe0,则说明按键没有被释放 temp2=P0; temp2=temp2&0xe0; return k; void time1() interrupt 3 /定时器1的中断服务 TH1=0xd8; TL1=0xf0; num+; if(num=100)/到了100次,1秒时间到,代表1分钟时间到 num=0; fen+; if(f

23、en=60)/到60后清零 fen=0; shi+; if(shi=24) shi=0; void Delay10ms() unsigned char i,j,g; for(i=0;i5;i+) for(j=0;j4;j+) for(g=0;g248;g+);void display(unsigned char shi,unsigned char fen) unsigned char m; table30=fen%10; table31=fen/10; table32=shi%10; table33=shi/10; for(m=0;m4;m+) P0=table2m;P1=table1table3m; Delay10ms(); if(m=4) m=0; 附2:系统原理图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1