51单片机笔记01

本文介绍了51单片机的IO口特性,包括P0口的无上拉电阻,上下拉电阻的作用,如驱动能力增强、限流和抗干扰。还讲解了单片机的基本概念,如单板机、单片机的区别,以及80C51系列的特性,如引脚封装、中断系统和串行通信。此外,讨论了静态和动态显示方式,数码管的控制,以及74H573锁存器和译码器的使用。最后提到了矩阵按键的扫描方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单片机IO口
在这里插入图片描述
51的P0口没有上拉电阻,P1P2P3口都有,若要输出高电平必须外部接一个上拉电阻。
强推挽输出是通过两个晶体管实现的
上拉电阻就是将不确定的信号通过一个电阻拉到高电平(实际是VCC接一个电阻),同时此电阻起到一个限流的作用,下拉就是下拉到低电平。
1、OC门(开漏输出的一个电路)要输出高电平,外部必须加上拉电阻。
2、加大普通IO口的驱动能力。
3、起到限流的作用。
4、抵抗电磁干扰。

上下拉电阻的选取原则
1、从降低功耗方面考虑应该足够大,因为电阻越大,电流越小。
2、从确保足够的引脚驱动能力考虑应该足够小,电阻越小,电流才能越大。
3、开漏输出时,过大的上拉电阻会导致信号上升沿变缓。
在这里插入图片描述
什么是单片机
1.单板机
将CPU芯片、存储器芯片、IO接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就
构成了一台单板微型计算机(简称单板机)。
2.单片机
在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机(体积比较小)。Intel公司推出了MCS-51系列单片机:集成8位CPU、4K字节ROM(只读存储器,断电不丢失数据,存储程序)、128字节RAM(随机存储器,断电丢失数据,存储变量)、4个8位并口1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

电平特性
数字电路中只有两种电平:高电平和低电平
高电平:5V或者3.3V,取决单片机电源。
低电平:0V
RS232电平:计算机串口的电平高电平:-12V
低电平:+12V
所以当我们用单片机跟电脑通信的时候,我们要通过各种元器件将单片机的电平转换为计算机可识别的电平才能跟电脑进行通信。

“异或”运算
必须不同,否则没有(0)
1^1=0;
1^0=1;
0^0=0;

80C51系列介绍
80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。当前常用的80C51系列单片机主要产品有:
Intel:80C31 、80C51、87C51,80C32、80C52、87C52等;
ATMEL:89C51、89C52、89C2051等;
Philips、华邦、Dallas 、STC、Siemens(Infineon)等公司的许多产品。

80C51引脚封装
(总线型)在这里插入图片描述
(非总线型)在这里插入图片描述
P3.0: RXD串行口输入
P3.1:TXD串行口输出
//上述两口一般用于串行通信和下载程序用
P3.2: INT0外部中断0输入
P3.3:INT1外部中断1输入
P3.4:T0定时器0外部输入
P3.5:T1定时器1外部输入
P3.6:WR外部写控制
P3.7:RD外部读控制

8051需要外部晶振提供时钟,通过三总线——DB数据总线,AB地址总线,CB控制总线控制。总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线;外部总线是指CPU与其它部件之间的连线,就是上述三种。

I/O口:四个8位并行I/O,既可用作输入,也可用作输出;
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统
一个全双工UART(通用异步接收发送器)的串行I/O,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。

机器周期和指令周期
(1)振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,此51开发板上为12MHZ。
(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。
(3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。
(4)指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成
MCS - 51系统中,有单周期指令、双周期指令和四周期指令。

sfr:特殊功能寄存器声明
sfr 变量名=地址值;
特殊功能寄存器一般在reg51.H这个头文件里面定义好。

sbit:特殊功能位声明
sbit 变量名=地址值;
在给某个引脚取名的时候经常会用到。

bit:位变量声明
用来定义位数据变量
例:
sfr SCON = 0X98;
sbit LED = P0^2;

stm32 是低电平复位,51是高电平复位

单片机最小系统
1.电源电路
2.复位电路
3.时钟电路
4.下载电路(CH340或MAX232)

//流水灯
#include "reg52.h"
#include "intrins.h"

#define led P2

typedef unsigned char u8;
typedef unsigned int u16;

void delay(u16 i){
   

while(i--);

}

void main(){
   
	int i=0;
	led=0xfe;
	delay(50000);
	while(1)
	{
   
		for(i=0;i<7;i++){
   
			led=_crol_(led,1);     //P2¿Ú 8¸öλ·Ö±ð½ÓÔÚled_0-led_7ÉÏ£¬0xfeµÈÓÚ1111 1110£¬Ã¿Òƶ¯Ò»Î»¾ÍÁÁÒ»¸öµÆ£¬ÇÒÆäËûµÆ¶¼Ï¨Ãð
			//_crol_º¯ÊýÊÇ×óÒÆº¯Êý,×î¸ßÎ»ÒÆ³öÈ¥ºó²»¶ªÆú¶øÊDz¹µ½×îµÍλ
			delay(50000);
		}
		for(i=0;i<7;i++){
   
			led=_cror_(led,1);     //P2¿Ú 8¸öλ·Ö±ð½ÓÔÚled_0-led_7ÉÏ£¬0xfeµÈÓÚ1111 1110£¬Ã¿Òƶ¯Ò»Î»¾ÍÁÁÒ»¸öµÆ£¬ÇÒÆäËûµÆ¶¼Ï¨Ãð
			//_cror_º¯ÊýÊÇÓÒÒÆº¯Êý£¬Ô­ÀíͬÉÏ
			delay(50000);
		}
		
	}

//其中_crol_与_cror_函数为循环左移、右移函数,最高位移出去后不丢弃而是补到最低位
//注意,c中不能中途定义变量,一定要在开头定义,否则会报错

数码管
LED显示器:
两种接法如下图所示
(1)共阴(阴极接在一起)
在这里插入图片描述
(2)共阳(阳极接在一起)
在这里插入图片描述
(开发板中使用的就是共阴数码管)
数码管示意图如下
在这里插入图片描述
由八个管组成,刚好对应八个位
使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。
数字显示就是让对应位置的数码管亮,根据示意图可以控制七个边的亮灭,从而达到显示数字的目的。注:位数读取从示意图的下方往上读,又因为是共阴且二极管朝向问题,对应位设置为1则该数码管亮,0则灭。
例如若要显示数字0,则对应十六进制0x3f,即0011 1111.

静态显示原理
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值