普中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,而上面讲到的“!”运算只是对单一位进行运算。

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 固有数据类型说明符 别名

三、实验与学习阶段

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;
}

接线
在这里插入图片描述
说明:
我们在代码中使用的是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);
	}
}

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

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值