51单片机自学笔记引脚

51单片机引脚图

在这里插入图片描述

电源引脚

VCC(40)脚:电源输入,常压5V
GND(20脚):接地线

在这里插入图片描述

时钟引脚

XTAL1(19脚):片内振荡电路的输入端
XTAL2(18脚):片内振荡电路的输出端

8051 的时钟有两种方式,一种是片内时钟振荡方式,需在这两个脚外接石英晶体和振荡电容,振荡电容的值-般取10p~30p
另一种是外部时钟方式,
即将XTAL1接地,外部时钟信号从XTAL2脚输入。

在这里插入图片描述

控制引脚

RST(9脚):一单片机的复位引脚。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码, 通俗地讲,就是单片机从头开始执行程序。
PSEN(29脚):全称是程序存储器允许输出控制端。在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作,由于现在我们使用的单片机内部已经有足够大的ROM,所以几乎没有人再去扩展外部ROM,因此这个引脚大家只需了解即可。
①内部ROM读取时,PSEN 不动作。
②外部ROM读取时,在每个机器周期会动作两次。
③外部RAM读取时,两个PSEN脉冲被跳过不会输出。
④外接ROM时,与ROM的OE脚相接。
ALE/PROG(30脚):地址锁存允许信号
EANpp (31脚) - EA接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。EA接低电平时,单片机直接读取外部(ROM)。因为现在我们用的单片机都有内部ROM,所以在设计电路时此引脚始终接高电平

在这里插入图片描述

可编程输入/输出引脚

P0

P0口(39 脚~32脚) :双向8位三态I/O口,每个口可独立控制。51单片机PO口内部没有上拉电阻,为高阻状态,所以不能正常地输出高/低电平,因此该组I/O口在使用时务必要外接上拉电阻,一般我们选择接入10kQ的上拉电阻。

在这里插入图片描述

P1

P1口(1脚~8脚) :准双向8位IO口,每个口可独立控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。之所以称它为“准双向”是因为该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号,也就是要使其先有个“准”备的过程,所以才称为准双向口。对52单片机P1.0引脚的第二功能为T2定时器/计数器的外部输入,P1.1 引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。

在这里插入图片描述

P2

P2口(21脚~28脚) -准双向8位I/O口,每个口可独立控制,内带上拉电阻,与P1口相似。

在这里插入图片描述

P3

P3口(10脚~17脚)一准双向8位I/O口,每个口可独立控制,内带上拉电阻。作为第一功能使用时就当做普通I/O口,与P1口相似。值得强调的是,P3口的每一个引脚均可独立定义为第一功能的输入/输出或第
二功能。

在这里插入图片描述

在这里插入图片描述

部分文字和图片来自STC官方手册和51单片机教程(郭天祥版)

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数码管是一种常见的数字显示器件,可以用于显示各种数字、字母等字符。在单片机应用中,数码管通常用于显示计数器、计时器、温度、湿度等实时数据。 数码管的种类有很多,包括共阳数码管、共阴数码管、共阳共阴混合数码管等。其中,共阳数码管是最常见的一种,也是本文所涉及的数码管类型。 单片机控制数码管的原理是通过对数码管的各个管脚进行控制,使其显示相应的数字或字符。数码管的控制方式有两种,即静态显示和动态显示。 静态显示是指将要显示的数字或字符的每一位分别输出到数码管的每个管脚上,然后使其保持不变,从而实现显示效果。静态显示的缺点是需要使用大量的I/O口,且不能灵活地改变显示内容。 动态显示是指将要显示的数字或字符的每一位依次输出到数码管的每个管脚上,并在短时间内快速切换下一个数字或字符,从而形成连续的显示效果。动态显示的优点是可以使用较少的I/O口,且可以灵活地改变显示内容。 以下是一个简单的动态显示数码管的实现示例: 1. 定义数码管的引脚 ```c #define DIG_PORT P2 // 数码管位选端口 #define DIG_COM 0x00 // 数码管位选端口初始值 #define LED_PORT P0 // 数码管段选端口 ``` 2. 定义数码管显示的数字或字符 ```c unsigned char code ledChar[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; ``` 3. 实现数码管动态显示函数 ```c void display(unsigned char i) { unsigned char j, k; for (j = 0; j < 8; j++) { DIG_PORT = DIG_COM | (1 << j); // 选择数码管位(从左到右) for (k = 0; k < 100; k++); // 延时,视情况可调整 LED_PORT = ledChar[i]; // 显示数码管上的数字或字符 } } ``` 4. 调用数码管动态显示函数 ```c int main() { unsigned char i = 0; while (1) { display(i % 10); // 显示数字 i 的个位数 i++; } return 0; } ``` 以上就是一个简单的数码管动态显示的实现示例。需要注意的是,数码管的控制方式和具体实现方法可能因不同的硬件平台和编程语言而有所不同。因此,在具体应用中需要根据实际情况进行适当的调整和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值