用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示 有一个一模一2113样的提问,好吧,俺再5261发布一次给你一份我自己写的,利4102用四位数码管显示模拟时钟1653的程序吧,供你研究另外,再给你一个一位数码管的,是你要求的那种这两个都是利用单片机的定时器中断来产生秒信号的下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下includesbit p20=P3^7;sbit p21=P3^6;sbit led=P2^7;按键及LED端口定义sbit Axs=P1^3;sbit Bxs=P1^2;sbit Cxs=P1^1;sbit Dxs=P1^0;数码管位选端口char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};数码管显示编码unsigned int h,m,s,t,n;void YS(char hs)/延时函数{char hk;for;hs>;0;hs-){for(hk=200;hk>;0;hk-);}}void XS(int xh,int xm)/显示子函数{char d1,d2,d3,d4;d1=(xh/1)%10;d2=(xh/10)%10;分离小时d3=(xm/1)%10;d4=(xm/10)%10;分离分钟P0=table[d1];Cxs=0;YS(10);Cxs=1;小时个位P0=table[d2];Dxs=0;YS(10);Dxs=1;小时十位P0=table[d3];Axs=0;YS(10);Axs=1;分钟个位P0=table[d4];Bxs=0;YS(10);Bxs=1;分钟十位P0=0x7f;P1=0xfd;YS(10);P1=0xff;小数点}void main(void){TH0=(65536-1000)/256;TL0=(65536-1000)%。
为什么数码管不能循环显示数字,只显示一个1呀? 数码管只显示一个1,是因为延时子程序为无限循环了,调延时子程序后就不再返回了。应改成:while(i-);另把x=0;放在for语句里为好。
在一个数码管上循环显示0~9数字,每个数字的显示时间间隔为0.2秒。 如图所示,点击图片,然后另存,能看的清楚。