【51单片机】数码管的静态显示

数码管的静态显示

  1. 锁存引脚高电平表示直通状态,为低电平表示锁存状态
  2. 段锁存定位显示数字,位锁存定位用哪段数码管
  3. 12M的晶振接两个30pf的电容,6M的晶振接20pf的电容
  4. 三态:高电平,低电平,高阻态
  5. 51单片机P123都有上拉电阻,P0没有,是准双向IO口,要写1才能作为输入,准双向,无高阻的浮空状态,有两个mos管串接,既可开漏输出,又可以高阻的浮空输出。上拉电阻的作用是形成压差,增大电流。
  6. 锁存端是高电平的时候,输入端和输出端是直通的;低时输入端和输出端都打开

    只显示一个数字

#include<reg52.h>
sbit duxu=P2^6;//段选锁存器
sbit wexu=P267;//位选锁存器
void main()
{    
    wexu=1;//连通位选锁存器
    P0=0xfe;//选择位  
    wexu=0;//关闭位选锁存器 
    
    duxu=1;//打开段选锁存器 
    P0=0x06;//显示数字1   
    duxu=0;//关闭段选锁存器   
    while(1);
}

让所有数码管都从0闪到F

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duxu=P2^6;//段选锁存器
sbit wexu=P2^7;//位选锁存器
uchar num;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//编码表 code用数组

void delay(uint z);

void main()
{
	wexu=1;
	P0=0xc0;//所有数码管都亮
	wexu=0;
    while(1)
	{
		for(num=0;num<16;num++)
		{
			duxu=1;//打开段选
			P0=table[num];//每个数字都显示一遍
			duxu=0;//关闭段选
			delay(1000);//延时一秒
		}
	}
}

void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

版权声明:本文为CSDN博主「JoeyGer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_63113276/article/details/122631117

数码管的静态显示

  1. 锁存引脚高电平表示直通状态,为低电平表示锁存状态
  2. 段锁存定位显示数字,位锁存定位用哪段数码管
  3. 12M的晶振接两个30pf的电容,6M的晶振接20pf的电容
  4. 三态:高电平,低电平,高阻态
  5. 51单片机P123都有上拉电阻,P0没有,是准双向IO口,要写1才能作为输入,准双向,无高阻的浮空状态,有两个mos管串接,既可开漏输出,又可以高阻的浮空输出。上拉电阻的作用是形成压差,增大电流。
  6. 锁存端是高电平的时候,输入端和输出端是直通的;低时输入端和输出端都打开

    只显示一个数字

#include<reg52.h>
sbit duxu=P2^6;//段选锁存器
sbit wexu=P267;//位选锁存器
void main()
{    
    wexu=1;//连通位选锁存器
    P0=0xfe;//选择位  
    wexu=0;//关闭位选锁存器 
    
    duxu=1;//打开段选锁存器 
    P0=0x06;//显示数字1   
    duxu=0;//关闭段选锁存器   
    while(1);
}

让所有数码管都从0闪到F

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duxu=P2^6;//段选锁存器
sbit wexu=P2^7;//位选锁存器
uchar num;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//编码表 code用数组

void delay(uint z);

void main()
{
	wexu=1;
	P0=0xc0;//所有数码管都亮
	wexu=0;
    while(1)
	{
		for(num=0;num<16;num++)
		{
			duxu=1;//打开段选
			P0=table[num];//每个数字都显示一遍
			duxu=0;//关闭段选
			delay(1000);//延时一秒
		}
	}
}

void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

版权声明:本文为CSDN博主「JoeyGer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_63113276/article/details/122631117

生成海报
点赞 0

JoeyGer

我还没有学会写个人说明!

暂无评论

相关推荐

蓝桥杯国赛,省赛经验总结(单片机组)

大一到大二,我依次获得了蓝桥杯大赛的省二,省一,国三。这一路走来我也是不断地在总结经验,力求下次做得更好,可惜“下次”不多了。 接下来我将总结蓝桥杯单片机组的比赛经验&#xf