首页 > 其他分享 >单片机+数码管

单片机+数码管

时间:2023-11-22 13:59:01浏览次数:29  
标签:disp P2 P0 code 数码管 delay 单片机

利用8个数码管显示座位号+字母+学号后六位

  • 首先参考图
  • 参考程序
  • 可以了解到此程序实现了数码管显示OFF

  • 我们可以改的简单一点如下

#include "reg51.h" //引入块
unsigned char a_code[]{0x3f,0x71,0x00}; //共阴级数码管字段编码,我们选取重要的几个
unsigned char a_disp[]{16,0,1,1};//四位数码管的显示缓冲区,在不改编图中程序主体的情况下确定显示区域
  • 接下来我们加多一点8个灯

实现的效果如图,程序如下

#incldue "reg51.h"//引入块
unsigned char a_coddde[]={0x5b,0x76,0x5b,0x55b,0x3f,0x3f,0x6d,0x6d};//共阴级数码管字段编码,我们选取重要的几个
unsigned char a_disp[]={0,1,2,3,4,5,6,7,8};//四位数码管的显示缓冲区,在不改编图中程序主体的情况下确定显示区域
sbit WX1=P2^0;//定义数码管的位置和端口
sbit WX2=P2^1;
sbit WX3=P2^2;
sbit WX4=P2^3;
sbit WX5=P2^4;
sbit WX6=P2^5;
sbit WX7=P2^6;
sbit WX8=P2^7;
void delay(unsigned int xms);//延时子函数声明
//主函数
void main(void)
{
 while(1)
 {
  WX1=0;//点亮第一个数码管
  P0=a_code[a_disp[0]];//送第一个显示数字至P0
  delay(2);
  WX1=1;
  WX2=0;
  P0=a_code[a_disp[1]];
  delay(2);
  WX2=1;
  WX3=0;
  P0=a_code[a_disp[2]];
  delay(2);
  WX3=1;
  WX4=0;
  P0=a_code[a_disp[3]];
  delay(2);
  WX4=1;
  WX5=0;
  P0=a_code[a_disp[4]];
  delay(2);
  WX5=1;
  WX6=0;
  P0=a_code[a_disp[5]];
  delay(2);
  WX6=1;
  WX7=0;
  P0=a_code[a_disp[6]];
  delay(2);
  WX7=1;
  WX8=0;
  P0=a_code[a_disp[7]];
  delay(2);
  WX8=1;
  }
}
//下面是延时子函数
void delay(unsigned int xms)
{
 unsigned int i,j;
 for(i=xms,i>0,i--)
 for(j=102;j--);
}

下面分享一下:共阳极、共阴极数码管编码表

共阳极:

位选为高电平(即1)选中数码管,

各段选为低电平(即0接地时)选中各数码段。

    0xc0,//0
    0xf9,//1
    0xa4,//2
    0xb0,//3
    0x99,//4
    0x92,//5
    0x82,//6
    0xf8,//7
    0x80,//8
    0x90,//9
    0x88,//A
    0x83,//B
    0xc6,//C
    0xa1,//D
    0x86,//E
    0x8e, //F
    0x8c, //P
    0xc1,//U
    0x91,//Y
    0x7c,//L
    0x00,//全亮
    0xff  //熄灭

共阴极: 位选为低电平(即0)选中数码管,

各段选为高电平(即1接+5V时)选中各数码段。

    0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0x76,  //"H"
    0x38,  //"L"
    0x37,  //"n"
    0x3E,  //"u"
    0x73,  //"P"
    0x5C,  //"o"
    0x40,  //"-"
    0x00  //熄灭

标签:disp,P2,P0,code,数码管,delay,单片机
From: https://www.cnblogs.com/xkboi/p/17848836.html

相关文章

  • 《安富莱嵌入式周报》第327期:Cortex-A7所有外设单片机玩法LL/HAL库全面上线,分享三款GU
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 1、2023Hackaday大赛胸牌开源Vectorscope-main.zip(66.83MB)https://github.com/Hack-a-Day/Vectorscope前段时间分享后,好几个网友咨询这个胸牌有没有开源,搜到了开源地址......
  • 7段数码管绘制
    importturtle,datetimedefdrawLine(draw): turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)turtle.right(90)defdrawDigit(digit): drawLine(True)ifdigitin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdigitin......
  • 七段数码管绘制
    #22信计2向悦17号importturtle,datetime#3107defdrawGap():turtle.penup()turtle.fd(5)defdrawLine(draw): drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d): drawLine(Tr......
  • 七段数码管绘制
    importturtle,datetimedefdrawLine(draw):turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)turtle.right(90)defdrawDigit(d):drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,3,4,5,6,7,8,9......
  • 7段数码管绘制
    importturtle,datetimedefdrawGap():#绘制数码管间隔turtle.penup()turtle.fd(5)defdrawLine(draw):#绘制单段数码管drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d):#......
  • 7段数码管绘制
    7段数码管绘描述:画出系统时间。具体包括:年,月,日,小时,分,秒。python代码:importturtle,datetimedefdrawGap():#绘制数码管间隔turtle.penup()turtle.fd(5)defdrawLine(draw):#绘制单段数码管drawGap()turtle.pendown()ifdrawelseturtle.penup......
  • 7段数码管绘制
    importturtle,datetimedefdrawGap():#绘制数码管间隔turtle.penup()turtle.fd(5)defdrawLine(draw):#绘制单段数码管drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawD......
  • 七段数码管绘制|年月日时分秒
    代码展示: 运行结果:  ......
  • 51单片机实验2:静态数码管
    数码管介绍共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管,共阳极数码管在应用时将公共端接到+5V。共阴极数码管是指将所有发光二极管的阳极接到一起形成公共阴极的数码管,共阴极数码管在应用时将公共端接到GND。硬件设计74HC138译码器管脚说明真值表(低电平有......
  • 7段数码管绘制
    importturtle,datetimeimporttimedefdrawGap():turtle.penup()turtle.fd(5)defdrawLine(draw):drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d):drawLine(T......