2026/5/21 1:09:24
网站建设
项目流程
建设银行手机银行官方网站,福建龙岩昨天发生的新闻,网络销售推广公司,做网站需要什么许可证51单片机_数码管显示
在51单片机的应用中#xff0c;数码管显示是一项基础且常见的功能。数码管能够显示数字和一些字符#xff0c;通过内部的发光二极管(LED)来实现。根据公共端的不同#xff0c;数码管分为共阳极和共阴极两种类型。在共阴极数码管中#xff0c;所有LED的…51单片机_数码管显示在51单片机的应用中数码管显示是一项基础且常见的功能。数码管能够显示数字和一些字符通过内部的发光二极管(LED)来实现。根据公共端的不同数码管分为共阳极和共阴极两种类型。在共阴极数码管中所有LED的阴极连接在一起而阳极则分别通过不同的引脚控制。要点亮特定的LED只需在相应的阳极引脚上提供高电平信号。数码管字符编码表共阴/共阳对照字符共阴极段码(HEX)共阳极段码(HEX)说明二进制显示(abcdefg dp)数字00x3F0xC0数字00011 1111 / 1100 000010x060xF9数字10000 0110 / 1111 100120x5B0xA4数字20101 1011 / 1010 010030x4F0xB0数字30100 1111 / 1011 000040x660x99数字40110 0110 / 1001 100150x6D0x92数字50110 1101 / 1001 001060x7D0x82数字60111 1101 / 1000 001070x070xF8数字70000 0111 / 1111 100080x7F0x80数字80111 1111 / 1000 000090x6F0x90数字90110 1111 / 1001 0000大写字母A0x770x88字母A0111 0111 / 1000 1000C0x390xC6字母C0011 1001 / 1100 0110E0x790x86字母E0111 1001 / 1000 0110F0x710x8E字母F0111 0001 / 1000 1110G0x3D0xC2字母G0011 1101 / 1100 0010H0x760x89字母H0111 0110 / 1000 1001I0x060xF9字母I0000 0110 / 1111 1001J0x1E0xE1字母J0001 1110 / 1110 0001L0x380xC7字母L0011 1000 / 1100 0111O0x3F0xC0字母O0011 1111 / 1100 0000P0x730x8C字母P0111 0011 / 1000 1100S0x6D0x92字母S0110 1101 / 1001 0010U0x3E0xC1字母U0011 1110 / 1100 0001Y0x660x99字母Y0110 0110 / 1001 1001小写字母b0x7C0x83小写b0111 1100 / 1000 0011c0x580xA7小写c0101 1000 / 1010 0111d0x5E0xA1小写d0101 1110 / 1010 0001h0x740x8B小写h0111 0100 / 1000 1011n0x540xAB小写n0101 0100 / 1010 1011o0x5C0xA3小写o0101 1100 / 1010 0011r0x500xAF小写r0101 0000 / 1010 1111t0x780x87小写t0111 1000 / 1000 0111u0x1C0xE3小写u0001 1100 / 1110 0011y0x6E0x91小写y0110 1110 / 1001 0001特殊字符-0x400xBF减号/负号0100 0000 / 1011 1111.0x800x7F小数点1000 0000 / 0111 1111_0x080xF7下划线0000 1000 / 1111 01110x480xB7等号0100 1000 / 1011 0111空格0x000xFF全灭0000 0000 / 1111 1111全亮0xFF0x00所有段亮1111 1111 / 0000 0000普中51开发板使用的是两个4位的共阴极数码管详细介绍如下74HC138译码器简介作用节省单片机I/O口//这里结合两张图片一起介绍// P2_4 1;P2_3 1;P2_2 1; 控制LED8// P2_4 1;P2_3 1;P2_2 0; 控制LED7// P2_4 1;P2_3 0;P2_2 1; 控制LED6// P2_4 1;P2_3 0;P2_2 0; 控制LED5// P2_4 0;P2_3 1;P2_2 1; 控制LED4// P2_4 0;P2_3 1;P2_2 0; 控制LED3// P2_4 0;P2_3 0;P2_2 1; 控制LED2// P2_4 0;P2_3 0;P2_2 0; 控制LED1数码管静态显示#includeREGX52.HvoidDelay(unsignedintxms);//数码管段码表unsignedcharNixieTable[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数码管显示子函数voidNixie(unsignedcharLocation,Number){switch(Location)//位码输出{case1:P2_41;P2_31;P2_21;break;case2:P2_41;P2_31;P2_20;break;case3:P2_41;P2_30;P2_21;break;case4:P2_41;P2_30;P2_20;break;case5:P2_40;P2_31;P2_21;break;case6:P2_40;P2_31;P2_20;break;case7:P2_40;P2_30;P2_21;break;case8:P2_40;P2_30;P2_20;break;}P0NixieTable[Number];//段码输出}voidmain(){Nixie(1,6);//在数码管的第1位置显示6while(1){}}// 延时1msvoidDelay(unsignedintxms)//12.000MHz{unsignedchari,j;while(xms){i2;j239;do{while(--j);}while(--i);xms--;}}// 现象数码管的第1位置显示6让数码管数字动起来0 ~ 9 循环显示#includeREGX52.HvoidDelay(unsignedintxms);//数码管段码表unsignedcharNixieTable[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数码管显示子函数voidNixie(unsignedcharLocation,Number){switch(Location)//位码输出{case1:P2_41;P2_31;P2_21;break;case2:P2_41;P2_31;P2_20;break;case3:P2_41;P2_30;P2_21;break;case4:P2_41;P2_30;P2_20;break;case5:P2_40;P2_31;P2_21;break;case6:P2_40;P2_31;P2_20;break;case7:P2_40;P2_30;P2_21;break;case8:P2_40;P2_30;P2_20;break;}P0NixieTable[Number];//段码输出}voidmain(){unsignedchari;while(1){for(i0;i9;i){Nixie(1,i);//在数码管的第1位置显示6Delay(1000);}}}// 延时1msvoidDelay(unsignedintxms)//12.000MHz{unsignedchari,j;while(xms){i2;j239;do{while(--j);}while(--i);xms--;}}数码管动态显示看似同时点亮的多个数字背后是一场精密的“视觉骗局”。动态扫描是解决多位独立数码管显示时节省I/O口、降低功耗的核心技术。其本质是利用人眼的视觉暂留效应Persistence of Vision和数码管的余晖特性通过快速轮流点亮每个数码管使其在宏观上看起来像是同时稳定显示。单片机通过循环执行以下步骤实现动态显示关闭所有位选进行消隐防止切换时的“鬼影”下面的例子采用关闭段选方式实现消影具体介绍见最后。输出段码将当前位要显示的数字如‘3’对应的段码如共阴0x4F送到段选线。打开当前位选接通当前位数码管的公共端使其点亮。短暂延时保持点亮约1-5ms。切换至下一位重复上述步骤点亮下一个数码管。当整个循环的扫描频率高于50Hz即所有数码管轮流点亮一遍的时间小于20ms时人眼就无法分辨其闪烁会认为所有数码管在稳定、同时发光。优点极大节省单片机I/O口和硬件成本。缺点程序设计稍复杂且每个数码管实际是间歇发光亮度低于静态驱动。简单来说动态扫描就像一位敏捷的灯光师在几盏灯之间飞速切换因为速度极快在你的眼睛看来所有灯都是常亮的。这是嵌入式显示设计中一项经典而高效的资源优化技术。#includeREGX52.H//数码管段码表unsignedcharNixieTable[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//延时子函数voidDelay(unsignedintxms){unsignedchari,j;while(xms--){i2;j239;do{while(--j);}while(--i);}}//数码管显示子函数voidNixie(unsignedcharLocation,Number){switch(Location)//位码输出{case1:P2_41;P2_31;P2_21;break;case2:P2_41;P2_31;P2_20;break;case3:P2_41;P2_30;P2_21;break;case4:P2_41;P2_30;P2_20;break;case5:P2_40;P2_31;P2_21;break;case6:P2_40;P2_31;P2_20;break;case7:P2_40;P2_30;P2_21;break;case8:P2_40;P2_30;P2_20;break;}P0NixieTable[Number];//段码输出Delay(1);//显示一段时间P00x00;//段码清0消影}voidmain(){while(1){Nixie(1,1);//在数码管的第1位置显示1// Delay(20);Nixie(2,2);//在数码管的第2位置显示2// Delay(20);Nixie(3,3);//在数码管的第3位置显示3// Delay(20);}}// 段选决定显示内容,位选决定数码管// 共阴极数码管,段选高电平点亮// P00x00; //段码清0消影// 这段的原理是把段选全部置零(关闭所有二极管),达到消影目的这是通过关闭段选来实现消影效果但我实践发现依旧存在重影现象(不严重)如果想要关闭位选需要对74HC138译码器进行操作使用74HC138关闭所有位选即让所有输出端无效核心在于控制其使能端。对于共阴极数码管电路这会使所有数码管的公共阴极断开从而达到完全消影和关闭的目的。74HC138有三个使能引脚它们是控制芯片是否工作的总开关G2A和G2B低电平有效 (L)G1高电平有效 (H)芯片只有同时满足G10,G2A0,G2B1时才会根据地址输入(A,B,C)进行译码输出。破坏这三个条件中的任意一个芯片即被禁用所有输出端(Y0-Y7)将变为高电平。对于共阴极数码管位选有效信号是低电平0。当74HC138所有输出为高电平1时没有任何一个数码管的阴极被拉低因此所有数码管均被关闭。观察原理图发现G10,G2A0,G2B1都是焊上去的无法使用单片机进行控制所以这里消影只能使用关闭段选来实现。