快捷搜索:  汽车  科技

单片机八个数码管怎么连线(讲解单片机四位数码管)

单片机八个数码管怎么连线(讲解单片机四位数码管)Qx:并行输出引脚9脚:串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit数据整体后移,并接受新的bit(从SER输入)。10脚:MR 低电平时,清空移位寄存器中已有的bit数据,一般不用,接高电平即可。

想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。我们在开发板上可以看到数码管这个元器件,它的主要作用就是显示数字,下面我们就来看一下它具体的引脚功能。

单片机八个数码管怎么连线(讲解单片机四位数码管)(1)

四位数码管模块(74HC595)的使用

单片机八个数码管怎么连线(讲解单片机四位数码管)(2)

14脚:DS(SER),串行数据输入引脚

13脚:OE,输出使能控制脚,它是低电平有效,需要我们接GND

12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。

11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit数据整体后移,并接受新的bit(从SER输入)。

10脚:MR 低电平时,清空移位寄存器中已有的bit数据,一般不用,接高电平即可。

9脚:串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。

Qx:并行输出引脚

以下是我们要注意的几个知识点。

当芯片资料上面的引脚说有横线时,属于低电平工作。否则高电平工作;

共阳数码管如果要点亮,对应的引脚需要给1,

共阴数码管如果要点亮,对应的引脚需要给0,

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!

#include"reg51.h"unsignedcharcodeLED_0F[]={0xC0 0xF9 0xA4 0xB0 0x99 0x92 0x82 0xF8 0x80 0x90 0x8C 0xBF 0xC6 0xA1 0x86 0xFF 0xbf};//共阳数码管码表unsignedcharcodesmgduan[17]={0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f 0x77 0x7c 0x39 0x5e 0x79 0x71};//显示0~F的值//-----------------------------------------------------------------------------//函数原形定义#define uchar unsigned char#define uint unsigned int//能够使用unsigned char //unsigned int尽量使用最原始的变量类型名字voidmain(void);//主函数voidLED4_Display(void);// LED数码管显示voidLED_OUT(ucharX);// LED数码管单字节串行移位函数unsignedcharcodeLED_0F[];// LED字模表/*端口引脚定义*/sbitDIO=P1^0;//串行数据输入sbitRCLK=P1^1;//时钟脉冲信号――上升沿有效sbitSCLK=P1^2;//打入信号――――上升沿有效//-----------------------------------------------------------------------------//全局变量unsignedcharLED[8];//用于LED的8位显示缓存

//*****************************************************************************//主程序//voidmain(void){

LED[0]=9;

LED[1]=0;

LED[2]=8;

LED[3]=5;

while(1)

{

LED4_Display();

}}

// LED数码管显示函数voidLED4_Display(void){

unsignedcharcode*led_table;//查表指针unsignedchari;

//显示第1位led_table=LED_0F LED[0];

i=*led_table;

LED_OUT(i);

LED_OUT(0x01);//0x01显示在第一位

RCLK=0;

RCLK=1;

//显示第2位led_table=LED_0F LED[1];

i=*led_table;

LED_OUT(i);

LED_OUT(0x02);//0x02显示在第2位

RCLK=0;

RCLK=1;

//显示第3位led_table=LED_0F LED[2];

i=*led_table;

LED_OUT(i);

LED_OUT(0x04);//0x04显示在第3位

RCLK=0;

RCLK=1;

//显示第4位led_table=LED_0F LED[3];

i=*led_table;

LED_OUT(i);

LED_OUT(0x08);//0x08显示在第4位

RCLK=0;

RCLK=1;}

// LED数码管单字节串行移位函数voidLED_OUT(unsignedcharnumber){

unsignedchari;

for(i=8;i>=1;i--)

{

if(number&0x80)

{

DIO=1;

}

else

{

DIO=0;

}

number<1;

SCLK=0;

猜您喜欢: