LED流水灯研究设计单片机控制 .docx
精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习微机应用系统设计与综合试验(实践)课程设计试验报告试验课题LED 霓虹灯设计可编辑资料 - - - 欢迎下载精品名师归纳总结姓名学号班级指导老师目 录第一章设计概述31.1设计任务31.2设备器材3其次章硬件设计方案32.1设计思想32.2硬件选择 42.3AT89C52 单片机介绍42.4硬件规律图 72.5设计连线82.6仿真电路图8第三章软件设计方案83.1软件设计思想83.2程序流程图9第四章 调试及运行结果10第五章 设计心得与体会10参考资料11源程序清单11第一章 设计概述1.1 设计任务设计内容:利用汇编语言(或C 语言),实现 8 个单色 LED灯的左、右循环显示,并实现循环的速度可调。选用芯片: 8255 等注:由于试验室的没有供应 8255 芯片,所以改用单片机完成此试验,并且添加了调剂灯明暗的功能,以实现明暗可调。可编辑资料 - - - 欢迎下载精品名师归纳总结1.2 设备器材在本设计中,所用到的设备器材如下所示:(1) 运算机一台。(2) 唐都仪器试验箱一台。(3) AT89C52单片机一片。 4导线如干。其次章 硬件设计方案2.1 设计思路本课题需要用按钮开关实现流水灯的左右循环显示、调速、把握亮度的功 能。可以选用五个开关来实现这些操作。单片机正在软件运行下通过不断扫描 开关状态,来将相关操作对应量送入单片机的输入端口,然后判定属于哪一类 操作。五个开关分别为K1,K2,K3,K4,K5 ,分别把握流水灯的调向、加速、减速、变亮、变暗。在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态转变信号。不能同时有两个端口同为高电平。在设计中我主要负责了用云脉冲宽度调制(PWM)波把握 LED 灯的亮度环节,开头对 PWM 并不是很明白,通过请教同学和查阅相关资料,慢慢明白了其中的原理。在主程序运行时通过中断方式调整其输出电压的占空比,从而转变灯泡的亮度。原理是这样的,主程序的始终频率和中断的始终频率并不相 同,大约是中断的一千倍,LED 灯在移动时假如响应了中断,就在执行中断程序时, LED 灯近似看做没有移动,此时在中断程序中设计一个初值和一个上限,当计数到初值时置灯泡灭掉,在计数到上限之前小灯泡都是熄灭的,到达 上限后回 0,并置灯泡为亮,连续计数,在到设定的初值时置小灯泡为灭掉。这样在主程序的一个周期内,中断程序将小灯泡置明置暗了近一千次,通过改 变设定的初值可以转变小灯泡的亮度。2.2 硬件选择本试验选用 AT89C52 单片机、五个按键开关和8 个发光二极管。其中AT89C52 为把握核心,当 5 个开关的状态转变时,单片机检测到开关信号后就通过软件输出把握发光二极管。可编辑资料 - - - 欢迎下载精品名师归纳总结2.3 AT89C52 单片机介绍AT89C52 是一个低电压,高性能CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的Flash 只读程序储备器和256 bytes 的随机存取数据储备器( RAM ),器件接受 ATMEL公司的高密度、非易失性储备技术生产,兼容 标准 MCS-51 指令系统,片内置通用8 位中心处理器和 Flash 储备单元,功能强大的 AT89C52 单片机可为您供应许多较复杂系统把握应用场合。AT89C52 有 40 个引脚, 32 个外部双向输入 /输出( I/O )端口,同时内含 2 个外中断口, 3 个 16 位可编程定时计数器 ,2 个全双工串行通信口, 2 个读写口线。AT89C52 的内部结构图如下:引脚图如下: 引脚功能说明:P0 口: P0 口是一组 8 位漏极开路型双向 I/O 口, 也即的址 / 数据总线复用口。作为输出口用时,每位能吸取电流的方式驱动8 个 TTL 规律门电路, 对端口 P0 写“1”时,可作为高阻抗输入端用。拜望外部数据储备器或程序储备器时,这组口线分时转换的址(低8 位)和数据总线复用,在拜望期间激活内部上拉电阻。在 Flash 编程时, P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口: P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动(吸取或输出电流) 4 个 TTL 规律门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,由于内部存在上 拉电 阻, 某个 引脚 被 外部 信号 拉低 时会 输出 一个 电流 IIL 。 与AT89C51 不同之处是, P1.0 和 P1.1 仍可分别作为定时 / 计数器 2 的外部计数输入( P1.0/T2 )和输入( P1.1/T2EX ),参见表 1。Flash 编程和程序校验期间, P1 接收低 8 位的址。表.P1.0 和 P1.1 的其次功能可编辑资料 - - - 欢迎下载精品名师归纳总结引脚号功能特性P1.0T2,时钟输出P1.1T2EX ( 定 时 /计数器 2)P2 口: P2 是一个带有内部上拉电阻的8 位双向 I/O 口, P2 的输出缓冲 级可 驱动( 吸取 或输出电流) 4 个 TTL逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL 。在拜望外部程序储备器或16 位的址的外部数据储备器(例如执行MOVXDPTR 指令)时, P2 口送出高 8 位的址数据。在拜望 8 位的址的外部数据储备器(如执行MOVXRI 指令)时, P2 口输出 P2 锁存器的内容。Flash 编程或校验时, P2 亦接收高位的址和一些把握信号。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 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要留意的是:每当拜望外部数据储备器时将跳过一个 ALE 脉冲。对 Flash 储备器编程期间,该引脚仍用于输入编程脉冲( PROG)。如有必要,可通过对特别功能寄存器( SFR)区中的 8EH 单元的 D0 位置位, 可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将ALE 激活。此外,该引脚会被脆弱拉高,单片机执行外部程序时,应设置可编辑资料 - - - 欢迎下载精品名师归纳总结ALE 禁止位无效。PSEN:程序储存答应( PSEN)输出是外部程序储备器的读选通信号, 当 AT89C52 由外部程序储备器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当拜望外部数据储备器,将跳过两次 PSEN 信号。EA/VPP :外部拜望答应。欲使CPU 仅拜望外部程序储备器(的址为0000H FFFFH ), EA 端必需保持低电平(接的)。需留意的是:假如加密位 LB1 被编程,复位时内部会锁存EA 端状态。如 EA 端为高电平(接 Vcc端), CPU 就执行内部程序储备器中的指令。Flash 储备器编程时,该引脚加上+12V 的编程答应电源 Vpp ,当然这必需是该器件是使用 12V 编程电压 Vpp。XTAL1 :振荡器反相放大器的及内部时钟发生器的输入端。XTAL2 :振荡器反相放大器的输出端。2.4 硬件连接框图单片机从开关上提取不同输入信号,进行相应的软件操作,反映输出在发光二极管上。可编辑资料 - - - 欢迎下载精品名师归纳总结开关2.5 设计连线输入AT89C52单片机流水灯可编辑资料 - - - 欢迎下载精品名师归纳总结本试验的连线为:开关使用唐都试验箱上的5 个开关,分别接到单片机的P2.0P2.4 口,然后发光二极管分别接到单片机的P1.0P1.7口。2.6 试验仿真电路图第三章软件设计方案3.1 软件设计思想一个完整的系统仅有硬件是不够的,仍要有软件的协作。软件和硬件对一 个系统来说都是不行或缺的。本试验接受C 语言编程,在具体设计中,通过GetKey函数来不停的扫描开关的状态,通过KeyProcess()来确定输入的信号,即按键的位置,从而执行不同的子程序内容,实现LED 灯的把握。3.2 程序流程图第四章 调试及运行结果可编辑资料 - - - 欢迎下载精品名师归纳总结通过设计和编写程序代码,讲程序通过Keil 软件编译后生成的hex 文件写进 AT89C52 中,便可操作。为当拨动相应的开关时,看LED 灯的变化。调试过程中问题许多,主要缘由是对单片机结构的不熟识,其次就是程序中的一些问题。但通过努力,都被一一解决。实际接线前我们先用protues 仿真了一下试验结果,确认无误后接线,这样提高了调试的时间。第五章 心得体会经过四次的上机课程设计,在我和* 同学的共同努力下,顺当的完成了任务,并在其中表达了自己的独创部分。同时我感觉自己学到了许多。第一是要 把理论和实际相结合起来,从理论中得出结论,然后再实践,从而提高自己的 实际动手才能和独立摸索问题的才能。在设计的过程中遇到了许多的问题,也 发觉了自己的不足之处。第一是之前对单片机并不特别明白,通过借阅书籍, 找同学询问慢慢的开头对其有了初步的熟识。其次是一些相关软件的用法,这个通过自己慢慢的摸索也逐步熟识了起来。特别是protues 的使用,它给了我们很大的帮忙,帮忙我们解决了许多调试过程中的问题。在者是对PWM 波的使用,这个问题很是伤到筋,由于之前对其并不明白,从熟识到使用我们查阅了许多资料,请教了同学,最终最终把握了。同时也是设计更完善。此课程设计让我加深懂得了所学的理论学问,并进一步建立了运算机应用系统的整体概念,初步把握了单片机软、硬件开发方法,为以后进行实际的单片机软、硬件应用开发奠定了良好的基础。这对下学期单片机的学习会有很大的帮忙,也使我对单片机产生了爱好。这次课程设计的顺当完成,离不开学长,同学和知道老师的帮忙,特别是PWM 波的运用,也是学长给我们提出的建议。在此感谢老师和学长的无私帮忙。附录一 参考文献1 单片机原理及其接口技术 胡汉才 编著 北京:清华高校出版社2 MCS-51 单片机原理及应用张毅刚 编著 哈尔滨:哈尔滨工业高校出版社3 51 单片机 C 语言应用程序设计实例精讲(其次版) 戴佳 刘博文 编著电子工业出版社附录一 C 语言程序清单可编辑资料 - - - 欢迎下载精品名师归纳总结/*/*/*程序名:可控流水灯功能:实现流水灯的方向、速度、亮度把握*/*硬件: P2 接开关, P1 接 LED*/*/*/ #include<reg52.h>#include <intrins.h>sbit K1=P20 。 / 方向 sbit K2=P21 。 / 加速 sbit K3=P22 。 / 减速 sbit K4=P23 。 / 加亮 sbit K5=P24 。 / 变暗unsigned char Speed,LED 。unsigned int tCount=0 。unsigned char Idx。/速度取值索引bit Dirtect=1 。/滚动方向char duty=10 。 / 占空比unsigned int code sTable=0,1,3,7,9,15,30,50,100,200,230,280,300,350。 / 调速表void InitTimer0_Timer1void。void delayunsigned int xunsigned char i。whilex- fori=0。i<20 。i+ 。unsigned char GetKeyvoidunsigned char K 。ifP2=0xFF return 0 。delay10 。switchP2case 0xFE:K=1 。break。case 0xFD:K=2 。break。case 0xFB:K=3 。break。case 0xF7:K=4 。break。case 0xEF:K=5 。break。default: K=0 。break。whileP2.=0xFF 。 /等待释放按键return K 。void KeyProcessunsigned char KeyswitchKey可编辑资料 - - - 欢迎下载精品名师归纳总结case 1:Dirtect=Dirtect 。break。/ 方向case 2:ifIdx>1 Speed=sTable-Idx 。break。 /加速case 3:ifIdx<15 Speed=sTable+Idx。break。/ 减速case 4:duty+ 。ifduty>=20 duty=20 。break。 /加亮case 5:duty-。ifduty<=0 duty=1 。 break。 /变暗void mainvoidunsigned char Key 。P1=P2=0xFF 。Idx=4 。Speed=sTableIdx 。IP=0x02 。/中断优先级InitTimer0_Timer1 。LED = 0xfe 。P1 = LED 。while1Key=GetKey 。ifKey.=0 KeyProcessKey。/*/*定时器 0 和定时器 1 初始化*/*/ void InitTimer0_Timer1voidTMOD = 0x20 。TH1 = 0x06 。TL1 = 0x06 。EA = 1 。ET0 = 1 。TR0 = 1 。ET1 = 1 。TR1 = 1 。/*/*定时器中断函数*/*/ void timer0void interrupt 1if+tCount<Speed return 。可编辑资料 - - - 欢迎下载精品名师归纳总结tCount=0 。ifDirtect=1 LED = _cror_LED,1。/ 循环右移 1 位,点亮下一个 LED else LED=_crol_LED,1 。P1=LED 。void Timer1void interrupt 3/调剂占空比static char t=0 。t+ 。ift=20t=0 。P1=0x00|LED 。ifduty=t P1=0xFF 。版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人全部This article includes some parts, including text, pictures, and design. Copyright is Pan Hongliang's personal ownership.用户可将本文的内容或服务用于个人学习、争论或观看,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵害本网站及相关权益人的合法权益。除此以 外,将本文任何内容或服务用于其他用途时,须征得本人及相关权益人的书面许可,并支付酬劳。Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the可编辑资料 - - - 欢迎下载精品名师归纳总结same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必需是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修 改,并自负版权等法律责任。Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.可编辑资料 - - - 欢迎下载