LED流水灯设计单片机控制.doc

上传人:叶*** 文档编号:35088566 上传时间:2022-08-20 格式:DOC 页数:14 大小:44.50KB
返回 下载 相关 举报
LED流水灯设计单片机控制.doc_第1页
第1页 / 共14页
LED流水灯设计单片机控制.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《LED流水灯设计单片机控制.doc》由会员分享,可在线阅读,更多相关《LED流水灯设计单片机控制.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、?微机应用系统设计与综合实验实践?课程设计实验报告实验课题 LED霓虹灯设计 姓名 学号 班级 指导教师 目 录第一章 设计概述31.1 设计任务31.2 设备器材3第二章 硬件设计方案32.1 设计思想32.2 硬件选择42.3 AT89C52单片机介绍42.4 硬件逻辑图72.5 设计连线82.6 仿真电路图8第三章 软件设计方案83.1 软件设计思想83.2 程序流程图9第四章 调试及运行结果10第五章 设计心得与体会10参考资料11源程序清单11第一章 设计概述1.1 设计任务设计内容:利用汇编语言或C语言,实现8个单色LED灯的左、右循环显示,并实现循环的速度可调。选用芯片: 825

2、5 等注:由于实验室的没有提供8255芯片,所以改用单片机完成此实验,并且添加了调节灯明暗的功能,以实现明暗可调。1.2 设备器材在本设计中,所用到的设备器材如下所示:(1)计算机一台;(2)唐都仪器实验箱一台;(3) AT89C52单片机一片;(4)导线假设干。第二章 硬件设计方案2.1 设计思路本课题需要用按钮开关实现流水灯的左右循环显示、调速、控制亮度的功能。可以选用五个开关来实现这些操作。单片机正在软件运行下通过不断扫描开关状态,来将相关操作对应量送入单片机的输入端口,然后判断属于哪一类操作。五个开关分别为K1,K2,K3,K4,K5,分别控制流水灯的调向、加速、减速、变亮、变暗。在设

3、计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。不能同时有两个端口同为高电平。在设计中我主要负责了用云脉冲宽度调制PWM波控制LED灯的亮度环节,开场对PWM并不是很了解,通过请教同学与查阅相关资料,渐渐明白了其中的原理。在主程序运行时通过中断方式调整其输出电压的占空比,从而改变灯泡的亮度。原理是这样的,主程序的始终频率与中断的始终频率并不一样,大约是中断的一千倍,LED灯在移动时如果响应了中断,那么在执行中断程序时,LED灯近似看做没有移动,此时在中断程序中设计一个初值与一个上限,当计数到初值时置灯泡灭掉,在计数到上限之前小灯泡都是熄灭的,到达上限

4、后回0,并置灯泡为亮,继续计数,在到设定的初值时置小灯泡为灭掉。这样在主程序的一个周期内,中断程序将小灯泡置明置暗了近一千次,通过改变设定的初值可以改变小灯泡的亮度。2.2 硬件选择本实验选用AT89C52单片机、五个按键开关与8个发光二极管。其中AT89C52为控制核心,当5个开关的状态改变时,单片机检测到开关信号后就通过软件输出控制发光二极管。2.3 AT89C52单片机介绍AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器与256 bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,

5、兼容标准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”时,可作为高阻抗输入端用。 访问外部数据存储器或程序存储器时,这组口线分时转换地

6、址低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 编程与程

7、序校验期间,P1 接收低8 位地址。 表.P1.0与P1.1的第二功能 引脚号功能特性T2,时钟输出T2EX定时/计数器2P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动吸收或输出电流4 个TTL逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器例如执行MOVX DPTR 指令时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器如执行MOVX RI 指令时,P2 口输出P

8、2 锁存器的内容。 Flash 编程或校验时,P2亦接收高位地址与一些控制信号。 P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动吸收或输出电流4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流IIL。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 。P3 口还接收一些用于Flash 闪速存储器编程与程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据

9、存储器时,ALE地址锁存允许输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。 对Flash 存储器编程期间,该引脚还用于输入编程脉冲PROG。如有必要,可通过对特殊功能存放器SFR区中的8EH 单元的D0 位置位,可制止ALE 操作。该位置位后,只有一条MOVX 与MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 制止位无效。 PSEN:程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C

10、52 由外部程序存储器取指令或数据时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器地址为0000HFFFFH,EA 端必须保持低电平接地。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平接Vcc端,CPU 那么执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器

11、的输出端。单片机从开关上提取不同输入信号,进展相应的软件操作,反映输出在发光二极管上。开关输入AT89C52单片机流水灯P1.7口。第三章软件设计方案3.1 软件设计思想一个完整的系统仅有硬件是不够的,还要有软件的配合。软件与硬件对一个系统来说都是不可或缺的。本实验采用C语言编程,在具体设计中,通过GetKey()函数来不停的扫描开关的状态,通过KeyProcess来确定输入的信号,即按键的位置,从而执行不同的子程序内容,实现LED灯的控制。第四章 调试及运行结果通过设计与编写程序代码,讲程序通过Keil软件编译后生成的hex文件写进AT89C52中,便可操作。为当拨动相应的开关时,看LED灯

12、的变化。调试过程中问题很多,主要原因是对单片机构造的不熟悉,其次就是程序中的一些问题。但通过努力,都被一一解决。实际接线前我们先用protues仿真了一下实验结果,确认无误后接线,这样提高了调试的时间。第五章 心得体会经过四次的上机课程设计,在我与*同学的共同努力下,顺利的完成了任务,并在其中表达了自己的独创局部。同时我感觉自己学到了很多。首先是要把理论与实际相结合起来,从理论中得出结论,然后再实践,从而提高自己的实际动手能力与独立思考问题的能力。在设计的过程中遇到了很多的问题,也发现了自己的缺乏之处。首先是之前对单片机并不十分了解,通过借阅书籍,找同学咨询慢慢的开场对其有了初步的认识。其次是

13、一些相关软件的用法,这个通过自己慢慢的摸索也逐渐熟悉了起来。特别是protues的使用,它给了我们很大的帮助,帮助我们解决了很多调试过程中的问题。在者是对PWM波的使用,这个问题很是伤到筋,因为之前对其并不了解,从熟悉到使用我们查阅了很多资料,请教了同学,最后终于掌握了。同时也是设计更完善。此课程设计让我加深理解了所学的理论知识,并进一步建立了计算机应用系统的整体概念,初步掌握了单片机软、硬件开发方法,为以后进展实际的单片机软、硬件应用开发奠定了良好的根底。这对下学期单片机的学习会有很大的帮助,也使我对单片机产生了兴趣。这次课程设计的顺利完成,离不开学长,同学和知道教师的帮助,特别是PWM波的

14、运用,也是学长给我们提出的建议。在此感谢教师与学长的无私帮助。附录一 参考文献1?单片机原理及其接口技术? 胡汉才 编著 北京:清华大学出版社2?MCS-51单片机原理及应用?张毅刚 编著 哈尔滨:哈尔滨工业大学出版社3?51单片机C语言应用程序设计 实例精讲?第二版 戴佳 刘博文 编著 电子工业出版社附录一 C语言程序清单/* 程序名:可控流水灯*/* 功能:实现流水灯的方向、速度、亮度控制 */* 硬件:P2接开关,P1接LED */#include#include sbit K1=P20; /方向sbit K2=P21; /加速sbit K3=P22; /减速sbit K4=P23; /

15、加亮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_Timer1(void);void delay(unsigned int x) unsigned char i; while(x-) for(i=0;i1) Spee

16、d=sTable-Idx;break;/加速 case 3:if(Idx=20) duty=20;break; /加亮 case 5:duty-;if(duty=0) duty=1; break; /变暗void main(void) unsigned char Key; P1=P2=0xFF; Idx=4; Speed=sTableIdx;IP=0x02; /中断优先级 InitTimer0_Timer1(); LED = 0xfe; P1 = LED; while(1) Key=GetKey(); if(Key!=0) KeyProcess(Key);/* 定时器0与定时器1初始化 */v

17、oid InitTimer0_Timer1(void) TMOD = 0x20; TH1 = 0x06; TL1 = 0x06; EA = 1; ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1;/* 定时器中断函数 */void timer0(void) interrupt 1 if(+tCountSpeed) return; tCount=0; if(Dirtect=1) LED = _cror_(LED,1); /循环右移1位,点亮下一个LED else LED=_crol_(LED,1); P1=LED;void Timer1(void) interrupt 3 /调节占空比 static char t=0;t+;if(t=20)t=0;P1=(0x00|LED);if(duty=t) P1=0xFF;第 14 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁