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,重新开始新一轮循环

相关推荐
余生皆假期-2 小时前
硬件基础知识补全【七】MOS 晶体管
单片机·嵌入式硬件
隔壁大炮3 小时前
【串口】USART模块的使用方法
单片机·嵌入式硬件·pid·江协科技
小野嵌入式4 小时前
3小时精通嵌入式串口通信!从零玩转ESP32+Modbus+OTA(1)
c语言·单片机·嵌入式硬件·mcu·物联网
钰珠AIOT5 小时前
连接电池的座子2端的电阻只有0.24欧,这个是断路吗,为什么?
单片机·嵌入式硬件·机器人
Hello_Embed6 小时前
Modbus 传感器开发:从寄存器规划到点表设计
笔记·stm32·单片机·学习·modbus
天天爱吃肉82186 小时前
【新能源商用车驱动电机整车运行状态电气性能全维度分析(附6图实战解读)】
嵌入式硬件·汽车
小龙报6 小时前
【51单片机】不止是调光!51 单片机 PWM 实战:呼吸灯 + 直流电机正反转 + 转速控制
数据结构·c++·stm32·单片机·嵌入式硬件·物联网·51单片机
送外卖的工程师6 小时前
STM32 驱动五线四相步进电机(28BYJ-48+ULN2003)教程
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·proteus
拉咯比哩6 小时前
江科大老学长 STM32 + FREERTOS 项目实践 教程资源汇总
stm32·单片机·嵌入式硬件
niuTaylor6 小时前
STM32内存管理深度解析:裸机与FreeRTOS的堆栈配置实战指南
stm32·单片机·嵌入式硬件