51单片机学习笔记2 — 单灯控制及流水灯

学习了最小系统电路后,从最基本的LED控制开始入手,也就是输出控制


LED控制和流水灯

      • 1.LED仿真电路绘制
      • 2.Keil 51工程创建
      • 3.LED单灯编程
      • 4.LED单灯仿真
      • 5.LED流水灯编写
        • 1.位输出操作
        • 2.移位方式
        • 3.循环移位

1.LED仿真电路绘制

LED就不展开介绍了,二极管单向导通电能转换光能,直接上原理图,可以看到LED灯D1连接在51单片机P1.0引脚

51单片机学习笔记2 -- 单灯控制及流水灯
单个LED的接线按照原理图如下进行仿真电路绘制,注意LED的朝向(LED阳极接限流电阻R2,阴极接芯片引脚P1.0)
51单片机学习笔记2 -- 单灯控制及流水灯
新建一个文件夹以存放工程文件,Keil新建工程
51单片机学习笔记2 -- 单灯控制及流水灯
选择工程对应的处理芯片,找到Atmel的AT89C52,除了和STC89C52复位电平不同外,其他基本一样
51单片机学习笔记2 -- 单灯控制及流水灯
创建好的工程列表如下
51单片机学习笔记2 -- 单灯控制及流水灯
右键工程目录,添加main.c到工程目录中(添加方式可双击main.c直接添加或选中main.c点add添加)
51单片机学习笔记2 -- 单灯控制及流水灯
用 位寄存器定义LED引脚变量名,在main函数中对LED赋值高低电平进行点亮LED和关闭LED的操作

勾选工程编译输出hex文件,不管是仿真电路运行,还是将程序下载到开发板上,都需要hex文件,勾选后重新编译一次工程,会发现工程文件夹多了个hex文件

51单片机学习笔记2 -- 单灯控制及流水灯
开启电路仿真,可以发现LED点亮一会儿就灭了(如果把仿真电路LED的限流电阻改小,LED亮起的时候亮度会更亮,仿真电路可以将电阻改小以加强视觉效果,但现实电路不建议这么做,还是需要串联1个1k左右的电阻做限流)
51单片机学习笔记2 -- 单灯控制及流水灯

1.位输出操作

最偷懒式的流水灯程序编写,其实也就是将单灯点亮代码copy成8个灯,一直在while(1)里面循环(8个灯都需要单独定义位寄存器变量名),如下

仿真现象如下

51单片机学习笔记2 -- 单灯控制及流水灯

3.循环移位

在51的函数库中,还有这么一个函数,能令一个16进制数一直旋转左移,如果让这个一直旋转左移的16进制数赋值给P1端口,那么也能让LED灯带产生流水灯效果,先来看看代码是怎么写的

来源:GenCoder

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月5日
下一篇 2022年1月5日

相关推荐