1、1毕业论文设计课题名称基于MCS51流水灯设计作者学号1105050105系别信息工程系专业制冷与空调技术班级应用电子一班指导教师专业技术职务2014年6月重庆涪陵基于MCS51流水灯设计2第2页共15页第页共页摘要当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。关键词LED单片机控制系统流水灯基于MCS51流水灯设计3第3页共15页第页共页目录1设计概述411设计任务412设备器材42硬
2、件设计方案421设计思想422硬件选择523AT89C51单片机介绍524硬件逻辑图825设计连线926仿真电路图93软件设计方案931软件设计思想932软件设计思想1033程序流程图124调试及运行结果135设计心得与体会13参考资料14基于MCS51流水灯设计4第4页共15页第页共页1设计概述11设计任务设计内容利用汇编语言(或C语言),实现8个单色LED灯的左、右循环显示,并实现循环的速度可调。选用芯片8255等注由于实验室的没有提供8255芯片,所以改用单片机完成此实验,并且添加了调节灯明暗的功能,以实现明暗可调。12设备器材在本设计中,所用到的设备器材如下所示1计算机一台;2唐都仪器
3、实验箱一台;3AT89C51单片机一片;4导线若干。2硬件设计方案21设计思路本课题需要用按钮开关实现流水灯的左右循环显示、调速、控制亮度的功能。可以选用五个开关来实现这些操作。单片机正在软件运行下通过不断扫描开关状态,来将相关操作对应量送入单片机的输入端口,然后判断属于哪一类操作。五个开关分别为K1,K2,K3,K4,K5,分别控制流水灯的调向、加速、减速、变亮、变暗。在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。不能同时有两个端口同为高电平。在设计中我主要负责了用云脉冲宽度调制(PWM)波控制LED灯的亮度环节,开始对PWM并不是很了解,通
4、过请教同学和查阅相关资料,渐渐明白了其中的原理。在基于MCS51流水灯设计5第5页共15页第页共页主程序运行时通过中断方式调整其输出电压的占空比,从而改变灯泡的亮度。原理是这样的,主程序的始终频率和中断的始终频率并不相同,大约是中断的一千倍,LED灯在移动时如果响应了中断,则在执行中断程序时,LED灯近似看做没有移动,此时在中断程序中设计一个初值和一个上限,当计数到初值时置灯泡灭掉,在计数到上限之前小灯泡都是熄灭的,到达上限后回0,并置灯泡为亮,继续计数,在到设定的初值时置小灯泡为灭掉。这样在主程序的一个周期内,中断程序将小灯泡置明置暗了近一千次,通过改变设定的初值可以改变小灯泡的亮度。22硬
5、件选择本实验选用AT89C51单片机、五个按键开关和8个发光二极管。其中AT89C51为控制核心,当5个开关的状态改变时,单片机检测到开关信号后就通过软件输出控制发光二极管。23AT89C51单片机介绍AT89C51是一个低电压,高性能CMOS8位单片机,片内含8KBYTES的可反复擦写的FLASH只读程序存储器和256BYTES的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大的AT89C51单片机可为您提供许多较复杂系统控制应用场合。AT89C51有40个引脚,32个外部双
6、向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。AT89C51的内部结构图如下基于MCS51流水灯设计6第6页共15页第页共页引脚图如下图12引角图引脚功能说明P0口P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口基于MCS51流水灯设计7第7页共15页第页共页P0写“1”时,可作为高阻抗输入端用。访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FLASH编程时,P0口接收指令字节,
7、而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL。与AT89C51不同之处是,P10和P11还可分别作为定时/计数器2的外部计数输入(P10/T2)和输入(P11/T2EX),参见表1。FLASH编程和程序校验期间,P1接收低8位地址。表P10和P11的第二功能图21P10和P11的第二功能P2口P2是一个带有内部上拉电阻的8位
8、双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVXRI指引脚号功能特性P10T2,时钟输出P11T2EX(定时/计数器2)基于MCS51流水灯设计8第8页共15页第页共页令)时,P2口输出P2锁存器的内容。FLASH编程或校验时,P2亦接收高位地址和一些控制信号
9、。P3口P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输
10、出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过
11、两次PSEN信号。EA/VPP外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。FLASH存储器编程时,该引脚加上12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1振荡器反相放大器的及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端。基于MCS51流水灯设计9第9页共15页第页共页24硬件连接框图单片机从开关上提取不同输入信号,进行相应的软件操作,反映输出在发光二极管
12、上。图3125设计连线本实验的连线为开关使用唐都试验箱上的5个开关,分别接到单片机的P20P24口,然后发光二极管分别接到单片机的P10P17口。开关输入AT89C51单片机流水灯基于MCS51流水灯设计10第10页共15页第页共页图41实验仿真电路图3软件设计方案31软件设计思想一个完整的系统仅有硬件是不够的,还要有软件的配合。软件和硬件对一个系统来说都是不可或缺的。本实验采用C语言编程,在具体设计中,通过GETKEY函数来不停基于MCS51流水灯设计11第11页共15页第页共页的扫描开关的状态,通过KEYPROCESS()来确定输入的信号,即按键的位置,从而执行不同的子程序内容,实现LED
13、灯的控制。32C语言编程51单片机流水灯C语言源程序文件说明流水灯C程序程序说明MCU采用AT89C51,外接110592M晶振,P2口输出INCLUDE/51系列单片机定义文件DEFINEUCHARUNSIGNEDCHAR/定义无符号字符DEFINEUINTUNSIGNEDINT/定义无符号整数VOIDDELAYUINT/声明延时函数VOIDMAINVOIDUINTIUCHARTEMPWHILE1TEMP0X01FORI0I1TEMP0XFEFORI0I1VOIDDELAYUINTT/定义延时函数REGISTERUINTBTFORTTFORBT0BT255BT基于MCS51流水灯设计13第1
14、3页共15页第页共页33程序流程图基于MCS51流水灯设计14第14页共15页第页共页4调试及运行结果通过设计和编写程序代码,讲程序通过KEIL软件编译后生成的HEX文件写进AT89C51中,便可操作。为当拨动相应的开关时,看LED灯的变化。调试过程中问题很多,主要原因是对单片机结构的不熟悉,其次就是程序中的一些问题。但通过努力,都被一一解决。实际接线前我们先用PROTUES仿真了一下实验结果,确认无误后接线,这样提高了调试的时间。5心得体会经过这次论文课程设计,顺利的完成了任务,并在其中体现了自己的独创部分。同时我感觉自己学到了很多。首先是要把理论和实际相结合起来,从理论中得出结论,然后再实
15、践,从而提高自己的实际动手能力和独立思考问题的能力。在设计的过程中遇到了很多的问题,也发现了自己的不足之处。首先是之前对单片机并不十分了解,通过借阅书籍,找同学咨询慢慢的开始对其有了初步的认识。其次是一些相关软件的用法,这个通过自己慢慢的摸索也逐渐熟悉了起来。特别是PROTUES的使用,它给了我们很大的帮助,帮助我们解决了很多调试过程中的问题。在者是对PWM波的使用,这个问题很是伤到筋,因为之前对其并不了解,从熟悉到使用我们查阅了很多资料,请教了同学,最后终于掌握了。同时也是设计更完善。此课程设计让我加深理解了所学的理论知识,并进一步建立了计算机应用系统的整体概念,初步掌握了单片机软、硬件开发
16、方法,为以后进行实际的单片机软、硬件应用开发奠定了良好的基础。这对下学期单片机的学习会有很大的帮助,也使我对单片机产生了兴趣。这次课程设计的顺利完成,离不开学长,同学和指导老师的帮助,特别在此感谢老师和学长的无私帮助。基于MCS51流水灯设计15第15页共15页第页共页参考文献1陈明PROTEL99SE原理图与PUB设计教程M北京机械工业出版社,200621232阎石数字电子技术基础(第四版)M北京高等教育出版社,199750533杨素行模拟电子技术基础简明教程M第二版,北京高等教育出版社,19981921932372384吴显鼎集成电子电子线路设计手冊M福州福建科技出版社,200371893945余孟尝数字电子技术基础简明教程M北京高等教育出版社,19996孙余凯,吴鸣山,项绮明555时基电路识图M北京电子工业出版社,2007,17彭介华电子技术课程设计指导M北京高等教育出版社,20048胡泽军,张生才微电子学M北京北京航空航天大学出版社,20039王俊峰现代遥控技术及应用M北京人民邮电出版社,200510单片机原理及其接口技术胡汉才编著北京清华大学出版社11MCS51单片机原理及应用张毅刚编著哈尔滨哈尔滨工业大学出版社1251单片机C语言应用程序设计实例精讲(第二版)戴佳刘博文编著电子工业出版社13何小艇电子系统设计M浙江浙江大学出版社,2000