收藏 分享(赏)

LED流水灯设计-电子设计结业论文.doc

上传人:hwpkd79526 文档编号:9156356 上传时间:2019-07-25 格式:DOC 页数:14 大小:288.50KB
下载 相关 举报
LED流水灯设计-电子设计结业论文.doc_第1页
第1页 / 共14页
LED流水灯设计-电子设计结业论文.doc_第2页
第2页 / 共14页
LED流水灯设计-电子设计结业论文.doc_第3页
第3页 / 共14页
LED流水灯设计-电子设计结业论文.doc_第4页
第4页 / 共14页
LED流水灯设计-电子设计结业论文.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、1电子设计结业论文课程设计实验报告实验课题 LED 霓虹灯设计 姓名 学号 班级 指导老师 2目 录第一章 设计概述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源程序清单113第一章 设计概述1.1 设计任务设计内容:利用汇编语言(或 C 语言) ,实现 8 个单色 LED 灯的左、右循环显示,并实现循环的速度可调。选用芯片

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

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

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

5、 序 存 储 器 和 256 bytes 的 随 机 存 取 数 据 存 储 器( RAM) , 器 件 采 用 ATMEL 公 司 的 高 密 度 、 非 易 失 性 存 储 技 术 生 产 , 兼 容标 准 MCS-51 指 令 系 统 , 片 内 置 通 用 8 位 中 央 处 理 器 和 Flash 存 储 单 元 ,功 能 强 大 的 AT89C52 单 片 机 可 为 您 提 供 许 多 较 复 杂 系 统 控 制 应 用 场 合 。AT89C52 有 40 个 引 脚 , 32 个 外 部 双 向 输 入 /输 出 ( I/O) 端 口 , 同 时 内含 2 个 外 中 断 口

6、, 3 个 16 位 可 编 程 定 时 计 数 器 ,2 个 全 双 工 串 行 通 信 口 , 2个 读 写 口 线 。AT89C52 的 内 部 结 构 图 如 下 :5引 脚 图 如 下 :引 脚 功 能 说 明 :P0 口 : P0 口 是 一 组 8 位 漏 极 开 路 型 双 向 I/O 口 , 也 即 地 址 /数 据 总线 复 用 口 。 作 为 输 出 口 用 时 , 每 位 能 吸 收 电 流 的 方 式 驱 动 8 个 TTL 逻 辑门 电 路 , 对 端 口 P0 写 “1”时 , 可 作 为 高 阻 抗 输 入 端 用 。 访 问 外 部 数 据 存储 器 或 程

7、序 存 储 器 时 , 这 组 口 线 分 时 转 换 地 址 ( 低 8 位 ) 和 数 据 总 线 复 用 ,在 访 问 期 间 激 活 内 部 上 拉 电 阻 。 在 Flash 编 程 时 , P0 口 接 收 指 令 字 节 , 而 在 程 序 校 验 时 , 输 出 指 令 字节 , 校 验 时 , 要 求 外 接 上 拉 电 阻 。 P1 口 : P1 是 一 个 带 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P1 的 输 出 缓6冲 级 可 驱 动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 端 口 写 “1”, 通过 内

8、部 的 上 拉 电 阻 把 端 口 拉 到 高 电 平 , 此 时 可 作 输 入 口 。 作 输 入 口 使 用 时 ,因 为 内 部 存 在 上 拉 电 阻 , 某 个 引 脚 被 外 部 信 号 拉 低 时 会 输 出 一 个 电 流 (IIL)。与 AT89C51 不 同 之 处 是 , P1.0 和 P1.1 还 可 分 别 作 为 定 时 /计 数 器 2 的 外部 计 数 输 入 ( P1.0/T2) 和 输 入 ( P1.1/T2EX) , 参 见 表 1。 Flash 编 程 和 程 序 校 验 期 间 , P1 接 收 低 8 位 地 址 。 表 .P1.0 和 P1.1

9、的 第 二 功 能 P2 口 : P2 是 一 个 带 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P2 的 输 出缓 冲 级 可 驱 动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻 辑 门 电 路 。 对 端 口 P2 写“1”, 通 过 内 部 的 上 拉 电 阻 把 端 口 拉 到 高 电 平 , 此 时 可 作 输 入 口 , 作 输 入 口 使用 时 , 因 为 内 部 存 在 上 拉 电 阻 , 某 个 引 脚 被 外 部 信 号 拉 低 时 会 输 出 一 个 电 流(IIL)。 在 访 问 外 部 程 序 存 储 器 或 16 位 地 址 的 外

10、 部 数 据 存 储 器 ( 例 如 执 行MOVX DPTR 指 令 ) 时 , P2 口 送 出 高 8 位 地 址 数 据 。 在 访 问 8 位 地 址的 外 部 数 据 存 储 器 ( 如 执 行 MOVX RI 指 令 ) 时 , P2 口 输 出 P2 锁 存 器的 内 容 。 Flash 编 程 或 校 验 时 , P2 亦 接 收 高 位 地 址 和 一 些 控 制 信 号 。 P3 口 : P3 口 是 一 组 带 有 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 。 P3 口 输出 缓 冲 级 可 驱 动 ( 吸 收 或 输 出 电 流 ) 4 个 TTL 逻

11、辑 门 电 路 。 对 P3 口 写 入“1”时 , 它 们 被 内 部 上 拉 电 阻 拉 高 并 可 作 为 输 入 端 口 。 此 时 , 被 外 部 拉 低 的P3 口 将 用 上 拉 电 阻 输 出 电 流 ( IIL) 。 P3 口 除 了 作 为 一 般 的 I/O 口 线 外 ,更 重 要 的 用 途 是 它 的 第 二 功 能 。引 脚 号 功 能 特 性P1.0 T2, 时 钟 输 出P1.1 T2EX( 定 时 /计数 器 2)7P3 口 还 接 收 一 些 用 于 Flash 闪 速 存 储 器 编 程 和 程 序 校 验 的 控 制 信 号 。 RST: 复 位 输

12、入 。 当 振 荡 器 工 作 时 , RST 引 脚 出 现 两 个 机 器 周 期 以 上 高电 平 将 使 单 片 机 复 位 。 ALE/PROG: 当 访 问 外 部 程 序 存 储 器 或 数 据 存 储 器 时 , ALE( 地 址 锁存 允 许 ) 输 出 脉 冲 用 于 锁 存 地 址 的 低 8 位 字 节 。 一 般 情 况 下 , ALE 仍 以时 钟 振 荡 频 率 的 1/6 输 出 固 定 的 脉 冲 信 号 , 因 此 它 可 对 外 输 出 时 钟 或 用 于 定时 目 的 。 要 注 意 的 是 : 每 当 访 问 外 部 数 据 存 储 器 时 将 跳 过

13、 一 个 ALE 脉 冲 。对 Flash 存 储 器 编 程 期 间 , 该 引 脚 还 用 于 输 入 编 程 脉 冲 ( PROG) 。 如有 必 要 , 可 通 过 对 特 殊 功 能 寄 存 器 ( SFR) 区 中 的 8EH 单 元 的 D0 位 置 位 ,可 禁 止 ALE 操 作 。 该 位 置 位 后 , 只 有 一 条 MOVX 和 MOVC 指 令 才 能 将ALE 激 活 。 此 外 , 该 引 脚 会 被 微 弱 拉 高 , 单 片 机 执 行 外 部 程 序 时 , 应 设 置ALE 禁 止 位 无 效 。 PSEN: 程 序 储 存 允 许 ( PSEN) 输

14、出 是 外 部 程 序 存 储 器 的 读 选 通 信 号 ,当 AT89C52 由 外 部 程 序 存 储 器 取 指 令 ( 或 数 据 ) 时 , 每 个 机 器 周 期 两 次PSEN 有 效 , 即 输 出 两 个 脉 冲 。 在 此 期 间 , 当 访 问 外 部 数 据 存 储 器 , 将 跳 过两 次 PSEN 信 号 。 EA/VPP: 外 部 访 问 允 许 。 欲 使 CPU 仅 访 问 外 部 程 序 存 储 器 ( 地 址 为0000HFFFFH) , EA 端 必 须 保 持 低 电 平 ( 接 地 ) 。 需 注 意 的 是 : 如 果 加 密位 LB1 被 编

15、程 , 复 位 时 内 部 会 锁 存 EA 端 状 态 。 如 EA 端 为 高 电 平 ( 接Vcc 端 ) , CPU 则 执 行 内 部 程 序 存 储 器 中 的 指 令 。 Flash 存 储 器 编 程 时 , 该 引 脚 加 上 +12V 的 编 程 允 许 电 源 Vpp, 当 然 这必 须 是 该 器 件 是 使 用 12V 编 程 电 压 Vpp。 XTAL1: 振 荡 器 反 相 放 大 器 的 及 内 部 时 钟 发 生 器 的 输 入 端 。 XTAL2: 振 荡 器 反 相 放 大 器 的 输 出 端 。2.4 硬件连接框图单片机从开关上提取不同输入信号,进行相应

16、的软件操作,反映输出在发光二极管上。82.5 设计连线本实验的连线为:开关使用唐都试验箱上的 5 个开关,分别接到单片机的P2.0P2.4 口,然后发光二极管分别接到单片机的 P1.0P1.7 口。2.6 实验仿真电路图第三章软件设计方案3.1 软件设计思想开关输入AT89C52单片机流水灯9一个完整的系统仅有硬件是不够的,还要有软件的配合。软件和硬件对一个系统来说都是不可或缺的。本实验采用 C 语言编程,在具体设计中,通过GetKey()函数来不停的扫描开关的状态,通过 KeyProcess()来确定输入的信号,即按键的位置,从而执行不同的子程序内容,实现 LED 灯的控制。3.2 程序流程

17、图10第四章 调试及运行结果通过设计和编写程序代码,讲程序通过 Keil 软件编译后生成的 hex 文件写进 AT89C52 中,便可操作。为当拨动相应的开关时,看 LED 灯的变化。调试过程中问题很多,主要原因是对单片机结构的不熟悉,其次就是程序中的一些问题。但通过努力,都被一一解决。实际接线前我们先用 protues 仿真了一下实验结果,确认无误后接线,这样提高了调试的时间。第五章 心得体会经过四次的上机课程设计,在我和*同学的共同努力下,顺利的完成了任务,并在其中体现了自己的独创部分。同时我感觉自己学到了很多。首先是要把理论和实际相结合起来,从理论中得出结论,然后再实践,从而提高自己的实

18、际动手能力和独立思考问题的能力。在设计的过程中遇到了很多的问题,也发现了自己的不足之处。首先是之前对单片机并不十分了解,通过借阅书籍,找同学咨询慢慢的开始对其有了初步的认识。其次是一些相关软件的用法,这个通过自己慢慢的摸索也逐渐熟悉了起来。特别是 protues 的使用,它给了我们很大的帮助,帮助我们解决了很多调试过程中的问题。在者是对 PWM 波的使用,这个问题很是伤到筋,因为之前对其并不了解,从熟悉到使用我们查阅了很多资料,请教了同学,最后终于掌握了。同时也是设计更完善。此课程设计让我加深理解了所学的理论知识,并进一步建立了计算机应用系统的整体概念,初步掌握了单片机软、硬件开发方法,为以后

19、进行实际的单片机软、硬件应用开发奠定了良好的基础。这对下学期单片机的学习会有很大的帮助,也使我对单片机产生了兴趣。这次课程设计的顺利完成,离不开学长,同学和知道老师的帮助,特别是PWM 波的运用,也是学长给我们提出的建议。在此感谢老师和学长的无私帮助。11附录一 参考文献1单片机原理及其接口技术 胡汉才 编著 北京:清华大学出版社2MCS-51 单片机原理及应用张毅刚 编著 哈尔滨:哈尔滨工业大学出版社351 单片机 C 语言应用程序设计 实例精讲 (第二版) 戴佳 刘博文 编著 电子工业出版社附录一 C 语言程序清单/*/* 程序名:可控流水灯 */* 功能:实现流水灯的方向、速度、亮度控制

20、 */* 硬件: P2 接开关,P1 接 LED */*/#include#include 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,

21、350; /调速表void InitTimer0_Timer1(void);void delay(unsigned int x)unsigned char i;while(x-) for(i=0;i1) Speed=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_Ti

22、mer1();LED = 0xfe;P1 = LED;while(1)Key=GetKey();if(Key!=0) KeyProcess(Key);13/*/* 定时器 0 和定时器 1 初始化 */*/void InitTimer0_Timer1(void)TMOD = 0x20;TH1 = 0x06;TL1 = 0x06;EA = 1;ET0 = 1;TR0 = 1;ET1 = 1;TR1 = 1;/*/* 定时器中断函数 */*/void timer0(void) interrupt 1if(+tCountSpeed) return;tCount=0;if(Dirtect=1) LED = _cror_(LED,1); /循环右移 1 位,点亮下一个 LEDelse 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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报