打印

模数转换,数码管前两位亮度没最后一位高,相差比较多

[复制链接]
2382|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
howard-ch|  楼主 | 2011-7-29 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
模数转换,数码管前两位亮度没最后一位高,相差比较多,怎么会这样呢?

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wr=P3^6;
sbit rd=P3^7;
void init();
void start();
uchar temp;bai,shi,ge;
//uint temp;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar bai,uchar shi,uchar ge);
void delay(uint z)                                  //延时子程序
{                                 
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void main()
{
        init();
        while(1)
        {
                start();
                delay(10);
                rd=0;
                temp=P1;
                bai=temp/100;                                                                 //分离百位
                shi=temp%100/10;                                                         //分离十位
                ge=temp%10;                                                                         //分离个位
                display(bai,shi,ge);
                delay(10);
                rd=1;
                delay(10);
        }
}
void init()
{
        P0=0x7f;
}
void start()
{
        wr=1;
        wr=0;
        wr=1;
}
void display(uchar bai,uchar shi,uchar ge)                 //三位数的显示子程序
{
        dula=1;
        P0=table[bai];
        dula=0;
        wela=1;
        P0=0x7e;
        wela=0;
        delay(5);

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

        dula=1;
        P0=table[ge];
        dula=0;
        wela=1;
        P0=0x7b;
        wela=0;
        delay(5);       
}

相关帖子

沙发
efen| | 2011-7-29 16:24 | 只看该作者
可能是数码管消隐的问题。电路图也应贴上麻,不然能看懂的还真是高手。
对这问题LZ自己也应偿试着解决麻,程序就是思考、反复调试、修改出来的
不然也只会落得个代码工人的下场,代码网上一大抄,却摸不着思路
还有,小弟我只是菜鸟,以上废话LZ爱听不听罢了

使用特权

评论回复
板凳
hwk612167| | 2011-7-29 19:10 | 只看该作者
保持每位显示的时间大致差不多,再加上每次改变位选时消影。
你这个很明显,前2位每位显示时间比最后一位的显示时间短很多

使用特权

评论回复
地板
老鱼探戈| | 2011-7-29 19:15 | 只看该作者
时间太短,和最后一次差太远。

使用特权

评论回复
5
wang_2003| | 2011-8-2 09:09 | 只看该作者
void delay(uint z) //延时子程序
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

你把延时子程序改成这样试试看行不?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

137

帖子

1

粉丝