硬件-DAY01(LED点灯、共阴极数码管)

一、硬件概念

1.俩大项:裸机 BSP(不带操作系统)、Linux驱动(带操作系统)
   四小项:51单片机(8051内核)、IMX6ULL、系统移植、驱动
2.CPU(中央处理单元) MCU(微控制器单元)soc(特殊的cpu)
3.P0(0x80)、P1(0x90)、P2(0xA0)、P3(0xB0)寄存器(系统提前定义好的全局变量)
        在数字电路中,用来存放二进制数据或代码的电路称为寄存器
        #define  P2 * ((unsigned char *)(0xA0))
                sfr P2 = 0xA0;   sfr是特殊功能寄存器

二、位运算
        1.~    &    |     ^    <<     >>
        2.reg  &=  ~((1 << n) | (1 << m))   指定位清零
           reg   |=   (1 << n)  |  (1 << m)   指定位置1
           reg  ^=  (1 << n) |  (1 << m)    指定位取反

三、RAM和ROM
        RAM:随机访问存储器、易失性存储器,(地址总线有8个端口,一共有256个字节)RAM中有128位、数据在RAM 中,保存后就会存到ROM中
        ROM:只读存储区、非易失性存储器
        hex文件都是一些代码或数据指令
        PC:程序计数器,在kernel中
        三级流水线:1.取指令  2.译码  3.执行

四、LED

        左边为负极,右边为正极,P2引脚这边为低电平时导通,灯亮。

流水灯:

#include <reg52.h>	    //register寄存器
#include "led.h"

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

int main(void)
{
	unsigned char i = 1;
	int n, k;
	init_led();
	while(1)
	{
//		P2 &= ~((1 << 0) | (1 << 3) | (1 << 6));
//		P2 |= (1 << 0) | (1 << 3) | (1 << 6);
//		P2 ^= 0XB6;
//		led_on(0x02);
//		delay(0X3FFF);
		for(n = 0; n < 7; ++n)
		{
			led_on(i);
			delay(0x8FFF);
			i <<= 1;			
		}
		for(k = 0; k < 7; ++k)
		{
			led_on(i);
			i >>= 1;
			delay(0x8FFF);							
		}
	}
}

四、数码管(共阴极数码管)

P0控制位选、P1控制段选(LEDS1、LEDS2、LEDS3、LEDS4)

        P1引脚处有NPN8050,最下面接地,若想要LEDS1导通,只需要让P10处为高电平就导通,可以把NPN这想象成阀门

        动态数码管:

#include<reg52.h>
#include "digiter.h"

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

int main(void)
{
//	unsigned char segs[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
	int i;
//	P1 |= (1 << 0);
//	P1 &= ~((1 << 1) | (1 << 2) | (1 << 3));
	bit_select(2);	
	while(1)
	{	
		for(i = 0; i <10; ++i)
		{		
			seg_select(i);
			delay(0xFFFF);
		}			
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值