开启单片机

前言:

为未来拼搏的第n天,从单片机开始。

为什么要学习单片机呢,单片机的工作涉及范围及其广如:消费电子, 游戏机·音响**;**

工业控制: 机器人控制;医疗设备,通信设备,物联网等等。

前途大大滴!! 好好学吧。

本章节我们要了解的是51单片机。51单片机也是单片机中最简单的,最基础的,最好理解的。

PS 在学习单片机前还是要有一定的c语言基础的,模电数电可以边学单片机边学习,问题不大

一·原理图

学习51单片机需要了解他的原理图,才能更好的理解。

这是各个功能 模块的原理图

这是板子的真实摸样还有个lcd屏幕没有安装,也就是显示屏

引脚示意图

  • 电源引脚
    • VCC(引脚 40):主电源输入端,提供 + 5V 电压。
    • GND(引脚 20):接地端。
  • I/O 端口引脚
    • P0.0-P0.7(引脚 32-39):双功能端口,可作为通用 I/O 端口或地址 / 数据总线使用。当用作地址 / 数据总线时,需要外接上拉电阻。
    • P1.0-P1.7(引脚 1-8):通用双向 I/O 端口,每个引脚均可独立配置为输入或输出,内部提供上拉电阻。
    • P2.0-P2.7(引脚 21-28):通用双向 I/O 端口,也可用于扩展外部存储器的高 8 位地址。
    • P3.0-P3.7(引脚 10-17):通用双向 I/O 端口,同时具备复用功能,如 P3.0 为 RXD 串行输入端,P3.1 为 TXD 串行输出端,P3.2 为 INT0 外部中断请求 0 输入等。
  • 控制引脚
    • RST(引脚 9):复位输入端,高电平有效,保持两个机器周期的高电平可使单片机复位。
    • ALE/PSEN(引脚 29):地址锁存允许 / 程序存储使能信号,访问外部存储器时,ALE 用于锁存地址的低字节,PSEN 用于选通外部程序存储器。
    • EA/VPP(引脚 30):访问外部程序存储器信号,当 EA=1 时,优先访问内部程序存储器;当 EA=0 时,仅访问外部程序存储器。在 Flash 编程期间,此引脚也用于施加 12V 编程电源(VPP)。
  • 时钟引脚
    • XTAL1(引脚 19):反相振荡放大器的输入及内部时钟工作电路的输入。
    • XTAL2(引脚 18):反相振荡放大器的输出,外接晶振和电容构成时钟电路。

需要软件

编程软件:Keil C51 是常用的集成开发环境,它提供了 C 编译器、宏汇编、链接器、库管理和仿真调试器等完整的开发方案,可以方便地进行单片机的程序编写、编译和调试,支持 C 语言和汇编语言编程。

烧录软件:STC-ISP 它们都能实现将编译好的程序烧录到芯片中。

芯片推荐STC89C52。结构经典、资料海量、成本极低,是理解底层原理的理想起点。

入门内容

led灯的点亮 闪烁 独立按键控制,流水灯。

点亮:

cs 复制代码
#include <REGX52.H>
 
void main()
{
	P2=0x5d;
	while(1)
	{
		
	}
	
}

闪烁:

cs 复制代码
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{
	
	while(1)
	{
		P2=0xFE;
		Delay500ms();
		//Delay500us();
		P2=0xFF;
		Delay500ms();
	}
	
}

这里添加了延迟代码delay

这个函数自己可以编辑,也可以由stc提供

如下:

流水灯:

cs 复制代码
#include <REGX52.H>

void Delay1ms(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;

	while (xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
	
	
}


	void main()
{
	while(1)
	{
		
		P2=0xFE;
		Delay1ms(500);
		P2=0xFD;
		Delay1ms(500);
		P2=0xFC;
		Delay1ms(500);
		P2=0xFB;
		Delay1ms(500);
		P2=0xF7;//1110 1111
		Delay1ms(500);
		P2=0xEF;
		Delay1ms(500);
		P2=0xDF;
		Delay1ms(500);
		P2=0xCF;
		Delay1ms(500);
		P2=0xBF;
		Delay1ms(500);
		P2=0x7F;
		Delay1ms(500);
	}
	
}

按键控制:

cs 复制代码
#include <REGX52.H>

void main()
{
	while(1)
	{
		if (P3_0==0 || P3_1==0)//当按下键后亮灯 松开后就熄灭
		{
			P2_0=0;//亮
		}
		else//按下其他键无反应
		{
			P2_0=1;//灭
		}
 }
}

按键控制亮灭状态:

cs 复制代码
#include <REGX52.H>  // 包含STC89C52寄存器定义头文件

// 延时函数:精确延时x毫秒(12MHz晶振)
void Delay1ms(unsigned int xms)
{
    unsigned char i, j;
    while (xms)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);  // 内层循环延时
        } while (--i);   // 外层循环延时
        xms--;
    }
}

// 主函数
void main()
{
    while(1)  // 无限循环
    {
        if(P3_0 == 0)  // 检测按键按下(P3.0低电平)
        { 
            Delay1ms(30);            // 按下消抖延时30ms
            while(P3_0 == 0);         // 等待按键释放(阻塞式)
            Delay1ms(20);             // 释放消抖延时20ms
            
            P2_0 = ~P2_0;  // LED状态翻转(P2.0取反)
        }
    }
}

~是取反符号 状态取反

数码管显示

cs 复制代码
#include <REGX52.H>

unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39};
void shuma(unsigned char Loction,Number )
{
	switch(Loction)
	{
		case 1: P2_4=1;P2_3=1;P2_2=1;break;
		case 2: P2_4=1;P2_3=1;P2_2=0;break;
		case 3: P2_4=1;P2_3=0;P2_2=1;break;
		case 4: P2_4=1;P2_3=0;P2_2=0;break;
		case 5: P2_4=0;P2_3=1;P2_2=1;break;
		case 6: P2_4=0;P2_3=1;P2_2=0;break;
		case 7: P2_4=0;P2_3=0;P2_2=1;break;
		case 8: P2_4=0;P2_3=0;P2_2=0;break;

		
	}
	P0=table[Number];
}


void main()
{
	shuma(3,3);
	while(1)
	{
	}
}

可以更改shuma中的数子,位置,显示数字。

相关推荐
试着1 小时前
【huawei】机考整理
学习·华为·面试·机试
風清掦1 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
Purple Coder1 小时前
基于CNN对YBCO超导块材孔隙研究
学习
小龙报1 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业1 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
小武编程1 小时前
基于JL700N可视化SDK的MAC地址应用
c语言·tws耳机·杰理jl700n
Industio_触觉智能1 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][tty]sysrq
linux·笔记·学习
优橙教育1 小时前
通信行业四大热门岗位解析:谁才是数字时代的黄金赛道?
网络·学习·5g
czwxkn1 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件