STC 89C52 单片机引脚对应的功能以及实例讲解

img
img

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

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

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

#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–);

img
img

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

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

[外链图片转存中…(img-nYYQxGGt-1715906763963)]
[外链图片转存中…(img-NIbXwuvO-1715906763963)]

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

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值