• 普中51单片机 A6


    一、前言

    1.1 先认识一下这个块板子

    在这里插入图片描述

    1.2 板载资源

    在这里插入图片描述

    1.3 使用

    1.3.1 CH340 驱动安装

    1.3.2 程序的烧录

    在下载程序前先确认下开发板上的 USB 转 TTL 串口模块上的 J39 和 J44 端子短接片是否短接好(即 P31T 与 URXD 连接,P30R 与 UTXD 连接)
    在这里插入图片描述

    1.4 51单片机介绍

    STC89Cxx 芯片介绍我国芯片技术的快速发展,宏晶公司推出的增强型 51 单片机STC89Cxx/STC90Cxx 等系列更受大众喜爱,除内部资源及功能大大增强外,还有一个非常重要的是它支持 ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器或专用仿真器。宏晶公司推出的 51 芯片种类非常多,我们只需选择一款经典的学习即可

    • STC–表示芯片为 STC 公司生产的产品,其他公司的也有 AT、i、SST 等
    • 8–表示该芯片为 8051 内核芯片
    • 9–表示内部含有 Flash EEPROM 存储器,还有如 80C51 中 0 表内部含有MaskROM(掩模 ROM)存储器;如 87C51 中 7 表示内部含有 EPROM(紫外线可擦除ROM)存储器。
    • C–表示该器件为 CMOS 产品。还有如 89LV52 和 89LE58 中的 LV 和 LE 都表示该芯片为低电压产品(通常为 3.3V 电压供电);而 89S52 中 S 表示该芯片含有可串行下载功能的 Flash 存储器,即具有 ISP 可在线编程功能。
    • 5–固定不变。
    • 2–表示该芯片内部程序存储(FLASH)空间大小,1 为 4KB,2 为 8KB,3 为
      12KB,即该数乘以 4KB 就是芯片内部的程序存储空间大小。程序空间大小决定了一个芯片所能装入执行代码的多少。一般来说,程序存储空间越大,芯片价格也越高,所以我们再选择芯片的时候要根据自己需求选择合适芯片。

    二、数字电路与C语言基础

    2.1 电平特性

    单片机是一种数字集成芯片,数字电路中只有两种电平:高电平和低电平
    我们暂时定义单片机输出与输入为 TTL 电平,其中高电平为+5V,低电平为 0V。计算机的串口为 RS232 电平,其中高电平为-12V,低电平为+12V。这里强调的是,RS232C 电平为负逻辑电平,大家不要认为上面是我写错了。因此当计算机与单片机之间要通信时, 需要依靠电平转换芯片,比如 MAX232 电平转换芯片。
    TTL 电路和 CMOS 电路的逻辑电平关系如下:
    ①VOH:逻辑电平 1 的输出电压。
    ②VOL:逻辑电平 0 的输出电压。
    ③VIH:逻辑电平 1 的输入电压。
    ④VIL:逻辑电平 0 的输入电压。
    TTL 电平临界值:
    ①VOHmin=2.4V,VOLmax=0.4V。
    ②VIHmin=2.0V,VILmax=0.8V。
    CMOS 电平临界值(假设电源电压为+5V):
    ①VOHmin=4.99V,VOLmax=0.01V。
    ②VIHmin=3.5V,VILmax=1.5V。
    TTL 和 CMOS 的逻辑电平转换:CMOS 电平能驱动 TTL 电平,但 TTL 电平不能驱动 CMOS 电平,需加上拉电阻。

    2.2 二进制中运算

    2.2.1 & 与运算

    与”运算是实现“必须都有,否则就没有”这种逻辑关系的一种运算。C 语言中运算符为“&”,其运算规则如下:0&0=0,0&1=0(1&0=0),1&1=1。
    C 语言中“&&”表示“按位与”运算,意思是变量之间按二进制位数对应关系一一进行“与”运算。如(0101 0101)&&(1010 1010)=0000 0000,而上面讲到的“&”运算只是对单一位进行运算

    2.2.2 | 或运算

    或”运算是实现“只要其中之一有就有”这种逻辑关系的一种运算。C 语言中运算符为“|”,其运算规则如下:0|0=0,0|1=1(1|0=1),1|1=1。
    C 语言中“||”表示“按位或”运算,意思是变量之间按二进制位数对应关系一一进行“或”运算。如(0101 0101)||(1010 1010)=1111 1111,而上面讲到的“|”运算只是对单一位进行运算

    2.2.3 非运算

    非”运算是实现“求反”这种逻辑关系的一种运算。C 语言中运算符为“!”,其运算规则如下:!0=1!1=0
    C 语言中“”表示“按位取反”运算。如~0101 0101=1010 1010,而上面讲到的“!”运算只是对单一位进行运算。
    
    • 1
    • 2

    2.3 C51中的基础知识

    C 语言数据类型:
    在这里插入图片描述
    单片机的 C 语言中常用的基本数据类型如下
    在这里插入图片描述
    大家在 C 语言的书籍上还能看到有 short int,long int,signed short int 等数据类型,在单片机的 C 语言中我们默认的规则如下:short int 即为 int, long int 即为 long,前面若无 unsigned 符号则一律认为是 signed 型。
    C51 扩充数据类型
    在这里插入图片描述
    在 C51 中,为了增加程序的可读性,允许用户为系统固有的数据类型说明符用 typedef 起别名,格式如下

    typedef c51 固有数据类型说明符 别名
    
    • 1

    三、实验与学习阶段

    3.1 点亮第一个LED

    GPIO概念
    GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51 单片机芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。不过 GPIO 最简单的应用还属点亮 LED 灯了,只需通过软件控制 GPIO 输出高低电平即可。当然 GPIO 还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。
    在这里插入图片描述
    Led简介
    LED 即发光二极管。它具有单向导电性,通过 5mA 左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般我们控制在 3 mA-20mA 之间,通常我们会在 LED 管脚上串联一个电阻,目的就是为了限制通过发光二极管的电流不要太大,因此这些电阻又可以称为“限流电阻”。当发光二极管发光时,测量它两端电压约为 1.7V,这个电压又叫做发光二极管的“导通压降发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。直插式发光二极管长脚为阳极,短脚为阴极。仔细观察贴片式发光二极管正面的一端有彩色标记,通常有标记的一端为阴极。
    查看开发板上的电路设计
    在这里插入图片描述
    分析
    中 LED 采用共阳接法,即所有 LED 阳极管脚接电源 VCC,阴极管脚通过一个 470 欧的限流电阻接到J19以及J18端子上,要让 LED 发光即对应的阴极管脚应该为低电平,若为高电平则熄灭。
    代码

    #include "reg52.h"
    sbit LED1 = P2^0; 
    void main(){
    	LED1 = 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接线
    在这里插入图片描述
    说明:
    我们在代码中使用的是p20针脚,说以我们只能接p20针脚,然后我们的LED灯可以接J19j18任意的针脚,接哪哪亮,因为led都是共阳极嘛!
    在这里插入图片描述
    代码解析
    简单不解析了

    3.2 LED 闪烁实验

    如果要实现 LED 闪烁,只需循环让 D1 指示灯先亮一会后熄灭。

    #include "reg52.h"
    // 对系统默认数据类型进行重命名 
    typedef unsigned int u16;
    sbit LED1 = P2^0; 
    void delay(u16 ten){
    	while(ten--);
    }
    void main(){
    	while(1){
    		LED1 = 0;
    		delay(5000);
    		LED1 = 1;
    		delay(5000);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    接线和上一个一实验室一样的不需要变化,将程序烧录进去我们直接看效果:
    请添加图片描述
    代码解析
    与上个实验相比,我们增加了一个延时函数,我们就说一下这个延时函数,这个函数无非就是进入了一个while循环,来占用cpu,就是让cpu一直在个while循环内一直循环ten次,这样就起到了延时的作用,还有一个问题就是我们看到这个ten是一个u16类型,u16是个什么类型呢?其实这个u16不是 C 语言数据类型关键字,这是我们重定义的数据类型使用关键字 typedef 对系统默认数据类型 unsigned int 和 unsigned char 重新命名,主要是方便我们代码的书写和变量类型的查看。u16 即代表该变量是16 位的无符号整型数据,u8 代表该变量是 8 位的无符号字符型数据。

  • 相关阅读:
    基于安卓android微信小程序的好物分享系统
    java毕业设计网站SSM版学生选课系统[包运行成功]
    Putty连接登录Linux .ppk
    【剑指 Offer】62. 圆圈中最后剩下的数字
    集群节点状态监控和flink作业监控
    计算机网络 交换机的安全配置
    postgresql|数据库|序列Sequence的创建和管理
    微型微控制器托管双直流/直流升压转换器
    【Qt常用关键字知识拓展】
    css实现垂直上下布局的两种常用方法
  • 原文地址:https://blog.csdn.net/qq_38318622/article/details/126241071