51单片机两位数码管交替123456789

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF,六个数码管是连续不同的六个数?

# include# define uint unsigned int# define uchar unsigned charcode uchar shu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, /* 0 1 2 3 4 56 7*/0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管段选 /* 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)//延时函数{uchar i,j;for(i = 0; i9)//移到最后面 回到初始状态{ j = 0;}}}照着你给你电路图写的,有问题请追问



#include "reg52.h"const unsigned char code dian[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78, 0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};//数码管带点void main(void){ TMOD=0x11; TH0=0x3c; TL0=0xb0; ET0=1; TR0=1; EA=1; while(1);}dingshiqi1()interrupt 1{ static char a; static bit b; TH0=0x3c; TL0=0xb0; a++; if(a>10) { a=0; b=~b; if(b) P2=dian[1]; else P2=dian[2]; }}

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint j;
uchar code table[]={0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar a,b,c;
sbit aa=P1^0;
sbit bb=P1^1;
void delay(uint d) //延时函数
{
uint x,y;
for(x=d;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
a=1;b=2;
while(1)
{
for(c;c<5;c++)
{
aa=0; //打开第一个数码管
P0=table[a];
delay(20);
P0=0xff;
aa=1;

bb=0; //打开第二个数码管
P0=table[b];
delay(20);
P0=0xff;
bb=1;
a++;b++;
}
a=1;b=2;c=0;
}
}

while(1)
{
for(c=1;c<5;c++)
{
aa=0; //打开第一个数码管
P0=table[a];
delay(171);
P0=0xff;
aa=1;

delay(171) ;
bb=0; //打开第二个数码管
P0=table[b];
delay(171);
P0=0xff;
bb=1;
a=a+2;b=b+2;
}
a=1;b=2;c=1;
}
不知道你说的闪烁是指一个数码管闪烁的厉害还是两个数码管交替显示的时候闪烁的厉害,我在两个数码管之间加了一段延时,你试试行不行

延时调长点试试

  • 51单片机控制数码管显示hello和动态显示123456
    答:端口接动态数码管原理。P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。
  • 单片机 :数码管静态显示程序的编制
    答:数码管显示的就是1,2。等累积的时间到了2秒,就让数码管的十位显示3,同上。以下是显示12345的程序,参考一下。原理是一样的,改一下行了。include<reg51.h> unsigned int num = 12345;unsigned char shuma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段码 unsign...
  • 51单片机数码管动态显示12345,我为了让它扫描更快,去掉了延时,结果没...
    答:一方面动态扫描显示7段LED是利用人眼的视觉暂留原理来实现的,如果你不延时,那么暂留也就留不住了,所以要让人眼捕捉到显示的LED,必须有足够的延时时间,另一方面要保证LED显示的亮度,也必须有足够的时间让LED将电压建立起来,毕竟,从0到1实际上不是瞬时达到的,有一个渐变过程。
  • 51单片机设计一个秒表,用两个数码管(任意相邻的两个)显示。
    答:ORG000BH LJMPT0INT ORG001BH LJMPT1INT LEDDEQU30H LEDCEQU 36H SECCEQU 37H TCNTEQU 3AH ORG 0030H ;--- TABLE: ; 共阴极数码管显示代码表 DB 0FCH;"0"00H DB 60H;"1"01H DB 0DAH;"2"02H DB 0F2H;"3"03H DB 66H;"4"04H DB 0B6H;"5"05H DB 0BEH;"6"06H DB ...
  • 动态数码显示技术 c语言程序 单片机c51
    答:{ while(1){ P2=wei[i]; // 送位码 if(k==1)P0=dis12345[i]; // P1_7高时 送段码12345 else P0=dishello[i]; // P1_7低时 送段码hello i++;if(i>4) i=0;for(j=0;j<500;j++) ; //单个数码管延时 } } 点开“查看大图”,然后另存,再打开查看更大的图。
  • 50分!!解释一下共阴极动态数码管显示12345,hello的程序理解问题_百度...
    答:共阴管是输出高电平才亮,没有CJNZ的命令,是cjne,不相等转移,CJNZ R1,#10H没有跳转地址,R1是给P2口的,P2口接的是K也就是阴极,当然是给FE啦 也就是说,共阴端接的是P2不是地
  • 51单片机,怎么让数码管显示有效位的数字,然后再向左慢慢增加...
    答:这就是51的左消隐,一般的51单片机教程中就有。
  • 要令五个数码管分别显示1、2、3、4、5,单片机的P1.5引脚应输出什么...
    答:这种指令输出的一二三四五六,单片的话也可以输出一个四五二三。
  • 51单片机用c语言编程,按中断键开始,拨几号键置on,在对应的数码管上按3...
    答:首先,我感觉你这个里面有很多错别字。回答如下:1,定时器中断就是为了,提供一个准确的时间,去触发单片机去做某一件事。2,你要设置一个350ms的时间:定时间设定50ms中断,可以设置一个标志位,每次进入中断,增加一。增加到7就清零。然后在主循环中查询这个标志位。50ms定时如下:void Timer0Init...
  • 如何用C语言实现数码管显示数字12345和HELLO
    答:看一下我编的123456 的显示,是共阴极数码管接P1口 ,用了两个74HC573锁存器段选位选,HELLO的编码表 你自己编一下,然后定义一个数组就可以了。我也刚学 ,加油!include<reg52.h> define uint unsigned int define uchar unsigned char sbit dula=P2^6;sbit wela=P2^7;uchar code tabledu[]...