单片机八个数码管怎么连线(讲解单片机四位数码管)
单片机八个数码管怎么连线(讲解单片机四位数码管)Qx:并行输出引脚9脚:串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit数据整体后移,并接受新的bit(从SER输入)。10脚:MR 低电平时,清空移位寄存器中已有的bit数据,一般不用,接高电平即可。
想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。我们在开发板上可以看到数码管这个元器件,它的主要作用就是显示数字,下面我们就来看一下它具体的引脚功能。
四位数码管模块(74HC595)的使用
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;