找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机动态扫描需要显示三位数,但只能显示第一位数

查看数: 2738 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-3-14 16:08

正文摘要:

单片机源程序如下: #include<reg52.h> #define uint unsigned int #define uchar unsigned char void delay(uint z); sbit wela=P2^7; sbit dula=P2^6; void delay(uint z); uchar code table[]={ 0x3f ...

回复

ID:213173 发表于 2019-3-15 21:36
陈立123 发表于 2019-3-15 14:36
你好,你这代码和我在书上看的代码都是为了避免出现乱码么
你的代码
                P0=0xfe;

TX-1C开发板段、位码共用P0+573驱动数码管,如果书上这么写的话那就是错的,共阴数码管消隐要用P0=0x00; 共阳数码管消隐要用P0=0xff; 否则鬼影更严重!如果要完全消除鬼影还可以这样写:

               P0=0x00;
                dula=1;//送段消隐
                dula=0;

                P0=0xfe;
                wela=1;//送位码
                wela=0;

                P0=table[bai];
                dula=1;//送段码
                dula=0;
                delay(2);//2ms延时不要太长,否则会闪烁

                下同
ID:490109 发表于 2019-3-15 14:36
wulin 发表于 2019-3-15 11:21
你错的不是一点点,给你改好了。
#include
#define uint unsigned int

你好,你这代码和我在书上看的代码都是为了避免出现乱码么
你的代码
                P0=0xfe;
                wela=1;
                wela=0;

                P0=table[bai];
                dula=1;
                dula=0;
                delay(5);
书上的代码
                dula=1;
                P0=table[bai];
                dula=0;
                 P0=0xff;   //多出来的代码
                wela=1;
                P0=0xfe;
                wela=0;
                          
                delay(5);
ID:213173 发表于 2019-3-15 11:21
你错的不是一点点,给你改好了。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
//void delay(uint z);
sbit wela=P2^7;
sbit dula=P2^6;
void delay(uint z);

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

//uint bai,shi,ge,temp,numdu;
uchar bai,shi,ge,temp;

void main()
{        
//        numdu=0;
        temp=111;
       
//        bai=temp%100;
        bai=temp/100;
        shi=temp%100/10;
        ge=temp%10;

        while(1)
        {
                P0=0xfe;
                wela=1;
                wela=0;

                P0=table[bai];
                dula=1;
                dula=0;
                delay(5);
               
//                P0=0xfe;
                P0=0xfd;
                wela=1;
                wela=0;

                P0=table[shi];
                dula=1;
                dula=0;               
                delay(5);

//                P0=0xfe;
                P0=0xfb;
                wela=1;
                wela=0;

                P0=table[ge];
                dula=1;
                dula=0;               
                delay(5);
        }
}
void delay(uint z)
{
        uint x,y;
//        for(x=z;x>0;x++)
//                for(y=110;y>0;y++);
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
ID:490109 发表于 2019-3-15 10:39
XIUAOJEI 发表于 2019-3-14 22:15
P0=0xfe;

一直位选第一位。。。。

谢谢
ID:490109 发表于 2019-3-15 10:38
2678254412 发表于 2019-3-14 18:56
因为你始终让位选信号P0=0xfe了

谢谢
ID:472242 发表于 2019-3-15 04:58
你一直在原地踏步,他怎么会动呢?
ID:374464 发表于 2019-3-14 22:15
P0=0xfe;

一直位选第一位。。。。
ID:485458 发表于 2019-3-14 18:56
因为你始终让位选信号P0=0xfe了

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表