用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF,六个数码管是连续不同的六个数?

也许我今天的那个问题没表达好,你能用我这个电路图来编写我想要实现的那个程序,如果电路图有错 希望你可以帮我改下,麻烦你了,你今天给我发的那个程序 他只能显示012345,6789A,这两种形式循环 ,我要的结果是 012345,123456,234567,345678.。。。。。。是每个数码管同时逐次递增的,因为我用的是开发P2扣没有和驱动电路相连,除了P2^6,P2^7.

# include<reg51.h>

# define uint unsigned int
# define uchar unsigned char

code uchar shu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
   /* 0    1    2  3   4    5 6  7 */
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管段选
                   /* 8    9 a  b   c    d e f */
code uchar wen[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //数码管位选
uchar huancun[] = {0x00,0x00,0x00,0x00,0x00,0x00}; //数码管段选缓存

sbit duan = P2^6; //段选
sbit wei = P2^7; //位选

void delay(uchar x) //延时函数
{
uchar i,j;
for(i = 0; i<x; i--)
for(j = 0; j<255; j--)
;
}

void xianshi()  //显示函数
{
uchar i;

for(i = 0; i<6; i++)
{
P0=wen[i]; //位选
wei=1; //开锁存
wei=0; //关锁存

P0=huancun[i]; //段选
duan=1;
duan=0;

P0=0xff; //消影
delay(5);
}
}

void init()
{
uchar i;

  TMOD=0x01;
TH0=(65536-50000)/256; //10ms定时初值(T0计时用)
TL0=(65536-50000)%256;
TR0=1; //T0计时关断
ET0=1; //T0中断允许位关断
EA=1; //开总中断

for(i = 0; i<6; i++)
{
  huancun[i] = shu[i]; //段选送缓存
}
}

void main()
{
init();
  while(1)
{
xianshi();
}
}

void time_intt0 (void) interrupt 1 //50ms中断  
{
uchar t,i,j;

TH0=(65536-50000)/256; //重置初值
TL0=(65536-50000)%256;

t++;

if(t == 20) //1秒到 50ms*20 = 1s
{
t=0;
j++; //j+1

for(i = 0; i<6; i++) //使段选数据移位输入缓存
{
  huancun[i] = shu[i+j];
}

if(j>9) //移到最后面 回到初始状态
{
  j = 0;
}
}
}

照着你给你电路图写的,有问题请追问

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-09
你把你的显示内容每次左移一位试试,看能不能行。追问

不会啊,脑子好乱,你能发个程序吗?

用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF...
\/\/数码管段选 \/* 8 9a b c def*\/code uchar wen[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};\/\/数码管位选uchar huancun[] = {0x00,0x00,0x00,0x00,0x00,0x00};\/\/数码管段选缓存sbit duan = P2^6;\/\/段选sbit wei = P2^7;\/\/位选void delay(uchar x)\/\/延时函数...

51单片机共阴数码管利用静态显示,让六个数码管显示1~6,程序怎么写?
在实现数码管的静态显示中,用到了两个锁存器,两个I\/O口,P1.6和P1.7,分别是位选和段选。 首先定义了个数码管位选数组,也就是十六进制代码,这便是后来数码管显示数字的核心,接着,用 sbit 定义了位选和段选端口,分别是 P1.6 和 P1.7 ,定义了一个延时函数,其实这一串代码很有意思,开关开关思想,贯穿始终。

怎么用单片机实现6位led数码管显示?
0x77,0x7c,0x39,0x5e,0x79,0x71,};\/\/共阴数码管A~F段码表 uchar buf[]={0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};\/\/显示字母 void delay()\/\/延时子程序 { uint j;for(j=300;j>0;j--);} void display()\/\/显示子程序 { uchar i,litbit=0xfe;for(i=0;i<6;i++){ P2=lit...

...AT89C51控制六位数码管,可以显示出不同的六个数字(123456)急需相关Pr...
include<reg51.h> define uchar unsigned char uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};uchar number=0;void t0isr() interrupt 1 { TH0=0xf4;TL0=0x48;switch(number){ case 0:P2=0x01;P0=distab[1];...

51单片机的共阴数码管怎么显示数字(c语言)知道
共阴极数码管也就是说,当控制信号为1时该段LED点亮,8段数码管的数字0~9定义为:3FH,06H,5BH,4FH,66H ;01234 6DH,7DH,07H,7FH,6fh ;56789 以下为简易8路抢答器的例程:include<reg51.h> define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x...

51单片机六位数码管点亮汇编程序
MAIN:MOV R2,#0 MOV R3,#01H LOOP:MOV A,R2 MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV P0,A MOV A,R3 CPL A MOV P2,A RL A MOV R3,A LCALL DELAY JNB ACC.6,LOOP MOV R3,#01H INC R2 CJNE R2,#16,LOOP MOV R2,#0 SJMP LOOP ;--- DELAY:MOV R3,#10 DELAY1:MOV R4,#...

51单片机的共阴数码管怎么显示数字(c语言)
要让51单片机共阴数码管显示数字,只需要将单片机的P2端口输出数字对应的段码即可。以显示数字“0”为例,c语言程序如下:include<reg52.h> define uchar unsigned char define uint unsigned int \/\/数码管的段码编码 Uchar table[10] ={0x3f,0x06,...

用89c51单片机 6个数码管循环显示HELLO的程序 及仿真电路图
0x00,0x39,0x6d,0x00,0x3f,0x66}; \/\/ C51 04 0x66,0x79,0x68,0x68,0x5c} \/\/HELLo uchar disdat[6],num;void dischg(){ disdat[0]=num;disdat[1]=num+1;disdat[2]=num+2;disdat[3]=num+3;disdat[4]=num+4;disdat[5]=num+5;} void t0isr() interrupt 1\/\/秒计时 ...

怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
图2.2 数字钟硬件框图2.4 电路组成及工作原理本文数字时钟设计原理主要利用AT89S52单片机,由单片机的P0口控制数码管的位显示,P2口控制数码管的段显示,P1口与按键相接用于时间的校正。在设计中引入220V交流电经过整流、滤波后产生+5V电压,用于给单片机及显示电路提供工作电压。整个系统工作时,秒信号产生器是整个系统的时基...

利用单片机控制6个共阳数码管,采用动态显示方式稳定显示自己的生日_百 ...
include<reg51.h>#define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};\/\/0-9unsigned char scanled;unsigned char disdat[6];void dischg(){ disdat[0]=4; disdat[1]=1; disdat[2]=6; disdat[3]=0; disdat[4]=9; dis...

相似回答