STC 89C52 单片机引脚对应的功能以及实例讲解,2024年最新从不一样的角度描述物联网嵌入式开发事件传递

132 阅读4分钟

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

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

实例代码

#include<reg52.h>

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

sbit wela=P2^7;//申明U2,P2^7是挝凰?

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

lcden=0;

}

void write_date(uchar date)

{

P0=date;

rs=1;

lcden=0;

delay(10);

lcden=1;

delay(10);

lcden=0;

}

void init()

{

dula=0;

wela=0;

write_com(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口

delay(20);

write_com(0x0f); //显示模式设置

delay(20);

write_com(0x06); //显示模式设置:光标右移,字符不移

delay(20);

write_com(0x01); //清屏幕指令,将以前的显示内容清除

delay(20);

}

void main()

{

uchar a;

init();

write_com(0x80+17); //将第一个字符写在向右偏移17个字符处,为后面的由右向左划入做准备。

delay(20);

for(a=0;a<13;a++)

{

write_date(table1[a]);

delay(20);

}

write_com(0xc0+17);

delay(50);

for(a=0;a<13;a++)

{

write_date(table2[a]);

delay(40);

}

for(a=0;a<16;a++)

{

write_com(0x18); //左移

delay1(600);

}

while(1);

}

代码显示效果 这个液晶显示屏不太明显,但还是能隐隐约约看到一些字母出现 以上这些便都是基础板的讲解

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。 img img

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

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!