51单片机----LED与数码管模块
1.单片机相关概念
裸机程序:所编写的代码直接操作硬件(即直接与HARD WARE 交互);
SOC:系统级芯片;
MCU: 微控制器:
MPU:媒体播放器;
GPU:图形处理器;
CPU:中央处理器;
外设寄存器:外设寄存器是计算机系统中,外设内部用于暂存数据、状态信息或控制指令的专用存储单元,是CPU与外设之间进行数据交互和命令通信的核心接口,其核心功能是实现CPU与外设之间的异步协调;
GPIO(通用输入输出):GPIO是微控制器或处理器上的一类通用引脚接口,可通过软件配置为输入或输出模式,用于与外部设备进行简单的数字信号交互;
补充在51单片机中int型只占2字节;
2.LED模块的使用
其低电平点亮;
eg:
#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:
#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);}
}