首页 > 编程知识 正文

c51单片机引脚功能(51单片机引脚功能图文)

时间:2023-05-04 13:56:58 阅读:75281 作者:472

通过学习单片机,我们可以更深入地认识我们周围常用电器的工作原理。 接下来,我将用管脚说明几种单片机常用管脚的功能

目录

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

二.数码管的使用

三.矩阵键盘的使用

四.液晶显示屏的补充

先附上一张stc89C52引脚图

光看大头针是不够的。 看看实物的照片吧

http://www.Sina.com/http://www.Sina.com /

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

这里,将比较简单的一、P1^0~7 对应八个二极管作为实例代码

# includereg 52.h # includeintrins.h//包含_crol_函数所在的头文件# defineuintunsignedint # defineucharunsignedcharvint //p1中的void main (定义要赋值的变量) { aa=0xfe; //初始值111111110while(1) { P1=aa; //点亮第一个灯光延迟ms (500 )//延迟500ms aa=_crol_(aa,1 )//aa循环左移一位,然后再移动aa}voiddelayms(uintXMS ) { uint i,j for(I=XMS; i0; i-- ) for(j=110; j0; j----; } 二级管的实物图如下

51单片机流水灯的实现

二、数码管的使用流水灯

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

下面是数码管的实物图

每次使用数字管时

在主函数中打开dula=P2^6 段选,然后发送wela=P2^7 位选信号,关闭位选择

然后打开位选,发送位选信号,关闭字段选择

段选

#includereg52.hsbit dula=P2^6; 声明//U1寄存器的锁存端,P2^6为bbdwdsbit wela=P2^7; //U2,表明P2^7是老挝凤凰城吗? main () {wela=1; //U2打开锁存端子P0=0xfe; 发送//位选择信号,决定哪个数码管发出wela=0光; //U2关闭锁存器dula=1; //bbdwdP0=0x5e; //0x06表示1,决定数码管显示哪个字符0~Fdula=0; wile(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 intsbit 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);}

 

代码显示效果

 

这个液晶显示屏不太明显,但还是能隐隐约约看到一些字母出现

 

以上这些便都是基础板的讲解

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。