STC 89C52 单片机引脚功能详解及实例讲解

光看引脚是不够的,下面我们看看实物图是什么样子的

一、P1^0~7   对应八个二极管


二级管的实物图如下

从上往下 分别对应引脚中的 P1^0  ~ P1^7

这里就以一个比较简单流水灯作为实例代码

#include<reg52.h>

#include<intrins.h>//包含_crol_函数所在的头文件

#define uint unsigned int

#define uchar unsigned char

void delayms(uint);

uchar aa; //定义一个变量来给P1赋值

void main()

{

aa=0xfe;//赋初值11111110

while(1)

{

P1=aa;//点亮第一个灯

delayms(500);//延时500ms

aa=crol(aa, 1);//aa循环左移1位后再给aa

}

}

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i–)

for(j=110;j>0;j–);

}

如果有不懂的可以查看我的关于流水灯的博客

51单片机 流水灯的实现

二、数码管的使用


下面是数码管的实物图

dula=P2^6    段选

wela=P2^7  位选

每次要使用 数码管时

在主函数 中先打开位选,再送入位选信号,再关闭位选

然后再打开段选,输送段选信号,关闭段选

实例代码

#include<reg52.h>

sbit dula=P26;//申明U1寄存器的锁存端,P26是段锁

sbit wela=P27;//申明U2,P27是挝凰?

main()

{

wela=1; //打开U2锁存端

P0=0xfe;//送入位选信号,确定哪几个数码管发光

wela=0;//关闭U2锁存器

dula=1;//段锁

P0=0x5e;//0x06代表1,确定数码管显示哪些字符 0~F

dula=0;

while(1);

}

如果你不满足这段代码,可以看看我的这篇博客

51单片机开发中数码管显示与应用

三、矩阵键盘的使用


独立键盘,即最下面一排的键盘分别为S2、S3、S4、S5

分别对应S2—–P3^4

分别对应S3—–P3^5

分别对应S4—–P3^6

分别对应S5—–P3^7

光说是肯定不够的,要拿实际的东西出来才可以,

    我用红圈标记的地方就是s2 按键

下面就以这个简单的程序讲一下矩阵键盘的使用

#include<reg51.h>

sbit s2=P3^4; //采集按键状态,此时作为输入引脚

sbit led=P1^0; //此时作为输出引脚。

void delay(unsigned char p)

{

unsigned char m,n;

for(m=p;m>0;m–)

for(n=125;n>0;n–);

}

void main()

{

while(1)

{

if(s2==0)

{

delay(10); //消抖

if(s2==0)

{ while(!s2);//等待按键松开。

led=~led;

}

}

}

}

这段代码的实际作用,当你按下 s2 开关的时候,P1^0 所对应的二级管会变亮,当你再按下一次,二级管就会熄灭。

四、液晶显示补充


液晶显示器是额外的显示仪器,它有两种显示型号,它们分别是 1602  和 12864,我这里只有1602型号的,我就简要介绍一下1602  的型号b把

1602液晶显示(1602型的液晶屏只能显示32字符,两行,每行18个)

这是属于一个独立的区块,需要另外再加上单片机的y上

引脚对应功能

sbit lcden=P3^4; //对应液晶使能端

sbit lcdrs=P3^5; //液晶数据命令选择端

实例代码

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit rs=P3^5;

sbit lcden=P3^4;

sbit dula=P2^6;

sbit wela=P2^7;

uchar table1[]=“TX-51STAR MCU”;

uchar table2[]=“WWW.TXMCU.COM”;

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a–)

for(b=10;b>0;b–);

}

void delay1(uint x)

{

uint a,b;

for(a=x;a>0;a–)

for(b=100;b>0;b–);

}

void write_com(uchar com)

{

P0=com;

rs=0;

lcden=0;

delay(10);

lcden=1;

delay(10);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

本次面试答案,以及收集到的大厂必问面试题分享:

字节跳动超高难度三面java程序员面经,大厂的面试都这么变态吗?

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

本次面试答案,以及收集到的大厂必问面试题分享:

[外链图片转存中…(img-7TYZivaM-1713342125731)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

作者:普通网友

物联沃分享整理
物联沃-IOTWORD物联网 » STC 89C52 单片机引脚功能详解及实例讲解

发表回复