51单片机----LED与数码管模块

1.单片机相关概念

裸机程序:所编写的代码直接操作硬件(即直接与HARD WARE 交互);

SOC:系统级芯片;

MCU: 微控制器:

MPU:媒体播放器;

GPU:图形处理器;

CPU:中央处理器;

外设寄存器:外设寄存器是计算机系统中,外设内部用于暂存数据、状态信息或控制指令的专用存储单元,是CPU与外设之间进行数据交互和命令通信的核心接口,其核心功能是实现CPU与外设之间的异步协调;

GPIO(通用输入输出):GPIO是微控制器或处理器上的一类通用引脚接口,可通过软件配置为输入或输出模式,用于与外部设备进行简单的数字信号交互;

补充在51单片机中int型只占2字节;

2.LED模块的使用

其低电平点亮;

eg:

cs 复制代码
#include <reg52.h>
 void delay(unsigned int n)
 {
 	while(n)
	{
	   n--;
	}
 }

void led_all_on(void)
{
	P2 = 0;
}

void led_all_off(void)
{
	P2 = 0xff;
}

void led_on(unsigned char n)
{
	P2 = ~n;
}

int main(void)
{
	led_all_off();
	//P2 &= ~((1 << 1) | (1 << 3) |(1 << 5));
	//P2 |= (1 << 0) | (1 << 2) |(1 << 4) | (1 << 6);
	while(1)
	{	
		int i = 0;
		while(i < 8)
		{
			led_on(1 << i);
			++i;
			delay(20000);
		}
		
		i = 7;

		while(--i)
		{
			led_on(1 << i);
		  	delay(20000);
		}
	}
}

3.数码管模块的使用

高电平点亮

eg:

cs 复制代码
#include <reg52.h>

 void delay(unsigned int n)
 {
 	while(n)
	{
	   n--;
	}
 }

void bit_select(int n)
{
 	P1 &= ~((0x0F << 0));
	P1 |= (1 << n);
}

void segment_select(int n)
{
  unsigned char t[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
  P0 = t[n];
  delay(500);  //确保数码管导通
  P0 = 0;
  delay(100);  //消影
}

void show_number(int n)
{
	int t = 0;
	if(n > 9999)
	{
		return;
	}
	if(0 == n)
	{
	 	 bit_select(0);
		 segment_select(0);
	}

	while(n)
	{
		bit_select(t++);
		segment_select(n % 10);
		n /= 10;
	}
}

int main(void)
{
	bit_select(0);

	while(1)
	{
		show_number(1234);
	}
}
相关推荐
Rousson21 小时前
硬件学习笔记--93 静电防护方案(电阻、磁珠、电感、TVS等)
笔记·单片机·学习
happyhappy没有句号1 天前
嵌入式单片机一套通关学习笔记
笔记·单片机·嵌入式硬件·学习
悠哉悠哉愿意1 天前
【嵌入式学习笔记】工程模板建立
笔记·嵌入式硬件·学习
d111111111d1 天前
STM32外设基地址与寄存器偏移地址的深度解析
笔记·stm32·单片机·嵌入式硬件·学习
无聊到发博客的菜鸟1 天前
使用STM32对SD卡进行性能测试
stm32·单片机·rtos·sd卡·fatfs
许商1 天前
【stm32】cmake脚本(一)
stm32·单片机·嵌入式硬件
polarislove02141 天前
8.1 时钟树-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
染予1 天前
对开漏输出的理解
单片机·嵌入式硬件
风行男孩1 天前
stm32基础学习——OLED显示屏的基本使用
stm32·嵌入式硬件·学习