单片机技术课程设计--彩灯控制器的设计内容摘要:

LED 彩 灯 系统将暂停运行,全部的灯都被点亮; K7 弹起后,系统继续之前的运行状态。 8 第 4 章 软件设计 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的 LED 灯系统循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来控制发光二极管的亮 灭。 软件编程是多控制、多闪烁方式的 LED灯系统中的一个重要的组成部分,是本设计的重点和难点。 下面 ,我将 阐述多控制、多闪烁方式的 LED 灯系统是如何实现 16 个 LED 灯的循环点亮,来介绍实现流水灯控制的软件编程方法。 本设计是以单片机 AT89C51 为核心 控制 16 个发光二极管 4 种闪烁方式的变换。 硬件电路如图 附录 1 所示, 16 个发光二极管 D1- D16 分别接在单片机的 - 和 - 接口上。 当给 口输出 “ 0”时,发光二极管点亮, 当输出“ 1”时,发光二极管熄灭。 可以运用输出端口指令 MOV P0, A 或 MOV P0,# DATA,只要给累加器值或常数值 ,同理,其他 15 个 LED 的点亮和熄灭的方法同 LED1。 因此,要实现流水灯功能,我们只要将发光二极管 LED1~ LED16 依次点亮、熄灭, 16 只 LED 灯便会一亮一暗的成 流水灯了。 在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时 间,否则我们就看不到闪烁效果。 主程序设计 主 程序设计流程如图 7 所示。 判断有无按键按下 Y N 开始 当 K1K5 有键按下时 返回主程序重复查询 调用对应的子程序 图 7 主 程序流程 图 9 在系统的程序设计中, 主控模块只负责根据消息调用相应模块的处理函数,具体如何处理这些消息由各功能模块中的对应 程序 决定。 程序启动时跳转到键盘判断模块程序中,此程序里面包含 K1~ K5 的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应按键的彩灯显示的花型模块。 对应的主程序代码如下: MAIN: SETB IT0 SETB EX0 SETB EA MOV P1,0FFH MOV A,P1 AUTO: JB ,S1 LCALL K1 S1: JB ,S2 LCALL K1 S2: JB ,S3 LCALL K2 S3: JB ,S4 LCALL K3 S4: JB ,MAIN LCALL K4 LJMP MAIN 自动模式 程序 设计 要实现通过一个按钮在自动模式和手动模式间切换的功能,首先想到的便是调用各个按键子程序。 但若不对程序进行适当的修改,按键按下后将一直调用第一个彩灯显示子程序,因而只能 显示一种花型,无法实现自动循环显示四种花型。 因此,我对每个彩灯显示子程序中都作了一定的修改。 对应的源代码如下: K1: „„ JNB ,K2 LJMP MAIN K2: „„ JNB ,K3 LJMP MAIN K3: „„ JNB ,K4 LJMP MAIN K4: „„ LJMP MAIN 如此,当自动按键按下时,系统跳到子程序 K1,显示完第一种花型后,只要 按键还是按下的,系统便会跳到子程序 K2,显示第二种花型„„以此类推,这样,便实现了自动模式与手动模式间的切换。 10 延时程序设计 由于人眼的视觉暂 留效应以及单片机执行每条指令的时间很短, 在控制二极管亮灭的时候 为了 看 到闪烁效果,应该延时一段时间。 延时子程序代码: DELAY: JNB ,DE1 MOV R5,5 LJMP DE2 DE1: MOV R5,10 DE2 MOV R6,200 DE3: MOV R7,126 DE4: DJNZ R7,DE4 DJNZ R6,DE3 DJNZ R5,DE2 RET 本文除了实现基本的延时功能外,还有通过按键来选择不同的闪烁频率的功能。 不接通 K6 时, 为高电平, 延时时间为 , 当 K6 按下时, 变为低电平, 延时时间为1s,实现了在不同闪烁频率间的切换。 中断子程序设计 为了实现暂停功能,需利用单片机的外部中断实现。 当有中断请求即 K7 按下时,系统跳入中断服务子程序。 在中断服务子程序中,首先关中断,再将 ACC 和 PSW 的值压入堆栈, 实现现场保护,然后再进行中断处理,即点亮所有的 LED 彩灯。 只要 K7 是接通的,彩灯就一直点亮,只有当取消中断请求时,系统才能跳转到原来的程序中继续运行。 中断服务子程序代码: INT: CLR EA PUSH ACC PUSH PSW MOV A,R5 PUSH ACC LOOP: MOV P0,00H MOV P2,00H JB ,LOOP1 SJMP LOOP LOOP1: MOV P0,0FFH MOV P2,0FFH POP ACC MOV R5,A POP PSW POP ACC SETB EA RETI 11 第 5 章 仿真与性能分析 系统仿真过程 PROTEUS 软件自带编辑器,可以实现对汇编程序的编译,其操作步骤是: ① 新建源文件:点菜单 Source→Add/Remove source Files 在出现的对话框中,选择ASEM51 编辑器,新建 .asm 源文件。 ② 程序设计:点菜单 Source→.asm 打开源文件编 辑器,将 将附录程序 输入到文本中。 ③ 源程序编译:点菜单 Source→Build ALL 编译汇编源程序,生成目标代码文件 .HEX,若编译失败,可对程序进行修改调试直至编译成功。 ④ 目标代码加载:在 PROTEUS 编辑环境双击 AT89C51,弹出如图 8 所示的对话框,在 PROGRAM FILE 一栏中单击打开按钮,选中 .HEX 文件。 在 CLOCK FREQUENCY 栏中设置系统工作频率为 12MHZ,单击 OK 完成目标代码加载。 ⑤ 最后,点击运行按钮,启动系统仿真。 图 8 程序代码加 载 仿真结果与分析 系统上电 自动 复位,彩灯全灭 , K1 接通后,彩灯首先依次点亮,然后再四种颜色各点 12 亮 1 盏、 2 盏„„ 其结果如图 9 所示。 K2 接通后,序号为奇数的彩灯首先依次点亮,再反向点亮序号为偶数的彩灯,接着全部的彩灯闪烁两次。 其仿真结果如图 10 所示。 K3 接通后, P0 口和 P2 口分别顺次点亮彩灯,然后蓝色和绿色的彩灯全部点亮,再把红色和黄色的灯也全部点亮。 其仿真结果如图 11 所示。 K4 接通后, P0 口从最低位开始点亮 1 盏、 2 盏、 3 盏彩灯, P2 口从最高位开始点亮 1盏、 2 盏、 3 盏彩灯,然后彩灯全部点亮,再反过来 P0 口从最高位开始点亮 1 盏、 2 盏 、 3盏彩灯, P,2 口从最低位开始点亮 1 盏、 2 盏、 3 盏彩灯,最后全部点亮又全部熄灭。 其仿真结果如图 12 所示。 K5 为自动与手动的切换按键, K5 接通时,系统自动重复显示这四种花型。 K6 为切换延时时间的按键, K6 接通时,彩灯闪烁变慢。 K7 为暂停按键, K7 接通时,不管系统在何种状态运行,彩灯都会全部点亮, 再次按下 K7,系统跳转到原来的程序继续执行。 X T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .01P 1 .12P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 /R D17P 3 .6 /W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 /A 821P 2 .1 /A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1A T 8 9 C5 1P RO G RA M = .. \. .\ .. \. .\ K e il\C5 1 \E x a m p le s \8 0 5 1 L E D \5 .H E XD5L E D R E DD6L E D R E DD7L E D R E DD8L E D R E DR23 0 0R33 0 0R43 0 0R53 0 0R63 0 0R73 0 0R83 0 0R93 0 0R 1 81 0 kD1L E D B L U ED2L E D B L U ED3L E D B L U ED4L E D B L U ER 1 03 0 0R 1 13 0 0R 1 23 0 0R 1 33 0 0R 1 43 0 0R 1 53 0 0R 1 63 0 0R 1 73 0 0D9L E D G RE E ND 1 0L E D G RE E ND 1 1L E D G RE E ND 1 2L E D G RE E ND 1 3L E D Y E L L O WD 1 4。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。