单片机流水灯程序
更多
以下是一个使用8051单片机的流水灯程序,采用C语言编写(使用Keil C51编译器),并附带详细注释:
#include <reg51.h> // 包含8051单片机寄存器定义头文件
#include <intrins.h> // 包含左、右移位函数_crol_和_cror_的头文件
void delay(unsigned int t) { // 延时函数,t越大延时越长
unsigned int i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 120; j++);
}
void main() {
P1 = 0xFE; // 初始灯状态:1111 1110(P1.0的LED亮)
while(1) { // 无限循环
// >>> 左移流水效果(向高位流动)
for(int i = 0; i < 7; i++) {
P1 = _crol_(P1, 1); // 左移1位(低位补高位)
delay(500); // 延时约0.5秒
}
// >>> 右移流水效果(向低位流动)
for(int i = 0; i < 7; i++) {
P1 = _cror_(P1, 1); // 右移1位(高位补低位)
delay(500); // 延时约0.5秒
}
}
}
硬件连接说明(Proteus仿真参考):
- 单片机型号:AT89C51
- LED连接:
- 8个LED负极连接到P1口(P1.0-P1.7)
- LED正极通过220Ω限流电阻连接至Vcc
- 原理:当P1口输出低电平(0)时,对应LED点亮
程序功能:
- 初始状态:P1.0的LED亮(
0xFE = 1111 1110) - 左移流水:LED点亮位置从P1.0依次移动到P1.7(视觉上的向左流动)
- 右移流水:LED点亮位置从P1.7依次移回P1.0(视觉上的向右流动)
- 循环重复上述过程
调整效果:
- 修改流动速度:改变
delay(500)中的参数(值越大越慢) - 修改流动方向:调换
_crol_和_cror_的顺序 - 单灯变多灯:将初始值改为
0xFC(1111 1100)可实现双灯流水
注意:使用实物开发板时,请确保:
- 单片机时钟频率设置为12MHz
- LED与IO口之间串联220Ω限流电阻
- P1口工作模式为推挽输出(部分新型单片机需配置引脚模式)
这个程序在Proteus仿真和实际开发板上均可运行,如需Hex文件下载到单片机,请在Keil中编译生成。
如何对基于单片机的流水灯进行仿真
单片机的仿真实验——流水灯和逐一闪烁灯(输入与输出)在进行仿真实验前必须先装了软件,一个是单片机仿真软件(ISIS 7 Professional
2021-11-25 06:54:36
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机