51单片机学习 - 01

本文介绍了单片机的基础概念,包括MCS-51系列的51单片机,阐述了单片机的工作时序、I/O端口的使用,以及如何通过编程控制LED的亮灭和实现流水灯效果。同时,讲解了通过脉宽调制(PWM)调整LED亮度的基本原理,并给出了简单的示例代码。此外,还涉及了蜂鸣器的控制方法。
摘要由CSDN通过智能技术生成

单片机的概念

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

单片机工作的基本时序
(1)振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,我们开发板上为12MHZ。

(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的

(3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。

(4)指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。

MCS-51系统中,有单周期指令、双周期指令和四周期指令。

2.接受外部的控制,通过I/O来感受外部的电压。

3.51单片机总共有P0、P1、P2、P3四个8位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲器。4个I/O端口都能作输入输出口用。

STC89C52RC原理图
在这里插入图片描述

电亮一颗led

流水灯模块原理图
在这里插入图片描述
如图,2号脚VCC提供高电平。要想led灯点亮则需要拉低对应IO口的电平.
示例代码:

#include <reg52.h>

sbit led1 = P1^0;   //绑定led1到IO口 P10

int main()
{
    led1 = 1;
    return 0;
}

led流水灯

通过引用头文件 #include <intrins.h> 调用左移函数 _crol_() 或 右移函数 _cror_() 对整个P1口进行移位操作从而实现流水灯效果。
示例代码:

#include <reg52.h>
#include <intrins.h>

uchar temp; // led相关变量

//延时函数
void delay(unsigned char z) {
	unsigned char x, y;
	for (x = z; x > 0; x--)
	{
		for (y = 114; y > 0; y--);
	}
}

int main()
{
	temp = 0xfe;
	P1 = temp;
	while (1) {
		temp = _crol_(temp, 1);
		P1 = temp;
		delay(100);
	}
	return 0;
}

用法:
_crol_(移位变量, 移位数);

通过PWM调节led亮度

脉宽调制(PWM)的基本原理

控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等但宽度不一致的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率
在这里插入图片描述

示例程序涉及定时计数器内容,以后填坑。

蜂鸣器

蜂鸣器模块原理图

如图,蜂鸣器1脚接入PNP型三极管S8550,三极管S8550的Q1脚接入VCC。当IO口P23为低电平时三极管S8550饱和导通,蜂鸣器工作。
示例代码:

#include <reg52.h>

sbit beep = P2^3;   //绑定蜂鸣器到IO口 P23

//延时函数
void delay(unsigned char z) {
    unsigned char x, y;
    for (x = z; x > 0; x--)
    {
        for (y = 114; y > 0; y--);
    }
}

int main()
{
    while(1)
    {
        delay(500);
        beep = ~beep;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值