C51单片机如何让四位数码管分别显示四位不同的数字? 每一次只能让一个数码管位选,其他的关闭,给数码管赋值。重复4次就可以了。假设要显示“1234”:includesbit k1=P1^1;sbit k2=P1^2;sbit k3=P1^3;sbit k4=P1^4;k1-k4 4个位选开关,我假设你的电路是低电平有效uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;0x80,0x98};共阳极1-9void delay(char t)/延时函数{char x,y;for(x=t;x>;0;x-){for(y=100;y>;0;y-);}}void main()/主函数{int i=1234;int temp;while(1){temp=i;temp=1234;显示第4位k1=k2=k3=k4=1;关闭所有未选k4=0;打开第4位位选P2=table(temp%10);假设P2口控制数码管temp=temp/10;temp=123delay(5);显示第3位k1=k2=k3=k4=1;关闭所有未选k3=0;打开第3位位选P2=table(temp%10);假设P2口控制数码管temp=temp/10;temp=12delay(5);显示第2位k1=k2=k3=k4=1;关闭所有未选k4=0;打开第4位位选P2=table(temp%10);假设P2口控制数码管temp=temp/10;temp=1;delay(5);显示第1位k1=k2=k3=k4=1;关闭所有未选k4=0;打开第1位位选P2=table(temp%10);假设P2口控制数码管delay(5);}}
如何在八位数码管上同时显示不同的数字,谢谢,c语言实现 #include\"reg51.hinclude\"intrins.h\"/_nop_();延时函数用define uchar unsigned chardefine uint unsigned intdefine SEG_OUT P0/段码输出口define BIT_OUT P2/扫描口sbit dot=P2^7;LED小数点控制uchar code tab[12]=;共阳LED段码表\"0\"\"1\"\"2\"\"3\"\"4\"\"5\"\"6\"\"7\"\"8\"\"9\"\"不亮\"\"-\"*/uchar data dis_buff[8]=;待显示单元数据,共6个数据unsigned long temp;1毫秒延时程序*/delay1ms(int t){int i,j;for(i=0;i;i+)for(j=0;j;j+)}LED显示动态扫描函数*/display(){char k;char m=0xfe;for(k=0;k;k+)/8位LED扫描控制{ BIT_OUT=0xff;SEG_OUT=tab[dis_buff[k]];BIT_OUT=m;delay1ms(3);m=(m)|0x01;}dis_buff[0]=temp/10000000;dis_buff[1]=(temp%10000000)/1000000;dis_buff[2]=(temp%1000000)/100000;dis_buff[3]=(temp%100000)/10000;dis_buff[4]=(temp%10000)/1000;dis_buff[5]=(temp%1000)/100;dis_buff[6]=(temp%100)/10;dis_buff[7]=temp%10;}初始化程序*/void initiation(){TMOD=0x01;TH0=-10000/256;TL0=-10000%256;10MS定时初值(T0计时用)ET0=1;TR0=1;EA=1;}定时器0中断服务程序*/void init_timer0(void)interrupt 1{TH0=-10000/256;TL0=-。
单片机如何同时控制四位数码管显示不同数字。 方法,利用人视觉惰性,2113每个时刻一个数码管亮,5261四个循环,循环大于410220HZ。你可以搜一下七段译码1653管编程实例,这种案例很多的。将四位数码管的8个信号端接到单片机一组引脚如P0,将每个数码管的公共极接到另一组引脚。主要控制的是每位数字的七段译码管的公共极(共阴还是共阳极看你译码管)。例如共阴极,在八位信号位输出高电平,而公共极为低电平时,七段译码管就是8.根据上述硬件编写程序,控制每个数码管显示的数字,并延时循环。先从信号脚P0输出第一位要显示的数字,然后控制第一个数码管公共极输出使能(如:共阴极的输出低电平,其他都高电平),其他公共极非使能,然后延时,延时时间到公共极取反,输出下一位数码管的信号P0,控制第二个数码管公共极输出使能(如:共阴极的第二个输出低电平,其他都高电平),重复上述过程,直到四位全部显示完毕回到显示第一位继续循环。如此往复,其他还有相关程序可以做为中断。还有其他方法也可以实现,比如用译码芯片等。实例很多,研究下别人的程序。
怎样让数码管显示2个不同的数字
两个数码管接在同一电路上, 如图, 怎么显示不同的数字 不要用中断和定时器 怎么写啊 你的电路如果用于实际是有问题的,需要改动,共阴共阳电路不通,不过驱动数码管这类电路太多了,您随便搜下即可。假设你已经改好了电路,只说程序无论共阴还是共阳,具体原理是一样,简单说,P0口是控制数码管的笔画,而P2.1和2.2则是控制哪个数码管工作。主要代码结构大致如下:while(1){P2.1=0;开数码管1,假设数码管为共阳P0=“数据”;写数码管1的数据,视情况可加延时,下同P2.1=1;关数码管1P0=0x00;消影P2.2=0;开数码管2P0=“数据”;写数码管2的数据P2.2=1;关数码管2P0=0X00;}建议参考单片机教材中的驱动数码管的“段选、位选”知识