四位数码管封装

合集下载

4位七段数码管引脚图

4位七段数码管引脚图

四位七段数码管引脚图内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。

引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。

4位SM410281K-12P 4阳红0.28寸长×宽×高-32.2×10×6mm 12-9-8-6公共脚A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM420361K-12P 4阴红0.36寸长×宽×高-30.1×14.1×7.3mm 12-9-8-6公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM410361K-12P 4阳红0.36寸长×宽×高-30.1×14.1×7.3mm 12-9-8-6公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM410401K-12P 4阳红0.4寸长×宽×高-40.5×16×7mm 12-9-8-6公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM420561K-12P 4阴红0.56寸长×宽×高-50.4×19×8mm 12-9-8-6公共脚A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM410561K-12P 4阳红0.56寸长×宽×高-50.4×19×8mm 12-9-8-6公共脚A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3。

51单片机四位一体共阳数码管程序

51单片机四位一体共阳数码管程序

51单片机四位一体共阳数码管程序1.四位一体数码管的第一个数码管显示8 #include<reg5< p="">2.h>sbit dula=P2^6;sbit wela=P2^7;void main(){wela=1;P0=0x01;wela=0;dula=1;P0=0x80;dula=0;while(1);}2.四位数码管同时从0到F变化#include#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;uchar num;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x98,0x83,0xc6,0xa1,0x86,0x8e};void delayms(uint);void main(){wela=1;P0=0x0f;wela=0;while(1){for(num=0;num<16;num++){dula=1;P0=table[num];dula=0;delayms(500);}}}void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}3.四位数码管分别以1,2,3,4进行循环显示#include#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x98,0x83,0xc6,0xa1,0x86,0x8e};void delayms(uint);void main(){while(1){dula=1;P0=table[1];dula=0;P0=0x00; //送段选数据前关闭所有显示,防止打开位选wela=1; //锁存器时原来段选数据通过位选锁存器造成混乱P0=0x01;wela=0;delayms(500);dula=1;P0=table[2];dula=0;P0=0x00;wela=1;P0=0x02;wela=0;delayms(500);dula=1;P0=table[3];dula=0;P0=0x00;wela=1;P0=0x04;wela=0;delayms(500);dula=1;P0=table[4];dula=0;P0=0x00;wela=1;P0=0x08;wela=0;delayms(500);}}void delayms(uint xms) { uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--); }</reg5<>。

四位共阴和共阳数码管的引脚介绍及检测方法概括

四位共阴和共阳数码管的引脚介绍及检测方法概括

内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。

引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。

数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图请在本站搜索我也提供了数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:5S(3)表面有保护膜的产品,可以在使用前撕下来。

数码管测试方法与数字显示译码表ARK SM410501K SM420501K 数码管引脚图判断数码管识别ARK SM410501K 共阳极数码管ARK SM420501K 共阴极数码管到百度搜索下,这两种数码管只有销售商,并无引脚图。

对于判断引脚,对于老手来说,很简单,可是对于新手来讲,这是件很难的事情,因为共阴、共阳表示的含义可能还不太懂ZG工作室只是将该数码管的引脚图给出,并让大家一起分享。

注:SM410501K 和SM420501K 的引脚排列是一模一样的。

这张图很明确给出该数码管的引脚排列。

数字一面朝向自己,小数点在下。

左下方第一个引脚为1、右下方第二个引脚为5,右上方第一个引脚为6。

见图所示。

其中PROTEL图中K 表示共阴、A表示共阳。

能显示字符的LED数码管(三)常用LED数码管的引脚排列图和内部电路图CPS05011AR(1位共阴/红色 0.5英寸)、SM420501K(红色 0.5英寸)、 SM620501(蓝色0.5英寸)、SM820501(绿色0.5英寸)SM420361(1位共阴/红色0.36英寸)、 SM440391(红色0.39英寸) SM420322(1位共阴/红色0.32英寸)、SM220322(绿色0.32英寸)SM410561K(1位共阳/红色0.56英寸)、SM610501(蓝色0.5英寸)、 SM810501(绿色0.5英寸)SM410361(1位共阳/红色0.36英寸)、HDSR-7801(红色 0.3英寸)、HDSP-7301(红色 0.3英寸)SM410322(1位共阳/红色0.32英寸)、SM210322(绿色0.32英寸)SN420502(2位共阴/红色静态 0.5英寸)、SN220801(绿色0.8英寸)、KW2-561CGA(绿色 0.56英寸)SN410502(2位共阳/红色静态 0.5英寸)、SN210801(绿色0.8英寸)SN460561(2位共阴/红色动态 0.56英寸)、SN260561(绿色0.56英寸) SN450561(2位共阳/红色动态0.56英寸)、SN250561(绿色0.56英寸)LED数码管简易测试方法一个质量保证的LED数码管,其外观应该是做工精细、发光颜色均匀、无局部变色及无漏光等。

4位七段数码管引脚图

4位七段数码管引脚图

四位七段数码管引脚图内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。

引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。

4位SM410281K-12P 4阳红0.28寸长×宽×高-32.2×10×6mm 12-9-8-6公共脚A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM420361K-12P 4阴红0.36寸长×宽×高-30.1×14.1×7.3mm 12-9-8-6公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM410361K-12P 4阳红0.36寸长×宽×高-30.1×14.1×7.3mm 12-9-8-6公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM410401K-12P 4阳红0.4寸长×宽×高-40.5×16×7mm 12-9-8-6公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM420561K-12P 4阴红0.56寸长×宽×高-50.4×19×8mm 12-9-8-6公共脚A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3SM410561K-12P 4阳红0.56寸长×宽×高-50.4×19×8mm 12-9-8-6公共脚A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3。

GYJ-0057 STC12C2052AD四位数码管显示可编程单路输入输出继电器工控板

GYJ-0057 STC12C2052AD四位数码管显示可编程单路输入输出继电器工控板

【接线说明】【输入控制设备】【输出控制设备】【NPN输人开关接线方式举例说明】【PNP输人开关接线方式举例说明】【输出举例说明】【输出举例说明】(开关量输出、干接点输出)【UART通信说明】也可以通过TTL下载【原理图】提供PDF格式/******************************************************************** 程序说明:1、P1.7口输入开关信号控制数码管开始延时。

2、当数码管延时时间达到59分99秒时继电器吸合并保持吸合状态。

********************************************************************/#include<STC12C2052AD.h> //库文件#include<intrins.h>#define uchar unsigned char //宏定义字符型变量#define uint unsigned int //宏定义整型变量/********************************************************************IO口定义********************************************************************/uint playdate;uint datef=0;uint datem=0;uint sec; //定义计数值,每过1/10 秒,sec 加一uchar biaozhi=0;//按下次数值uint tcnt; //键值判断sbit P10=P1^0;//数码管段sbit P11=P1^1;//数码管段sbit P12=P1^2;//数码管段sbit P13=P1^3;//数码管段sbit P14=P1^4;//数码管段sbit P15=P1^5;//数码管段sbit P16=P1^6;//数码管段sbit P17=P1^7;//AD信号输入sbit P30=P3^0;//按键输入sbit P31=P3^1;//按键输入sbit P32=P3^2;//数码管位sbit P33=P3^3;//数码管位sbit P34=P3^4;//数码管位sbit P35=P3^5;//数码管位sbit OUT=P3^7; //继电器输出/********************************************************************初始定义*********************************************************************/code uchar seg7code[10]={ 0x84,0xf6,0x8a,0xa2,0xf0,0xa1,0x81,0xb6,0x80,0xa0}; //显示段码数码管字跟/********************************************************************延时函数*********************************************************************/void delay1(uchar t){uchar i,j;for(i=0;i<t;i++){for(j=13;j>0;j--);{ ;}}}/********************************************************************延时函数*********************************************************************/ void delay()//延时程序0.1秒{uchar m,n,s;for(m=10;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}/********************************************************************显示函数*********************************************************************/ void Led() //显示函数{/*****************数据转换*****************************/uint z,x,c,v;z=datef%100/10;; //求分十位x=datef%10; //求分个位c=datem%100/10; //求秒十位v=datem%10; //求秒个位P1M0=0X00;P1M1=0XFF;P3M0=0X00;P3M1=0XFF;P32=0;P33=0;P34=0;P35=0;P1=seg7code[z];P32=1;P33=0;P34=0;P35=0;delay1(80);P32=0;P33=0;P34=0;P35=0;P1=seg7code[x];P32=0;P33=1;P34=0;P35=0;delay1(80);P32=0;P33=0;P34=0;P35=0;P1=seg7code[c];P32=0;P33=0;P34=0;P35=1;delay1(80);P32=0;P33=0;P34=0;P35=0;P1=seg7code[v];P32=0;P33=0;P34=1;P35=0;delay1(80);P32=0;P33=0;P34=0;P35=0;}/********************************************************************按键函数*********************************************************************/void key(){if((P17==0)&&(biaozhi==0)){ delay1(250);if(P17==0){TR0=1;sec=0; OUT=1;biaozhi=1;}} }/********************************************************************定时中断服务函数*********************************************************************/ void t0(void) interrupt 1 using 0 //定时中断服务函数{tcnt++; //每过250ust tcnt 加一if(tcnt==3694) //计满400 次(1/10 秒)时4000为秒{tcnt=0; //重新再计sec++;if(sec==3600) //单位为秒60分00秒{OUT=0;TR0=0;//sec=0;}}}/********************************************************************主函数*********************************************************************/ void main(){TMOD=0x02; //定时器工作在方式2TH0=0x06; //对TH0 TL0 赋值TL0=0x06;TR0=0; //开始定时ET0=1;EA=1;sec=0;OUT=1;biaozhi=0;while(1){key();Led();datef=sec/60;datem=sec%60;}}/********************************************************************程序结束*********************************************************************/#include<STC12C2052AD.h> //库文件#include<intrins.h>#define uchar unsigned char //宏定义字符型变量#define uint unsigned int //宏定义整型变量/*声明SFR 相关与的IAP*/sfr IAP_DATA = 0xE2;sfr IAP_ADDRH = 0xE3;sfr IAP_ADDRL = 0xE4;sfr IAP_CMD = 0xE5;sfr IAP_TRIG = 0xE6;sfr IAP_CONTR = 0xE7;/********************************************************************定义ISP/IAP/EEPROM 命令*********************************************************************/ #define CMD_IDLE 0#define CMD_READ 1#define CMD_PROGRAM 2#define CMD_ERASE 3#define ENABLE_IAP 0x83//SYSCLK<12MH#define IAP_ADDRESS 0x0000 //存储地址/********************************************************************IO口定义********************************************************************/ bit write=0;uchar biaozhi=6;//按下次数值uint tcnt,sec; //键值判断uint datA,datB; //接通和断开存储值uchar tg,ts,tb; //接通个十百标志uchar dg,ds,db; //断开个十百标志uchar TDbz=0;//通断标志bit bz1=0;//输入标志sbit P10=P1^0;//数码管段sbit P11=P1^1;//数码管段sbit P12=P1^2;//数码管段sbit P13=P1^3;//数码管段sbit P14=P1^4;//数码管段sbit P15=P1^5;//数码管段sbit P16=P1^6;//数码管段sbit P17=P1^7;//AD信号输入sbit P30=P3^0;//按键输入sbit P31=P3^1;//按键输入sbit P32=P3^2;//数码管位sbit P33=P3^3;//数码管位sbit P34=P3^4;//数码管位sbit P35=P3^5;//数码管位sbit OUT=P3^7; //继电器输出/********************************************************************初始定义*********************************************************************/code uchar seg7code[10]={0xfB,0x89,0xf5,0xDD,0x8F,0xdE,0xfE,0xc9,0xfF,0xdF}; //显示段码数码管字跟/********************************************************************延时函数*********************************************************************/void delay1(uchar t){uchar i,j;for(i=0;i<t;i++){for(j=13;j>0;j--);{ ;}}}/********************************************************************延时函数*********************************************************************/ void delay()//延时程序0.1秒{uchar m,n,s;for(m=10;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}/********************************************************************接通显示函数*********************************************************************/ void LedT() //显示函数{/*****************数据转换*****************************/uint x,c,v;x=datA/100; //求百位c=datA%100/10; //求十位v=datA%10; //求个位P32=1;P33=1;P34=1;P35=1;P1=0Xef; //显示字母AP32=0;P33=1;P34=1;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;P1=seg7code[x];P32=1;P33=0;P34=1;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;P1=seg7code[c];P32=1;P33=1;P34=1;P35=0;delay1(80);P32=1;P33=1;P34=1;P35=1;P1=seg7code[v];P32=1;P33=1;P34=0;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;}/********************************************************************断开显示函数*********************************************************************/ void LedD() //显示函数{/*****************数据转换*****************************/uint x,c,v;x=datB/100; //求百位c=datB%100/10; //求十位v=datB%10; //求个位P32=1;P33=1;P34=1;P35=1;P1=0Xbe; //显示字母BP32=0;P33=1;P34=1;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;P1=seg7code[x];P32=1;P33=0;P34=1;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;P1=seg7code[c];P32=1;P33=1;P34=1;P35=0;delay1(80);P32=1;P33=1;P34=1;P35=1;P1=seg7code[v];P32=1;P33=1;P34=0;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;}/********************************************************************显示A函数*********************************************************************/ void LedA() //显示函数{/*****************数据转换*****************************/P32=1;P33=1;P34=1;P35=1;P1=0Xef; //显示字母BP32=0;P33=1;P34=1;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;}/********************************************************************显示B函数*********************************************************************/ void LedB() //显示函数{/*****************数据转换*****************************/P32=1;P33=1;P34=1;P35=1;P1=0Xbe; //显示字母BP32=0;P33=1;P34=1;P35=1;delay1(80);P32=1;P33=1;P34=1;P35=1;}/********************************************************************按键函数*********************************************************************/void key(){if(P30==0){delay();if(P30==0){TR0=0;biaozhi++;if(biaozhi>6){biaozhi=0;}datA=tb*100+ts*10+tg;datB=db*1 00+ds*10+dg;while(!P30);write=1;}}if(biaozhi==0){LedA();P1=seg7code[tb];P32=1;P33=0;P34=1;P35=1;delay1(80);if(P31==0){delay();if(P 31==0){tb++; if(tb>9)tb=0;}while(!P31);}}if(biaozhi==1){LedA();P1=seg7code[ts];P32=1;P33=1;P34=1;P35=0;delay1(80);if(P31==0){delay();if(P 31==0){ts++; if(ts>9)ts=0;}while(!P31);}}if(biaozhi==2){LedA();P1=seg7code[tg];P32=1;P33=1;P34=0;P35=1;delay1(80);if(P31==0){delay();if(P 31==0){tg++; if(tg>9)tg=0;}while(!P31);}}if(biaozhi==3){LedB();P1=seg7code[db];P32=1;P33=0;P34=1;P35=1;delay1(80);if(P31==0){delay();if( P31==0){db++; if(db>9)db=0;}while(!P31);}}if(biaozhi==4){LedB();P1=seg7code[ds];P32=1;P33=1;P34=1;P35=0;delay1(80);if(P31==0){delay();if(P 31==0){ds++; if(ds>9)ds=0;}while(!P31);}}if(biaozhi==5){LedB();P1=seg7code[dg];P32=1;P33=1;P34=0;P35=1;delay1(80);if(P31==0){delay();if( P31==0){dg++; if(dg>9)dg=0;}while(!P31);datA=tb*100+ts*10+tg;datB=db*100+ds*10+dg;}}if(biaozhi==6){if(TDbz==0){LedT();}if(TDbz==1){LedD();}}/********************************************************************定时中断服务函数*********************************************************************/ void t0(void) interrupt 1 using 0 //定时中断服务函数{tcnt++; //每过250ust tcnt 加一if(tcnt==3810) //计满400 次(1/10 秒)时4000为秒{tcnt=0; //重新再计if(TDbz==0){datA--;if(datA==0){TDbz=1;OUT=0;}}if(TDbz==1){datB--;if(datB==0){TDbz=0;OUT=1;TR0=0;}}}}/******************************************************************** 禁用ISP/IAP/EEPROM functionmake 单片机在一安全状态*********************************************************************/ void IapIdle(){IAP_CONTR = 0; //IAP_CMD = 0; //IAP_TRIG = 0; //IAP_ADDRH = 0x80; //IAP_ADDRL = 0; //}/********************************************************************读数据*********************************************************************/uchar IapReadByte(uint addr){uchar dat;IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_READ;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_TRIG = 0x46;IAP_TRIG = 0xb9;_nop_();dat = IAP_DATA;IapIdle();return dat;}/********************************************************************写数据*********************************************************************/void IapProgramByte(uint addr, uchar dat){IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_PROGRAM;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_DATA = dat;IAP_TRIG = 0x46;IAP_TRIG = 0xb9;_nop_();IapIdle();}/********************************************************************擦除数据*********************************************************************/void IapEraseSector(uint addr){IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_ERASE;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_TRIG = 0x46;IAP_TRIG = 0xb9;_nop_();IapIdle();}/********************************************************************主函数*********************************************************************/ void main(){TMOD=0x02; //定时器工作在方式2TH0=0x06; //对TH0 TL0 赋值TL0=0x06;TR0=0; //定时开关ET0=1;EA=1;sec=0;OUT=1;P1M0=0X00;P1M1=0X7F;P3M0=0X00;P3M1=0XFF;tb = IapReadByte(0x01); //读取0x01中的数据ts = IapReadByte(0x02); //读取0x02中的数据tg = IapReadByte(0x03); //读取0x03中的数据db = IapReadByte(0x04); //读取0x02中的数据ds = IapReadByte(0x05); //读取0x03中的数据dg = IapReadByte(0x06); //读取0x03中的数据datA=tb*100+ts*10+tg;datB=db*100+ds*10+dg;P17=1;while(1){if((P17==0)&&(bz1==0)){delay1(180);if(P17==0){bz1=1;TR0=1;OUT=1;tcnt=0;datA=tb*100+ts*10+tg;datB=db*100+ds*10+dg;}}if((P17==1)&&(bz1==1)){bz1=0;}key();if(write==1){write=0;IapEraseSector(0); //擦除扇区IapProgramByte(0x01,tb);//写入数据IapProgramByte(0x02,ts);//写入数据IapProgramByte(0x03,tg);//写入数据IapProgramByte(0x04,db);//写入数据IapProgramByte(0x05,ds);//写入数据IapProgramByte(0x06,dg);//写入数据}}}/********************************************************************程序结束*********************************************************************/ #include<STC12C2052AD.h>#include<intrins.h>#include<math.h>#include "INTRINS.H"#define uchar unsigned char //宏定义字符型变量#define uint unsigned int //宏定义整型变量sfr IAP_DATA = 0xE2;sfr IAP_ADDRH = 0xE3;sfr IAP_ADDRL = 0xE4;sfr IAP_CMD = 0xE5;sfr IAP_TRIG = 0xE6;sfr IAP_CONTR = 0xE7;#define CMD_IDLE 0#define CMD_READ 1#define CMD_PROGRAM 2#define CMD_ERASE 3#define ENABLE_IAP 0x83//SYSCLK<12MH#define IAP_ADDRESS 0x0000 //存储地址void IapEraseSector(uint addr);//擦除数据void IapProgramByte(uint addr, uchar dat);//写数据uchar IapReadByte(uint addr);//读数据void IapIdle();//禁用ISP/IAP/EEPROM functionmake 单片机在一安全状态bit flag_eeprom1=0;//掉电存储的标志位sbit P32=P3^2;//数码管位sbit P33=P3^3;//数码管位sbit P34=P3^4;//数码管位sbit P35=P3^5;//数码管位sbit pa = P1^6;sbit pb = P1^0;sbit pc = P1^3;sbit pd = P1^4;sbit pe = P1^5;sbit pf = P1^1;sbit pg = P1^2;uint tcnt1=0;//用于刷新数码管uint g_uistopwatch1=0;//全局变量,在数码管上显示的一个变量uint qiannum1,bainum1,shinum1,genum1;unsigned int qiannum11,bainum11=0,shinum11=0,genum11=0;//用于传到数码管上显示sbit key1=P3^0;//key1sbit key2=P3^1;//key2sbit in=P1^7;//insbit out=P3^7;//outunsigned int innum=0;void seg7code(unsigned char num);void P3t1();void timer0_1init(void);//定时配置static unsigned char presstime=0;//时间值按键用到的unsigned int kf0=1;//按键用的标志位unsigned int kt0=0;//按键用的标志位void keyflag();//按键结束调用unsigned int if0=1,if1=1;unsigned int keynum=0;//数码管的位unsigned int inum1=0;unsigned char inum11=0,inum12=0,innum1=0,innum2=0;void displaynums(){//将数字传到数码管上显示if(if0==1){g_uistopwatch1=innum;if(innum>=inum1){out=0;}else{out=1;}}else{inum1=qiannum11*1000+bainum11*100+shinum11*10+genum11; //将num1三个数码管的值付给inumg_uistopwatch1=inum1;}}void keycan(){//按键if(key1==0){//当按键1按下if(kf0){//当标志位kf0=1的时候进行if(presstime>80){//当时间值大于一百的时候kf0=0;//标志位kf0=0kt0=1;//标志位kt0=0presstime=0;//时间清零,重新进行if0=0;if1=1;keynum++;//数码管的位if(keynum==5){//当位到4则置位0keynum=0;if0=1;}}}}else{//当按键松开keyflag();}//按键1结束if(key2==0){if(kf0){if(presstime>80){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;if(keynum==0){if1++;if(if1==2){if0=0;}if(if1==3){innum=0;if1=1;if0=1;}}else{switch(keynum){case 1:qiannum11++;//数码管一加加if(qiannum11>9){//当数码管一加加到9时置为1qiannum11=0;}break;case 2:bainum11++;if(bainum11>9){bainum11=0;}break;case 3:shinum11++;if(shinum11>9){shinum11=0;}break;case 4:genum11++;if(genum11>9){genum11=0;}break;default:break;}}}}}else{keyflag();}//松开按键进行显示}void main(){P1M0=0X00;P1M1=0XFF;timer0_1init();inum11 = IapReadByte(0x01); //读取0x01中的数据inum12 = IapReadByte(0x02); //读取0x01中的数据innum1 = IapReadByte(0x03); //读取0x01中的数据innum2 = IapReadByte(0x04); //读取0x01中的数据inum1=inum11*100+inum12;innum=innum1*100+innum2;g_uistopwatch1=innum;qiannum11=inum1/1000;bainum11=inum1/100%10;shinum11=inum1/10%10;genum11=inum1%10;while(1){keycan();//按键displaynums();if(in==0){//in按下if(kf0){//当标志位kf0=1的时候进行if(presstime>80){//当时间值大于一百的时候kf0=0;//标志位kf0=0kt0=1;//标志位kt0=0presstime=0;//时间清零,重新进行flag_eeprom1=1;innum++;}}}else{//当按键松开keyflag();}//in结束if(flag_eeprom1==1){//加掉电存储,必需加到这,不然有一些小问题flag_eeprom1=0;inum11=inum1/100;//把int型的值拆分到char型inum12=inum1%100;innum1=innum/100;//把int型的值拆分到char型innum2=innum%100;IapEraseSector(0); //擦除扇区IapProgramByte(0x01,inum11);//写入数据IapProgramByte(0x02,inum12);//写入数据IapProgramByte(0x03,innum1);//写入数据IapProgramByte(0x04,innum2);//写入数据}}}void timer0(void)interrupt 1 {//500等于1秒TL0 = 0xCD; //重新设置定时器0时间为2msTH0 = 0xF8; //重新设置定时器0的初始值tcnt1++;presstime++;genum1=g_uistopwatch1%10;//个位shinum1=g_uistopwatch1%100/10;//十位bainum1=g_uistopwatch1%1000/100;//百位qiannum1=g_uistopwatch1/1000;//qian位switch(tcnt1){case 1:P3t1();seg7code(qiannum1);if(keynum==1 || keynum==0){P32=0;}break;case 2:P3t1();seg7code(bainum1); if(keynum==2 || keynum==0){P33=0;}break;case 3:P3t1();seg7code(shinum1); if(keynum==3 || keynum==0){P35=0;}break;case 4:P3t1();seg7code(genum1); if(keynum==4 || keynum==0){P34=0;}break;default:tcnt1=0;break;}}void timer0_1init(void){//定时配置TMOD=0x11;//将定时器0,1都设置为模式1TL0 = 0xCD;//设置定时器0时间为2msTH0 = 0xF8;//设置定时器0的初始值TR0=1;//开启定时器0TR1=1;//开启定时器1EA=1;//开总中断ET0=1;//开定时器0的中断}void s0(){pa = 1;pb = 1;pc = 1;pd = 1;pe = 1;pf = 1;pg = 0;} void s1(){pb = 1;pc = 1;pa = 0;pg = 0;pd = 0;pe = 0;pf = 0;} void s2(){pa = 1;pb = 1;pg = 1;pe = 1;pd = 1;pf = 0;pc = 0;} void s3(){pa = 1;pb = 1;pg = 1;pc = 1;pd = 1;pf = 0;pe = 0;} void s4(){pb = 1;pg = 1;pc = 1;pf = 1;pa = 0;pd = 0;pe = 0;} void s5(){pa = 1;pg = 1;pc = 1;pd = 1;pf = 1;pe = 0;pb = 0;} void s6(){pa = 1;pg = 1;pc = 1;pd = 1;pf = 1;pe = 1;pb = 0;} void s7(){pa = 1;pb = 1;pc = 1;pf = 0;pe = 0;pd = 0;pg = 0;} void s8(){pa = 1;pb = 1;pg = 1;pc = 1;pd = 1;pf = 1;pe = 1;} void s9(){pa = 1;pb = 1;pg = 1;pc = 1;pd = 1;pf = 1;pe = 0;} void s10(){pa =0;pb = 0;pc = 0;pf = 0;pe = 0;pd = 0;pg = 0;} void seg7code(unsigned char num){if(num == 0){s0();}else if(num == 1){s1();}else if(num == 2){s2();}else if(num == 3){s3();}else if(num == 4){s4();}else if(num == 5){s5();}else if(num == 6){s6();}else if(num == 7){s7();}else if(num == 8){s8();}else if(num == 9){s9();}}void P3t1(){P32=1;P33=1;P34=1;P35=1;}void keyflag(){//按键结束调用,按键的建议使用,这样可以减小code,但是触发的不建议if(kt0){//当标志位kt0=1的时候进行if(presstime>50){//当时间值大于一百的时候kf0=1;//标志位kf0=1kt0=0;//标志位kt0=0presstime=0;//时间清零,重新进行}}}/********************************************************************禁用ISP/IAP/EEPROM functionmake 单片机在一安全状态*********************************************************************/void IapIdle(){IAP_CONTR = 0; //IAP_CMD = 0; //IAP_TRIG = 0; //IAP_ADDRH = 0x80; //IAP_ADDRL = 0; //}/********************************************************************读数据*********************************************************************/uchar IapReadByte(uint addr){uchar dat;IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_READ;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_TRIG = 0x46;IAP_TRIG = 0xb9;_nop_();dat = IAP_DATA;IapIdle();return dat;}/********************************************************************写数据*********************************************************************/void IapProgramByte(uint addr, uchar dat){IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_PROGRAM;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_DATA = dat;IAP_TRIG = 0x46;IAP_TRIG = 0xb9;_nop_();IapIdle();}/********************************************************************擦除数据*********************************************************************/void IapEraseSector(uint addr){IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_ERASE;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_TRIG = 0x46;IAP_TRIG = 0xb9;_nop_();IapIdle();}【尺寸图】【图片展示】【加装配套外壳效果】。

四位数码管使用方法

四位数码管使用方法

四位数码管使用方法
四位数码管是一种常用的数字显示器件,可以用来显示各种数字、字母、符号等信息。

下面介绍四位数码管的使用方法。

1. 引脚说明
四位数码管一般有12个引脚,其中共阳极数码管的引脚分别为VCC、GND、D1~D4、A~G、DP,共阴极数码管的引脚分别为VCC、GND、D1~D4、A~G、DP。

2. 接线方法
将四位数码管的VCC接到正极,GND接到负极,A~G接到相应的
控制引脚上,D1~D4接到微控制器的输出引脚上,并加上适当的电阻限流。

3. 显示方法
通过控制四位数码管的A~G引脚,可以显示不同的数字、字母、符号等信息。

例如,要显示数字7,可以将A~G控制引脚接通的情况下,将D3引脚接通,其他引脚断开。

4. 控制方法
通常使用微控制器来控制四位数码管的显示。

可以通过编写相应的程序,实现数字的显示、滚动显示、循环显示等功能。

以上是四位数码管的使用方法,希望对大家有所帮助。

- 1 -。

数码管封装步骤?

数码管封装步骤?

数码管通常是一种用于显示数字的电子元件,常见于计时器、数字时钟、电子秤等设备中。

数码管的封装步骤可以简单概括如下:
1. **设计规格**:首先要确定数码管的工作电压、显示方式(共阳极还是共阴极)、位数(几位数码管)、尺寸等规格参数。

2. **PCB设计**:根据规格设计相应的PCB(Printed Circuit Board,印刷电路板),包括数码管的安装位置、引脚连接、电路连接等,并确保与其他元件的协调一致。

3. **数码管焊接**:将数码管焊接在设计好的PCB 上,确保引脚正确连接,并且注意极性,如果是共阳极数码管还是共阴极数码管。

4. **封装固定**:在PCB设计中确定数码管的位置后,进行封装固定,以防数码管在使用过程中出现松动或脱落的情况。

5. **电路连接**:将数码管的引脚进行焊接连接,连接到相应的电路中,通常需要额外的电流限制电阻。

6. **测试**:在封装完成后,需要进行电气测试,确保数码管显示正确、亮度合适并且能够正常工作。

这些步骤是数码管封装过程中的一般步骤,具体的封装步骤可能因产品、厂家以及具体的生产流程而有所不同。

在实际进行数码管封装时,应该根据具体情况进行调整和实施。

4043A-B数码管4位0.4寸

4043A-B数码管4位0.4寸

b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定
c、使用电流:动态:平均电流 4-5mA 峰值电流 100mA
7.使用注意事项说明:
(1)数码管表面不要用手触摸;
(2)焊接温度:260度;焊接时间:3S
(3)表面有保护膜的产品,可以在使用前撕下来。
(4 )蓝色、翠绿色、白色数码管在使用时请采取防静电措施。 本规格书仅供参考,如本公司进行修正,恕不另行通知
11 7 4 2 1 10 5 3 管脚顺序:从数码管的正面观看,以第一脚为起点,管脚的顺序是逆时针方向排列。 12 – 9 – 8 – 6 → 公共脚 A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3
TEL:0769-87220680 87798508
FAX:0769-87134135
35
2.1
2.5
蓝色
470
40
3.3
4.0
翠绿色
517
40
3.3
4.0
白色
3.3
4.0
6.使用条件:(推荐恒流使用,恒压会出现亮度不均现象.)
反向电流 VR=5v(uA)
MAX 20 20 20 20 20 20 20
光强 IF=20mA(mcd)
TYP 100 20 12 60 50 200
a、段及小数点上加限流电阻

乳白/红
0.50
12.70
7 .0 10.16( .4” ) 16.0
10.16
10.16 40 .50
10.16
DI G.1
DI G.2 12
DIG.3 7
DIG.4
2.54 *5=12. 7
1

四位数码管工作原理 stm32

四位数码管工作原理 stm32

四位数码管工作原理 stm32STM32是一款高性能的微控制器,广泛应用于各种嵌入式系统中。

在嵌入式系统中,常常需要使用数码管来显示数字或字符信息。

本文将介绍数码管的工作原理,并结合STM32微控制器,探讨如何使用STM32驱动数码管。

数码管是一种能够显示数字或字符的电子显示器件。

它由多个发光二极管(LED)组成,每个LED可以独立控制发光与否。

根据LED 的排列方式和控制方式的不同,常见的数码管有共阳数码管和共阴数码管。

共阳数码管是指在数码管的每个LED的阳极都连接在一起,并与正极相连,而每个LED的阴极则分别独立连接到控制芯片的输出引脚。

当控制芯片将某个输出引脚的电平拉低时,对应的LED就会点亮。

通过控制不同的输出引脚,可以实现对数码管上各个LED的控制,从而显示不同的数字或字符。

共阴数码管与共阳数码管的原理基本相同,只是阳极和阴极的连接方式相反。

在共阴数码管中,每个LED的阴极都连接在一起,并与负极相连,而每个LED的阳极则分别独立连接到控制芯片的输出引脚。

当控制芯片将某个输出引脚的电平拉高时,对应的LED就会点亮。

在使用STM32驱动数码管时,需要通过控制STM32的输出引脚来控制数码管的LED。

以共阳数码管为例,假设数码管的每个LED分别连接到STM32的P0、P1、P2等输出引脚上。

当需要显示数字0时,将P0、P1、P2等输出引脚的电平拉低,对应的LED就会点亮;当需要显示数字1时,将P1、P2等输出引脚的电平拉低,P0引脚的电平拉高,对应的LED就会点亮,以此类推。

通过依次控制不同的输出引脚,可以实现对数码管的控制,从而显示不同的数字或字符。

为了方便控制数码管,我们可以编写相应的驱动程序。

首先,需要初始化STM32的输出引脚,并设置为输出模式。

然后,根据需要显示的数字或字符,通过控制相应的输出引脚的电平,点亮对应的LED。

为了实现动态显示,可以使用定时器中断来周期性地更新数码管的显示内容。

四位数码管详细资料

四位数码管详细资料

一、引脚识别
二、共阴共阳判断
数码管如图所示面向自己。

引脚排列如下:
一共12个引脚,4个位选,8个段选。

从上面一排左边第一引脚开始,按顺时针顺序依次往下遍历所有引脚。

1:左边第1个数码管的位选择端 2:a 3:f 4:左边数起第2个数码管的位选择端 5:左边数起第3 个数码管的位选择端 6:b 7:左边数起第4个数码管的位选择端 8:g 9:c 10:小数点dp 11:d 12:e
具体在用单片机控制时,各个引脚的接法参看下图:
1、2、3、4、5、7、10、11为段选,6、8、9、12为四个数码管的位选。

共阴共阳的判断:
将6、8、9、12中的任意一脚接电源+1.5——+2.0v(若太大可能烧坏数码管),1、2、3、4、5、7、10、11的任意一脚接电源负极,若数码管有一段亮,则说明该四位数码管为共阳,反之则为共阴。

4位数码管驱动芯片

4位数码管驱动芯片

4位数码管驱动芯片4位数码管驱动芯片是一种集成电路芯片,用于控制和驱动四位数码管显示器。

它通常包含多个功能模块,如扫描驱动、段选驱动、亮度调节等,以完成对数码管显示的控制。

4位数码管驱动芯片的核心功能是实现对4个数码管的控制和驱动。

它往往具备以下特点和功能:1. 扫描驱动:可以通过扫描方式实现对多位数码管的驱动。

通过扫描驱动的方式,可以轮流控制每个数码管的选通,从而实现多位数码管的显示。

2. 段选驱动:对于每个数码管的每个段(例如A、B、C、D、E、F、G等),能够通过相应控制信号的输入,实现对特定段的亮灭控制。

这样可以根据需要显示不同的数字、字母或符号。

3. 亮度调节:可以通过外部控制信号,调节数码管的亮度。

通常使用PWM(脉冲宽度调制)技术来实现亮度的调节。

4. 时钟控制:数码管的刷新速度需要一个时钟信号来驱动,4位数码管驱动芯片可以内部产生相应的时钟信号,也可以通过外部输入时钟信号来控制。

5. 输入控制:芯片通常提供多个输入引脚,用以接收外部控制信号,实现对数码管的控制和显示。

6. 常用功能和显示模式支持:该芯片通常支持常用的显示模式,例如静态显示模式、动态扫描显示模式、按键扫描模式等,以满足不同场景下的需求。

7. 多数字管级联:该芯片通常支持多位数码管的级联。

通过级联,可以按照需要来扩展显示位数,并通过芯片的控制实现对多位数码管的统一控制。

总之,4位数码管驱动芯片是一种专门用于控制和驱动4位数码管显示器的集成电路芯片。

它具备扫描驱动、段选驱动、亮度调节、时钟控制以及常用功能和显示模式支持等功能,可以满足各种场景下的数码管显示需求。

Arduino 入门到精通 例程16-四位数码管

Arduino 入门到精通 例程16-四位数码管

Arduino 入门到精通例程16这次我们进行的实验是使用arduino驱动一块共阳四位数码管。

驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。

这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。

另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。

本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。

4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。

左上角为最大的12号管脚。

下图为数码管的说明手册下面是硬件连接图ARDUINO CODECOPY1.//设置阴极接口2.int a = 1;3.int b = 2;4.int c = 3;5.int d = 4;6.int e = 5;7.int f = 6;8.int g = 7;9.int p = 8;10.//设置阳极接口11.int d4 = 9;12.int d3 = 10;13.int d2 = 11;14.int d1 = 12;15.//设置变量16.long n = 0;17.int x = 100;18.int del = 55; //此处数值对时钟进行微调19.20.void setup()21.{22.pinMode(d1, OUTPUT);23.pinMode(d2, OUTPUT);24.pinMode(d3, OUTPUT);25.pinMode(d4, OUTPUT);26.pinMode(a, OUTPUT);27.pinMode(b, OUTPUT);28.pinMode(c, OUTPUT);29.pinMode(d, OUTPUT);30.pinMode(e, OUTPUT);31.pinMode(f, OUTPUT);32.pinMode(g, OUTPUT);33.pinMode(p, OUTPUT);34.}35.36.void loop()37.{38. clearLEDs();39. pickDigit(1);40. pickNumber((n/x/1000)%10);41.delayMicroseconds(del);42.43. clearLEDs();44. pickDigit(2);45. pickNumber((n/x/100)%10);46.delayMicroseconds(del);47.48. clearLEDs();49. pickDigit(3);50. dispDec(3);51. pickNumber((n/x/10)%10);52.delayMicroseconds(del);53.54. clearLEDs();55. pickDigit(4);56. pickNumber(n/x%10);57.delayMicroseconds(del);58.59. n++;60.61.if(digitalRead(13) == HIGH)62.{63. n = 0;64.}65.}66.67.void pickDigit(int x)//定义pickDigit(x),其作用是开启dx端口68.{69.digitalWrite(d1, LOW);70.digitalWrite(d2, LOW);71.digitalWrite(d3, LOW);72.digitalWrite(d4, LOW);73.74.switch(x)75.{76.case1:77.digitalWrite(d1, HIGH);78.break;79.case2:80.digitalWrite(d2, HIGH);81.break;82.case3:83.digitalWrite(d3, HIGH);84.break;85.default:86.digitalWrite(d4, HIGH);87.break;88.}89.}90.91.void pickNumber(int x)//定义pickNumber(x),其作用是显示数字x92.{93.switch(x)94.{95.default:96. zero();97.break;98.case1:99. one();100.break;101.case2:102. two();103.break;104.case3:105. three();106.break;107.case4:108. four();109.break;110.case5:111. five();112.break;113.case6:114. six();115.break;116.case7:117. seven();118.break;119.case8:120. eight();121.break;122.case9:123. nine();124.break;125.}126.}127.128.void dispDec(int x)//设定开启小数点129.{130.digitalWrite(p, LOW);131.}132.133.void clearLEDs()//清屏134.{135.digitalWrite(a, HIGH);136.digitalWrite(b, HIGH);137.digitalWrite(c, HIGH);138.digitalWrite(d, HIGH);139.digitalWrite(e, HIGH);140.digitalWrite(f, HIGH);141.digitalWrite(g, HIGH);142.digitalWrite(p, HIGH);143.}144.145.void zero()//定义数字0时阴极那些管脚开关146.{147.digitalWrite(a, LOW);148.digitalWrite(b, LOW);149.digitalWrite(c, LOW);150.digitalWrite(d, LOW);151.digitalWrite(e, LOW);152.digitalWrite(f, LOW);153.digitalWrite(g, HIGH);154.}155.156.void one()//定义数字1时阴极那些管脚开关157.{158.digitalWrite(a, HIGH);159.digitalWrite(b, LOW);160.digitalWrite(c, LOW);161.digitalWrite(d, HIGH);162.digitalWrite(e, HIGH);164.digitalWrite(g, HIGH);165.}166.167.void two()//定义数字2时阴极那些管脚开关168.{169.digitalWrite(a, LOW);170.digitalWrite(b, LOW);171.digitalWrite(c, HIGH);172.digitalWrite(d, LOW);173.digitalWrite(e, LOW);174.digitalWrite(f, HIGH);175.digitalWrite(g, LOW);176.}177.178.void three()//定义数字3时阴极那些管脚开关179.{180.digitalWrite(a, LOW);181.digitalWrite(b, LOW);182.digitalWrite(c, LOW);183.digitalWrite(d, LOW);184.digitalWrite(e, HIGH);185.digitalWrite(f, HIGH);186.digitalWrite(g, LOW);187.}188.189.void four()//定义数字4时阴极那些管脚开关190.{191.digitalWrite(a, HIGH);192.digitalWrite(b, LOW);193.digitalWrite(c, LOW);194.digitalWrite(d, HIGH);195.digitalWrite(e, HIGH);196.digitalWrite(f, LOW);197.digitalWrite(g, LOW);198.}199.200.void five()//定义数字5时阴极那些管脚开关201.{202.digitalWrite(a, LOW);204.digitalWrite(c, LOW);205.digitalWrite(d, LOW);206.digitalWrite(e, HIGH);207.digitalWrite(f, LOW);208.digitalWrite(g, LOW);209.}210.211.void six()//定义数字6时阴极那些管脚开关212.{213.digitalWrite(a, LOW);214.digitalWrite(b, HIGH);215.digitalWrite(c, LOW);216.digitalWrite(d, LOW);217.digitalWrite(e, LOW);218.digitalWrite(f, LOW);219.digitalWrite(g, LOW);220.}221.222.void seven()//定义数字7时阴极那些管脚开关223.{224.digitalWrite(a, LOW);225.digitalWrite(b, LOW);226.digitalWrite(c, LOW);227.digitalWrite(d, HIGH);228.digitalWrite(e, HIGH);229.digitalWrite(f, HIGH);230.digitalWrite(g, HIGH);231.}232.233.void eight()//定义数字8时阴极那些管脚开关234.{235.digitalWrite(a, LOW);236.digitalWrite(b, LOW);237.digitalWrite(c, LOW);238.digitalWrite(d, LOW);239.digitalWrite(e, LOW);240.digitalWrite(f, LOW);241.digitalWrite(g, LOW);242.}243.244.void nine()//定义数字9时阴极那些管脚开关245.{246.digitalWrite(a, LOW);247.digitalWrite(b, LOW);248.digitalWrite(c, LOW);249.digitalWrite(d, LOW);250.digitalWrite(e, HIGH);251.digitalWrite(f, LOW);252.digitalWrite(g, LOW);253.}把下面代码复制下载到控制板中,看看效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档