嵌入式 51单片机 流水灯原理详解
2017-01-25 00:06
253 查看
流水灯基本原理:
实验所需:语言:C 芯片:STC90C51 板子:51单片机
电路图(局部就是电阻和灯)
流水灯运作原理:STC90C51芯片通过操作导致指定引脚释放出高电平,所对应的灯接收到闭合电路产生电流导致LED等闪亮。
以上是8个灯的简单视图,要启动对应灯,必须在以上接口提供高电平且形成闭合电路
芯片操作:操作利用的是引脚4组随机一组,我使用的是P0口,通过烧写把代码烧进flash内存,代码如下:
#include <reg51.h> //导入库文件,芯片公司写好的库文件方便调用 void Delay10ms(unsigned int c); //延迟10MS void main() { while(1) { P0 = 0x00; //00000000 所有灯电平为低电平 Delay10ms(100); P0 = 0xff; //11111111 所有灯电平为高电平 Delay10ms(100); } } //通过循环的执行时间来延迟 void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } }
扩展例子:(运作->全灭->1~8灯暗顺序单个亮->最后全亮)
#include <reg51.h> void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; //00000000 Delay10ms(100); P0 = 0x01; //00000001 Delay10ms(100); P0 = 0x02; //00000010 Delay10ms(100); P0 = 0x04; //00000100 Delay10ms(100); P0 = 0x08; //00001000 Delay10ms(100); P0 = 0x08; //00001000 Delay10ms(100); P0 = 0x10; //00010000 Delay10ms(100); P0 = 0x20; //00100000 Delay10ms(100); P0 = 0x40; //01000000 Delay10ms(100); P0 = 0x80; //10000000 Delay10ms(100); P0 = 0xff; //11111111 Delay10ms(100); } } void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } }
解析:以上例子已经很清楚显示出来,1为高电平,0为低电平,通过高低搭配把电压输出到引脚而使LED流水灯发亮.
例如:用二进制表示八个灯情况,若只需要第3个灯亮 0000 0100 -> P0 = 0x04 二进制转换16进制输出
总结不好多多担待,文章只单纯个人总结,如不好勿喷,技术有限,有错漏麻烦指正提出。本人QQ:373965070
相关文章推荐
- 嵌入式 STL源码剖析---红黑树原理详解下
- 嵌入式 ARM9 S3C2451裸机 GPIO封装原理和代码实现(详解)
- 路由器原理和路由协议、算法详解(5)
- 臭探原理与反臭探技术详解
- 路由器原理和路由协议、算法详解(2)
- DDos原理***详解,防范及实例
- SMTP服务原理详解
- 一种简单的嵌入式字库设计及其实现原理
- 路由器原理和路由协议、算法详解(3)
- NetBios协议详解及网上邻居工作原理
- JNDI配置原理详解
- 第七个试验:流水灯数字显示综合练习----51单片机汇编语言试验教程
- 路由器原理和路由协议、算法详解(1)
- 嵌入式系统中LCD驱动的实现原理
- 拒绝服务***原理及解决方法详解
- 路由器原理和路由协议、算法详解(4)
- 嵌入式Linux应用程序开发详解