51单片机实验课一

实验任务一:实现控制8个发光管的亮(灭)

复制代码
#include <REGX52.H>
void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms)
	{
		xms--;
	
		i = 12;
		j = 169;
	do
	{
		while (--j);
	} while (--i);
	}	
}
void main()
{
	while(1)
	{
		P2=0;//八个LED灯全亮
		Delay1ms(100);//延时100ms
		P2=1;//八个LED灯全灭
		Delay1ms(100);
	}
}

实验任务二:实现8位流水灯的效果

实验现象单片机从P2_0------P2_7逐个点亮LED(始终只有一个亮,呈现LED流水灯的形式)

直到P2_7的LED灯点亮之后再熄灭,P2_0的LED灯又点亮,如此循环往复

复制代码
#include <REGX52.H>
unsigned char i;
void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms)
	{
		xms--;
	
		i = 12;
		j = 169;
	do
	{
		while (--j);
	} while (--i);
	}
}
void main()
{
	P2=0xFE;
	while(1)
	{   
		for(i=0;i<8;i++)
		{
		Delay1ms(100);
		P2=P2<<1;
		P2=P2|0x01;
		Delay1ms(100);
	    }
		P2=0xFE;
	}
}

程序讲解:

在for循环中,让流水灯的程序循环八次

P2=P2<<1;

因为LED灯为共阳极,所以为低电平点亮,我们将P2端口数值左移一位,"<<"表示左移,"1"为移动的位数

P2=P2|0x01;

将P2端口的数值(8位)与00000001进行或运算,即给P2端口最低位补1

最后,P2=0XFE,让P2等于11111110,重新开始新一轮循环

相关推荐
2CM_Embed4 小时前
Altium Designer 原理图与 PCB 快速相互定位:Cross Probe 交叉探针
嵌入式硬件·pcb·altium designer·c2000
恒锐丰-罗生5 小时前
宽压大电流同步降压优选|CN3906 DC-DC 电源芯片,车载 / 工控 / IoT 全能供电方案
嵌入式硬件·硬件工程
happygrilclh8 小时前
STM32,串口单字节中断接受,每次上电后,会收到一个0x00的解决办法。
单片机·嵌入式硬件
智闲电子设计9 小时前
STM32 独立看门狗 IWDG 实战:系统跑飞,它来兜底复位
stm32·单片机·嵌入式硬件
zcmodeltech11 小时前
智能制造教学实训沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的工业机器人-智慧工厂-数字孪生全场景联动方案
数据库·stm32·嵌入式硬件·机器人·制造·多分类
程序员与背包客_CoderZ11 小时前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
嵌入式阿蔡12 小时前
HAL库 vs LL库 vs 寄存器:到底用哪个?
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
天空'之城13 小时前
单片机基础核心知识点汇总(三)
单片机·嵌入式硬件
嵌入式阿蔡14 小时前
CAN总线入门:从协议帧到STM32实战
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
恒锐丰科技韩生14 小时前
率能 SS8847E|2.7~15V 双通道 H 桥电机驱动 ETSSOP16 散热封装 家电 / 打印 / 舞台灯光专用
嵌入式硬件·硬件工程