欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    彩灯循环控制系统设计.doc

    • 资源ID:3316575       资源大小:1.44MB        全文页数:25页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    彩灯循环控制系统设计.doc

    职业技术学院毕业设计说明书(论文)设计(论文)题目:_彩灯循环控制系统 专 业:_ 电子信息工程技术 班 级:_ 电信07级1班_ _学 号:_ _ _姓 名:_ _ _指导教师: _ _二九年十二月二十六日目录摘要1第1章 绪论21.1 单片机的简介21.2 单片机的应用领域21.3 单片机的发展趋势2第2章 彩灯硬件电路框架设计32.1 彩灯功能描述32.2 硬件电路设计框架32.3 系统硬件单元电路设计及论证42.3.1 晶振电路42.3.2 复位电路42.3.3 错误报警电路42.3.4 开关电路52.3.5 发光电路5第3章 彩灯系统软件设计63.1 程序设计框图63.2 子程序设计和功能介绍63.2.1 延时程序63.2.2 初始化函数73.2.3 彩灯循环方式控制程序83.2.4 中断服务程序10第4章 系统调试134.1 软件调试134.2 硬件调试13第5章 毕业设计总结15参考文献16附录1 彩灯电路总图及元器件清单17附录2 彩灯整体程序18 四川信息职业技术学院毕业设计说明书(论文)第0页摘要单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU)。随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志。单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。本毕业设计的课题是“彩灯循环控制系统的设计”。主要考核我们对单片机技术,编程能力等方面的情况。观察独立分析、设计单片机的能力,以及实际编程技能。关键字: 单片机;彩灯;循环;控制 四川信息职业技术学院毕业设计说明书(论文)第21页第1章 绪论1.1 单片机的简介单片机是单片微型计算机的简称,也就是把微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。由此来看,单片机是可单独地完成现代工业控制所要求的智能化控制系统,这是单片机最大的特征。1.2 单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用2.在工业控制中的应用3.在家用电器中的应用4.在计算机网络和通信领域中的应用5.单片机在医用设备领域中的应用1.3 单片机的发展趋势现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:1.低功耗CMOS化2.微型单片化3.主流与多品种共存第2章 彩灯硬件电路框架设计2.1 彩灯功能描述本次毕业设计主要完成功能有:(1)当按下开关KEY1时,彩灯依次一个一个点亮。(2)当按下开关KEY2时,彩灯每两个间隔点亮。(3)当按下开关KEY3时,彩灯灯全部闪烁。(4)当按下开关(顺序)时,以上3种点亮方式依次执行一次。(5)当按下暂停开关时,保持彩灯当前状态,松开开关时,继续运行。(6)当按下中断开关时,说明彩灯系统出错了,所有红灯亮,喇叭报警。(通过中断假设出故障)(7)当按下复位开关时,彩灯系统恢复到最初状态。2.2 硬件电路设计框架根据设计要求,彩灯硬件电路框图设计如图2-1所示:RST P1口X1 p2口X2单片机 P3.2、P3.3 P0.1P0.4P0.0晶振电路彩灯发光电路错误报警电路复位电路开关电路图2-1彩灯设计框图从框图中可以看出本次毕业设计单元电路包括了由32只不同颜色组成的发光电路、12MHz晶振组成的晶振电路、复位电路、错误报警电路、开关电路。2.3 系统硬件单元电路设计及论证2.3.1 晶振电路C1XTLA1XTLA2C2单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。图是内部时钟方式,改图中电容C1和C2取33PF,晶体的振荡频率取12MHz,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。其实际连接如图2-2所示:图2-2晶振电路2.3.2 复位电路复位电路如图2-3所示。当单片机一上电,立即复位。电容C和电阻实现上电自动复位。复位也是使单片机推出低功耗工作方式而进入正常状态的一种操作。图2-3复位电路2.3.3 错误报警电路错误报警电路(如图2-4)的设计仅仅由一个发声装置构成,其主要的作用是当系统发出错误中断信号时,向p0.0口提供一个高电平,报警电路进行错误报警。图2-4 错误报警电路2.3.4 开关电路开关电路(如图2-5)的设计由6个独立的开关按钮组成,它们分别提供6个不同的中断信号,使彩灯完成不同的闪烁效果。 图2-5 开关电路2.3.5 发光电路红、黄、绿、蓝等色彩的发光二极管32只,各接一个限流电阻便设计出如图2-6所示的彩灯发光电路。图2-6 部分彩灯连接原理图第3章 彩灯系统软件设计3.1 程序设计框图有无按钮按下调用延时函数调用彩灯循环函数结束YYNY开始初始化有无中断请求条件真假调用中断服务函数N本次程序设计采用的是C语言程序设计,其设计框图如图3-1所示:图3-1 程序设计框图3.2 子程序设计和功能介绍3.2.1 延时程序void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=120;y>0;y-);程序中定义了一个返回值为空的delay函数,里含一个形参无符号整型变量z,还定义了无符号整型变量x、y,通过一个二重for循环,完成多次空操作,从而实现延时功能。3.2.2 初始化函数void init()/定义一个返回值为空的init函数EA=1;/开放所有中断EX0=1;/允许外部中断0中断IT0=1;/外部中断0的中断触发方式控制位置1,设置外部中0为边沿触发方式ET0=1;/允许T0中断(定时器/计数器T0的输出中断允许位)TR0=0;/停止定时器/计数器0TH0=(65536-30000)/256;TL0=(65536-30000)%256;EX1=1;/允许外部中断1中断IT1=0;/将外部中断1的中断触发方式控制位置0,即设置外部中断1为电平触发方式PX1=1;/将外部中断1中断优先级控制位置1ET1=1;/允许T1中断TR1=0;/停止定时器/计数器1TH1=(65536-50000)/256;TL1=(65536-50000)%256;P1=0xFF; P2=0XFF;/将P1口和P2口置1,在P1口和P2口引脚时,应先向锁存器写"1" temp1=0x7F;temp2=0x7F;cnt=8;aa=0;bb=0;key_int1=1;key1=1;key2=1;key3=1;key4=1;temp_int1=key_int1;temp_key1=key1;temp_key2=key2;temp_key3=key3;temp_key4=key4;beep=1;flag=0;/分别对temp1、temp2、cnt、aa、bb、key_int1、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_key3、temp_key4、beep、flag赋值该函数名为init,该段程序主要是对中断优先级、一些中断控制位、某些变量等进行初始化赋值。3.2.3 彩灯循环方式控制程序1.循环方式1void FUN1()cnt=8; temp1=0X7F;temp2=0X7F; /对cnt、temp1、temp2进行赋值while(cnt!=0)/while循环,若cnt不等于0循环继续,否则,跳出循环cnt-;/变量cnt自减1temp1=_crol_(temp1,1);delay(500);/调用延时子函数P2=0xFF; /对p2口置1P1=temp1; /将temp1的值赋给p1口temp2=_crol_(temp2,1); /将temp2右移1位 delay(500);/调用延时子函数P1=0xFF; /对p1口置1 P2=temp2; /将temp2的值赋给temp2P1=0x0ff; P2=0x0ff; /分别对P1、p2口置1设计的此段程序的功能是实现依次一个一个的被点亮。2.循环方式2void FUN2()temp1=0xAA;temp2=0xAA; /将二进制数10101010赋给temp1、temp2TR0=1; /启动定时器/计数器0while(TR0=1);/while循环,当TR0等于1时,进行循环P1=0x0ff;P2=0x0ff; /对p1口和p2口置1设计此段程序实现的功能是每隔两个间隔点亮一个灯。3.循环方式3void FUN3()temp1=0x0;temp2=0x0; /将0赋给temp1、temp2,驱动彩灯发光TR1=1; /启动定时器/计数器1while(TR1=1); /while循环,若TR1等于1,进行循环P1=0x0ff;P2=0x0ff; /对p1口和p2口置1设计此段程序是为了实现彩灯的全部闪烁。3.2.4 中断服务程序1.外部中断0服务程序void _EX0_() interrupt 0 while(1) /while循环,条件真即为1,便循环P1=0x77;P2=0xee; /对p1口和p2口赋值beep=!beep;/对beep的值进行取反delay(100);/调用延时函数此段程序定义了一个返回值为空的_EX0_函数,关键字interrupt后面的0表示终端号,即表示的外部中断0,中断向量地址为0003H。2.定时器0中断服务程序void _ET0_() interrupt 1TH0=(65536-50000)/256;/将计算出的值赋给定时器0的高8位TL0=(65536-50000)%256;/将计算出的值赋给定时器0的低8位aa+; /aa的值自加1if(aa!=20)/判断aa的值是否等于20,若不得,则执行循环P1=temp1;P2=temp2;/将temp1、temp2的状态值赋给temp1、temp2temp1=_cror_(temp1,1);temp2=_cror_(temp2,1);/temp1、temp2右移1位delay(500);/调用延时函数else /当aa的值等于20时aa=0;/将0赋给aaTR0=0;/停止定时器/计数器0TH0=(65536-50000)/256;TL0=(65536-50000)%256;此段程序定义了一个返回值为空的_ET0_函数,关键字interrupt后面的1表示终端号,即表示定时器0,中断向量地址是000B H。3.外部中断1服务程序void _EX1_() interrupt 2PX1=0;PX0=1;/设置外部中断1、外部中断0的优先级temp_int1=key_int1;/将key_int1的值赋给temp_int1while(temp_int1=0)/while循环,若temp_int1的值等于0,循环temp_int1=key_int1;/将key_int1的值赋给temp_int1PX0=0;PX1=1;/设置外部中断0、外部中断1的优先级此段程序定义了一个返回值为空的_EX1_函数,关键字interrupt后面的2表示终端号,即表示外部中断1,其中断向量地址为0013H。4.定时器1中断服务程序void _ET1_() interrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;bb+;if(bb!=20)P1=temp1;P2=temp2;temp1=temp1;temp2=temp2;delay(500);else bb=0;TR1=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;此段程序定义了一个返回值为空的_ET1_函数,关键字interrupt后面的3表示终端号,即表示定时器1,其中断向量地址为001BH。第4章 系统调试单片机硬件和软件调试的工具分别为:protues 和Keil C51调试软件。4.1 软件调试单片机软件调试主要是调试本次课程设计的主程序。其调试过程如下:(1)新建一个工程。单击Project菜单,在弹出的下拉菜单中选New Project。(2)然后选择你要保存的路径,输入工程文件的名字,保存。(3)新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。然后点击确定。(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为c语言文件。(5)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”单击右键选择“Add File To Group Source Group 1”,选中Test.c文件。(6)单击“Project”菜单,选中“Built Target”,完成程序的编译,在工程文件夹中找到*.hex文件即可。4.2 硬件调试单片机硬件调试是检测在设计电路时,电路中存在的一些缺陷,故硬件调试是必不可少的,其步骤大致如下:(1)打开软件Protues,将设计好的单片机硬件电路打开。(2)在确定电路已经连接完成后,双击AT89C51单片机加入*.hex文件。(3)单击软件最左下方的Play按钮。若无异常,当按下某一按键时,能完成以下功能时,则表示设计调试通过。(1)当按下开关KEY1时,彩灯依次一个一个点亮。(2)当按下开关KEY2时,彩灯每两个间隔点亮。(3)当按下开关KEY3时,彩灯灯全部闪烁。(4)当按下开关(顺序)时,以上3种点亮方式依次执行一次。(5)当按下暂停开关时,保持彩灯当前状态,松开开关时,继续运行。(6)当按下中断开关时,说明彩灯系统出错了,所有红灯亮,喇叭报警。(通过中断假设出故障)(7)当按下复位开关时,彩灯系统恢复到最初状态。第5章 毕业设计总结大学三年就会在这最后的毕业设计总结划上一个圆满的句号。我曾经以为时间是一个不快不慢的东西,但现在我感到时间过的是多么的飞快,三年了,感觉就在一眨眼之间结束了我的大学生涯。最能把理论知识运用到实践当中的过程就数毕业设计了。在整个毕业设计的过程中每一步都是自己亲自做过的,遇到的问题也非常多,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。以往没有注意到的问题,都在这一次的毕业设计中得以体现,这培养了我的细心,耐心和专心。我觉得能够在这次的毕业设计中学到很多的东西,以往不注意的细节,在这一次中是必须让自己去注意的。也是我这三年来所学到知识的一个体现。我深深知道,每一次的学习实践环节都是那么的来之不易,都是通过老师的深思熟虑后,才给我们定下目标。然后让我们在知识的海洋里翱翔,让我们随着年龄的增长不断的扩充自己的知识领域,也逐渐成熟,逐渐长大,老师同时也教导我们逐渐成为一个能够为身边的人,为家庭,为国家做出点点贡献的人,教导我们学会感恩。所以,我在这次的毕业设计中,认真对待每一个过程,希望自己的认真,自己最后的毕业设计的成果能够回报老师这么多年来的教导,这么多年的奉献。最后,由于理论方面所学有限,理解又不好,再加之动手能力的匮乏,在这次毕业设计中难免会有错误,还望老师批评指正。参考文献1林志琦.单片机原理接口及应用.北京:中国水利水电出版社,20072胡辉.单片机原理与应用.北京:中国水利水电出版社,20073赵文博.单片机语言C51程序设计.北京:人民邮电出版社,20054谭浩强.c程序设计.北京:清华大学出版社,1991附录1 彩灯电路总图及元器件清单元器件清单:AT89C51一个、按键7个、发光二极管32只(不同色)、石英晶振器1个、电容2个、极性电容1个、电阻和导线若附录2 彩灯整体程序#include <reg51.h>/将51单片机的寄存器包含在头文件中#include <intrins.h>/将内部函数包含在头文件中#define uint unsigned int/宏定义,用uint代替unsigned int(无符号整型变量)#define uchar unsigned char/宏定义,用uchar代替unsigned char(无符号字符变量)uchar temp_int1;uchar temp1;uchar temp2;uchar temp_key1;uchar temp_key2;uchar temp_key3;uchar temp_key4;/定义无符号字符变量temp_int1、temp1、temp2、temp_key1、temp_key2、temp_key3、temp_key4uint cnt;uint aa;uint bb;uint flag;/定义无符号整型变量cnt、aa、bb、flagsbit key1=P02;sbit key2=P03;sbit key3=P04;sbit key4=P01;sbit key_int1=P33;sbit beep=P00;/用key1、key2、key3、key4、key_int1、beep代替P02、P03、P04、P01、P33、P00/延时函数void delay(uint z)/定义了一个返回值为空的delay函数,里含一个形参无符号整型变量z uint x,y;/定义了无符号整型变量x、y for(x=z;x>0;x-) for(y=120;y>0;y-);/二重for循环,外循环循环z(z的值在delay函数被调用时得到)次,内循环循环120次,其循环语句均为空操作,从而实现延时功能/初始化函数void init()/定义一个返回值为空的init函数EA=1;/开放所有中断EX0=1;/允许外部中断0中断IT0=1;/外部中断0的中断触发方式控制位置1,即设置外部中0为边沿触发方式ET0=1;/允许T0中断(定时器/计数器T0的输出中断允许位)TR0=0;/停止定时器/计数器0TH0=(65536-30000)/256;TL0=(65536-30000)%256;EX1=1;/允许外部中断1中断IT1=0;/将外部中断1的中断触发方式控制位置0,即设置外部中断1为电平触发方式PX1=1;/将外部中断1中断优先级控制位置1ET1=1;/允许T1中断TR1=0;/停止定时器/计数器1TH1=(65536-50000)/256;TL1=(65536-50000)%256;P1=0xFF; P2=0XFF;/将P1口和P2口置1,因为在P1口和P2口引脚时,应先向锁存器写"1" temp1=0x7F;temp2=0x7F;cnt=8;aa=0;bb=0;key_int1=1;key1=1;key2=1;key3=1;key4=1;temp_int1=key_int1;temp_key1=key1;temp_key2=key2;temp_key3=key3;temp_key4=key4;beep=1;flag=0;/分别对temp1、temp2、cnt、aa、bb、key_int1、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_key3、temp_key4、beep、flag赋值/彩灯方式1void FUN1()cnt=8;temp1=0X7F;temp2=0X7F;while(cnt!=0)cnt-;temp1=_crol_(temp1,1);delay(500);P2=0xFF;P1=temp1;temp2=_crol_(temp2,1); delay(500);P1=0xFF; P2=temp2;P1=0x0ff;P2=0x0ff;/彩灯方式2void FUN2()temp1=0xAA;temp2=0xAA;TR0=1;while(TR0=1);P1=0x0ff;P2=0x0ff;/彩灯方式3void FUN3()temp1=0x0;temp2=0x0;TR1=1;while(TR1=1); P1=0x0ff;P2=0x0ff;/主函数void main() init(); while(1) temp_key1=key1;temp_key2=key2;temp_key3=key3;temp_key4=key4;if(temp_key4=0)delay(5);temp_key4=key4;if(temp_key4=0)/三种彩灯方式依次执行FUN1();FUN2();FUN3();if(temp_key1=0)delay(5);temp_key1=key1;if(temp_key1=0)FUN1();/执行彩灯方式1if(temp_key2=0)delay(5);temp_key2=key2;if(temp_key2=0)FUN2();/执行彩灯方式2if(temp_key3=0)delay(5);temp_key3=key3;if(temp_key3=0)FUN3();/执行彩灯方式3 /外部中断0服务程序void _EX0_() interrupt 0while(1)P1=0x77;P2=0xee;beep=!beep;delay(100);/定时器0中断服务程序void _ET0_() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256; aa+;if(aa!=20)P1=temp1;P2=temp2;temp1=_cror_(temp1,1);temp2=_cror_(temp2,1);delay(500);else aa=0;TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;/外部中断1服务程序void _EX1_() interrupt 2PX1=0;PX0=1;temp_int1=key_int1;while(temp_int1=0)temp_int1=key_int1;PX0=0;PX1=1;/定时器1中断服务程序void _ET1_() interrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;bb+;if(bb!=20)P1=temp1;P2=temp2;temp1=temp1;temp2=temp2;delay(500);else bb=0;TR1=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;

    注意事项

    本文(彩灯循环控制系统设计.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开