新手请大侠指教啊 数码管

2019-07-15 23:13发布

怎样让8个数码管这样亮:像在墙上钉订一样,从这边到那边一排,不同的数字以下哪个程序该怎么改啊,我实在弄不出来现在,求指教。
#include<at89x51.h>
#define uchar unsigned char
#define  uint unsigned int
sbit duan=P2^6;
sbit wei=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint);
void main()
{
        while(1)
        {
                wei=1;
                P0=0x7f;
                wei=0;
                duan=1;
                P0=table[7];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xbf;
                wei=0;
                duan=1;
                P0=table[6];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xdf;
                wei=0;
                duan=1;
                P0=table[5];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xef;
                wei=0;
                duan=1;
                P0=table[4];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xf7;
                wei=0;
                duan=1;
                P0=table[3];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xfb;
                wei=0;
                duan=1;
                P0=table[2];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xfd;
                wei=0;
                duan=1;
                P0=table[1];
                duan=0;
                delay(300);
                P0=0x00;
               
                wei=1;
                P0=0xfe;
                wei=0;
                duan=1;
                P0=table[0];
                duan=0;
                delay(300);
                P0=0x00;
               
        }
}
        void delay(uint xms)
        {
                uint i,j;
        for(i=xms;i>0;i--)
        for(j=110;j>0;j--);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
绘沙
1楼-- · 2019-07-16 01:03
硬件,八个数码管的位码接P1或P2口,段码接PO口。位码分别等于7f,bf,df。。。时对应不同的段码
绘沙
2楼-- · 2019-07-16 04:32
P0口要接上拉电阻
绘沙
3楼-- · 2019-07-16 06:41
举个例子
#include<reg51.h>        //  包含51单片机寄存器定义的头文件
void delay(void)        //延时函数,延时一段时间
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
;
}
void main(void)
{
while(1)    //无限循环
{
P2=0xfe;   //P2.0引脚输出低电平,DS0点亮
P0=0xf9;  //数字1的段码
delay();
P2=0xfd ;  //P2.1引脚输出低电平,DS1点亮
P0=0xa4;  //数字2的段码
delay();     
P2=0xfb;   //P2.2引脚输出低电平,DS2点亮
P0=0xb0;  //数字3的段码
delay();
P2=0xf7;   //P2.3引脚输出低电平,DS3点亮
P0=0x99;  //数字4的段码
delay();
P2=0xff;        
}
}
mutouren5282251
4楼-- · 2019-07-16 09:41
 精彩回答 2  元偷偷看……
木nasa
5楼-- · 2019-07-16 11:08
绘沙 发表于 2013-8-7 12:48
硬件,八个数码管的位码接P1或P2口,段码接PO口。位码分别等于7f,bf,df。。。时对应不同的段码 ...

开发板上的位和段都是p0控制的啊,没法改啊。能改程序不
yqs19850701
6楼-- · 2019-07-16 12:28
,八个数码管的位码接P1或P2口,段码接PO口。位码分别等于7f,bf,df。。。时对应不同的段码 ...

一周热门 更多>